Commit a227b44c authored by Melledy's avatar Melledy
Browse files

Fixed quests not finishing their questline

parent f4770cf2
...@@ -15,6 +15,9 @@ public class QuestData extends GameResource { ...@@ -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 { ...@@ -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 { ...@@ -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 { ...@@ -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();
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.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 { ...@@ -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;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment