mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-16 08:56:04 +01:00
Merge branch 'development' into questing
This commit is contained in:
@@ -219,6 +219,7 @@ public class EntityGadget extends EntityBaseGadget {
|
||||
.setConfigId(this.getConfigId())
|
||||
.setGadgetState(this.getState())
|
||||
.setIsEnableInteract(true)
|
||||
.setDraftId(this.metaGadget.draft_id)
|
||||
.setAuthorityPeerId(this.getScene().getWorld().getHostPeerId());
|
||||
|
||||
if (this.getContent() != null) {
|
||||
|
||||
@@ -342,13 +342,10 @@ public class GameMainQuest {
|
||||
ParentQuest.Builder proto = ParentQuest.newBuilder()
|
||||
.setParentQuestId(getParentQuestId())
|
||||
.setIsFinished(isFinished());
|
||||
/**
|
||||
if ParentQuestState is NONE, official server does not send ParentQuestState nor childQuestList!!!
|
||||
might need more sniffing...
|
||||
sending childQuestList without ParentQuestState set causes the game to hang on login
|
||||
*/
|
||||
if (getState() != ParentQuestState.PARENT_QUEST_STATE_NONE) {
|
||||
|
||||
|
||||
proto.setParentQuestState(getState().getValue());
|
||||
.setCutsceneEncryptionKey(QuestManager.getQuestKey(parentQuestId));
|
||||
for (GameQuest quest : this.getChildQuests().values()) {
|
||||
if (quest.getState() != QuestState.QUEST_STATE_UNSTARTED) {
|
||||
ChildQuest childQuest = ChildQuest.newBuilder()
|
||||
@@ -359,11 +356,12 @@ public class GameMainQuest {
|
||||
proto.addChildQuestList(childQuest);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i : getQuestVars()) {
|
||||
proto.addQuestVar(i);
|
||||
}
|
||||
|
||||
|
||||
return proto.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package emu.grasscutter.game.quest;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Data;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
@Data
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
public class QuestEncryptionKey {
|
||||
int mainQuestId;
|
||||
long encryptionKey;
|
||||
}
|
||||
@@ -3,8 +3,6 @@ package emu.grasscutter.game.quest;
|
||||
import java.beans.Transient;
|
||||
import java.util.*;
|
||||
import java.util.function.Consumer;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.binout.MainQuestData;
|
||||
@@ -25,6 +23,7 @@ import jdk.jshell.spi.ExecutionControl;
|
||||
import lombok.Getter;
|
||||
|
||||
public class QuestManager extends BasePlayerManager {
|
||||
|
||||
@Getter private final Player player;
|
||||
@Getter private Map<Integer,Integer> questGlobalVariables;
|
||||
|
||||
@@ -64,7 +63,13 @@ 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);
|
||||
this.player = player;
|
||||
this.questGlobalVariables = player.getQuestGlobalVariables();
|
||||
|
||||
Reference in New Issue
Block a user