Implement new event

This commit is contained in:
Melledy
2025-12-08 22:28:47 -08:00
parent 80a181680b
commit c5f339c8be
20 changed files with 1020 additions and 8 deletions
@@ -155,4 +155,16 @@ public class GameData {
// Activity: Trials
@Getter private static DataTable<TrialControlDef> TrialControlDataTable = new DataTable<>();
@Getter private static DataTable<TrialGroupDef> TrialGroupDataTable = new DataTable<>();
// Activity: Levels
@Getter private static DataTable<ActivityLevelsLevelDef> ActivityLevelsLevelDataTable = new DataTable<>();
// Activity: Task
@Getter private static DataTable<ActivityTaskDef> ActivityTaskDataTable = new DataTable<>();
@Getter private static DataTable<ActivityTaskGroupDef> ActivityTaskGroupDataTable = new DataTable<>();
// Activity: Shop
@Getter private static DataTable<ActivityShopDef> ActivityShopDataTable = new DataTable<>();
@Getter private static DataTable<ActivityShopControlDef> ActivityShopControlDataTable = new DataTable<>();
@Getter private static DataTable<ActivityGoodsDef> ActivityGoodsDataTable = new DataTable<>();
}
@@ -0,0 +1,38 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.GameData;
import emu.nebula.data.ResourceType;
import emu.nebula.data.ResourceType.LoadPriority;
import emu.nebula.game.inventory.ItemParamMap;
import lombok.Getter;
@Getter
@ResourceType(name = "ActivityGoods.json", loadPriority = LoadPriority.LOW)
public class ActivityGoodsDef extends BaseDef {
private int Id;
private int ShopId;
private int ItemId;
private int ItemQuantity;
private int MaximumLimit;
private int Price;
private transient ItemParamMap items;
@Override
public int getId() {
return Id;
}
@Override
public void onLoad() {
var shop = GameData.getActivityShopDataTable().get(this.getShopId());
if (shop != null) {
shop.getGoods().put(this.getId(), this);
}
this.items = new ItemParamMap();
this.items.add(this.ItemId, this.ItemQuantity);
}
}
@@ -0,0 +1,65 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import emu.nebula.game.instance.InstanceData;
import emu.nebula.game.inventory.ItemRewardList;
import emu.nebula.game.inventory.ItemRewardParam;
import emu.nebula.util.JsonUtils;
import lombok.Getter;
@Getter
@ResourceType(name = "ActivityLevelsLevel.json")
public class ActivityLevelsLevelDef extends BaseDef implements InstanceData {
private int Id;
private int ActivityId;
private int EnergyConsume;
private String CompleteRewardPreview;
private transient ItemRewardList firstRewards;
private transient ItemRewardList rewards;
@Override
public int getId() {
return Id;
}
@Override
public int getNeedWorldClass() {
return 0;
}
@Override
public void onLoad() {
// Init reward lists
this.firstRewards = new ItemRewardList();
this.rewards = new ItemRewardList();
// Parse rewards
var awards = JsonUtils.decodeList(this.CompleteRewardPreview, int[].class);
if (awards == null) {
return;
}
for (int[] award : awards) {
int itemId = award[0];
int min = award[1];
int max = award.length >= 4 ? award[2] : min;
boolean isFirst = award[award.length - 1] == 1;
if (min == -1) {
min = 0;
max = 1;
}
var reward = new ItemRewardParam(itemId, min, max);
if (isFirst) {
this.firstRewards.add(reward);
} else {
this.rewards.add(reward);
}
}
}
}
@@ -0,0 +1,18 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import lombok.Getter;
@Getter
@ResourceType(name = "ActivityShopControl.json")
public class ActivityShopControlDef extends BaseDef {
private int Id;
private int[] ShopIds;
@Override
public int getId() {
return Id;
}
}
@@ -0,0 +1,28 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
import lombok.Getter;
@Getter
@ResourceType(name = "ActivityShop.json")
public class ActivityShopDef extends BaseDef {
private int Id;
private int CurrencyItemId;
private int ExchangeItemId;
private double Rate;
private Int2ObjectMap<ActivityGoodsDef> goods;
@Override
public int getId() {
return Id;
}
@Override
public void onLoad() {
this.goods = new Int2ObjectOpenHashMap<>();
}
}
@@ -0,0 +1,40 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import emu.nebula.game.inventory.ItemParamMap;
import lombok.Getter;
@Getter
@ResourceType(name = "ActivityTask.json")
public class ActivityTaskDef extends BaseDef {
private int Id;
private int ActivityTaskGroupId;
private int CompleteCond;
private int AimNumShow;
private int Tid1;
private int Qty1;
private int Tid2;
private int Qty2;
private transient ItemParamMap rewards;
@Override
public int getId() {
return Id;
}
@Override
public void onLoad() {
this.rewards = new ItemParamMap();
if (this.Tid1 > 0) {
this.rewards.add(this.Tid1, this.Qty1);
}
if (this.Tid2 > 0) {
this.rewards.add(this.Tid2, this.Qty2);
}
}
}
@@ -0,0 +1,57 @@
package emu.nebula.data.resources;
import emu.nebula.data.BaseDef;
import emu.nebula.data.ResourceType;
import emu.nebula.game.inventory.ItemParamMap;
import lombok.Getter;
@Getter
@ResourceType(name = "ActivityTaskGroup.json")
public class ActivityTaskGroupDef extends BaseDef {
private int Id;
private int ActivityId;
private int Reward1;
private int RewardQty1;
private int Reward2;
private int RewardQty2;
private int Reward3;
private int RewardQty3;
private int Reward4;
private int RewardQty4;
private int Reward5;
private int RewardQty5;
private int Reward6;
private int RewardQty6;
private transient ItemParamMap rewards;
@Override
public int getId() {
return Id;
}
@Override
public void onLoad() {
this.rewards = new ItemParamMap();
if (this.Reward1 > 0) {
this.rewards.add(this.Reward1, this.RewardQty1);
}
if (this.Reward2 > 0) {
this.rewards.add(this.Reward2, this.RewardQty2);
}
if (this.Reward3 > 0) {
this.rewards.add(this.Reward3, this.RewardQty3);
}
if (this.Reward4 > 0) {
this.rewards.add(this.Reward4, this.RewardQty4);
}
if (this.Reward5 > 0) {
this.rewards.add(this.Reward5, this.RewardQty5);
}
if (this.Reward6 > 0) {
this.rewards.add(this.Reward6, this.RewardQty6);
}
}
}