mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-06-06 01:34:25 +08:00
Copy some files from Grasscutter-Quests
NOT completely finished, nor is it completely done. Protocol issues remain! (including lack of packet IDs)
This commit is contained in:
@@ -1,33 +0,0 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.Getter;
|
||||
|
||||
@ResourceType(name = "DungeonExcelConfigData.json")
|
||||
public class DungeonData extends GameResource {
|
||||
@Getter(onMethod_ = @Override)
|
||||
private int id;
|
||||
|
||||
@Getter private int sceneId;
|
||||
@Getter private int showLevel;
|
||||
private int passRewardPreviewID;
|
||||
private String involveType; // TODO enum
|
||||
|
||||
private RewardPreviewData previewData;
|
||||
|
||||
@Getter private int statueCostID;
|
||||
@Getter private int statueCostCount;
|
||||
|
||||
public RewardPreviewData getRewardPreview() {
|
||||
return previewData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
if (this.passRewardPreviewID > 0) {
|
||||
this.previewData = GameData.getRewardPreviewDataMap().get(this.passRewardPreviewID);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,26 +1,27 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data @EqualsAndHashCode(callSuper=false)
|
||||
@ResourceType(name = "GuideTriggerExcelConfigData.json")
|
||||
public class GuideTriggerData extends GameResource {
|
||||
// more like open state guide than quest guide
|
||||
private int id; // dont use, just to prevent resource loader from not functioning
|
||||
private String guideName;
|
||||
private String type;
|
||||
private String openState;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void onLoad() {
|
||||
GameData.getGuideTriggerDataStringMap().put(getGuideName(), this);
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ResourceType(name = "GuideTriggerExcelConfigData.json")
|
||||
public class GuideTriggerData extends GameResource {
|
||||
// more like open state guide than quest guide
|
||||
private int id; // dont use, just to prevent resource loader from not functioning
|
||||
private String guideName;
|
||||
private String type;
|
||||
private String openState;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return this.id;
|
||||
}
|
||||
|
||||
public void onLoad() {
|
||||
GameData.getGuideTriggerDataStringMap().put(getGuideName(), this);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,109 +1,121 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.game.quest.enums.LogicType;
|
||||
import emu.grasscutter.game.quest.enums.QuestTrigger;
|
||||
import emu.grasscutter.game.quest.enums.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Data;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
import lombok.*;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
@ResourceType(name = "QuestExcelConfigData.json")
|
||||
@Getter
|
||||
@ToString
|
||||
public class QuestData extends GameResource {
|
||||
private int subId;
|
||||
private int mainId;
|
||||
private int order;
|
||||
private long descTextMapHash;
|
||||
@Getter private int subId;
|
||||
@Getter private int mainId;
|
||||
@Getter private int order;
|
||||
@Getter private long descTextMapHash;
|
||||
|
||||
private boolean finishParent;
|
||||
private boolean isRewind;
|
||||
@Getter private boolean finishParent;
|
||||
@Getter private boolean isRewind;
|
||||
|
||||
private LogicType acceptCondComb;
|
||||
private LogicType finishCondComb;
|
||||
private LogicType failCondComb;
|
||||
@Getter private LogicType acceptCondComb;
|
||||
@Getter private LogicType finishCondComb;
|
||||
@Getter private LogicType failCondComb;
|
||||
|
||||
private List<QuestCondition> acceptCond;
|
||||
private List<QuestCondition> finishCond;
|
||||
private List<QuestCondition> failCond;
|
||||
private List<QuestExecParam> beginExec;
|
||||
private List<QuestExecParam> finishExec;
|
||||
private List<QuestExecParam> failExec;
|
||||
private Guide guide;
|
||||
@Getter private List<QuestAcceptCondition> acceptCond;
|
||||
@Getter private List<QuestContentCondition> finishCond;
|
||||
@Getter private List<QuestContentCondition> failCond;
|
||||
@Getter private List<QuestExecParam> beginExec;
|
||||
@Getter private List<QuestExecParam> finishExec;
|
||||
@Getter private List<QuestExecParam> failExec;
|
||||
@Getter private Guide guide;
|
||||
@Getter private List<Integer> trialAvatarList;
|
||||
|
||||
public static String questConditionKey(
|
||||
@Nonnull Enum<?> type, int firstParam, @Nullable String paramsStr) {
|
||||
return type.name() + firstParam + (paramsStr != null ? paramsStr : "");
|
||||
}
|
||||
|
||||
// ResourceLoader not happy if you remove getId() ~~
|
||||
public int getId() {
|
||||
return subId;
|
||||
}
|
||||
|
||||
// Added getSubId() for clarity
|
||||
public int getSubId() {
|
||||
return subId;
|
||||
}
|
||||
|
||||
public int getMainId() {
|
||||
return mainId;
|
||||
}
|
||||
|
||||
public int getOrder() {
|
||||
return order;
|
||||
}
|
||||
|
||||
public long getDescTextMapHash() {
|
||||
return descTextMapHash;
|
||||
}
|
||||
|
||||
public boolean finishParent() {
|
||||
return finishParent;
|
||||
}
|
||||
|
||||
public boolean isRewind() {
|
||||
return isRewind;
|
||||
}
|
||||
|
||||
public LogicType getAcceptCondComb() {
|
||||
return acceptCondComb == null ? LogicType.LOGIC_NONE : acceptCondComb;
|
||||
}
|
||||
|
||||
public List<QuestCondition> getAcceptCond() {
|
||||
return acceptCond;
|
||||
}
|
||||
|
||||
public LogicType getFinishCondComb() {
|
||||
return finishCondComb == null ? LogicType.LOGIC_NONE : finishCondComb;
|
||||
}
|
||||
|
||||
public List<QuestCondition> getFinishCond() {
|
||||
return finishCond;
|
||||
}
|
||||
|
||||
public LogicType getFailCondComb() {
|
||||
return failCondComb == null ? LogicType.LOGIC_NONE : failCondComb;
|
||||
}
|
||||
|
||||
public List<QuestCondition> getFailCond() {
|
||||
return failCond;
|
||||
}
|
||||
|
||||
public void onLoad() {
|
||||
this.acceptCond = acceptCond.stream().filter(p -> p.type != null).toList();
|
||||
this.finishCond = finishCond.stream().filter(p -> p.type != null).toList();
|
||||
this.failCond = failCond.stream().filter(p -> p.type != null).toList();
|
||||
this.acceptCond = acceptCond.stream().filter(p -> p.getType() != null).toList();
|
||||
this.finishCond = finishCond.stream().filter(p -> p.getType() != null).toList();
|
||||
this.failCond = failCond.stream().filter(p -> p.getType() != null).toList();
|
||||
|
||||
this.beginExec = beginExec.stream().filter(p -> p.type != null).toList();
|
||||
this.finishExec = finishExec.stream().filter(p -> p.type != null).toList();
|
||||
this.failExec = failExec.stream().filter(p -> p.type != null).toList();
|
||||
|
||||
if (this.acceptCondComb == null) this.acceptCondComb = LogicType.LOGIC_NONE;
|
||||
|
||||
if (this.finishCondComb == null) this.finishCondComb = LogicType.LOGIC_NONE;
|
||||
|
||||
if (this.failCondComb == null) this.failCondComb = LogicType.LOGIC_NONE;
|
||||
|
||||
addToCache();
|
||||
}
|
||||
|
||||
private void addToCache() {
|
||||
if (this.acceptCond == null) {
|
||||
Grasscutter.getLogger().warn("missing AcceptConditions for quest {}", getSubId());
|
||||
return;
|
||||
}
|
||||
|
||||
var cacheMap = GameData.getBeginCondQuestMap();
|
||||
if (getAcceptCond().isEmpty()) {
|
||||
var list =
|
||||
cacheMap.computeIfAbsent(
|
||||
QuestData.questConditionKey(QuestCond.QUEST_COND_NONE, 0, null),
|
||||
e -> new ArrayList<>());
|
||||
list.add(this);
|
||||
} else {
|
||||
this.getAcceptCond()
|
||||
.forEach(
|
||||
questCondition -> {
|
||||
if (questCondition.getType() == null) {
|
||||
Grasscutter.getLogger().warn("null accept type for quest {}", getSubId());
|
||||
return;
|
||||
}
|
||||
|
||||
var key = questCondition.asKey();
|
||||
var list = cacheMap.computeIfAbsent(key, e -> new ArrayList<>());
|
||||
list.add(this);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
public static class QuestCondition {
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
public static class QuestExecParam {
|
||||
@SerializedName("_type")
|
||||
private QuestTrigger type;
|
||||
QuestExec type;
|
||||
|
||||
@SerializedName("_param")
|
||||
String[] param;
|
||||
|
||||
@SerializedName("_count")
|
||||
String count;
|
||||
}
|
||||
|
||||
public static class QuestAcceptCondition extends QuestCondition<QuestCond> {}
|
||||
|
||||
public static class QuestContentCondition extends QuestCondition<QuestContent> {}
|
||||
|
||||
@Data
|
||||
public static class QuestCondition<TYPE extends Enum<?> & QuestTrigger> {
|
||||
@SerializedName("_type")
|
||||
private TYPE type;
|
||||
|
||||
@SerializedName("_param")
|
||||
private int[] param;
|
||||
@@ -112,7 +124,11 @@ public class QuestData extends GameResource {
|
||||
private String paramStr;
|
||||
|
||||
@SerializedName("_count")
|
||||
private String count;
|
||||
private int count;
|
||||
|
||||
public String asKey() {
|
||||
return questConditionKey(getType(), getParam()[0], getParamStr());
|
||||
}
|
||||
}
|
||||
|
||||
@Data
|
||||
@@ -121,17 +137,4 @@ public class QuestData extends GameResource {
|
||||
private List<String> param;
|
||||
private int guideScene;
|
||||
}
|
||||
|
||||
@Data
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
public class QuestExecParam {
|
||||
@SerializedName("_type")
|
||||
QuestTrigger type;
|
||||
|
||||
@SerializedName("_param")
|
||||
String[] param;
|
||||
|
||||
@SerializedName("_count")
|
||||
String count;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,81 +1,85 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.game.props.RefreshType;
|
||||
import emu.grasscutter.game.world.World;
|
||||
import lombok.Getter;
|
||||
|
||||
@ResourceType(name = "RefreshPolicyExcelConfigData.json")
|
||||
public class RefreshPolicyExcelConfigData extends GameResource {
|
||||
@Getter private int id;
|
||||
@Getter private RefreshType type;
|
||||
@Getter private String time;
|
||||
|
||||
private static int upperBound(List<Integer> list, int low, int high, int value) {
|
||||
while (low < high) {
|
||||
int middle = (high + low) / 2;
|
||||
if(list.size() >= middle) return low; //Just in case
|
||||
if (list.get(middle) > value) {
|
||||
high = middle;
|
||||
} else {
|
||||
low = middle + 1;
|
||||
}
|
||||
}
|
||||
return low;
|
||||
}
|
||||
|
||||
public int getIntervalInSeconds(World world) {
|
||||
if(time.isEmpty()) return -1;
|
||||
|
||||
var currentTimestamp = world.getTotalGameTimeMinutes();
|
||||
|
||||
try {
|
||||
List<String> paramsStr = Arrays.asList(time.split(";"));
|
||||
List<Integer> params = paramsStr.stream().map(Integer::parseInt).toList();
|
||||
|
||||
switch(type) {
|
||||
case REFRESH_NONE:
|
||||
return -1;
|
||||
case REFRESH_INTERVAL:
|
||||
if(params.isEmpty()) return -1;
|
||||
return params.get(0);
|
||||
case REFRESH_DAILY:
|
||||
{
|
||||
var dayTime = (world.getTotalGameTimeMinutes() / (24 * 60)) * 24 * 60 * 60;
|
||||
var temp = currentTimestamp - dayTime;
|
||||
var upper_bound_idx = upperBound(params, (int)params.get(0), (int)params.get(params.size() - 1), (int)temp);
|
||||
var upper_bound = params.get(upper_bound_idx);
|
||||
if(params.get(params.size() - 1) == upper_bound) {
|
||||
return (params.get(params.size() - 1) - params.get(0)) + 60 * 60 * 24 * 7;
|
||||
} else if(params.get(0) == upper_bound) {
|
||||
return (params.get(params.size() - 1) - params.get(0)) + 60 * 60 * 24 * 7;
|
||||
}
|
||||
return (params.get(upper_bound_idx - 1) - params.get(0));
|
||||
}
|
||||
case REFRESH_WEEKlY:
|
||||
if(params.size() < 2) return -1;
|
||||
{
|
||||
var weekTime = (world.getTotalGameTimeDays() / 7) * 60 * 60 * 24 * 7;
|
||||
var temp = currentTimestamp - weekTime;
|
||||
var upper_bound_idx = upperBound(params, (int)params.get(0), (int)params.get(params.size() - 1), (int)temp);
|
||||
var upper_bound = params.get(upper_bound_idx);
|
||||
if(params.get(params.size() - 1) == upper_bound) {
|
||||
return (params.get(params.size() - 1) - params.get(0)) + 60 * 60 * 24 * 7;
|
||||
} else if(params.get(0) == upper_bound) {
|
||||
return (params.get(params.size() - 1) - params.get(0)) + 60 * 60 * 24 * 7;
|
||||
}
|
||||
return (params.get(upper_bound_idx - 1) - params.get(0));
|
||||
}
|
||||
case REFRESH_DAYBEGIN_INTERVAL:
|
||||
if(params.size() == 0) return -1;
|
||||
return params.get(0) * 60 * 60 * 24;
|
||||
}
|
||||
} catch(Exception e) {}
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.game.props.RefreshType;
|
||||
import emu.grasscutter.game.world.World;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import lombok.Getter;
|
||||
|
||||
@ResourceType(name = "RefreshPolicyExcelConfigData.json")
|
||||
public class RefreshPolicyExcelConfigData extends GameResource {
|
||||
@Getter private int id;
|
||||
@Getter private RefreshType type;
|
||||
@Getter private String time;
|
||||
|
||||
private static int upperBound(List<Integer> list, int low, int high, int value) {
|
||||
while (low < high) {
|
||||
int middle = (high + low) / 2;
|
||||
if (list.size() >= middle) return low; // Just in case
|
||||
if (list.get(middle) > value) {
|
||||
high = middle;
|
||||
} else {
|
||||
low = middle + 1;
|
||||
}
|
||||
}
|
||||
return low;
|
||||
}
|
||||
|
||||
public int getIntervalInSeconds(World world) {
|
||||
if (time.isEmpty()) return -1;
|
||||
|
||||
var currentTimestamp = world.getTotalGameTimeMinutes();
|
||||
|
||||
try {
|
||||
List<String> paramsStr = Arrays.asList(time.split(";"));
|
||||
List<Integer> params = paramsStr.stream().map(Integer::parseInt).toList();
|
||||
|
||||
switch (type) {
|
||||
case REFRESH_NONE:
|
||||
return -1;
|
||||
case REFRESH_INTERVAL:
|
||||
if (params.isEmpty()) return -1;
|
||||
return params.get(0);
|
||||
case REFRESH_DAILY:
|
||||
{
|
||||
var dayTime = (world.getTotalGameTimeMinutes() / (24 * 60)) * 24 * 60 * 60;
|
||||
var temp = currentTimestamp - dayTime;
|
||||
var upper_bound_idx =
|
||||
upperBound(
|
||||
params, (int) params.get(0), (int) params.get(params.size() - 1), (int) temp);
|
||||
var upper_bound = params.get(upper_bound_idx);
|
||||
if (params.get(params.size() - 1) == upper_bound) {
|
||||
return (params.get(params.size() - 1) - params.get(0)) + 60 * 60 * 24 * 7;
|
||||
} else if (params.get(0) == upper_bound) {
|
||||
return (params.get(params.size() - 1) - params.get(0)) + 60 * 60 * 24 * 7;
|
||||
}
|
||||
return (params.get(upper_bound_idx - 1) - params.get(0));
|
||||
}
|
||||
case REFRESH_WEEKlY:
|
||||
if (params.size() < 2) return -1;
|
||||
{
|
||||
var weekTime = (world.getTotalGameTimeDays() / 7) * 60 * 60 * 24 * 7;
|
||||
var temp = currentTimestamp - weekTime;
|
||||
var upper_bound_idx =
|
||||
upperBound(
|
||||
params, (int) params.get(0), (int) params.get(params.size() - 1), (int) temp);
|
||||
var upper_bound = params.get(upper_bound_idx);
|
||||
if (params.get(params.size() - 1) == upper_bound) {
|
||||
return (params.get(params.size() - 1) - params.get(0)) + 60 * 60 * 24 * 7;
|
||||
} else if (params.get(0) == upper_bound) {
|
||||
return (params.get(params.size() - 1) - params.get(0)) + 60 * 60 * 24 * 7;
|
||||
}
|
||||
return (params.get(upper_bound_idx - 1) - params.get(0));
|
||||
}
|
||||
case REFRESH_DAYBEGIN_INTERVAL:
|
||||
if (params.size() == 0) return -1;
|
||||
return params.get(0) * 60 * 60 * 24;
|
||||
}
|
||||
} catch (Exception e) {
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.game.props.SceneType;
|
||||
import java.util.List;
|
||||
import lombok.Getter;
|
||||
|
||||
@ResourceType(name = "SceneExcelConfigData.json")
|
||||
@@ -16,4 +17,6 @@ public class SceneData extends GameResource {
|
||||
private SceneType sceneType;
|
||||
|
||||
private String scriptData;
|
||||
private String levelEntityConfig;
|
||||
private List<Integer> specifiedAvatarList;
|
||||
}
|
||||
|
||||
+2
-1
@@ -1,9 +1,10 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.achievement;
|
||||
|
||||
import com.github.davidmoten.guavamini.Lists;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.data.excels.BattlePassMissionData;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
+13
-13
@@ -1,13 +1,13 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@ResourceType(name = "AchievementGoalExcelConfigData.json")
|
||||
public class AchievementGoalData extends GameResource {
|
||||
private int id;
|
||||
private long nameTextMapHash;
|
||||
private int finishRewardId;
|
||||
}
|
||||
package emu.grasscutter.data.excels.achievement;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@ResourceType(name = "AchievementGoalExcelConfigData.json")
|
||||
public class AchievementGoalData extends GameResource {
|
||||
private int id;
|
||||
private long nameTextMapHash;
|
||||
private int finishRewardId;
|
||||
}
|
||||
+38
-41
@@ -1,41 +1,38 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.game.activity.condition.ActivityConditions;
|
||||
import emu.grasscutter.game.quest.enums.LogicType;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ResourceType(name = "NewActivityCondExcelConfigData.json")
|
||||
@Getter
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
public class ActivityCondExcelConfigData extends GameResource {
|
||||
int condId;
|
||||
LogicType condComb;
|
||||
List<ActivityConfigCondition> cond;
|
||||
|
||||
public static class ActivityConfigCondition {
|
||||
@Getter
|
||||
private ActivityConditions type;
|
||||
@Getter
|
||||
private List<Integer> param;
|
||||
|
||||
public int[] paramArray() {
|
||||
return param.stream().mapToInt(Integer::intValue).toArray();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return condId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
cond.removeIf(c -> c.type == null);
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.activity;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.game.activity.condition.ActivityConditions;
|
||||
import emu.grasscutter.game.quest.enums.LogicType;
|
||||
import java.util.List;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
@ResourceType(name = "NewActivityCondExcelConfigData.json")
|
||||
@Getter
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
public class ActivityCondExcelConfigData extends GameResource {
|
||||
int condId;
|
||||
LogicType condComb;
|
||||
List<ActivityConfigCondition> cond;
|
||||
|
||||
public static class ActivityConfigCondition {
|
||||
@Getter private ActivityConditions type;
|
||||
@Getter private List<Integer> param;
|
||||
|
||||
public int[] paramArray() {
|
||||
return param.stream().mapToInt(Integer::intValue).toArray();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return condId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
cond.removeIf(c -> c.type == null);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.activity;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.activity;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+10
-4
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.activity;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
@@ -23,9 +23,10 @@ public class ActivityWatcherData extends GameResource {
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
triggerConfig.paramList =
|
||||
triggerConfig.paramList.stream().filter(x -> (x != null) && !x.isBlank()).toList();
|
||||
triggerConfig.watcherTriggerType = WatcherTriggerType.getTypeByName(triggerConfig.triggerType);
|
||||
this.triggerConfig.paramList =
|
||||
this.triggerConfig.paramList.stream().filter(x -> (x != null) && !x.isBlank()).toList();
|
||||
this.triggerConfig.watcherTriggerType =
|
||||
WatcherTriggerType.getTypeByName(this.triggerConfig.triggerType);
|
||||
}
|
||||
|
||||
@Getter
|
||||
@@ -35,5 +36,10 @@ public class ActivityWatcherData extends GameResource {
|
||||
List<String> paramList;
|
||||
|
||||
transient WatcherTriggerType watcherTriggerType;
|
||||
|
||||
public void onLoad() {
|
||||
this.paramList = this.paramList.stream().filter(x -> (x != null) && !x.isBlank()).toList();
|
||||
this.watcherTriggerType = WatcherTriggerType.getTypeByName(this.triggerType);
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameData;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+11
-5
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
@@ -173,16 +173,22 @@ public class AvatarData extends GameResource {
|
||||
*/
|
||||
|
||||
// Cache abilities
|
||||
String[] split = this.iconName.split("_");
|
||||
this.buildEmbryo();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create ability embryos.
|
||||
*/
|
||||
public void buildEmbryo() {
|
||||
var split = this.iconName.split("_");
|
||||
if (split.length > 0) {
|
||||
this.name = split[split.length - 1];
|
||||
|
||||
AbilityEmbryoEntry info = GameData.getAbilityEmbryoInfo().get(this.name);
|
||||
var info = GameData.getAbilityEmbryoInfo().get(this.name);
|
||||
if (info != null) {
|
||||
this.abilities = new IntArrayList(info.getAbilities().length);
|
||||
for (String ability : info.getAbilities()) {
|
||||
for (var ability : info.getAbilities())
|
||||
this.abilities.add(Utils.abilityHash(ability));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+24
-22
@@ -1,22 +1,24 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@ResourceType(name = "AvatarReplaceCostumeExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
public class AvatarReplaceCostumeData extends GameResource {
|
||||
private int avatarId;
|
||||
@SerializedName(value = "costumeId", alternate={"MGLCOPOIJIC", "BDBMOBGKIAP"})
|
||||
private int costumeId;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return costumeId;
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@Data
|
||||
@ResourceType(name = "AvatarReplaceCostumeExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
public class AvatarReplaceCostumeData extends GameResource {
|
||||
private int avatarId;
|
||||
|
||||
@SerializedName(
|
||||
value = "costumeId",
|
||||
alternate = {"MGLCOPOIJIC", "BDBMOBGKIAP"})
|
||||
private int costumeId;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return costumeId;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameDepot;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.avatar;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.codex;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
+29
-29
@@ -1,29 +1,29 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
|
||||
@ResourceType(name = {"MaterialCodexExcelConfigData.json"})
|
||||
public class CodexMaterialData extends GameResource {
|
||||
private int Id;
|
||||
private int materialId;
|
||||
private int sortOrder;
|
||||
|
||||
public int getSortOrder() {
|
||||
return sortOrder;
|
||||
}
|
||||
|
||||
public int getMaterialId() {
|
||||
return materialId;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return Id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
GameData.getCodexMaterialDataIdMap().put(this.getMaterialId(), this);
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.codex;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
|
||||
@ResourceType(name = {"MaterialCodexExcelConfigData.json"})
|
||||
public class CodexMaterialData extends GameResource {
|
||||
private int Id;
|
||||
private int materialId;
|
||||
private int sortOrder;
|
||||
|
||||
public int getSortOrder() {
|
||||
return sortOrder;
|
||||
}
|
||||
|
||||
public int getMaterialId() {
|
||||
return materialId;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return Id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
GameData.getCodexMaterialDataIdMap().put(this.getMaterialId(), this);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.codex;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.codex;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
+29
-29
@@ -1,29 +1,29 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
|
||||
@ResourceType(name = {"WeaponCodexExcelConfigData.json"})
|
||||
public class CodexWeaponData extends GameResource {
|
||||
private int Id;
|
||||
private int weaponId;
|
||||
private int sortOrder;
|
||||
|
||||
public int getSortOrder() {
|
||||
return sortOrder;
|
||||
}
|
||||
|
||||
public int getWeaponId() {
|
||||
return weaponId;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return Id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
GameData.getCodexWeaponDataIdMap().put(this.getWeaponId(), this);
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.codex;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
|
||||
@ResourceType(name = {"WeaponCodexExcelConfigData.json"})
|
||||
public class CodexWeaponData extends GameResource {
|
||||
private int Id;
|
||||
private int weaponId;
|
||||
private int sortOrder;
|
||||
|
||||
public int getSortOrder() {
|
||||
return sortOrder;
|
||||
}
|
||||
|
||||
public int getWeaponId() {
|
||||
return weaponId;
|
||||
}
|
||||
|
||||
public int getId() {
|
||||
return Id;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
GameData.getCodexWeaponDataIdMap().put(this.getWeaponId(), this);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.dungeon;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+82
-72
@@ -1,72 +1,82 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
|
||||
import emu.grasscutter.game.dungeons.challenge.enums.ChallengeType;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.HashSet;
|
||||
|
||||
@Getter
|
||||
@ResourceType(name = "DungeonChallengeConfigData.json")
|
||||
public class DungeonChallengeConfigData extends GameResource {
|
||||
private int id;
|
||||
private ChallengeType challengeType;
|
||||
private boolean noSuccessHint;
|
||||
private boolean noFailHint;
|
||||
private boolean isBlockTopTimer;
|
||||
private int subChallengeFadeOutDelayTime;
|
||||
private int activitySkillId;
|
||||
private HashSet<String> teamAbilityGroupList;
|
||||
|
||||
private SubChallengeFadeOutType subChallengeFadeOutRule;
|
||||
private SubChallengeBannerType subChallengeBannerRule;
|
||||
private InterruptButtonType interruptButtonType;
|
||||
|
||||
@SerializedName(value = "subChallengeSortType", alternate={"PNCLDNBHKDJ"})
|
||||
private SubChallengeSortType subChallengeSortType;
|
||||
@SerializedName(value = "animationOnSubStart", alternate={"DNFAFNMMMDP"})
|
||||
private AllowAnimationType animationOnSubStart;
|
||||
@SerializedName(value = "animationOnSubSuccess", alternate={"ENONHOGJDDN"})
|
||||
private AllowAnimationType animationOnSubSuccess;
|
||||
@SerializedName(value = "animationOnSubFail", alternate={"NJBJIKAIENN"})
|
||||
private AllowAnimationType animationOnSubFail;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public enum InterruptButtonType{
|
||||
INTERRUPT_BUTTON_TYPE_NONE,
|
||||
INTERRUPT_BUTTON_TYPE_HOST,
|
||||
INTERRUPT_BUTTON_TYPE_ALL
|
||||
}
|
||||
|
||||
public enum SubChallengeFadeOutType{
|
||||
SUBCHALLENGE_FADEOUT_TYPE_NONE,
|
||||
SUBCHALLENGE_FADEOUT_TYPE_SUCCESS,
|
||||
SUBCHALLENGE_FADEOUT_TYPE_FAIL,
|
||||
SUBCHALLENGE_FADEOUT_TYPE_FINISH
|
||||
}
|
||||
|
||||
public enum SubChallengeBannerType{
|
||||
SUBCHALLENGE_BANNER_TYPE_NONE,
|
||||
SUBCHALLENGE_BANNER_TYPE_SUCCESS,
|
||||
SUBCHALLENGE_BANNER_TYPE_FAIL,
|
||||
SUBCHALLENGE_BANNER_TYPE_HIDE_FINAL,
|
||||
SUBCHALLENGE_BANNER_TYPE_SHOW_FINAL
|
||||
}
|
||||
public enum SubChallengeSortType{
|
||||
SUB_CHALLENGE_SORT_TYPE_DEFAULT,
|
||||
SUB_CHALLENGE_SORT_TYPE_CHALLENGEINDEX
|
||||
}
|
||||
|
||||
public enum AllowAnimationType{
|
||||
SUB_CHALLENGE_ANIM_TYPE_DEFAULT,
|
||||
SUB_CHALLENGE_ANIM_TYPE_FORBID,
|
||||
SUB_CHALLENGE_ANIM_TYPE_SUCCESS,
|
||||
SUB_CHALLENGE_ANIM_TYPE_FAIL
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.dungeon;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.game.dungeons.challenge.enums.ChallengeType;
|
||||
import java.util.HashSet;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@ResourceType(name = "DungeonChallengeConfigData.json")
|
||||
public class DungeonChallengeConfigData extends GameResource {
|
||||
private int id;
|
||||
private ChallengeType challengeType;
|
||||
private boolean noSuccessHint;
|
||||
private boolean noFailHint;
|
||||
private boolean isBlockTopTimer;
|
||||
private int subChallengeFadeOutDelayTime;
|
||||
private int activitySkillId;
|
||||
private HashSet<String> teamAbilityGroupList;
|
||||
|
||||
private SubChallengeFadeOutType subChallengeFadeOutRule;
|
||||
private SubChallengeBannerType subChallengeBannerRule;
|
||||
private InterruptButtonType interruptButtonType;
|
||||
|
||||
@SerializedName(
|
||||
value = "subChallengeSortType",
|
||||
alternate = {"PNCLDNBHKDJ"})
|
||||
private SubChallengeSortType subChallengeSortType;
|
||||
|
||||
@SerializedName(
|
||||
value = "animationOnSubStart",
|
||||
alternate = {"DNFAFNMMMDP"})
|
||||
private AllowAnimationType animationOnSubStart;
|
||||
|
||||
@SerializedName(
|
||||
value = "animationOnSubSuccess",
|
||||
alternate = {"ENONHOGJDDN"})
|
||||
private AllowAnimationType animationOnSubSuccess;
|
||||
|
||||
@SerializedName(
|
||||
value = "animationOnSubFail",
|
||||
alternate = {"NJBJIKAIENN"})
|
||||
private AllowAnimationType animationOnSubFail;
|
||||
|
||||
public int getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
public enum InterruptButtonType {
|
||||
INTERRUPT_BUTTON_TYPE_NONE,
|
||||
INTERRUPT_BUTTON_TYPE_HOST,
|
||||
INTERRUPT_BUTTON_TYPE_ALL
|
||||
}
|
||||
|
||||
public enum SubChallengeFadeOutType {
|
||||
SUBCHALLENGE_FADEOUT_TYPE_NONE,
|
||||
SUBCHALLENGE_FADEOUT_TYPE_SUCCESS,
|
||||
SUBCHALLENGE_FADEOUT_TYPE_FAIL,
|
||||
SUBCHALLENGE_FADEOUT_TYPE_FINISH
|
||||
}
|
||||
|
||||
public enum SubChallengeBannerType {
|
||||
SUBCHALLENGE_BANNER_TYPE_NONE,
|
||||
SUBCHALLENGE_BANNER_TYPE_SUCCESS,
|
||||
SUBCHALLENGE_BANNER_TYPE_FAIL,
|
||||
SUBCHALLENGE_BANNER_TYPE_HIDE_FINAL,
|
||||
SUBCHALLENGE_BANNER_TYPE_SHOW_FINAL
|
||||
}
|
||||
|
||||
public enum SubChallengeSortType {
|
||||
SUB_CHALLENGE_SORT_TYPE_DEFAULT,
|
||||
SUB_CHALLENGE_SORT_TYPE_CHALLENGEINDEX
|
||||
}
|
||||
|
||||
public enum AllowAnimationType {
|
||||
SUB_CHALLENGE_ANIM_TYPE_DEFAULT,
|
||||
SUB_CHALLENGE_ANIM_TYPE_FORBID,
|
||||
SUB_CHALLENGE_ANIM_TYPE_SUCCESS,
|
||||
SUB_CHALLENGE_ANIM_TYPE_FAIL
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,71 @@
|
||||
package emu.grasscutter.data.excels.dungeon;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.data.excels.RewardPreviewData;
|
||||
import emu.grasscutter.game.dungeons.enums.*;
|
||||
import java.util.List;
|
||||
import lombok.Getter;
|
||||
|
||||
@ResourceType(name = "DungeonExcelConfigData.json")
|
||||
public class DungeonData extends GameResource {
|
||||
|
||||
@Getter(onMethod = @__(@Override))
|
||||
private int id;
|
||||
|
||||
@Getter private int sceneId;
|
||||
@Getter private int showLevel;
|
||||
private DungeonType type;
|
||||
private DungeonSubType subType;
|
||||
private DungeonPlayType playType;
|
||||
private DungeonInvolveType involveType;
|
||||
@Getter private int limitLevel;
|
||||
@Getter private int passCond;
|
||||
@Getter private int reviveMaxCount;
|
||||
@Getter private int settleCountdownTime;
|
||||
@Getter private int failSettleCountdownTime;
|
||||
@Getter private int quitSettleCountdownTime;
|
||||
@Getter private List<SettleShowType> settleShows;
|
||||
@Getter private int passRewardPreviewID;
|
||||
@Getter private int statueCostID;
|
||||
@Getter private int statueCostCount;
|
||||
|
||||
// not part of DungeonExcelConfigData
|
||||
@Getter private RewardPreviewData rewardPreviewData;
|
||||
|
||||
public DungeonType getType() {
|
||||
if (type == null) {
|
||||
return DungeonType.DUNGEON_NONE;
|
||||
}
|
||||
return type;
|
||||
}
|
||||
|
||||
public DungeonSubType getSubType() {
|
||||
if (subType == null) {
|
||||
return DungeonSubType.DUNGEON_SUB_NONE;
|
||||
}
|
||||
return subType;
|
||||
}
|
||||
|
||||
public DungeonPlayType getPlayType() {
|
||||
if (playType == null) {
|
||||
return DungeonPlayType.DUNGEON_PLAY_TYPE_NONE;
|
||||
}
|
||||
return playType;
|
||||
}
|
||||
|
||||
public DungeonInvolveType getInvolveType() {
|
||||
if (involveType == null) {
|
||||
return DungeonInvolveType.INVOLVE_NONE;
|
||||
}
|
||||
return involveType;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
if (this.passRewardPreviewID > 0) {
|
||||
this.rewardPreviewData = GameData.getRewardPreviewDataMap().get(this.passRewardPreviewID);
|
||||
}
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.dungeon;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+26
-28
@@ -1,28 +1,26 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
|
||||
import emu.grasscutter.game.dungeons.enums.DungeonPassConditionType;
|
||||
import emu.grasscutter.game.quest.enums.LogicType;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@ResourceType(name = "DungeonPassExcelConfigData.json")
|
||||
public class DungeonPassConfigData extends GameResource {
|
||||
@Getter private int id;
|
||||
@Getter private LogicType logicType;
|
||||
@Getter private List<DungeonPassCondition> conds;
|
||||
|
||||
public static class DungeonPassCondition{
|
||||
@Getter private DungeonPassConditionType condType;
|
||||
@Getter int[] param;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
super.onLoad();
|
||||
conds = conds.stream().filter(condition -> condition.getCondType()!=null).toList();
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.dungeon;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.game.dungeons.enums.DungeonPassConditionType;
|
||||
import emu.grasscutter.game.quest.enums.LogicType;
|
||||
import java.util.List;
|
||||
import lombok.Getter;
|
||||
|
||||
@ResourceType(name = "DungeonPassExcelConfigData.json")
|
||||
public class DungeonPassConfigData extends GameResource {
|
||||
@Getter private int id;
|
||||
@Getter private LogicType logicType;
|
||||
@Getter private List<DungeonPassCondition> conds;
|
||||
|
||||
public static class DungeonPassCondition {
|
||||
@Getter private DungeonPassConditionType condType;
|
||||
@Getter int[] param;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
super.onLoad();
|
||||
conds = conds.stream().filter(condition -> condition.getCondType() != null).toList();
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.monster;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+2
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.monster;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameData;
|
||||
@@ -6,6 +6,7 @@ import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.data.ResourceType.LoadPriority;
|
||||
import emu.grasscutter.data.common.PropGrowCurve;
|
||||
import emu.grasscutter.data.excels.GadgetData;
|
||||
import emu.grasscutter.game.props.FightProperty;
|
||||
import emu.grasscutter.game.props.MonsterType;
|
||||
import java.util.List;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.monster;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+21
-21
@@ -1,21 +1,21 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.data.ResourceType.LoadPriority;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@ResourceType(name = "MonsterSpecialNameExcelConfigData.json", loadPriority = LoadPriority.HIGH)
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Data
|
||||
public class MonsterSpecialNameData extends GameResource {
|
||||
private int specialNameId;
|
||||
private int specialNameLabId;
|
||||
private long specialNameTextMapHash;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return specialNameId;
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.monster;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.data.ResourceType.LoadPriority;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
|
||||
@ResourceType(name = "MonsterSpecialNameExcelConfigData.json", loadPriority = LoadPriority.HIGH)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Data
|
||||
public class MonsterSpecialNameData extends GameResource {
|
||||
private int specialNameId;
|
||||
private int specialNameLabId;
|
||||
private long specialNameTextMapHash;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return specialNameId;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.reliquary;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.reliquary;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.reliquary;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.reliquary;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
+21
-21
@@ -1,21 +1,21 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.Getter;
|
||||
|
||||
@ResourceType(name = "TowerFloorExcelConfigData.json")
|
||||
@Getter
|
||||
public class TowerFloorData extends GameResource {
|
||||
private int floorId;
|
||||
private int floorIndex;
|
||||
private int levelGroupId;
|
||||
private int overrideMonsterLevel;
|
||||
private int teamNum;
|
||||
private int floorLevelConfigId;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return this.floorId;
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.tower;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.Getter;
|
||||
|
||||
@ResourceType(name = "TowerFloorExcelConfigData.json")
|
||||
@Getter
|
||||
public class TowerFloorData extends GameResource {
|
||||
private int floorId;
|
||||
private int floorIndex;
|
||||
private int levelGroupId;
|
||||
private int overrideMonsterLevel;
|
||||
private int teamNum;
|
||||
private int floorLevelConfigId;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return this.floorId;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.tower;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.tower;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+21
-21
@@ -1,21 +1,21 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.data.common.BaseTrialActivityData;
|
||||
import lombok.*;
|
||||
import java.util.List;
|
||||
|
||||
@ResourceType(name = "TrialAvatarActivityExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Data
|
||||
public class TrialAvatarActivityData extends GameResource implements BaseTrialActivityData {
|
||||
private int ScheduleId;
|
||||
private List<Integer> AvatarIndexIdList;
|
||||
private List<Integer> RewardIdList;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ScheduleId;
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.trial;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.data.common.BaseTrialActivityData;
|
||||
import java.util.List;
|
||||
import lombok.*;
|
||||
|
||||
@ResourceType(name = "TrialAvatarActivityExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Data
|
||||
public class TrialAvatarActivityData extends GameResource implements BaseTrialActivityData {
|
||||
private int ScheduleId;
|
||||
private List<Integer> AvatarIndexIdList;
|
||||
private List<Integer> RewardIdList;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return ScheduleId;
|
||||
}
|
||||
}
|
||||
+31
-29
@@ -1,29 +1,31 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.*;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
@ResourceType(name = "TrialAvatarActivityDataExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Data
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
public class TrialAvatarActivityDataData extends GameResource {
|
||||
@Getter(onMethod = @__(@Override))
|
||||
private int id;
|
||||
private int trialAvatarIndexId;
|
||||
private int trialAvatarId;
|
||||
private int dungeonId;
|
||||
private String battleAvatarsList;
|
||||
private int firstPassReward;
|
||||
private ActivityWatcherData.WatcherTrigger triggerConfig;
|
||||
private int progress;
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
triggerConfig.onLoad();
|
||||
GameData.getTrialAvatarIndexIdTrialActivityDataDataMap().put(trialAvatarIndexId, id);
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.trial;
|
||||
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import emu.grasscutter.data.excels.activity.ActivityWatcherData;
|
||||
import lombok.*;
|
||||
import lombok.experimental.FieldDefaults;
|
||||
|
||||
@ResourceType(name = "TrialAvatarActivityDataExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Data
|
||||
@FieldDefaults(level = AccessLevel.PRIVATE)
|
||||
public class TrialAvatarActivityDataData extends GameResource {
|
||||
@Getter(onMethod = @__(@Override))
|
||||
private int id;
|
||||
|
||||
private int trialAvatarIndexId;
|
||||
private int trialAvatarId;
|
||||
private int dungeonId;
|
||||
private String battleAvatarsList;
|
||||
private int firstPassReward;
|
||||
private ActivityWatcherData.WatcherTrigger triggerConfig;
|
||||
private int progress;
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
this.triggerConfig.onLoad();
|
||||
GameData.getTrialAvatarIndexIdTrialActivityDataDataMap().put(trialAvatarIndexId, id);
|
||||
}
|
||||
}
|
||||
+19
-19
@@ -1,19 +1,19 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.*;
|
||||
import java.util.List;
|
||||
|
||||
@ResourceType(name = "TrialAvatarExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Data
|
||||
public class TrialAvatarData extends GameResource {
|
||||
private int trialAvatarId;
|
||||
private List<Integer> trialAvatarParamList;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return trialAvatarId;
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.trial;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import java.util.List;
|
||||
import lombok.*;
|
||||
|
||||
@ResourceType(name = "TrialAvatarExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Data
|
||||
public class TrialAvatarData extends GameResource {
|
||||
private int trialAvatarId;
|
||||
private List<Integer> trialAvatarParamList;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return trialAvatarId;
|
||||
}
|
||||
}
|
||||
+20
-20
@@ -1,20 +1,20 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.*;
|
||||
import java.util.List;
|
||||
|
||||
@ResourceType(name = "TrialAvatarTemplateExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Data
|
||||
public class TrialAvatarTemplateData extends GameResource {
|
||||
private int TrialAvatarLevel;
|
||||
private List<Integer> TrialReliquaryList;
|
||||
private int TrialAvatarSkillLevel;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return TrialAvatarLevel;
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.trial;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import java.util.List;
|
||||
import lombok.*;
|
||||
|
||||
@ResourceType(name = "TrialAvatarTemplateExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Data
|
||||
public class TrialAvatarTemplateData extends GameResource {
|
||||
private int TrialAvatarLevel;
|
||||
private List<Integer> TrialReliquaryList;
|
||||
private int TrialAvatarSkillLevel;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return TrialAvatarLevel;
|
||||
}
|
||||
}
|
||||
+22
-22
@@ -1,22 +1,22 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import lombok.*;
|
||||
import java.util.List;
|
||||
|
||||
@ResourceType(name = "TrialReliquaryExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper=false)
|
||||
@Data
|
||||
public class TrialReliquaryData extends GameResource {
|
||||
private int Id;
|
||||
private int ReliquaryId;
|
||||
private int Level;
|
||||
private int MainPropId;
|
||||
private List<Integer> AppendPropList;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return Id;
|
||||
}
|
||||
}
|
||||
package emu.grasscutter.data.excels.trial;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
import java.util.List;
|
||||
import lombok.*;
|
||||
|
||||
@ResourceType(name = "TrialReliquaryExcelConfigData.json")
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@Data
|
||||
public class TrialReliquaryData extends GameResource {
|
||||
private int Id;
|
||||
private int ReliquaryId;
|
||||
private int Level;
|
||||
private int MainPropId;
|
||||
private List<Integer> AppendPropList;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return Id;
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.weapon;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.weapon;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.weapon;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.world;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.world;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package emu.grasscutter.data.excels;
|
||||
package emu.grasscutter.data.excels.world;
|
||||
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
Reference in New Issue
Block a user