mirror of
https://github.com/Melledy/Grasscutter.git
synced 2024-11-27 13:19:59 +00:00
Fixed quests not finishing their questline
This commit is contained in:
parent
c35b2b965a
commit
00ffbea451
@ -15,6 +15,9 @@ public class QuestData extends GameResource {
|
|||||||
private int Order;
|
private int Order;
|
||||||
private long DescTextMapHash;
|
private long DescTextMapHash;
|
||||||
|
|
||||||
|
private boolean FinishParent;
|
||||||
|
private boolean IsRewind;
|
||||||
|
|
||||||
private LogicType AcceptCondComb;
|
private LogicType AcceptCondComb;
|
||||||
private QuestCondition[] acceptConditons;
|
private QuestCondition[] acceptConditons;
|
||||||
private LogicType FinishCondComb;
|
private LogicType FinishCondComb;
|
||||||
@ -45,6 +48,14 @@ public class QuestData extends GameResource {
|
|||||||
return DescTextMapHash;
|
return DescTextMapHash;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean finishParent() {
|
||||||
|
return FinishParent;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isRewind() {
|
||||||
|
return IsRewind;
|
||||||
|
}
|
||||||
|
|
||||||
public LogicType getAcceptCondComb() {
|
public LogicType getAcceptCondComb() {
|
||||||
return AcceptCondComb;
|
return AcceptCondComb;
|
||||||
}
|
}
|
||||||
|
@ -91,6 +91,7 @@ public class GameMainQuest {
|
|||||||
this.isFinished = true;
|
this.isFinished = true;
|
||||||
this.state = ParentQuestState.PARENT_QUEST_STATE_FINISHED;
|
this.state = ParentQuestState.PARENT_QUEST_STATE_FINISHED;
|
||||||
this.getOwner().getSession().send(new PacketFinishedParentQuestUpdateNotify(this));
|
this.getOwner().getSession().send(new PacketFinishedParentQuestUpdateNotify(this));
|
||||||
|
this.save();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void save() {
|
public void save() {
|
||||||
|
@ -143,21 +143,28 @@ public class GameQuest {
|
|||||||
|
|
||||||
this.getOwner().getSession().send(new PacketQuestProgressUpdateNotify(this));
|
this.getOwner().getSession().send(new PacketQuestProgressUpdateNotify(this));
|
||||||
this.getOwner().getSession().send(new PacketQuestListUpdateNotify(this));
|
this.getOwner().getSession().send(new PacketQuestListUpdateNotify(this));
|
||||||
this.save();
|
|
||||||
|
|
||||||
this.tryAcceptQuestLine();
|
if (this.getData().finishParent()) {
|
||||||
|
// This quest finishes the questline - the main quest will also save the quest to db so we dont have to call save() here
|
||||||
|
this.getMainQuest().finish();
|
||||||
|
} else {
|
||||||
|
// Try and accept other quests if possible
|
||||||
|
this.tryAcceptQuestLine();
|
||||||
|
this.save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean tryAcceptQuestLine() {
|
public boolean tryAcceptQuestLine() {
|
||||||
try {
|
try {
|
||||||
MainQuestData questConfig = GameData.getMainQuestDataMap().get(this.getMainQuestId());
|
MainQuestData questConfig = GameData.getMainQuestDataMap().get(this.getMainQuestId());
|
||||||
|
|
||||||
for (SubQuestData subQuest : questConfig.getSubQuests()) {
|
for (SubQuestData subQuest : questConfig.getSubQuests()) {
|
||||||
GameQuest quest = getMainQuest().getChildQuestById(subQuest.getSubId());
|
GameQuest quest = getMainQuest().getChildQuestById(subQuest.getSubId());
|
||||||
|
|
||||||
if (quest == null) {
|
if (quest == null) {
|
||||||
QuestData questData = GameData.getQuestDataMap().get(subQuest.getSubId());
|
QuestData questData = GameData.getQuestDataMap().get(subQuest.getSubId());
|
||||||
|
|
||||||
if (questData == null) {
|
if (questData == null || questData.getAcceptCond() == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,7 +128,7 @@ public class QuestManager {
|
|||||||
QuestData data = quest.getData();
|
QuestData data = quest.getData();
|
||||||
|
|
||||||
for (int i = 0; i < data.getFinishCond().length; i++) {
|
for (int i = 0; i < data.getFinishCond().length; i++) {
|
||||||
if (quest.getFinishProgressList()[i] == 1) {
|
if (quest.getFinishProgressList() == null || quest.getFinishProgressList()[i] == 1) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user