mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-03-28 02:23:31 +01:00
Run IntelliJ IDEA code formatter
This commit is contained in:
@@ -1,66 +1,79 @@
|
||||
package emu.grasscutter.game.quest;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.binout.ScriptSceneData;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.quest.enums.LogicType;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.scripts.ScriptLoader;
|
||||
import emu.grasscutter.server.packet.send.PacketCodexDataUpdateNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import lombok.Getter;
|
||||
import org.bson.types.ObjectId;
|
||||
|
||||
import dev.morphia.annotations.Entity;
|
||||
import dev.morphia.annotations.Id;
|
||||
import dev.morphia.annotations.Indexed;
|
||||
import dev.morphia.annotations.Transient;
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.binout.MainQuestData;
|
||||
import emu.grasscutter.data.binout.MainQuestData.*;
|
||||
import emu.grasscutter.data.binout.MainQuestData.SubQuestData;
|
||||
import emu.grasscutter.data.binout.MainQuestData.TalkData;
|
||||
import emu.grasscutter.data.binout.ScriptSceneData;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.data.excels.RewardData;
|
||||
import emu.grasscutter.database.DatabaseHelper;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.props.ActionReason;
|
||||
import emu.grasscutter.game.quest.enums.LogicType;
|
||||
import emu.grasscutter.game.quest.enums.ParentQuestState;
|
||||
import emu.grasscutter.game.quest.enums.QuestState;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.net.proto.ChildQuestOuterClass.ChildQuest;
|
||||
import emu.grasscutter.net.proto.ParentQuestOuterClass.ParentQuest;
|
||||
import emu.grasscutter.net.proto.QuestOuterClass.Quest;
|
||||
import emu.grasscutter.scripts.ScriptLoader;
|
||||
import emu.grasscutter.server.packet.send.PacketCodexDataUpdateNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketFinishedParentQuestUpdateNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketQuestListUpdateNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketQuestProgressUpdateNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import lombok.Getter;
|
||||
import org.bson.types.ObjectId;
|
||||
|
||||
import javax.script.Bindings;
|
||||
import javax.script.CompiledScript;
|
||||
import javax.script.ScriptException;
|
||||
import java.util.*;
|
||||
|
||||
|
||||
@Entity(value = "quests", useDiscriminator = false)
|
||||
public class GameMainQuest {
|
||||
@Id private ObjectId id;
|
||||
@Indexed @Getter private int ownerUid;
|
||||
@Transient @Getter private Player owner;
|
||||
@Transient @Getter private QuestManager questManager;
|
||||
@Getter private Map<Integer, GameQuest> childQuests;
|
||||
@Getter private int parentQuestId;
|
||||
@Getter private int[] questVars;
|
||||
@Getter
|
||||
List<QuestGroupSuite> questGroupSuites;
|
||||
@Getter
|
||||
int[] suggestTrackMainQuestList;
|
||||
@Id
|
||||
private ObjectId id;
|
||||
@Indexed
|
||||
@Getter
|
||||
private int ownerUid;
|
||||
@Transient
|
||||
@Getter
|
||||
private Player owner;
|
||||
@Transient
|
||||
@Getter
|
||||
private QuestManager questManager;
|
||||
@Getter
|
||||
private Map<Integer, GameQuest> childQuests;
|
||||
@Getter
|
||||
private int parentQuestId;
|
||||
@Getter
|
||||
private int[] questVars;
|
||||
//QuestUpdateQuestVarReq is sent in two stages...
|
||||
@Getter private List<Integer> questVarsUpdate;
|
||||
@Getter private ParentQuestState state;
|
||||
@Getter private boolean isFinished;
|
||||
@Getter List<QuestGroupSuite> questGroupSuites;
|
||||
|
||||
@Getter int[] suggestTrackMainQuestList;
|
||||
@Getter private Map<Integer,TalkData> talks;
|
||||
@Getter
|
||||
private List<Integer> questVarsUpdate;
|
||||
@Getter
|
||||
private ParentQuestState state;
|
||||
@Getter
|
||||
private boolean isFinished;
|
||||
@Getter
|
||||
private Map<Integer, TalkData> talks;
|
||||
//key is subId
|
||||
private Map<Integer,Position> rewindPositions;
|
||||
private Map<Integer,Position> rewindRotations;
|
||||
private Map<Integer, Position> rewindPositions;
|
||||
private Map<Integer, Position> rewindRotations;
|
||||
|
||||
@Deprecated // Morphia only. Do not use.
|
||||
public GameMainQuest() {}
|
||||
public GameMainQuest() {
|
||||
}
|
||||
|
||||
public GameMainQuest(Player player, int parentQuestId) {
|
||||
this.owner = player;
|
||||
@@ -70,7 +83,7 @@ public class GameMainQuest {
|
||||
this.childQuests = new HashMap<>();
|
||||
this.talks = new HashMap<>();
|
||||
//official server always has a list of 5 questVars, with default value 0
|
||||
this.questVars = new int[] {0,0,0,0,0};
|
||||
this.questVars = new int[]{0, 0, 0, 0, 0};
|
||||
this.state = ParentQuestState.PARENT_QUEST_STATE_NONE;
|
||||
this.questGroupSuites = new ArrayList<>();
|
||||
this.rewindPositions = new HashMap<>();
|
||||
@@ -95,6 +108,7 @@ public class GameMainQuest {
|
||||
public int getQuestVar(int i) {
|
||||
return questVars[i];
|
||||
}
|
||||
|
||||
public void setQuestVar(int i, int value) {
|
||||
int previousValue = this.questVars[i];
|
||||
this.questVars[i] = value;
|
||||
@@ -117,6 +131,7 @@ public class GameMainQuest {
|
||||
public GameQuest getChildQuestById(int id) {
|
||||
return this.getChildQuests().get(id);
|
||||
}
|
||||
|
||||
public GameQuest getChildQuestByOrder(int order) {
|
||||
return this.getChildQuests().values().stream().filter(p -> p.getQuestData().getOrder() == order).toList().get(0);
|
||||
}
|
||||
@@ -150,9 +165,13 @@ public class GameMainQuest {
|
||||
.forEach(getQuestManager()::startMainQuest);
|
||||
}
|
||||
}
|
||||
|
||||
//TODO
|
||||
public void fail() {}
|
||||
public void cancel() {}
|
||||
public void fail() {
|
||||
}
|
||||
|
||||
public void cancel() {
|
||||
}
|
||||
|
||||
// Rewinds to the last finished/unfinished rewind quest, and returns the avatar rewind position (if it exists)
|
||||
public List<Position> rewind() {
|
||||
@@ -160,18 +179,19 @@ public class GameMainQuest {
|
||||
this.questManager = getOwner().getQuestManager();
|
||||
}
|
||||
List<GameQuest> sortedByOrder = new ArrayList<>(getChildQuests().values().stream().filter(q -> q.getQuestData().isRewind()).toList());
|
||||
sortedByOrder.sort((a,b) -> {
|
||||
if ( a == b) {
|
||||
sortedByOrder.sort((a, b) -> {
|
||||
if (a == b) {
|
||||
return 0;
|
||||
}
|
||||
return a.getQuestData().getOrder() > b.getQuestData().getOrder() ? 1 : -1;});
|
||||
return a.getQuestData().getOrder() > b.getQuestData().getOrder() ? 1 : -1;
|
||||
});
|
||||
boolean didRewind = false;
|
||||
for (GameQuest quest : sortedByOrder) {
|
||||
int i = sortedByOrder.indexOf(quest);
|
||||
if ( (i+1) >= sortedByOrder.size()) {
|
||||
if ((i + 1) >= sortedByOrder.size()) {
|
||||
didRewind = quest.rewind(null);
|
||||
} else {
|
||||
didRewind = quest.rewind(sortedByOrder.get(i+1));
|
||||
didRewind = quest.rewind(sortedByOrder.get(i + 1));
|
||||
}
|
||||
if (didRewind) {
|
||||
break;
|
||||
@@ -182,13 +202,14 @@ public class GameMainQuest {
|
||||
for (GameQuest quest : rewindQuests) {
|
||||
if (rewindPositions.containsKey(quest.getSubQuestId())) {
|
||||
List<Position> posAndRot = new ArrayList<>();
|
||||
posAndRot.add(0,rewindPositions.get(quest.getSubQuestId()));
|
||||
posAndRot.add(1,rewindRotations.get(quest.getSubQuestId()));
|
||||
return posAndRot;
|
||||
posAndRot.add(0, rewindPositions.get(quest.getSubQuestId()));
|
||||
posAndRot.add(1, rewindRotations.get(quest.getSubQuestId()));
|
||||
return posAndRot;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public void addRewindPoints() {
|
||||
Bindings bindings = ScriptLoader.getEngine().createBindings();
|
||||
String script = "Quest/Share/Q" + getParentQuestId() + "ShareConfig.lua";
|
||||
@@ -223,12 +244,12 @@ public class GameMainQuest {
|
||||
if (dummyPointMap != null) {
|
||||
List<Float> avatarPosPos = dummyPointMap.get(avatarPos + ".pos");
|
||||
if (avatarPosPos != null) {
|
||||
Position pos = new Position(avatarPosPos.get(0),avatarPosPos.get(1),avatarPosPos.get(2));
|
||||
Position pos = new Position(avatarPosPos.get(0), avatarPosPos.get(1), avatarPosPos.get(2));
|
||||
List<Float> avatarPosRot = dummyPointMap.get(avatarPos + ".rot");
|
||||
Position rot = new Position(avatarPosRot.get(0),avatarPosRot.get(1),avatarPosRot.get(2));
|
||||
rewindPositions.put(Integer.valueOf(subId),pos);
|
||||
rewindRotations.put(Integer.valueOf(subId),rot);
|
||||
Grasscutter.getLogger().debug("Succesfully loaded rewind position for subQuest {}",subId);
|
||||
Position rot = new Position(avatarPosRot.get(0), avatarPosRot.get(1), avatarPosRot.get(2));
|
||||
rewindPositions.put(Integer.valueOf(subId), pos);
|
||||
rewindRotations.put(Integer.valueOf(subId), rot);
|
||||
Grasscutter.getLogger().debug("Succesfully loaded rewind position for subQuest {}", subId);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -353,21 +374,21 @@ public class GameMainQuest {
|
||||
|
||||
public ParentQuest toProto() {
|
||||
ParentQuest.Builder proto = ParentQuest.newBuilder()
|
||||
.setParentQuestId(getParentQuestId())
|
||||
.setIsFinished(isFinished());
|
||||
.setParentQuestId(getParentQuestId())
|
||||
.setIsFinished(isFinished());
|
||||
|
||||
proto.setParentQuestState(getState().getValue())
|
||||
.setVideoKey(QuestManager.getQuestKey(parentQuestId));
|
||||
for (GameQuest quest : this.getChildQuests().values()) {
|
||||
if (quest.getState() != QuestState.QUEST_STATE_UNSTARTED) {
|
||||
ChildQuest childQuest = ChildQuest.newBuilder()
|
||||
.setQuestId(quest.getSubQuestId())
|
||||
.setState(quest.getState().getValue())
|
||||
.build();
|
||||
proto.setParentQuestState(getState().getValue())
|
||||
.setVideoKey(QuestManager.getQuestKey(parentQuestId));
|
||||
for (GameQuest quest : this.getChildQuests().values()) {
|
||||
if (quest.getState() != QuestState.QUEST_STATE_UNSTARTED) {
|
||||
ChildQuest childQuest = ChildQuest.newBuilder()
|
||||
.setQuestId(quest.getSubQuestId())
|
||||
.setState(quest.getState().getValue())
|
||||
.build();
|
||||
|
||||
proto.addChildQuestList(childQuest);
|
||||
}
|
||||
proto.addChildQuestList(childQuest);
|
||||
}
|
||||
}
|
||||
|
||||
for (int i : getQuestVars()) {
|
||||
proto.addQuestVar(i);
|
||||
|
||||
@@ -13,42 +13,58 @@ import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.net.proto.ChapterStateOuterClass;
|
||||
import emu.grasscutter.net.proto.QuestOuterClass.Quest;
|
||||
import emu.grasscutter.scripts.data.SceneGroup;
|
||||
|
||||
import emu.grasscutter.server.packet.send.PacketChapterStateNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketQuestListUpdateNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketQuestProgressUpdateNotify;
|
||||
import emu.grasscutter.utils.Utils;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import javax.script.Bindings;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
@Entity
|
||||
public class GameQuest {
|
||||
@Transient @Getter @Setter private GameMainQuest mainQuest;
|
||||
@Transient @Getter private QuestData questData;
|
||||
@Transient
|
||||
@Getter
|
||||
@Setter
|
||||
private GameMainQuest mainQuest;
|
||||
@Transient
|
||||
@Getter
|
||||
private QuestData questData;
|
||||
|
||||
@Getter private int subQuestId;
|
||||
@Getter private int mainQuestId;
|
||||
@Getter @Setter
|
||||
@Getter
|
||||
private int subQuestId;
|
||||
@Getter
|
||||
private int mainQuestId;
|
||||
@Getter
|
||||
@Setter
|
||||
private QuestState state;
|
||||
|
||||
@Getter @Setter private int startTime;
|
||||
@Getter @Setter private int acceptTime;
|
||||
@Getter @Setter private int finishTime;
|
||||
@Getter
|
||||
@Setter
|
||||
private int startTime;
|
||||
@Getter
|
||||
@Setter
|
||||
private int acceptTime;
|
||||
@Getter
|
||||
@Setter
|
||||
private int finishTime;
|
||||
|
||||
@Getter private int[] finishProgressList;
|
||||
@Getter private int[] failProgressList;
|
||||
@Transient @Getter private Map<String, TriggerExcelConfigData> triggerData;
|
||||
@Getter private Map<String, Boolean> triggers;
|
||||
@Getter
|
||||
private int[] finishProgressList;
|
||||
@Getter
|
||||
private int[] failProgressList;
|
||||
@Transient
|
||||
@Getter
|
||||
private Map<String, TriggerExcelConfigData> triggerData;
|
||||
@Getter
|
||||
private Map<String, Boolean> triggers;
|
||||
private transient Bindings bindings;
|
||||
|
||||
@Deprecated // Morphia only. Do not use.
|
||||
public GameQuest() {}
|
||||
public GameQuest() {
|
||||
}
|
||||
|
||||
public GameQuest(GameMainQuest mainQuest, QuestData questData) {
|
||||
this.mainQuest = mainQuest;
|
||||
@@ -100,8 +116,8 @@ public class GameQuest {
|
||||
}
|
||||
|
||||
//Some subQuests and talks become active when some other subQuests are unfinished (even from different MainQuests)
|
||||
this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.getSubQuestId(), this.getState().getValue(),0,0,0);
|
||||
this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.getSubQuestId(), this.getState().getValue(),0,0,0);
|
||||
this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.getSubQuestId(), this.getState().getValue(), 0, 0, 0);
|
||||
this.getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.getSubQuestId(), this.getState().getValue(), 0, 0, 0);
|
||||
|
||||
Grasscutter.getLogger().debug("Quest {} is started", subQuestId);
|
||||
}
|
||||
@@ -144,8 +160,8 @@ public class GameQuest {
|
||||
|
||||
getQuestData().getFinishExec().forEach(e -> getOwner().getServer().getQuestSystem().triggerExec(this, e, e.getParam()));
|
||||
//Some subQuests have conditions that subQuests are finished (even from different MainQuests)
|
||||
getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.subQuestId, this.state.getValue(),0,0,0);
|
||||
getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.subQuestId, this.state.getValue(),0,0,0);
|
||||
getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.subQuestId, this.state.getValue(), 0, 0, 0);
|
||||
getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.subQuestId, this.state.getValue(), 0, 0, 0);
|
||||
|
||||
if (ChapterData.endQuestChapterMap.containsKey(subQuestId)) {
|
||||
mainQuest.getOwner().sendPacket(new PacketChapterStateNotify(
|
||||
@@ -164,16 +180,19 @@ public class GameQuest {
|
||||
|
||||
getQuestData().getFailExec().forEach(e -> getOwner().getServer().getQuestSystem().triggerExec(this, e, e.getParam()));
|
||||
//Some subQuests have conditions that subQuests fail (even from different MainQuests)
|
||||
getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.subQuestId, this.state.getValue(),0,0,0);
|
||||
getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.subQuestId, this.state.getValue(),0,0,0);
|
||||
getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_CONTENT_QUEST_STATE_EQUAL, this.subQuestId, this.state.getValue(), 0, 0, 0);
|
||||
getOwner().getQuestManager().triggerEvent(QuestTrigger.QUEST_COND_STATE_EQUAL, this.subQuestId, this.state.getValue(), 0, 0, 0);
|
||||
|
||||
}
|
||||
|
||||
// Return true if ParentQuest should rewind to this childQuest
|
||||
public boolean rewind(GameQuest nextRewind) {
|
||||
if (questData.isRewind()) {
|
||||
if (nextRewind == null) {return true;}
|
||||
if (nextRewind == null) {
|
||||
return true;
|
||||
}
|
||||
// if the next isRewind subQuest is none or unstarted, reset all subQuests with order higher than this one, and restart this quest
|
||||
if (nextRewind.getState() == QuestState.QUEST_STATE_NONE|| nextRewind.getState() == QuestState.QUEST_STATE_UNSTARTED) {
|
||||
if (nextRewind.getState() == QuestState.QUEST_STATE_NONE || nextRewind.getState() == QuestState.QUEST_STATE_UNSTARTED) {
|
||||
getMainQuest().getChildQuests().values().stream().filter(p -> p.getQuestData().getOrder() > this.getQuestData().getOrder()).forEach(q -> q.setState(QuestState.QUEST_STATE_UNSTARTED));
|
||||
this.start();
|
||||
return true;
|
||||
@@ -188,12 +207,12 @@ public class GameQuest {
|
||||
|
||||
public Quest toProto() {
|
||||
Quest.Builder proto = Quest.newBuilder()
|
||||
.setQuestId(getSubQuestId())
|
||||
.setState(getState().getValue())
|
||||
.setParentQuestId(getMainQuestId())
|
||||
.setStartTime(getStartTime())
|
||||
.setStartGameTime(438)
|
||||
.setAcceptTime(getAcceptTime());
|
||||
.setQuestId(getSubQuestId())
|
||||
.setState(getState().getValue())
|
||||
.setParentQuestId(getMainQuestId())
|
||||
.setStartTime(getStartTime())
|
||||
.setStartGameTime(438)
|
||||
.setAcceptTime(getAcceptTime());
|
||||
|
||||
if (getFinishProgressList() != null) {
|
||||
for (int i : getFinishProgressList()) {
|
||||
|
||||
@@ -1,41 +1,41 @@
|
||||
package emu.grasscutter.game.quest;
|
||||
|
||||
import java.beans.Transient;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.binout.MainQuestData;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
import emu.grasscutter.database.DatabaseHelper;
|
||||
import emu.grasscutter.game.player.BasePlayerManager;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.enums.ParentQuestState;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.game.quest.enums.LogicType;
|
||||
import emu.grasscutter.game.quest.enums.QuestState;
|
||||
import emu.grasscutter.server.packet.send.*;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.server.packet.send.PacketFinishedParentQuestUpdateNotify;
|
||||
import emu.grasscutter.server.packet.send.PacketQuestListUpdateNotify;
|
||||
import emu.grasscutter.utils.Position;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import jdk.jshell.spi.ExecutionControl;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
public class QuestManager extends BasePlayerManager {
|
||||
|
||||
@Getter private final Player player;
|
||||
@Getter private final Int2ObjectMap<GameMainQuest> mainQuests;
|
||||
@Getter private List<GameQuest> addToQuestListUpdateNotify;
|
||||
private static final Set<Integer> newPlayerMainQuests = Set.of(303, 318, 348, 349, 350, 351, 416, 500,
|
||||
501, 502, 503, 504, 505, 506, 507, 508, 509, 20000, 20507, 20509, 21004, 21005, 21010, 21011, 21016, 21017,
|
||||
21020, 21021, 21025, 40063, 70121, 70124, 70511, 71010, 71012, 71013, 71015, 71016, 71017, 71555);
|
||||
@Getter
|
||||
private final Player player;
|
||||
@Getter
|
||||
private final Int2ObjectMap<GameMainQuest> mainQuests;
|
||||
/*
|
||||
On SetPlayerBornDataReq, the server sends FinishedParentQuestNotify, with this exact
|
||||
parentQuestList. Captured on Game version 2.7
|
||||
Note: quest 40063 is already set to finished, with childQuest 4006406's state set to 3
|
||||
*/
|
||||
|
||||
private static Set<Integer> newPlayerMainQuests = Set.of(303,318,348,349,350,351,416,500,
|
||||
501,502,503,504,505,506,507,508,509,20000,20507,20509,21004,21005,21010,21011,21016,21017,
|
||||
21020,21021,21025,40063,70121,70124,70511,71010,71012,71013,71015,71016,71017,71555);
|
||||
@Getter
|
||||
private final List<GameQuest> addToQuestListUpdateNotify;
|
||||
|
||||
/*
|
||||
On SetPlayerBornDataReq, the server sends ServerCondMeetQuestListUpdateNotify, with this exact
|
||||
@@ -62,10 +62,6 @@ public class QuestManager extends BasePlayerManager {
|
||||
|
||||
*/
|
||||
|
||||
public static long getQuestKey(int mainQuestId) {
|
||||
QuestEncryptionKey questEncryptionKey = GameData.getMainQuestEncryptionMap().get(mainQuestId);
|
||||
return questEncryptionKey != null ? questEncryptionKey.getEncryptionKey() : 0L;
|
||||
}
|
||||
public QuestManager(Player player) {
|
||||
|
||||
super(player);
|
||||
@@ -74,6 +70,11 @@ public class QuestManager extends BasePlayerManager {
|
||||
this.addToQuestListUpdateNotify = new ArrayList<>();
|
||||
}
|
||||
|
||||
public static long getQuestKey(int mainQuestId) {
|
||||
QuestEncryptionKey questEncryptionKey = GameData.getMainQuestEncryptionMap().get(mainQuestId);
|
||||
return questEncryptionKey != null ? questEncryptionKey.getEncryptionKey() : 0L;
|
||||
}
|
||||
|
||||
public void onNewPlayerCreate() {
|
||||
|
||||
List<GameMainQuest> newQuests = this.addMultMainQuests(newPlayerMainQuests);
|
||||
@@ -98,7 +99,7 @@ public class QuestManager extends BasePlayerManager {
|
||||
private List<GameMainQuest> addMultMainQuests(Set<Integer> mainQuestIds) {
|
||||
List<GameMainQuest> newQuests = new ArrayList<>();
|
||||
for (Integer id : mainQuestIds) {
|
||||
getMainQuests().put(id.intValue(),new GameMainQuest(this.player, id));
|
||||
getMainQuests().put(id.intValue(), new GameMainQuest(this.player, id));
|
||||
getMainQuestById(id).save();
|
||||
newQuests.add(getMainQuestById(id));
|
||||
}
|
||||
@@ -109,24 +110,26 @@ public class QuestManager extends BasePlayerManager {
|
||||
Looking through mainQuests 72201-72208 and 72174, we can infer that a questGlobalVar's default value is 0
|
||||
*/
|
||||
public Integer getQuestGlobalVarValue(Integer variable) {
|
||||
return getPlayer().getQuestGlobalVariables().getOrDefault(variable,0);
|
||||
return getPlayer().getQuestGlobalVariables().getOrDefault(variable, 0);
|
||||
}
|
||||
|
||||
public void setQuestGlobalVarValue(Integer variable, Integer value) {
|
||||
Integer previousValue = getPlayer().getQuestGlobalVariables().put(variable,value);
|
||||
Grasscutter.getLogger().debug("Changed questGlobalVar {} value from {} to {}", variable, previousValue==null ? 0: previousValue, value);
|
||||
Integer previousValue = getPlayer().getQuestGlobalVariables().put(variable, value);
|
||||
Grasscutter.getLogger().debug("Changed questGlobalVar {} value from {} to {}", variable, previousValue == null ? 0 : previousValue, value);
|
||||
}
|
||||
|
||||
public void incQuestGlobalVarValue(Integer variable, Integer inc) {
|
||||
//
|
||||
Integer previousValue = getPlayer().getQuestGlobalVariables().getOrDefault(variable,0);
|
||||
getPlayer().getQuestGlobalVariables().put(variable,previousValue + inc);
|
||||
Integer previousValue = getPlayer().getQuestGlobalVariables().getOrDefault(variable, 0);
|
||||
getPlayer().getQuestGlobalVariables().put(variable, previousValue + inc);
|
||||
Grasscutter.getLogger().debug("Incremented questGlobalVar {} value from {} to {}", variable, previousValue, previousValue + inc);
|
||||
}
|
||||
|
||||
//In MainQuest 998, dec is passed as a positive integer
|
||||
public void decQuestGlobalVarValue(Integer variable, Integer dec) {
|
||||
//
|
||||
Integer previousValue = getPlayer().getQuestGlobalVariables().getOrDefault(variable,0);
|
||||
getPlayer().getQuestGlobalVariables().put(variable,previousValue - dec);
|
||||
Integer previousValue = getPlayer().getQuestGlobalVariables().getOrDefault(variable, 0);
|
||||
getPlayer().getQuestGlobalVariables().put(variable, previousValue - dec);
|
||||
Grasscutter.getLogger().debug("Decremented questGlobalVar {} value from {} to {}", variable, previousValue, previousValue - dec);
|
||||
}
|
||||
|
||||
@@ -213,6 +216,7 @@ public class QuestManager extends BasePlayerManager {
|
||||
|
||||
return quest;
|
||||
}
|
||||
|
||||
public void startMainQuest(int mainQuestId) {
|
||||
var mainQuestData = GameData.getMainQuestDataMap().get(mainQuestId);
|
||||
|
||||
@@ -225,6 +229,7 @@ public class QuestManager extends BasePlayerManager {
|
||||
.map(MainQuestData.SubQuestData::getSubId)
|
||||
.ifPresent(this::addQuest);
|
||||
}
|
||||
|
||||
public void triggerEvent(QuestTrigger condType, int... params) {
|
||||
triggerEvent(condType, "", params);
|
||||
}
|
||||
@@ -312,6 +317,7 @@ public class QuestManager extends BasePlayerManager {
|
||||
.filter(i -> i.getScene() == sceneId)
|
||||
.toList();
|
||||
}
|
||||
|
||||
public void loadFromDatabase() {
|
||||
List<GameMainQuest> quests = DatabaseHelper.getAllQuests(getPlayer());
|
||||
|
||||
|
||||
@@ -1,19 +1,15 @@
|
||||
package emu.grasscutter.game.quest;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestExecParam;
|
||||
import emu.grasscutter.game.quest.handlers.QuestBaseHandler;
|
||||
import emu.grasscutter.game.quest.handlers.QuestExecHandler;
|
||||
import emu.grasscutter.server.game.BaseGameSystem;
|
||||
import emu.grasscutter.server.game.GameServer;
|
||||
|
||||
import org.reflections.Reflections;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.QuestData.*;
|
||||
import emu.grasscutter.game.quest.handlers.QuestBaseHandler;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import org.reflections.Reflections;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public class QuestSystem extends BaseGameSystem {
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
package emu.grasscutter.game.quest;
|
||||
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
public @interface QuestValue {
|
||||
QuestTrigger value();
|
||||
QuestTrigger value();
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import lombok.Data;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class RewindData {
|
||||
AvatarData avatar;
|
||||
@@ -11,7 +12,8 @@ public class RewindData {
|
||||
|
||||
@Data
|
||||
public static class AvatarData {
|
||||
@Getter private String pos;
|
||||
@Getter
|
||||
private String pos;
|
||||
}
|
||||
|
||||
@Data
|
||||
@@ -25,4 +27,3 @@ public class RewindData {
|
||||
private String alias;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
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.QuestBaseHandler;
|
||||
|
||||
@QuestValue(QuestTrigger.QUEST_CONTENT_NONE)
|
||||
public class BaseCondition extends QuestBaseHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -15,9 +15,9 @@ public class ConditionCompleteTalk extends QuestBaseHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(condition.getParam()[0]/100);
|
||||
GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(condition.getParam()[0] / 100);
|
||||
if (checkMainQuest == null || GameData.getMainQuestDataMap().get(checkMainQuest.getParentQuestId()).getTalks() == null) {
|
||||
Grasscutter.getLogger().debug("Warning: mainQuest {} hasn't been started yet, or has no talks", condition.getParam()[0]/100);
|
||||
Grasscutter.getLogger().debug("Warning: mainQuest {} hasn't been started yet, or has no talks", condition.getParam()[0] / 100);
|
||||
return false;
|
||||
}
|
||||
MainQuestData.TalkData talkData = checkMainQuest.getTalks().get(Integer.valueOf(params[0]));
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
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.QuestBaseHandler;
|
||||
|
||||
@QuestValue(QuestTrigger.QUEST_COND_PLAYER_LEVEL_EQUAL_GREATER)
|
||||
public class ConditionPlayerLevelEqualGreater extends QuestBaseHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
return quest.getOwner().getLevel() >= params[0];
|
||||
}
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
return quest.getOwner().getLevel() >= params[0];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
@@ -14,7 +13,7 @@ public class ConditionQuestGlobalVarEqual extends QuestBaseHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
Integer questGlobalVarValue = quest.getMainQuest().getQuestManager().getQuestGlobalVarValue(Integer.valueOf(params[0]));
|
||||
Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0],questGlobalVarValue);
|
||||
Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0], questGlobalVarValue);
|
||||
return questGlobalVarValue.intValue() == params[1];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
@@ -14,7 +13,7 @@ public class ConditionQuestGlobalVarGreater extends QuestBaseHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
Integer questGlobalVarValue = quest.getMainQuest().getQuestManager().getQuestGlobalVarValue(Integer.valueOf(params[0]));
|
||||
Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0],questGlobalVarValue);
|
||||
Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0], questGlobalVarValue);
|
||||
return questGlobalVarValue.intValue() > params[1];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
@@ -14,7 +13,7 @@ public class ConditionQuestGlobalVarLess extends QuestBaseHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
Integer questGlobalVarValue = quest.getMainQuest().getQuestManager().getQuestGlobalVarValue(Integer.valueOf(params[0]));
|
||||
Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0],questGlobalVarValue);
|
||||
Grasscutter.getLogger().debug("questGlobarVar {} : {}", params[0], questGlobalVarValue);
|
||||
return questGlobalVarValue.intValue() < params[1];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.quest.GameMainQuest;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
@@ -14,7 +13,7 @@ public class ConditionQuestVarEqual extends QuestBaseHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
int questVarValue = quest.getMainQuest().getQuestVars()[params[0]];
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue);
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue);
|
||||
return questVarValue == params[1];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.quest.GameMainQuest;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
@@ -14,7 +13,7 @@ public class ConditionQuestVarGreater extends QuestBaseHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
int questVarValue = quest.getMainQuest().getQuestVars()[params[0]];
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue);
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue);
|
||||
return questVarValue > params[1];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.quest.GameMainQuest;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
@@ -14,7 +13,7 @@ public class ConditionQuestVarLess extends QuestBaseHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
int questVarValue = quest.getMainQuest().getQuestVars()[params[0]];
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue);
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue);
|
||||
return questVarValue < params[1];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
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.QuestBaseHandler;
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
package emu.grasscutter.game.quest.conditions;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package emu.grasscutter.game.quest.content;
|
||||
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
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.QuestBaseHandler;
|
||||
|
||||
@QuestValue(QuestTrigger.QUEST_CONTENT_NONE)
|
||||
public class BaseContent extends QuestBaseHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
// TODO Auto-generated method stub
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,8 +13,10 @@ public class ContentCompleteAnyTalk extends QuestBaseHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(params[0]/100);
|
||||
if (checkMainQuest == null) {return false;}
|
||||
GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(params[0] / 100);
|
||||
if (checkMainQuest == null) {
|
||||
return false;
|
||||
}
|
||||
MainQuestData.TalkData talkData = checkMainQuest.getTalks().get(Integer.valueOf(paramStr));
|
||||
return talkData == null || condition.getParamStr().contains(paramStr) || checkMainQuest.getChildQuestById(params[0]) != null;
|
||||
}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
package emu.grasscutter.game.quest.content;
|
||||
|
||||
import emu.grasscutter.data.binout.MainQuestData;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
import emu.grasscutter.game.quest.GameMainQuest;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.game.quest.handlers.QuestBaseHandler;
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package emu.grasscutter.game.quest.content;
|
||||
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
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.QuestBaseHandler;
|
||||
|
||||
|
||||
@@ -9,9 +9,9 @@ import emu.grasscutter.game.quest.handlers.QuestBaseHandler;
|
||||
@QuestValue(QuestTrigger.QUEST_CONTENT_ENTER_ROOM)
|
||||
public class ContentEnterRoom extends QuestBaseHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
return condition.getParam()[0] == params[0];
|
||||
}
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
return condition.getParam()[0] == params[0];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
package emu.grasscutter.game.quest.content;
|
||||
|
||||
import emu.grasscutter.data.binout.MainQuestData;
|
||||
import emu.grasscutter.game.quest.GameMainQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
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.QuestBaseHandler;
|
||||
|
||||
|
||||
@@ -9,15 +9,15 @@ import emu.grasscutter.game.quest.handlers.QuestBaseHandler;
|
||||
@QuestValue(QuestTrigger.QUEST_CONTENT_GAME_TIME_TICK)
|
||||
public class ContentGameTimeTick extends QuestBaseHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
var range = condition.getParamStr().split(",");
|
||||
var min = Math.min(Integer.parseInt(range[0]), Integer.parseInt(range[1]));
|
||||
var max = Math.max(Integer.parseInt(range[0]), Integer.parseInt(range[1]));
|
||||
|
||||
// params[0] is clock, params[1] is day
|
||||
return params[0] >= min && params[0] <= max &&
|
||||
return params[0] >= min && params[0] <= max &&
|
||||
params[1] >= condition.getParam()[0];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -9,9 +9,9 @@ import emu.grasscutter.game.quest.handlers.QuestBaseHandler;
|
||||
@QuestValue(QuestTrigger.QUEST_CONTENT_INTERACT_GADGET)
|
||||
public class ContentInteractGadget extends QuestBaseHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
return params[0] == condition.getParam()[0];
|
||||
}
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
return params[0] == condition.getParam()[0];
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package emu.grasscutter.game.quest.content;
|
||||
|
||||
import emu.grasscutter.data.excels.QuestData.QuestCondition;
|
||||
import emu.grasscutter.game.player.Player;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
|
||||
@@ -9,9 +9,9 @@ import emu.grasscutter.game.quest.handlers.QuestBaseHandler;
|
||||
@QuestValue(QuestTrigger.QUEST_CONTENT_LUA_NOTIFY)
|
||||
public class ContentLuaNotify extends QuestBaseHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
return condition.getParamStr().equals(paramStr);
|
||||
}
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
return condition.getParamStr().equals(paramStr);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -13,8 +13,10 @@ public class ContentNotFinishPlot extends QuestBaseHandler {
|
||||
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(params[0]/100);
|
||||
if (checkMainQuest == null) {return false;}
|
||||
GameMainQuest checkMainQuest = quest.getOwner().getQuestManager().getMainQuestById(params[0] / 100);
|
||||
if (checkMainQuest == null) {
|
||||
return false;
|
||||
}
|
||||
MainQuestData.TalkData talkData = checkMainQuest.getTalks().get(Integer.valueOf(params[0]));
|
||||
return talkData == null;
|
||||
}
|
||||
|
||||
@@ -12,7 +12,9 @@ public class ContentQuestStateEqual extends QuestBaseHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params) {
|
||||
GameQuest checkQuest = quest.getOwner().getQuestManager().getQuestById(condition.getParam()[0]);
|
||||
if (checkQuest == null) {return false;}
|
||||
if (checkQuest == null) {
|
||||
return false;
|
||||
}
|
||||
return checkQuest.getState().getValue() == params[1];
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ public class ContentQuestVarEqual extends QuestBaseHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
int questVarValue = quest.getMainQuest().getQuestVars()[params[0]];
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue);
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue);
|
||||
return questVarValue == params[1];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ public class ContentQuestVarGreater extends QuestBaseHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
int questVarValue = quest.getMainQuest().getQuestVars()[params[0]];
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue);
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue);
|
||||
return questVarValue > params[1];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ public class ContentQuestVarLess extends QuestBaseHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestCondition condition, String paramStr, int... params) {
|
||||
int questVarValue = quest.getMainQuest().getQuestVars()[params[0]];
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0],questVarValue);
|
||||
Grasscutter.getLogger().debug("questVar {} : {}", params[0], questVarValue);
|
||||
return questVarValue < params[1];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
package emu.grasscutter.game.quest.content;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.excels.QuestData;
|
||||
import emu.grasscutter.data.excels.TriggerExcelConfigData;
|
||||
import emu.grasscutter.game.quest.GameQuest;
|
||||
import emu.grasscutter.game.quest.QuestValue;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
|
||||
@@ -3,41 +3,41 @@ package emu.grasscutter.game.quest.enums;
|
||||
import java.util.Arrays;
|
||||
|
||||
public enum LogicType {
|
||||
LOGIC_NONE (0),
|
||||
LOGIC_AND (1),
|
||||
LOGIC_OR (2),
|
||||
LOGIC_NOT (3),
|
||||
LOGIC_A_AND_ETCOR (4),
|
||||
LOGIC_A_AND_B_AND_ETCOR (5),
|
||||
LOGIC_A_OR_ETCAND (6),
|
||||
LOGIC_A_OR_B_OR_ETCAND (7),
|
||||
LOGIC_A_AND_B_OR_ETCAND (8);
|
||||
|
||||
private final int value;
|
||||
|
||||
LogicType(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
LOGIC_NONE(0),
|
||||
LOGIC_AND(1),
|
||||
LOGIC_OR(2),
|
||||
LOGIC_NOT(3),
|
||||
LOGIC_A_AND_ETCOR(4),
|
||||
LOGIC_A_AND_B_AND_ETCOR(5),
|
||||
LOGIC_A_OR_ETCAND(6),
|
||||
LOGIC_A_OR_B_OR_ETCAND(7),
|
||||
LOGIC_A_AND_B_OR_ETCAND(8);
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public static boolean calculate(LogicType logicType, int[] progress) {
|
||||
if (logicType == null) {
|
||||
return progress[0] == 1;
|
||||
}
|
||||
|
||||
switch (logicType) {
|
||||
case LOGIC_AND -> {
|
||||
return Arrays.stream(progress).allMatch(i -> i == 1);
|
||||
}
|
||||
case LOGIC_OR -> {
|
||||
return Arrays.stream(progress).anyMatch(i -> i == 1);
|
||||
}
|
||||
default -> {
|
||||
return Arrays.stream(progress).anyMatch(i -> i == 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
private final int value;
|
||||
|
||||
LogicType(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
|
||||
public static boolean calculate(LogicType logicType, int[] progress) {
|
||||
if (logicType == null) {
|
||||
return progress[0] == 1;
|
||||
}
|
||||
|
||||
switch (logicType) {
|
||||
case LOGIC_AND -> {
|
||||
return Arrays.stream(progress).allMatch(i -> i == 1);
|
||||
}
|
||||
case LOGIC_OR -> {
|
||||
return Arrays.stream(progress).anyMatch(i -> i == 1);
|
||||
}
|
||||
default -> {
|
||||
return Arrays.stream(progress).anyMatch(i -> i == 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
package emu.grasscutter.game.quest.enums;
|
||||
|
||||
public enum ParentQuestState {
|
||||
PARENT_QUEST_STATE_NONE (0),
|
||||
PARENT_QUEST_STATE_FINISHED (1),
|
||||
PARENT_QUEST_STATE_FAILED (2),
|
||||
PARENT_QUEST_STATE_CANCELED (3);
|
||||
|
||||
private final int value;
|
||||
|
||||
ParentQuestState(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
PARENT_QUEST_STATE_NONE(0),
|
||||
PARENT_QUEST_STATE_FINISHED(1),
|
||||
PARENT_QUEST_STATE_FAILED(2),
|
||||
PARENT_QUEST_STATE_CANCELED(3);
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
private final int value;
|
||||
|
||||
ParentQuestState(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
package emu.grasscutter.game.quest.enums;
|
||||
|
||||
public enum QuestGuideType {
|
||||
QUEST_GUIDE_NONE (0),
|
||||
QUEST_GUIDE_LOCATION (1),
|
||||
QUEST_GUIDE_NPC (2);
|
||||
|
||||
private final int value;
|
||||
|
||||
QuestGuideType(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
QUEST_GUIDE_NONE(0),
|
||||
QUEST_GUIDE_LOCATION(1),
|
||||
QUEST_GUIDE_NPC(2);
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
private final int value;
|
||||
|
||||
QuestGuideType(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
package emu.grasscutter.game.quest.enums;
|
||||
|
||||
public enum QuestShowType {
|
||||
QUEST_SHOW (0),
|
||||
QUEST_HIDDEN (1);
|
||||
|
||||
private final int value;
|
||||
|
||||
QuestShowType(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
QUEST_SHOW(0),
|
||||
QUEST_HIDDEN(1);
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
private final int value;
|
||||
|
||||
QuestShowType(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
package emu.grasscutter.game.quest.enums;
|
||||
|
||||
public enum QuestState {
|
||||
QUEST_STATE_NONE (0),
|
||||
QUEST_STATE_UNSTARTED (1),
|
||||
QUEST_STATE_UNFINISHED (2),
|
||||
QUEST_STATE_FINISHED (3),
|
||||
QUEST_STATE_FAILED (4),
|
||||
QUEST_STATE_NONE(0),
|
||||
QUEST_STATE_UNSTARTED(1),
|
||||
QUEST_STATE_UNFINISHED(2),
|
||||
QUEST_STATE_FINISHED(3),
|
||||
QUEST_STATE_FAILED(4),
|
||||
|
||||
// Used by lua
|
||||
NONE (0),
|
||||
NONE(0),
|
||||
UNSTARTED(1),
|
||||
UNFINISHED(2),
|
||||
FINISHED(3),
|
||||
|
||||
@@ -8,237 +8,227 @@ import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
public enum QuestTrigger {
|
||||
QUEST_COND_NONE (0),
|
||||
QUEST_COND_STATE_EQUAL (1),
|
||||
QUEST_COND_STATE_NOT_EQUAL (2),
|
||||
QUEST_COND_PACK_HAVE_ITEM (3),
|
||||
QUEST_COND_AVATAR_ELEMENT_EQUAL (4),
|
||||
QUEST_COND_AVATAR_ELEMENT_NOT_EQUAL (5),
|
||||
QUEST_COND_AVATAR_CAN_CHANGE_ELEMENT (6),
|
||||
QUEST_COND_CITY_LEVEL_EQUAL_GREATER (7),
|
||||
QUEST_COND_ITEM_NUM_LESS_THAN (8),
|
||||
QUEST_COND_DAILY_TASK_START (9),
|
||||
QUEST_COND_OPEN_STATE_EQUAL (10),
|
||||
QUEST_COND_DAILY_TASK_OPEN (11),
|
||||
QUEST_COND_DAILY_TASK_REWARD_CAN_GET (12),
|
||||
QUEST_COND_DAILY_TASK_REWARD_RECEIVED (13),
|
||||
QUEST_COND_PLAYER_LEVEL_REWARD_CAN_GET (14),
|
||||
QUEST_COND_EXPLORATION_REWARD_CAN_GET (15),
|
||||
QUEST_COND_IS_WORLD_OWNER (16),
|
||||
QUEST_COND_PLAYER_LEVEL_EQUAL_GREATER (17),
|
||||
QUEST_COND_SCENE_AREA_UNLOCKED (18),
|
||||
QUEST_COND_ITEM_GIVING_ACTIVED (19),
|
||||
QUEST_COND_ITEM_GIVING_FINISHED (20),
|
||||
QUEST_COND_IS_DAYTIME (21),
|
||||
QUEST_COND_CURRENT_AVATAR (22),
|
||||
QUEST_COND_CURRENT_AREA (23),
|
||||
QUEST_COND_QUEST_VAR_EQUAL (24),
|
||||
QUEST_COND_QUEST_VAR_GREATER (25),
|
||||
QUEST_COND_QUEST_VAR_LESS (26),
|
||||
QUEST_COND_FORGE_HAVE_FINISH (27),
|
||||
QUEST_COND_DAILY_TASK_IN_PROGRESS (28),
|
||||
QUEST_COND_DAILY_TASK_FINISHED (29),
|
||||
QUEST_COND_ACTIVITY_COND (30),
|
||||
QUEST_COND_ACTIVITY_OPEN (31),
|
||||
QUEST_COND_DAILY_TASK_VAR_GT (32),
|
||||
QUEST_COND_DAILY_TASK_VAR_EQ (33),
|
||||
QUEST_COND_DAILY_TASK_VAR_LT (34),
|
||||
QUEST_COND_BARGAIN_ITEM_GT (35),
|
||||
QUEST_COND_BARGAIN_ITEM_EQ (36),
|
||||
QUEST_COND_BARGAIN_ITEM_LT (37),
|
||||
QUEST_COND_COMPLETE_TALK (38),
|
||||
QUEST_COND_NOT_HAVE_BLOSSOM_TALK (39),
|
||||
QUEST_COND_IS_CUR_BLOSSOM_TALK (40),
|
||||
QUEST_COND_QUEST_NOT_RECEIVE (41),
|
||||
QUEST_COND_QUEST_SERVER_COND_VALID (42),
|
||||
QUEST_COND_ACTIVITY_CLIENT_COND (43),
|
||||
QUEST_COND_QUEST_GLOBAL_VAR_EQUAL (44),
|
||||
QUEST_COND_QUEST_GLOBAL_VAR_GREATER (45),
|
||||
QUEST_COND_QUEST_GLOBAL_VAR_LESS (46),
|
||||
QUEST_COND_PERSONAL_LINE_UNLOCK (47),
|
||||
QUEST_COND_CITY_REPUTATION_REQUEST (48),
|
||||
QUEST_COND_MAIN_COOP_START (49),
|
||||
QUEST_COND_MAIN_COOP_ENTER_SAVE_POINT (50),
|
||||
QUEST_COND_CITY_REPUTATION_LEVEL (51),
|
||||
QUEST_COND_CITY_REPUTATION_UNLOCK (52),
|
||||
QUEST_COND_LUA_NOTIFY (53),
|
||||
QUEST_COND_CUR_CLIMATE (54),
|
||||
QUEST_COND_ACTIVITY_END (55),
|
||||
QUEST_COND_COOP_POINT_RUNNING (56),
|
||||
QUEST_COND_GADGET_TALK_STATE_EQUAL (57),
|
||||
QUEST_COND_AVATAR_FETTER_GT (58),
|
||||
QUEST_COND_AVATAR_FETTER_EQ (59),
|
||||
QUEST_COND_AVATAR_FETTER_LT (60),
|
||||
QUEST_COND_NEW_HOMEWORLD_MOUDLE_UNLOCK (61),
|
||||
QUEST_COND_NEW_HOMEWORLD_LEVEL_REWARD (62),
|
||||
QUEST_COND_NEW_HOMEWORLD_MAKE_FINISH (63),
|
||||
QUEST_COND_HOMEWORLD_NPC_EVENT (64),
|
||||
QUEST_COND_TIME_VAR_GT_EQ (65),
|
||||
QUEST_COND_TIME_VAR_PASS_DAY (66),
|
||||
QUEST_COND_HOMEWORLD_NPC_NEW_TALK (67),
|
||||
QUEST_COND_PLAYER_CHOOSE_MALE (68),
|
||||
QUEST_COND_HISTORY_GOT_ANY_ITEM (69),
|
||||
QUEST_COND_LEARNED_RECIPE (70),
|
||||
QUEST_COND_LUNARITE_REGION_UNLOCKED (71),
|
||||
QUEST_COND_LUNARITE_HAS_REGION_HINT_COUNT (72),
|
||||
QUEST_COND_LUNARITE_COLLECT_FINISH (73),
|
||||
QUEST_COND_LUNARITE_MARK_ALL_FINISH (74),
|
||||
QUEST_COND_NEW_HOMEWORLD_SHOP_ITEM (75),
|
||||
QUEST_COND_SCENE_POINT_UNLOCK (76),
|
||||
QUEST_COND_SCENE_LEVEL_TAG_EQ (77),
|
||||
QUEST_COND_NONE(0),
|
||||
QUEST_COND_STATE_EQUAL(1),
|
||||
QUEST_COND_STATE_NOT_EQUAL(2),
|
||||
QUEST_COND_PACK_HAVE_ITEM(3),
|
||||
QUEST_COND_AVATAR_ELEMENT_EQUAL(4),
|
||||
QUEST_COND_AVATAR_ELEMENT_NOT_EQUAL(5),
|
||||
QUEST_COND_AVATAR_CAN_CHANGE_ELEMENT(6),
|
||||
QUEST_COND_CITY_LEVEL_EQUAL_GREATER(7),
|
||||
QUEST_COND_ITEM_NUM_LESS_THAN(8),
|
||||
QUEST_COND_DAILY_TASK_START(9),
|
||||
QUEST_COND_OPEN_STATE_EQUAL(10),
|
||||
QUEST_COND_DAILY_TASK_OPEN(11),
|
||||
QUEST_COND_DAILY_TASK_REWARD_CAN_GET(12),
|
||||
QUEST_COND_DAILY_TASK_REWARD_RECEIVED(13),
|
||||
QUEST_COND_PLAYER_LEVEL_REWARD_CAN_GET(14),
|
||||
QUEST_COND_EXPLORATION_REWARD_CAN_GET(15),
|
||||
QUEST_COND_IS_WORLD_OWNER(16),
|
||||
QUEST_COND_PLAYER_LEVEL_EQUAL_GREATER(17),
|
||||
QUEST_COND_SCENE_AREA_UNLOCKED(18),
|
||||
QUEST_COND_ITEM_GIVING_ACTIVED(19),
|
||||
QUEST_COND_ITEM_GIVING_FINISHED(20),
|
||||
QUEST_COND_IS_DAYTIME(21),
|
||||
QUEST_COND_CURRENT_AVATAR(22),
|
||||
QUEST_COND_CURRENT_AREA(23),
|
||||
QUEST_COND_QUEST_VAR_EQUAL(24),
|
||||
QUEST_COND_QUEST_VAR_GREATER(25),
|
||||
QUEST_COND_QUEST_VAR_LESS(26),
|
||||
QUEST_COND_FORGE_HAVE_FINISH(27),
|
||||
QUEST_COND_DAILY_TASK_IN_PROGRESS(28),
|
||||
QUEST_COND_DAILY_TASK_FINISHED(29),
|
||||
QUEST_COND_ACTIVITY_COND(30),
|
||||
QUEST_COND_ACTIVITY_OPEN(31),
|
||||
QUEST_COND_DAILY_TASK_VAR_GT(32),
|
||||
QUEST_COND_DAILY_TASK_VAR_EQ(33),
|
||||
QUEST_COND_DAILY_TASK_VAR_LT(34),
|
||||
QUEST_COND_BARGAIN_ITEM_GT(35),
|
||||
QUEST_COND_BARGAIN_ITEM_EQ(36),
|
||||
QUEST_COND_BARGAIN_ITEM_LT(37),
|
||||
QUEST_COND_COMPLETE_TALK(38),
|
||||
QUEST_COND_NOT_HAVE_BLOSSOM_TALK(39),
|
||||
QUEST_COND_IS_CUR_BLOSSOM_TALK(40),
|
||||
QUEST_COND_QUEST_NOT_RECEIVE(41),
|
||||
QUEST_COND_QUEST_SERVER_COND_VALID(42),
|
||||
QUEST_COND_ACTIVITY_CLIENT_COND(43),
|
||||
QUEST_COND_QUEST_GLOBAL_VAR_EQUAL(44),
|
||||
QUEST_COND_QUEST_GLOBAL_VAR_GREATER(45),
|
||||
QUEST_COND_QUEST_GLOBAL_VAR_LESS(46),
|
||||
QUEST_COND_PERSONAL_LINE_UNLOCK(47),
|
||||
QUEST_COND_CITY_REPUTATION_REQUEST(48),
|
||||
QUEST_COND_MAIN_COOP_START(49),
|
||||
QUEST_COND_MAIN_COOP_ENTER_SAVE_POINT(50),
|
||||
QUEST_COND_CITY_REPUTATION_LEVEL(51),
|
||||
QUEST_COND_CITY_REPUTATION_UNLOCK(52),
|
||||
QUEST_COND_LUA_NOTIFY(53),
|
||||
QUEST_COND_CUR_CLIMATE(54),
|
||||
QUEST_COND_ACTIVITY_END(55),
|
||||
QUEST_COND_COOP_POINT_RUNNING(56),
|
||||
QUEST_COND_GADGET_TALK_STATE_EQUAL(57),
|
||||
QUEST_COND_AVATAR_FETTER_GT(58),
|
||||
QUEST_COND_AVATAR_FETTER_EQ(59),
|
||||
QUEST_COND_AVATAR_FETTER_LT(60),
|
||||
QUEST_COND_NEW_HOMEWORLD_MOUDLE_UNLOCK(61),
|
||||
QUEST_COND_NEW_HOMEWORLD_LEVEL_REWARD(62),
|
||||
QUEST_COND_NEW_HOMEWORLD_MAKE_FINISH(63),
|
||||
QUEST_COND_HOMEWORLD_NPC_EVENT(64),
|
||||
QUEST_COND_TIME_VAR_GT_EQ(65),
|
||||
QUEST_COND_TIME_VAR_PASS_DAY(66),
|
||||
QUEST_COND_HOMEWORLD_NPC_NEW_TALK(67),
|
||||
QUEST_COND_PLAYER_CHOOSE_MALE(68),
|
||||
QUEST_COND_HISTORY_GOT_ANY_ITEM(69),
|
||||
QUEST_COND_LEARNED_RECIPE(70),
|
||||
QUEST_COND_LUNARITE_REGION_UNLOCKED(71),
|
||||
QUEST_COND_LUNARITE_HAS_REGION_HINT_COUNT(72),
|
||||
QUEST_COND_LUNARITE_COLLECT_FINISH(73),
|
||||
QUEST_COND_LUNARITE_MARK_ALL_FINISH(74),
|
||||
QUEST_COND_NEW_HOMEWORLD_SHOP_ITEM(75),
|
||||
QUEST_COND_SCENE_POINT_UNLOCK(76),
|
||||
QUEST_COND_SCENE_LEVEL_TAG_EQ(77),
|
||||
|
||||
QUEST_CONTENT_NONE (0),
|
||||
QUEST_CONTENT_KILL_MONSTER (1),
|
||||
QUEST_CONTENT_COMPLETE_TALK (2),
|
||||
QUEST_CONTENT_MONSTER_DIE (3),
|
||||
QUEST_CONTENT_FINISH_PLOT (4),
|
||||
QUEST_CONTENT_OBTAIN_ITEM (5),
|
||||
QUEST_CONTENT_TRIGGER_FIRE (6),
|
||||
QUEST_CONTENT_CLEAR_GROUP_MONSTER (7),
|
||||
QUEST_CONTENT_NOT_FINISH_PLOT (8),
|
||||
QUEST_CONTENT_ENTER_DUNGEON (9),
|
||||
QUEST_CONTENT_ENTER_MY_WORLD (10),
|
||||
QUEST_CONTENT_FINISH_DUNGEON (11),
|
||||
QUEST_CONTENT_DESTROY_GADGET (12),
|
||||
QUEST_CONTENT_OBTAIN_MATERIAL_WITH_SUBTYPE (13),
|
||||
QUEST_CONTENT_NICK_NAME (14),
|
||||
QUEST_CONTENT_WORKTOP_SELECT (15),
|
||||
QUEST_CONTENT_SEAL_BATTLE_RESULT (16),
|
||||
QUEST_CONTENT_ENTER_ROOM (17),
|
||||
QUEST_CONTENT_GAME_TIME_TICK (18),
|
||||
QUEST_CONTENT_FAIL_DUNGEON (19),
|
||||
QUEST_CONTENT_LUA_NOTIFY (20),
|
||||
QUEST_CONTENT_TEAM_DEAD (21),
|
||||
QUEST_CONTENT_COMPLETE_ANY_TALK (22),
|
||||
QUEST_CONTENT_UNLOCK_TRANS_POINT (23),
|
||||
QUEST_CONTENT_ADD_QUEST_PROGRESS (24),
|
||||
QUEST_CONTENT_INTERACT_GADGET (25),
|
||||
QUEST_CONTENT_DAILY_TASK_COMP_FINISH (26),
|
||||
QUEST_CONTENT_FINISH_ITEM_GIVING (27),
|
||||
QUEST_CONTENT_SKILL (107),
|
||||
QUEST_CONTENT_CITY_LEVEL_UP (109),
|
||||
QUEST_CONTENT_PATTERN_GROUP_CLEAR_MONSTER (110),
|
||||
QUEST_CONTENT_ITEM_LESS_THAN (111),
|
||||
QUEST_CONTENT_PLAYER_LEVEL_UP (112),
|
||||
QUEST_CONTENT_DUNGEON_OPEN_STATUE (113),
|
||||
QUEST_CONTENT_UNLOCK_AREA (114),
|
||||
QUEST_CONTENT_OPEN_CHEST_WITH_GADGET_ID (115),
|
||||
QUEST_CONTENT_UNLOCK_TRANS_POINT_WITH_TYPE (116),
|
||||
QUEST_CONTENT_FINISH_DAILY_DUNGEON (117),
|
||||
QUEST_CONTENT_FINISH_WEEKLY_DUNGEON (118),
|
||||
QUEST_CONTENT_QUEST_VAR_EQUAL (119),
|
||||
QUEST_CONTENT_QUEST_VAR_GREATER (120),
|
||||
QUEST_CONTENT_QUEST_VAR_LESS (121),
|
||||
QUEST_CONTENT_OBTAIN_VARIOUS_ITEM (122),
|
||||
QUEST_CONTENT_FINISH_TOWER_LEVEL (123),
|
||||
QUEST_CONTENT_BARGAIN_SUCC (124),
|
||||
QUEST_CONTENT_BARGAIN_FAIL (125),
|
||||
QUEST_CONTENT_ITEM_LESS_THAN_BARGAIN (126),
|
||||
QUEST_CONTENT_ACTIVITY_TRIGGER_FAILED (127),
|
||||
QUEST_CONTENT_MAIN_COOP_ENTER_SAVE_POINT (128),
|
||||
QUEST_CONTENT_ANY_MANUAL_TRANSPORT (129),
|
||||
QUEST_CONTENT_USE_ITEM (130),
|
||||
QUEST_CONTENT_MAIN_COOP_ENTER_ANY_SAVE_POINT (131),
|
||||
QUEST_CONTENT_ENTER_MY_HOME_WORLD (132),
|
||||
QUEST_CONTENT_ENTER_MY_WORLD_SCENE (133),
|
||||
QUEST_CONTENT_TIME_VAR_GT_EQ (134),
|
||||
QUEST_CONTENT_TIME_VAR_PASS_DAY (135),
|
||||
QUEST_CONTENT_QUEST_STATE_EQUAL (136),
|
||||
QUEST_CONTENT_QUEST_STATE_NOT_EQUAL (137),
|
||||
QUEST_CONTENT_UNLOCKED_RECIPE (138),
|
||||
QUEST_CONTENT_NOT_UNLOCKED_RECIPE (139),
|
||||
QUEST_CONTENT_FISHING_SUCC (140),
|
||||
QUEST_CONTENT_ENTER_ROGUE_DUNGEON (141),
|
||||
QUEST_CONTENT_USE_WIDGET (142),
|
||||
QUEST_CONTENT_CAPTURE_SUCC (143),
|
||||
QUEST_CONTENT_CAPTURE_USE_CAPTURETAG_LIST (144),
|
||||
QUEST_CONTENT_CAPTURE_USE_MATERIAL_LIST (145),
|
||||
QUEST_CONTENT_ENTER_VEHICLE (147),
|
||||
QUEST_CONTENT_SCENE_LEVEL_TAG_EQ (148),
|
||||
QUEST_CONTENT_LEAVE_SCENE (149),
|
||||
QUEST_CONTENT_LEAVE_SCENE_RANGE (150),
|
||||
QUEST_CONTENT_IRODORI_FINISH_FLOWER_COMBINATION (151),
|
||||
QUEST_CONTENT_IRODORI_POETRY_REACH_MIN_PROGRESS (152),
|
||||
QUEST_CONTENT_IRODORI_POETRY_FINISH_FILL_POETRY (153),
|
||||
QUEST_CONTENT_NONE(0),
|
||||
QUEST_CONTENT_KILL_MONSTER(1),
|
||||
QUEST_CONTENT_COMPLETE_TALK(2),
|
||||
QUEST_CONTENT_MONSTER_DIE(3),
|
||||
QUEST_CONTENT_FINISH_PLOT(4),
|
||||
QUEST_CONTENT_OBTAIN_ITEM(5),
|
||||
QUEST_CONTENT_TRIGGER_FIRE(6),
|
||||
QUEST_CONTENT_CLEAR_GROUP_MONSTER(7),
|
||||
QUEST_CONTENT_NOT_FINISH_PLOT(8),
|
||||
QUEST_CONTENT_ENTER_DUNGEON(9),
|
||||
QUEST_CONTENT_ENTER_MY_WORLD(10),
|
||||
QUEST_CONTENT_FINISH_DUNGEON(11),
|
||||
QUEST_CONTENT_DESTROY_GADGET(12),
|
||||
QUEST_CONTENT_OBTAIN_MATERIAL_WITH_SUBTYPE(13),
|
||||
QUEST_CONTENT_NICK_NAME(14),
|
||||
QUEST_CONTENT_WORKTOP_SELECT(15),
|
||||
QUEST_CONTENT_SEAL_BATTLE_RESULT(16),
|
||||
QUEST_CONTENT_ENTER_ROOM(17),
|
||||
QUEST_CONTENT_GAME_TIME_TICK(18),
|
||||
QUEST_CONTENT_FAIL_DUNGEON(19),
|
||||
QUEST_CONTENT_LUA_NOTIFY(20),
|
||||
QUEST_CONTENT_TEAM_DEAD(21),
|
||||
QUEST_CONTENT_COMPLETE_ANY_TALK(22),
|
||||
QUEST_CONTENT_UNLOCK_TRANS_POINT(23),
|
||||
QUEST_CONTENT_ADD_QUEST_PROGRESS(24),
|
||||
QUEST_CONTENT_INTERACT_GADGET(25),
|
||||
QUEST_CONTENT_DAILY_TASK_COMP_FINISH(26),
|
||||
QUEST_CONTENT_FINISH_ITEM_GIVING(27),
|
||||
QUEST_CONTENT_SKILL(107),
|
||||
QUEST_CONTENT_CITY_LEVEL_UP(109),
|
||||
QUEST_CONTENT_PATTERN_GROUP_CLEAR_MONSTER(110),
|
||||
QUEST_CONTENT_ITEM_LESS_THAN(111),
|
||||
QUEST_CONTENT_PLAYER_LEVEL_UP(112),
|
||||
QUEST_CONTENT_DUNGEON_OPEN_STATUE(113),
|
||||
QUEST_CONTENT_UNLOCK_AREA(114),
|
||||
QUEST_CONTENT_OPEN_CHEST_WITH_GADGET_ID(115),
|
||||
QUEST_CONTENT_UNLOCK_TRANS_POINT_WITH_TYPE(116),
|
||||
QUEST_CONTENT_FINISH_DAILY_DUNGEON(117),
|
||||
QUEST_CONTENT_FINISH_WEEKLY_DUNGEON(118),
|
||||
QUEST_CONTENT_QUEST_VAR_EQUAL(119),
|
||||
QUEST_CONTENT_QUEST_VAR_GREATER(120),
|
||||
QUEST_CONTENT_QUEST_VAR_LESS(121),
|
||||
QUEST_CONTENT_OBTAIN_VARIOUS_ITEM(122),
|
||||
QUEST_CONTENT_FINISH_TOWER_LEVEL(123),
|
||||
QUEST_CONTENT_BARGAIN_SUCC(124),
|
||||
QUEST_CONTENT_BARGAIN_FAIL(125),
|
||||
QUEST_CONTENT_ITEM_LESS_THAN_BARGAIN(126),
|
||||
QUEST_CONTENT_ACTIVITY_TRIGGER_FAILED(127),
|
||||
QUEST_CONTENT_MAIN_COOP_ENTER_SAVE_POINT(128),
|
||||
QUEST_CONTENT_ANY_MANUAL_TRANSPORT(129),
|
||||
QUEST_CONTENT_USE_ITEM(130),
|
||||
QUEST_CONTENT_MAIN_COOP_ENTER_ANY_SAVE_POINT(131),
|
||||
QUEST_CONTENT_ENTER_MY_HOME_WORLD(132),
|
||||
QUEST_CONTENT_ENTER_MY_WORLD_SCENE(133),
|
||||
QUEST_CONTENT_TIME_VAR_GT_EQ(134),
|
||||
QUEST_CONTENT_TIME_VAR_PASS_DAY(135),
|
||||
QUEST_CONTENT_QUEST_STATE_EQUAL(136),
|
||||
QUEST_CONTENT_QUEST_STATE_NOT_EQUAL(137),
|
||||
QUEST_CONTENT_UNLOCKED_RECIPE(138),
|
||||
QUEST_CONTENT_NOT_UNLOCKED_RECIPE(139),
|
||||
QUEST_CONTENT_FISHING_SUCC(140),
|
||||
QUEST_CONTENT_ENTER_ROGUE_DUNGEON(141),
|
||||
QUEST_CONTENT_USE_WIDGET(142),
|
||||
QUEST_CONTENT_CAPTURE_SUCC(143),
|
||||
QUEST_CONTENT_CAPTURE_USE_CAPTURETAG_LIST(144),
|
||||
QUEST_CONTENT_CAPTURE_USE_MATERIAL_LIST(145),
|
||||
QUEST_CONTENT_ENTER_VEHICLE(147),
|
||||
QUEST_CONTENT_SCENE_LEVEL_TAG_EQ(148),
|
||||
QUEST_CONTENT_LEAVE_SCENE(149),
|
||||
QUEST_CONTENT_LEAVE_SCENE_RANGE(150),
|
||||
QUEST_CONTENT_IRODORI_FINISH_FLOWER_COMBINATION(151),
|
||||
QUEST_CONTENT_IRODORI_POETRY_REACH_MIN_PROGRESS(152),
|
||||
QUEST_CONTENT_IRODORI_POETRY_FINISH_FILL_POETRY(153),
|
||||
|
||||
QUEST_EXEC_NONE (0),
|
||||
QUEST_EXEC_DEL_PACK_ITEM (1),
|
||||
QUEST_EXEC_UNLOCK_POINT (2),
|
||||
QUEST_EXEC_UNLOCK_AREA (3),
|
||||
QUEST_EXEC_UNLOCK_FORCE (4),
|
||||
QUEST_EXEC_LOCK_FORCE (5),
|
||||
QUEST_EXEC_CHANGE_AVATAR_ELEMET (6),
|
||||
QUEST_EXEC_REFRESH_GROUP_MONSTER (7),
|
||||
QUEST_EXEC_SET_IS_FLYABLE (8),
|
||||
QUEST_EXEC_SET_IS_WEATHER_LOCKED (9),
|
||||
QUEST_EXEC_SET_IS_GAME_TIME_LOCKED (10),
|
||||
QUEST_EXEC_SET_IS_TRANSFERABLE (11),
|
||||
QUEST_EXEC_GRANT_TRIAL_AVATAR (12),
|
||||
QUEST_EXEC_OPEN_BORED (13),
|
||||
QUEST_EXEC_ROLLBACK_QUEST (14),
|
||||
QUEST_EXEC_NOTIFY_GROUP_LUA (15),
|
||||
QUEST_EXEC_SET_OPEN_STATE (16),
|
||||
QUEST_EXEC_LOCK_POINT (17),
|
||||
QUEST_EXEC_DEL_PACK_ITEM_BATCH (18),
|
||||
QUEST_EXEC_REFRESH_GROUP_SUITE (19),
|
||||
QUEST_EXEC_REMOVE_TRIAL_AVATAR (20),
|
||||
QUEST_EXEC_SET_GAME_TIME (21),
|
||||
QUEST_EXEC_SET_WEATHER_GADGET (22),
|
||||
QUEST_EXEC_ADD_QUEST_PROGRESS (23),
|
||||
QUEST_EXEC_NOTIFY_DAILY_TASK (24),
|
||||
QUEST_EXEC_CREATE_PATTERN_GROUP (25),
|
||||
QUEST_EXEC_REMOVE_PATTERN_GROUP (26),
|
||||
QUEST_EXEC_REFRESH_GROUP_SUITE_RANDOM (27),
|
||||
QUEST_EXEC_ACTIVE_ITEM_GIVING (28),
|
||||
QUEST_EXEC_DEL_ALL_SPECIFIC_PACK_ITEM (29),
|
||||
QUEST_EXEC_ROLLBACK_PARENT_QUEST (30),
|
||||
QUEST_EXEC_LOCK_AVATAR_TEAM (31),
|
||||
QUEST_EXEC_UNLOCK_AVATAR_TEAM (32),
|
||||
QUEST_EXEC_UPDATE_PARENT_QUEST_REWARD_INDEX (33),
|
||||
QUEST_EXEC_SET_DAILY_TASK_VAR (34),
|
||||
QUEST_EXEC_INC_DAILY_TASK_VAR (35),
|
||||
QUEST_EXEC_DEC_DAILY_TASK_VAR (36),
|
||||
QUEST_EXEC_ACTIVE_ACTIVITY_COND_STATE (37),
|
||||
QUEST_EXEC_INACTIVE_ACTIVITY_COND_STATE (38),
|
||||
QUEST_EXEC_ADD_CUR_AVATAR_ENERGY (39),
|
||||
QUEST_EXEC_START_BARGAIN (41),
|
||||
QUEST_EXEC_STOP_BARGAIN (42),
|
||||
QUEST_EXEC_SET_QUEST_GLOBAL_VAR (43),
|
||||
QUEST_EXEC_INC_QUEST_GLOBAL_VAR (44),
|
||||
QUEST_EXEC_DEC_QUEST_GLOBAL_VAR (45),
|
||||
QUEST_EXEC_REGISTER_DYNAMIC_GROUP (46),
|
||||
QUEST_EXEC_UNREGISTER_DYNAMIC_GROUP (47),
|
||||
QUEST_EXEC_SET_QUEST_VAR (48),
|
||||
QUEST_EXEC_INC_QUEST_VAR (49),
|
||||
QUEST_EXEC_DEC_QUEST_VAR (50),
|
||||
QUEST_EXEC_RANDOM_QUEST_VAR (51),
|
||||
QUEST_EXEC_ACTIVATE_SCANNING_PIC (52),
|
||||
QUEST_EXEC_RELOAD_SCENE_TAG (53),
|
||||
QUEST_EXEC_REGISTER_DYNAMIC_GROUP_ONLY (54),
|
||||
QUEST_EXEC_CHANGE_SKILL_DEPOT (55),
|
||||
QUEST_EXEC_ADD_SCENE_TAG (56),
|
||||
QUEST_EXEC_DEL_SCENE_TAG (57),
|
||||
QUEST_EXEC_INIT_TIME_VAR (58),
|
||||
QUEST_EXEC_CLEAR_TIME_VAR (59),
|
||||
QUEST_EXEC_MODIFY_CLIMATE_AREA (60),
|
||||
QUEST_EXEC_GRANT_TRIAL_AVATAR_AND_LOCK_TEAM (61),
|
||||
QUEST_EXEC_CHANGE_MAP_AREA_STATE (62),
|
||||
QUEST_EXEC_DEACTIVE_ITEM_GIVING (63),
|
||||
QUEST_EXEC_CHANGE_SCENE_LEVEL_TAG (64),
|
||||
QUEST_EXEC_UNLOCK_PLAYER_WORLD_SCENE (65),
|
||||
QUEST_EXEC_LOCK_PLAYER_WORLD_SCENE (66),
|
||||
QUEST_EXEC_FAIL_MAINCOOP (67),
|
||||
QUEST_EXEC_MODIFY_WEATHER_AREA (68);
|
||||
|
||||
private final int value;
|
||||
|
||||
QuestTrigger(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
QUEST_EXEC_NONE(0),
|
||||
QUEST_EXEC_DEL_PACK_ITEM(1),
|
||||
QUEST_EXEC_UNLOCK_POINT(2),
|
||||
QUEST_EXEC_UNLOCK_AREA(3),
|
||||
QUEST_EXEC_UNLOCK_FORCE(4),
|
||||
QUEST_EXEC_LOCK_FORCE(5),
|
||||
QUEST_EXEC_CHANGE_AVATAR_ELEMET(6),
|
||||
QUEST_EXEC_REFRESH_GROUP_MONSTER(7),
|
||||
QUEST_EXEC_SET_IS_FLYABLE(8),
|
||||
QUEST_EXEC_SET_IS_WEATHER_LOCKED(9),
|
||||
QUEST_EXEC_SET_IS_GAME_TIME_LOCKED(10),
|
||||
QUEST_EXEC_SET_IS_TRANSFERABLE(11),
|
||||
QUEST_EXEC_GRANT_TRIAL_AVATAR(12),
|
||||
QUEST_EXEC_OPEN_BORED(13),
|
||||
QUEST_EXEC_ROLLBACK_QUEST(14),
|
||||
QUEST_EXEC_NOTIFY_GROUP_LUA(15),
|
||||
QUEST_EXEC_SET_OPEN_STATE(16),
|
||||
QUEST_EXEC_LOCK_POINT(17),
|
||||
QUEST_EXEC_DEL_PACK_ITEM_BATCH(18),
|
||||
QUEST_EXEC_REFRESH_GROUP_SUITE(19),
|
||||
QUEST_EXEC_REMOVE_TRIAL_AVATAR(20),
|
||||
QUEST_EXEC_SET_GAME_TIME(21),
|
||||
QUEST_EXEC_SET_WEATHER_GADGET(22),
|
||||
QUEST_EXEC_ADD_QUEST_PROGRESS(23),
|
||||
QUEST_EXEC_NOTIFY_DAILY_TASK(24),
|
||||
QUEST_EXEC_CREATE_PATTERN_GROUP(25),
|
||||
QUEST_EXEC_REMOVE_PATTERN_GROUP(26),
|
||||
QUEST_EXEC_REFRESH_GROUP_SUITE_RANDOM(27),
|
||||
QUEST_EXEC_ACTIVE_ITEM_GIVING(28),
|
||||
QUEST_EXEC_DEL_ALL_SPECIFIC_PACK_ITEM(29),
|
||||
QUEST_EXEC_ROLLBACK_PARENT_QUEST(30),
|
||||
QUEST_EXEC_LOCK_AVATAR_TEAM(31),
|
||||
QUEST_EXEC_UNLOCK_AVATAR_TEAM(32),
|
||||
QUEST_EXEC_UPDATE_PARENT_QUEST_REWARD_INDEX(33),
|
||||
QUEST_EXEC_SET_DAILY_TASK_VAR(34),
|
||||
QUEST_EXEC_INC_DAILY_TASK_VAR(35),
|
||||
QUEST_EXEC_DEC_DAILY_TASK_VAR(36),
|
||||
QUEST_EXEC_ACTIVE_ACTIVITY_COND_STATE(37),
|
||||
QUEST_EXEC_INACTIVE_ACTIVITY_COND_STATE(38),
|
||||
QUEST_EXEC_ADD_CUR_AVATAR_ENERGY(39),
|
||||
QUEST_EXEC_START_BARGAIN(41),
|
||||
QUEST_EXEC_STOP_BARGAIN(42),
|
||||
QUEST_EXEC_SET_QUEST_GLOBAL_VAR(43),
|
||||
QUEST_EXEC_INC_QUEST_GLOBAL_VAR(44),
|
||||
QUEST_EXEC_DEC_QUEST_GLOBAL_VAR(45),
|
||||
QUEST_EXEC_REGISTER_DYNAMIC_GROUP(46),
|
||||
QUEST_EXEC_UNREGISTER_DYNAMIC_GROUP(47),
|
||||
QUEST_EXEC_SET_QUEST_VAR(48),
|
||||
QUEST_EXEC_INC_QUEST_VAR(49),
|
||||
QUEST_EXEC_DEC_QUEST_VAR(50),
|
||||
QUEST_EXEC_RANDOM_QUEST_VAR(51),
|
||||
QUEST_EXEC_ACTIVATE_SCANNING_PIC(52),
|
||||
QUEST_EXEC_RELOAD_SCENE_TAG(53),
|
||||
QUEST_EXEC_REGISTER_DYNAMIC_GROUP_ONLY(54),
|
||||
QUEST_EXEC_CHANGE_SKILL_DEPOT(55),
|
||||
QUEST_EXEC_ADD_SCENE_TAG(56),
|
||||
QUEST_EXEC_DEL_SCENE_TAG(57),
|
||||
QUEST_EXEC_INIT_TIME_VAR(58),
|
||||
QUEST_EXEC_CLEAR_TIME_VAR(59),
|
||||
QUEST_EXEC_MODIFY_CLIMATE_AREA(60),
|
||||
QUEST_EXEC_GRANT_TRIAL_AVATAR_AND_LOCK_TEAM(61),
|
||||
QUEST_EXEC_CHANGE_MAP_AREA_STATE(62),
|
||||
QUEST_EXEC_DEACTIVE_ITEM_GIVING(63),
|
||||
QUEST_EXEC_CHANGE_SCENE_LEVEL_TAG(64),
|
||||
QUEST_EXEC_UNLOCK_PLAYER_WORLD_SCENE(65),
|
||||
QUEST_EXEC_LOCK_PLAYER_WORLD_SCENE(66),
|
||||
QUEST_EXEC_FAIL_MAINCOOP(67),
|
||||
QUEST_EXEC_MODIFY_WEATHER_AREA(68);
|
||||
|
||||
private static final Int2ObjectMap<QuestTrigger> contentMap = new Int2ObjectOpenHashMap<>();
|
||||
private static final Map<String, QuestTrigger> contentStringMap = new HashMap<>();
|
||||
@@ -247,9 +237,14 @@ public enum QuestTrigger {
|
||||
Stream.of(values())
|
||||
.filter(e -> e.name().startsWith("QUEST_CONTENT_"))
|
||||
.forEach(e -> {
|
||||
contentMap.put(e.getValue(), e);
|
||||
contentStringMap.put(e.name(), e);
|
||||
});
|
||||
contentMap.put(e.getValue(), e);
|
||||
contentStringMap.put(e.name(), e);
|
||||
});
|
||||
}
|
||||
|
||||
private final int value;
|
||||
QuestTrigger(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
|
||||
public static QuestTrigger getContentTriggerByValue(int value) {
|
||||
@@ -259,4 +254,8 @@ public enum QuestTrigger {
|
||||
public static QuestTrigger getContentTriggerByName(String name) {
|
||||
return contentStringMap.getOrDefault(name, QUEST_CONTENT_NONE);
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,22 +1,22 @@
|
||||
package emu.grasscutter.game.quest.enums;
|
||||
|
||||
public enum QuestType {
|
||||
AQ (0),
|
||||
FQ (1),
|
||||
LQ (2),
|
||||
EQ (3),
|
||||
DQ (4),
|
||||
IQ (5),
|
||||
VQ (6),
|
||||
WQ (7);
|
||||
|
||||
private final int value;
|
||||
|
||||
QuestType(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
AQ(0),
|
||||
FQ(1),
|
||||
LQ(2),
|
||||
EQ(3),
|
||||
DQ(4),
|
||||
IQ(5),
|
||||
VQ(6),
|
||||
WQ(7);
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
private final int value;
|
||||
|
||||
QuestType(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
package emu.grasscutter.game.quest.enums;
|
||||
|
||||
public enum ShowQuestGuideType {
|
||||
QUEST_GUIDE_ITEM_ENABLE (0),
|
||||
QUEST_GUIDE_ITEM_DISABLE (1),
|
||||
QUEST_GUIDE_ITEM_MOVE_HIDE (2);
|
||||
|
||||
private final int value;
|
||||
|
||||
ShowQuestGuideType(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
QUEST_GUIDE_ITEM_ENABLE(0),
|
||||
QUEST_GUIDE_ITEM_DISABLE(1),
|
||||
QUEST_GUIDE_ITEM_MOVE_HIDE(2);
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
private final int value;
|
||||
|
||||
ShowQuestGuideType(int id) {
|
||||
this.value = id;
|
||||
}
|
||||
|
||||
public int getValue() {
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ import emu.grasscutter.game.quest.handlers.QuestExecHandler;
|
||||
public class ExecDecQuestGlobalVar extends QuestExecHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr) {
|
||||
quest.getOwner().getQuestManager().decQuestGlobalVarValue(Integer.valueOf(paramStr[0]),Integer.valueOf(paramStr[1]));
|
||||
quest.getOwner().getQuestManager().decQuestGlobalVarValue(Integer.valueOf(paramStr[0]), Integer.valueOf(paramStr[1]));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import emu.grasscutter.game.quest.handlers.QuestExecHandler;
|
||||
public class ExecIncQuestGlobalVar extends QuestExecHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr) {
|
||||
quest.getOwner().getQuestManager().incQuestGlobalVarValue(Integer.valueOf(paramStr[0]),Integer.valueOf(paramStr[1]));
|
||||
quest.getOwner().getQuestManager().incQuestGlobalVarValue(Integer.valueOf(paramStr[0]), Integer.valueOf(paramStr[1]));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,14 +2,12 @@ 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 {
|
||||
@@ -21,7 +19,7 @@ public class ExecNotifyGroupLua extends QuestExecHandler {
|
||||
|
||||
var scriptManager = quest.getOwner().getScene().getScriptManager();
|
||||
|
||||
if(quest.getOwner().getScene().getId() == sceneId){
|
||||
if (quest.getOwner().getScene().getId() == sceneId) {
|
||||
scriptManager.callEvent(
|
||||
quest.getState() == QuestState.QUEST_STATE_FINISHED ?
|
||||
EventType.EVENT_QUEST_FINISH : EventType.EVENT_QUEST_START
|
||||
|
||||
@@ -8,8 +8,6 @@ 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 {
|
||||
|
||||
@@ -28,7 +26,7 @@ public class ExecRefreshGroupSuite extends QuestExecHandler {
|
||||
.build());
|
||||
|
||||
// refresh immediately if player is in this scene
|
||||
if(quest.getOwner().getScene().getId() == sceneId){
|
||||
if (quest.getOwner().getScene().getId() == sceneId) {
|
||||
scriptManager.refreshGroup(scriptManager.getGroupById(groupId), suiteId);
|
||||
quest.getOwner().sendPacket(new PacketGroupSuiteNotify(groupId, suiteId));
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ import emu.grasscutter.game.quest.handlers.QuestExecHandler;
|
||||
public class ExecSetQuestGlobalVar extends QuestExecHandler {
|
||||
@Override
|
||||
public boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr) {
|
||||
quest.getOwner().getQuestManager().setQuestGlobalVarValue(Integer.valueOf(paramStr[0]),Integer.valueOf(paramStr[1]));
|
||||
quest.getOwner().getQuestManager().setQuestGlobalVarValue(Integer.valueOf(paramStr[0]), Integer.valueOf(paramStr[1]));
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,8 +6,6 @@ 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_UNLOCK_AREA)
|
||||
public class ExecUnlockArea extends QuestExecHandler {
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,6 @@ import emu.grasscutter.game.quest.GameQuest;
|
||||
|
||||
public abstract class QuestBaseHandler {
|
||||
|
||||
public abstract boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params);
|
||||
public abstract boolean execute(GameQuest quest, QuestCondition condition, String paramStr, int... params);
|
||||
|
||||
}
|
||||
|
||||
@@ -5,6 +5,6 @@ import emu.grasscutter.game.quest.GameQuest;
|
||||
|
||||
public abstract class QuestExecHandler {
|
||||
|
||||
public abstract boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr);
|
||||
public abstract boolean execute(GameQuest quest, QuestData.QuestExecParam condition, String... paramStr);
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user