mirror of
https://github.com/Melledy/LunarCore.git
synced 2025-12-23 10:44:36 +01:00
fix some events (most events are available)
This commit is contained in:
@@ -6,6 +6,10 @@ public abstract class GameResource implements Comparable<GameResource> {
|
||||
|
||||
public void onLoad() {
|
||||
|
||||
}
|
||||
|
||||
public void onFinalize() {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.util.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import emu.lunarcore.data.config.*;
|
||||
import org.reflections.Reflections;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
@@ -17,11 +18,7 @@ import com.google.gson.reflect.TypeToken;
|
||||
import emu.lunarcore.LunarCore;
|
||||
import emu.lunarcore.data.ResourceDeserializers.LunarCoreDoubleDeserializer;
|
||||
import emu.lunarcore.data.ResourceDeserializers.LunarCoreHashDeserializer;
|
||||
import emu.lunarcore.data.config.FloorInfo;
|
||||
import emu.lunarcore.data.config.FloorInfo.FloorGroupSimpleInfo;
|
||||
import emu.lunarcore.data.config.GroupInfo;
|
||||
import emu.lunarcore.data.config.SkillAbilityInfo;
|
||||
import emu.lunarcore.data.config.SummonUnitInfo;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
|
||||
public class ResourceLoader {
|
||||
@@ -46,7 +43,9 @@ public class ResourceLoader {
|
||||
loadMazeAbilities();
|
||||
// Load rogue maps
|
||||
loadRogueMapGen();
|
||||
|
||||
// Load rogue dialogue events
|
||||
loadRogueDialogueEvent();
|
||||
|
||||
// Done
|
||||
loaded = true;
|
||||
LunarCore.getLogger().info("Resource loading complete");
|
||||
@@ -164,6 +163,14 @@ public class ResourceLoader {
|
||||
}
|
||||
});
|
||||
|
||||
if (map != null) {
|
||||
map.forEach((k, v) -> {
|
||||
if (v instanceof GameResource) {
|
||||
((GameResource) v).onFinalize();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
return count.get();
|
||||
}
|
||||
}
|
||||
@@ -286,6 +293,37 @@ public class ResourceLoader {
|
||||
// Done
|
||||
LunarCore.getLogger().info("Loaded " + count + " maze abilities for avatars.");
|
||||
}
|
||||
|
||||
// Might be better to cache
|
||||
private static void loadRogueDialogueEvent() {
|
||||
// Loaded configs count
|
||||
int count = 0;
|
||||
// Load dialogue event configs
|
||||
for (var dialogueEventExcel : GameData.getRogueDialogueEventList().values()) {
|
||||
|
||||
// Get file
|
||||
File file = new File(LunarCore.getConfig().getResourceDir() + "/" + dialogueEventExcel.getJsonPath());
|
||||
if (!file.exists()) {
|
||||
file = new File(LunarCore.getConfig().getResourceDir() + "/" + dialogueEventExcel.getSecondPath());
|
||||
if (!file.exists()) continue;
|
||||
}
|
||||
|
||||
try (FileReader reader = new FileReader(file)) {
|
||||
RogueDialogueEventInfo info = gson.fromJson(reader, RogueDialogueEventInfo.class);
|
||||
dialogueEventExcel.setInfo(info);
|
||||
count++;
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
// Notify the server owner if we are missing any files
|
||||
if (count < GameData.getRogueDialogueEventList().size()) {
|
||||
//LunarCore.getLogger().warn("Rogue dialogue event configs are missing, please check your resources folder: {resources}/Config/Level/RogueDialogue/RogueDialogueEvent/Act. Rogue event may not work!");
|
||||
}
|
||||
// Done
|
||||
LunarCore.getLogger().info("Loaded " + count + " rogue events.");
|
||||
}
|
||||
|
||||
private static void loadRogueMapGen() {
|
||||
File file = new File(LunarCore.getConfig().getDataDir() + "/RogueMapGen.json");
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
package emu.lunarcore.data.config;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Original name: LevelRogueDialogueEvent
|
||||
*/
|
||||
@Getter
|
||||
public class RogueDialogueEventInfo {
|
||||
private List<RogueDialogueEvent> OnInitSequece = new ArrayList<>();
|
||||
private List<RogueDialogueEvent> OnStartSequece = new ArrayList<>();
|
||||
|
||||
@Getter
|
||||
public static class RogueDialogueEvent {
|
||||
private List<TaskListInfo> TaskList = new ArrayList<>();
|
||||
}
|
||||
|
||||
@Getter
|
||||
public static class TaskListInfo {
|
||||
@SerializedName("$type") public String Type = "";
|
||||
private List<OptionListInfo> OptionList = new ArrayList<>();
|
||||
private CustomStringInfo CustomString = new CustomStringInfo();
|
||||
}
|
||||
|
||||
@Getter
|
||||
public static class OptionListInfo {
|
||||
private String TriggerCustomString;
|
||||
private int DialogueEventID;
|
||||
}
|
||||
|
||||
@Getter
|
||||
public static class CustomStringInfo {
|
||||
private String Value;
|
||||
}
|
||||
}
|
||||
@@ -4,15 +4,17 @@ import emu.lunarcore.data.GameData;
|
||||
import emu.lunarcore.data.GameResource;
|
||||
import emu.lunarcore.data.ResourceType;
|
||||
import emu.lunarcore.data.ResourceType.LoadPriority;
|
||||
import emu.lunarcore.data.config.RogueDialogueEventInfo;
|
||||
import emu.lunarcore.game.enums.DialogueEventCostType;
|
||||
import emu.lunarcore.game.enums.DialogueEventType;
|
||||
import emu.lunarcore.game.rogue.RogueBuffType;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@ResourceType(name = {"DialogueEvent.json"}, loadPriority = LoadPriority.LOW)
|
||||
@ResourceType(name = {"DialogueEvent.json"})
|
||||
public class DialogueEventExcel extends GameResource {
|
||||
public int EventID;
|
||||
public DialogueEventType RogueEffectType;
|
||||
@@ -21,6 +23,8 @@ public class DialogueEventExcel extends GameResource {
|
||||
public List<Integer> CostParamList;
|
||||
public List<Integer> ConditionIDList;
|
||||
public RogueBuffType AeonOption;
|
||||
|
||||
@Setter private RogueDialogueEventInfo info;
|
||||
@Override
|
||||
public int getId() {
|
||||
return EventID;
|
||||
@@ -30,4 +34,12 @@ public class DialogueEventExcel extends GameResource {
|
||||
public void onLoad() {
|
||||
GameData.getRogueDialogueEventList().put(EventID, this);
|
||||
}
|
||||
|
||||
public String getJsonPath() {
|
||||
return "Config/Level/RogueDialogue/RogueDialogueEvent/Act/Act00" + this.getId() + ".json";
|
||||
}
|
||||
|
||||
public String getSecondPath() {
|
||||
return "Config/Level/RogueDialogue/RogueDialogueEvent/Act/Act4038" + this.getId() + ".json";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package emu.lunarcore.data.excel;
|
||||
|
||||
import emu.lunarcore.LunarCore;
|
||||
import emu.lunarcore.data.GameData;
|
||||
import emu.lunarcore.data.GameResource;
|
||||
import emu.lunarcore.data.ResourceType;
|
||||
@@ -8,7 +9,9 @@ import emu.lunarcore.game.rogue.RogueBuffData;
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
@Getter
|
||||
@ResourceType(name = {"RogueBuffGroup.json"}, loadPriority = LoadPriority.LOW)
|
||||
@@ -16,7 +19,7 @@ public class RogueBuffGroupExcel extends GameResource {
|
||||
private int JHOKDPADHFM; // RogueBuffGroupID
|
||||
private List<Integer> ADJICNNJFEM; // RogueBuffTagList or RogueBuffGroupList
|
||||
|
||||
private List<RogueBuffData> rogueBuffList = new ArrayList<>();
|
||||
private transient Set<RogueBuffData> rogueBuffList = new HashSet<>();
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
@@ -35,7 +38,26 @@ public class RogueBuffGroupExcel extends GameResource {
|
||||
if (rogueBuffGroup != null) rogueBuffList.addAll(rogueBuffGroup.getRogueBuffList());
|
||||
}
|
||||
}
|
||||
|
||||
GameData.getRogueBuffGroupExcelMap().put(JHOKDPADHFM, this);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onFinalize() {
|
||||
for (int rogueTagId : ADJICNNJFEM) {
|
||||
if (rogueTagId >= 1000000 && rogueTagId <= 9999999) {
|
||||
var rogueBuff = GameData.getRogueBuffTagExcelMap().get(rogueTagId);
|
||||
if (rogueBuff != null) rogueBuffList.add(new RogueBuffData(rogueBuff.getMazeBuffID(), rogueBuff.getMazeBuffLevel()));
|
||||
} else {
|
||||
// RogueBuffGroup
|
||||
var rogueBuffGroup = GameData.getRogueBuffGroupExcelMap().get(rogueTagId);
|
||||
if (rogueBuffGroup == null)
|
||||
continue;
|
||||
|
||||
if(rogueBuffGroup.getRogueBuffList().isEmpty()) {
|
||||
rogueBuffGroup.onFinalize();
|
||||
}
|
||||
rogueBuffList.addAll(rogueBuffGroup.getRogueBuffList());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
package emu.lunarcore.game.rogue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import emu.lunarcore.data.GameData;
|
||||
import emu.lunarcore.data.GameDepot;
|
||||
import emu.lunarcore.data.excel.RogueBuffExcel;
|
||||
import emu.lunarcore.proto.ItemCostListOuterClass.ItemCostList;
|
||||
@@ -24,19 +27,21 @@ public class RogueBuffSelectMenu {
|
||||
|
||||
// Cache
|
||||
private transient WeightedList<RogueBuffExcel> randomBuffs;
|
||||
private transient Set<RogueBuffData> allRandomBuffs;
|
||||
|
||||
@Deprecated // Morphia only!
|
||||
public RogueBuffSelectMenu() {}
|
||||
|
||||
public RogueBuffSelectMenu(RogueInstance rogue) {
|
||||
this(rogue, false);
|
||||
this(rogue, false, GameData.getRogueBuffGroupExcelMap().get(110002).getRogueBuffList());
|
||||
}
|
||||
|
||||
public RogueBuffSelectMenu(RogueInstance rogue, boolean generateAeonBuffs) {
|
||||
public RogueBuffSelectMenu(RogueInstance rogue, boolean generateAeonBuffs, Set<RogueBuffData> buffs) {
|
||||
this.rogue = rogue;
|
||||
this.maxBuffs = 3;
|
||||
this.maxRerolls = rogue.getBaseRerolls();
|
||||
this.buffs = new ArrayList<>();
|
||||
this.allRandomBuffs = buffs;
|
||||
|
||||
if (generateAeonBuffs) {
|
||||
this.generateAeonBuffs();
|
||||
@@ -45,6 +50,10 @@ public class RogueBuffSelectMenu {
|
||||
}
|
||||
}
|
||||
|
||||
public RogueBuffSelectMenu(RogueInstance rogue, boolean generateAeonBuffs) {
|
||||
this(rogue, generateAeonBuffs, new HashSet<>());
|
||||
}
|
||||
|
||||
public void setMaxRerolls(int i) {
|
||||
this.maxBuffs = i;
|
||||
}
|
||||
@@ -62,19 +71,19 @@ public class RogueBuffSelectMenu {
|
||||
if (this.randomBuffs == null) {
|
||||
this.randomBuffs = new WeightedList<>();
|
||||
|
||||
for (var excel : GameDepot.getRogueRandomBuffList()) {
|
||||
if (rogue.getBuffs().containsKey(excel.getMazeBuffID())) {
|
||||
for (var excel : this.getAllRandomBuffs()) {
|
||||
if (rogue.getBuffs().containsKey(excel.getExcel().getMazeBuffID())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Calculate buff weights
|
||||
double weight = 10.0 / excel.getRogueBuffRarity();
|
||||
double weight = 10.0 / excel.getExcel().getRogueBuffRarity();
|
||||
|
||||
if (getRogue().getAeonBuffType() == excel.getRogueBuffType()) {
|
||||
if (getRogue().getAeonBuffType() == excel.getExcel().getRogueBuffType()) {
|
||||
weight *= 2;
|
||||
}
|
||||
|
||||
this.randomBuffs.add(weight, excel);
|
||||
this.randomBuffs.add(weight, excel.getExcel());
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -17,12 +17,9 @@ import emu.lunarcore.game.scene.entity.EntityMonster;
|
||||
import emu.lunarcore.game.scene.entity.EntityNpc;
|
||||
import emu.lunarcore.game.scene.entity.EntityProp;
|
||||
import emu.lunarcore.game.scene.entity.extra.PropRogueData;
|
||||
import emu.lunarcore.proto.RogueDialogueEventParamOuterClass.RogueDialogueEventParam;
|
||||
import emu.lunarcore.server.packet.send.PacketSyncRogueDialogueEventDataScNotify;
|
||||
import emu.lunarcore.util.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class RogueEntityLoader extends SceneEntityLoader {
|
||||
|
||||
@Override
|
||||
@@ -136,19 +133,18 @@ public class RogueEntityLoader extends SceneEntityLoader {
|
||||
|
||||
// Add rogue dialogue
|
||||
if (npc.getNpcId() == 3013) {
|
||||
RogueNPCExcel rogueNpcExcel = Utils.randomElement(GameDepot.getRogueRandomNpcList());
|
||||
npc.setRogueNpcId(rogueNpcExcel.getId());
|
||||
var params = new ArrayList<RogueDialogueEventParam>();
|
||||
var start = rogueNpcExcel.getId();
|
||||
while (true) {
|
||||
var event = GameData.getRogueDialogueEventList().get(start);
|
||||
if (event == null) break;
|
||||
params.add(RogueDialogueEventParam.newInstance()
|
||||
.setDialogueEventId(start)
|
||||
.setIsValid(true));
|
||||
start++;
|
||||
}
|
||||
scene.getPlayer().sendPacket(new PacketSyncRogueDialogueEventDataScNotify(rogueNpcExcel.getId(), params));
|
||||
int npcId;
|
||||
RogueInstance instance;
|
||||
do {
|
||||
RogueNPCExcel rogueNpcExcel = Utils.randomElement(GameDepot.getRogueRandomNpcList());
|
||||
npcId = rogueNpcExcel.getId();
|
||||
instance = scene.getPlayer().getRogueInstance();
|
||||
} while (instance.setDialogueParams(npcId) == null);
|
||||
|
||||
npc.setRogueNpcId(npcId);
|
||||
npc.setEventId(++instance.eventId);
|
||||
scene.getPlayer().sendPacket(new PacketSyncRogueDialogueEventDataScNotify(npcId, instance.curDialogueParams.get(npcId),
|
||||
instance.eventId));
|
||||
}
|
||||
|
||||
return npc;
|
||||
|
||||
@@ -1,7 +1,14 @@
|
||||
package emu.lunarcore.game.rogue;
|
||||
|
||||
import emu.lunarcore.LunarCore;
|
||||
import emu.lunarcore.data.GameData;
|
||||
import emu.lunarcore.game.player.Player;
|
||||
import emu.lunarcore.game.scene.entity.EntityNpc;
|
||||
import emu.lunarcore.proto.FinishRogueDialogueGroupCsReqOuterClass;
|
||||
import emu.lunarcore.server.packet.BasePacket;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.recv.HandlerFinishRogueDialogueGroupCsReq;
|
||||
import emu.lunarcore.server.packet.send.PacketSyncRogueCommonPendingActionScNotify;
|
||||
import emu.lunarcore.util.WeightedList;
|
||||
import lombok.Getter;
|
||||
|
||||
@@ -17,15 +24,19 @@ public class RogueEventManager {
|
||||
this.player = rogueInstance.getPlayer();
|
||||
}
|
||||
|
||||
public void handleEvent(int eventId) {
|
||||
public int handleEvent(int eventId) {
|
||||
var event = GameData.getRogueDialogueEventList().get(eventId);
|
||||
if (event == null || event.getRogueEffectType() == null) return;
|
||||
if (event == null || event.getRogueEffectType() == null) return 0;
|
||||
List<Integer> param = event.getRogueEffectParamList();
|
||||
switch (event.getRogueEffectType()) {
|
||||
case GetItem -> rogueInstance.setMoney(rogueInstance.getMoney() + param.get(1));
|
||||
case TriggerBattle -> this.getPlayer().getServer().getBattleService().startBattle(player, param.get(0));
|
||||
case GetItem -> rogueInstance.addDialogueMoney(param.get(1));
|
||||
case TriggerBattle -> {
|
||||
//this.getPlayer().getServer().getBattleService().startBattle(player, param.get(0));
|
||||
}
|
||||
case TriggerRogueMiracleSelect -> this.getRogueInstance().createMiracleSelect(1);
|
||||
case TriggerRogueBuffSelect -> this.getRogueInstance().createBuffSelect(1);
|
||||
case TriggerRogueBuffSelect -> {
|
||||
this.getRogueInstance().createBuffSelect(param.get(2), param.get(0));
|
||||
}
|
||||
case GetRogueBuff -> {
|
||||
var rogueBuff = GameData.getRogueBuffGroupExcelMap().get(param.get(0));
|
||||
if (rogueBuff != null) {
|
||||
@@ -48,8 +59,27 @@ public class RogueEventManager {
|
||||
var rogueBuff = GameData.getRogueBuffGroupExcelMap().get(param.get(0));
|
||||
this.getRogueInstance().addBuff(rogueBuff.getRogueBuffList());
|
||||
}
|
||||
case TriggerDialogueEventList -> {
|
||||
for (var id : param) {
|
||||
this.handleEvent(id);
|
||||
}
|
||||
}
|
||||
case TriggerRandomEventList -> {
|
||||
this.handleEvent(11604); // temp
|
||||
handleCost(eventId);
|
||||
return 0;
|
||||
}
|
||||
case GetAllRogueBuffInGroupAndGetItem -> {
|
||||
var rogueBuff = GameData.getRogueBuffGroupExcelMap().get(param.get(0));
|
||||
this.getRogueInstance().addBuff(rogueBuff.getRogueBuffList());
|
||||
this.getRogueInstance().addDialogueMoney(param.get(2));
|
||||
}
|
||||
default -> {
|
||||
LunarCore.getLogger().info("RogueEventManager: unhandled event type: " + event.getRogueEffectType()); // DEBUG
|
||||
}
|
||||
}
|
||||
handleCost(eventId);
|
||||
return 0;
|
||||
}
|
||||
|
||||
public void handleCost(int eventId) {
|
||||
|
||||
@@ -4,9 +4,7 @@ import java.util.*;
|
||||
|
||||
import emu.lunarcore.data.GameData;
|
||||
import emu.lunarcore.data.config.AnchorInfo;
|
||||
import emu.lunarcore.data.excel.RogueAeonExcel;
|
||||
import emu.lunarcore.data.excel.RogueAreaExcel;
|
||||
import emu.lunarcore.data.excel.RogueMapExcel;
|
||||
import emu.lunarcore.data.excel.*;
|
||||
import emu.lunarcore.game.battle.Battle;
|
||||
import emu.lunarcore.game.enums.RogueBuffAeonType;
|
||||
import emu.lunarcore.game.inventory.GameItem;
|
||||
@@ -20,9 +18,11 @@ import emu.lunarcore.proto.HandleRogueCommonPendingActionScRspOuterClass.HandleR
|
||||
import emu.lunarcore.proto.RogueAeonOuterClass.RogueAeon;
|
||||
import emu.lunarcore.proto.RogueAvatarInfoOuterClass.RogueAvatarInfo;
|
||||
import emu.lunarcore.proto.RogueBuffInfoOuterClass.RogueBuffInfo;
|
||||
import emu.lunarcore.proto.RogueBuffOuterClass.RogueBuff;
|
||||
import emu.lunarcore.proto.RogueBuffSourceOuterClass.RogueBuffSource;
|
||||
import emu.lunarcore.proto.RogueCommonPendingActionOuterClass.RogueCommonPendingAction;
|
||||
import emu.lunarcore.proto.RogueCurrentInfoOuterClass.RogueCurrentInfo;
|
||||
import emu.lunarcore.proto.RogueDialogueEventParamOuterClass.RogueDialogueEventParam;
|
||||
import emu.lunarcore.proto.RogueFinishInfoOuterClass.RogueFinishInfo;
|
||||
import emu.lunarcore.proto.RogueMapInfoOuterClass.RogueMapInfo;
|
||||
import emu.lunarcore.proto.RogueMiracleInfoOuterClass.RogueMiracleInfo;
|
||||
@@ -33,6 +33,8 @@ import emu.lunarcore.proto.RogueStatusOuterClass.RogueStatus;
|
||||
import emu.lunarcore.proto.RogueVirtualItemOuterClass.RogueVirtualItem;
|
||||
import emu.lunarcore.server.packet.send.*;
|
||||
import emu.lunarcore.util.Utils;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
|
||||
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
|
||||
import lombok.Getter;
|
||||
import us.hebi.quickbuf.RepeatedInt;
|
||||
|
||||
@@ -52,20 +54,25 @@ public class RogueInstance {
|
||||
private Map<Integer, RogueBuffData> buffs;
|
||||
private Map<Integer, RogueMiracleData> miracles;
|
||||
|
||||
private int pendingBuffSelects;
|
||||
//private int pendingBuffSelects;
|
||||
private List<Set<RogueBuffData>> pendingBuffSelects = new ArrayList<>();
|
||||
private RogueBuffSelectMenu buffSelect;
|
||||
private int pendingMiracleSelects;
|
||||
private RogueMiracleSelectMenu miracleSelect;
|
||||
private int pendingBonusSelects;
|
||||
private RogueBonusSelectMenu bonusSelect;
|
||||
private RogueCommonPendingAction pendingAction;
|
||||
public RogueCommonPendingAction pendingAction;
|
||||
|
||||
private int baseRerolls;
|
||||
private int aeonId;
|
||||
private int aeonBuffType;
|
||||
private int maxAeonBuffs;
|
||||
private int money; // universal debris
|
||||
private int id = 2; // idk what this is for, but it's needed for the packet
|
||||
public int id = 2; // idk what this is for, but it's needed for the packet
|
||||
public int eventId = 690;
|
||||
public Int2ObjectMap<List<RogueDialogueEventParam>> curDialogueParams = new Int2ObjectOpenHashMap<>();
|
||||
private final Set<RogueBuffData> normalBuff = GameData.getRogueBuffGroupExcelMap().get(100005).getRogueBuffList();
|
||||
private final Set<RogueBuffData> uncommonBuff = GameData.getRogueBuffGroupExcelMap().get(100003).getRogueBuffList();
|
||||
|
||||
private int roomScore;
|
||||
private int earnedTalentCoin;
|
||||
@@ -121,7 +128,7 @@ public class RogueInstance {
|
||||
}
|
||||
// Extra blessings
|
||||
if (player.getRogueManager().hasTalent(21)) {
|
||||
this.pendingBuffSelects += 1;
|
||||
this.pendingBuffSelects.add(normalBuff);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,22 +176,46 @@ public class RogueInstance {
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void createBuffSelect(int amount) {
|
||||
this.pendingBuffSelects += amount;
|
||||
public synchronized void createBuffSelect(int amount, int groupId) {
|
||||
var buffs = GameData.getRogueBuffGroupExcelMap().get(groupId).getRogueBuffList();
|
||||
if (!buffs.isEmpty()) {
|
||||
for (int i = 0; i < amount; i++) {
|
||||
this.pendingBuffSelects.add(buffs);
|
||||
}
|
||||
RogueBuffSelectMenu buffSelect = this.updateBuffSelect();
|
||||
}
|
||||
|
||||
RogueBuffSelectMenu buffSelect = this.updateBuffSelect();
|
||||
// if (buffSelect != null) {
|
||||
// getPlayer().sendPacket(new PacketSyncRogueBuffSelectInfoScNotify(buffSelect));
|
||||
// }
|
||||
}
|
||||
|
||||
public synchronized void createBuffSelect(int amount, Set<RogueBuffData> buffs) {
|
||||
if (!buffs.isEmpty()) {
|
||||
for (int i = 0; i < amount; i++) {
|
||||
this.pendingBuffSelects.add(buffs);
|
||||
}
|
||||
RogueBuffSelectMenu buffSelect = this.updateBuffSelect();
|
||||
}
|
||||
// if (buffSelect != null) {
|
||||
// getPlayer().sendPacket(new PacketSyncRogueBuffSelectInfoScNotify(buffSelect));
|
||||
// }
|
||||
}
|
||||
|
||||
public synchronized void createBuffSelect(int amount) {
|
||||
for (int i = 0; i < amount; i++) {
|
||||
this.pendingBuffSelects.add(normalBuff);
|
||||
}
|
||||
RogueBuffSelectMenu buffSelect = this.updateBuffSelect();
|
||||
}
|
||||
|
||||
public synchronized RogueBuffSelectMenu updateBuffSelect() {
|
||||
if (this.getBuffSelect() == null) {
|
||||
// Creates a new blessing selection menu if we have any pending buff selects
|
||||
if (this.pendingBuffSelects > 0) {
|
||||
if (!this.pendingBuffSelects.isEmpty()) {
|
||||
// Regular blessing selection with 3 random blessings
|
||||
this.buffSelect = new RogueBuffSelectMenu(this, false);
|
||||
this.pendingBuffSelects--;
|
||||
this.buffSelect = new RogueBuffSelectMenu(this, false, this.pendingBuffSelects.get(0));
|
||||
this.pendingBuffSelects.remove(0);
|
||||
} else if (this.getAeonId() != 0) {
|
||||
// Check if we should add aeon blessings
|
||||
if (shouldAddAeonBuff()) {
|
||||
@@ -257,18 +288,34 @@ public class RogueInstance {
|
||||
return buff;
|
||||
}
|
||||
|
||||
public synchronized void addBuff(List<RogueBuffData> buffs) {
|
||||
public synchronized void addBuff(Set<RogueBuffData> buffs) {
|
||||
for (var buff : buffs) {
|
||||
this.addBuff(buff);
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized void addBuff(RogueBuffData buff) {
|
||||
this.addBuff(buff, RogueBuffSource.ROGUE_BUFF_SOURCE_TYPE_DIALOGUE);
|
||||
}
|
||||
public synchronized void addBuff(RogueBuffData buff, RogueBuffSource source) {
|
||||
this.getBuffs().put(buff.getId(), buff);
|
||||
getPlayer().sendPacket(new PacketSyncRogueCommonActionResultScNotify(RogueBuffSource.ROGUE_BUFF_SOURCE_TYPE_DIALOGUE, buff.toDataProto()));
|
||||
getPlayer().sendPacket(new PacketSyncRogueCommonActionResultScNotify(source, buff.toDataProto()));
|
||||
this.updateBuffSelect();
|
||||
}
|
||||
|
||||
public synchronized RogueBuff enhanceBuff(int buffId) {
|
||||
var buff = this.getBuffs().get(buffId);
|
||||
if (buff == null) return null;
|
||||
var cost = 100 + (buff.getExcel().getRogueBuffRarity() - 1) * 30;
|
||||
if (this.getMoney() < cost) return null;
|
||||
this.setMoney(this.getMoney() - cost);
|
||||
this.getBuffs().remove(buffId);
|
||||
this.addBuff(new RogueBuffData(buff.getId(), buff.getLevel() + 1), RogueBuffSource.ROGUE_BUFF_SOURCE_TYPE_ENHANCE);
|
||||
return RogueBuff.newInstance()
|
||||
.setBuffId(buffId)
|
||||
.setLevel(buff.getLevel() + 1);
|
||||
}
|
||||
|
||||
public synchronized void createMiracleSelect(int amount) {
|
||||
this.pendingMiracleSelects += amount;
|
||||
|
||||
@@ -368,16 +415,25 @@ public class RogueInstance {
|
||||
data.getMutableBonusSelect();
|
||||
data.setTimes(this.id - 2);
|
||||
this.getPlayer().sendPacket(new PacketHandleRogueCommonPendingActionScRsp(data));
|
||||
this.onSelectDialogue(bonus.getEventId());
|
||||
try {
|
||||
this.onSelectDialogue(bonus.getEventId());
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return bonus;
|
||||
}
|
||||
|
||||
public synchronized void setMoney(int money) {
|
||||
if (this.money <= money) {
|
||||
getPlayer().sendPacket(new PacketScenePlaneEventScNotify(new GameItem(31, money - this.money)));
|
||||
this.getPlayer().sendPacket(new PacketScenePlaneEventScNotify(new GameItem(31, money - this.money)));
|
||||
}
|
||||
this.money = money;
|
||||
getPlayer().sendPacket(new PacketSyncRogueVirtualItemInfoScNotify(this.getPlayer()));
|
||||
this.getPlayer().sendPacket(new PacketSyncRogueVirtualItemInfoScNotify(this.getPlayer()));
|
||||
}
|
||||
|
||||
public synchronized void addDialogueMoney(int money) {
|
||||
this.money += money;
|
||||
this.getPlayer().sendPacket(new PacketSyncRogueVirtualItemInfoScNotify(this.getPlayer()));
|
||||
this.getPlayer().sendPacket(new PacketSyncRogueCommonActionResultScNotify(RogueBuffSource.ROGUE_BUFF_SOURCE_TYPE_DIALOGUE, money));
|
||||
}
|
||||
|
||||
public synchronized void pickAvatar(RepeatedInt avatarId) {
|
||||
@@ -390,6 +446,62 @@ public class RogueInstance {
|
||||
this.getPlayer().sendPacket(new PacketPickRogueAvatarScRsp(newAvatarIds));
|
||||
}
|
||||
|
||||
public synchronized List<RogueDialogueEventParam> setDialogueParams(int npcId) {
|
||||
try {
|
||||
this.curDialogueParams.clear();
|
||||
|
||||
DialogueEventExcel event = GameData.getRogueDialogueEventList().get(npcId);
|
||||
var sequence = event.getInfo().getOnStartSequece();
|
||||
|
||||
ArrayList<RogueDialogueEventParam> params = new ArrayList<>();
|
||||
Int2ObjectMap<String> map = new Int2ObjectOpenHashMap<>();
|
||||
Map<String, String> argMap = new HashMap<>();
|
||||
for (var e : sequence) {
|
||||
var talkList = e.getTaskList();
|
||||
var tempName = "";
|
||||
|
||||
for (var talk : talkList) {
|
||||
if (talk.getOptionList() != null && !talk.getOptionList().isEmpty()){
|
||||
for (var option : talk.getOptionList()) {
|
||||
if (option.getDialogueEventID() != 0) {
|
||||
map.put(option.getDialogueEventID(), option.getTriggerCustomString());
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (talk.Type.equals("RPG.GameCore.WaitCustomString")) {
|
||||
tempName = talk.getCustomString().getValue();
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!Objects.equals(tempName, "") && talk.Type.equals("RPG.GameCore.TriggerCustomString")) {
|
||||
argMap.put(tempName, talk.getCustomString().getValue());
|
||||
tempName = "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
map.forEach((k, v) -> {
|
||||
var param = RogueDialogueEventParam.newInstance()
|
||||
.setDialogueEventId(k)
|
||||
.setIsValid(true);
|
||||
|
||||
if (argMap.containsKey(v) && argMap.get(v).equals("RelateToBuff")) {
|
||||
param.setArgId(this.getAeonId());
|
||||
}
|
||||
|
||||
params.add(param);
|
||||
});
|
||||
|
||||
this.getCurDialogueParams().put(npcId, params);
|
||||
|
||||
return params;
|
||||
} catch (Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public synchronized RogueRoomData enterRoom(int siteId) {
|
||||
// Set status on previous room
|
||||
RogueRoomData prevRoom = this.getCurrentRoom();
|
||||
@@ -448,8 +560,8 @@ public class RogueInstance {
|
||||
|
||||
// Dialogue stuff
|
||||
|
||||
public void onSelectDialogue(int dialogueEventId) {
|
||||
this.eventManager.handleEvent(dialogueEventId);
|
||||
public int onSelectDialogue(int dialogueEventId) {
|
||||
return this.eventManager.handleEvent(dialogueEventId);
|
||||
}
|
||||
|
||||
// Battle
|
||||
@@ -483,7 +595,12 @@ public class RogueInstance {
|
||||
} else {
|
||||
// Give blessings to player
|
||||
int amount = battle.getNpcMonsters().size();
|
||||
this.createBuffSelect(amount);
|
||||
if (this.getCurrentRoom().getExcel().getRogueRoomType() == 6) { // area boss
|
||||
this.createBuffSelect(amount, this.getUncommonBuff());
|
||||
} else {
|
||||
this.createBuffSelect(amount);
|
||||
}
|
||||
this.setMoney(this.getMoney() + Utils.randomRange(20, 80) * amount);
|
||||
}
|
||||
} else {
|
||||
this.getPlayer().getRogueManager().quitRogue();
|
||||
|
||||
@@ -24,6 +24,7 @@ public class EntityNpc implements GameEntity {
|
||||
|
||||
@Setter private int rogueNpcId;
|
||||
@Setter private boolean isDialogueFinished = false;
|
||||
@Setter private int eventId = 0;
|
||||
|
||||
public EntityNpc(Scene scene, GroupInfo group, NpcInfo npcInfo) {
|
||||
this.scene = scene;
|
||||
@@ -44,7 +45,8 @@ public class EntityNpc implements GameEntity {
|
||||
if (this.rogueNpcId > 0) {
|
||||
var rogue = NpcRogueInfo.newInstance()
|
||||
.setRogueNpcId(this.rogueNpcId)
|
||||
.setFinishDialogue(isDialogueFinished);
|
||||
.setFinishDialogue(isDialogueFinished)
|
||||
.setGBMDBBBMBEJ(eventId);
|
||||
|
||||
npc.getMutableExtraInfo().setRogueInfo(rogue);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
package emu.lunarcore.server.packet.recv;
|
||||
|
||||
import emu.lunarcore.proto.EnhanceRogueBuffCsReqOuterClass.EnhanceRogueBuffCsReq;
|
||||
import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketEnhanceRogueBuffScRsp;
|
||||
|
||||
@Opcodes(CmdId.EnhanceRogueBuffCsReq)
|
||||
public class HandlerEnhanceRogueBuffCsReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
var proto = EnhanceRogueBuffCsReq.parseFrom(data);
|
||||
var buffId = proto.getBuffId();
|
||||
|
||||
var buff = session.getPlayer().getRogueInstance().enhanceBuff(buffId);
|
||||
session.send(new PacketEnhanceRogueBuffScRsp(buff));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package emu.lunarcore.server.packet.recv;
|
||||
|
||||
import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.server.packet.Opcodes;
|
||||
import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketGetRogueBuffEnhanceInfoScRsp;
|
||||
|
||||
@Opcodes(CmdId.GetRogueBuffEnhanceInfoCsReq)
|
||||
public class HandlerGetRogueBuffEnhanceInfoCsReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
session.send(new PacketGetRogueBuffEnhanceInfoScRsp(session.getPlayer()));
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@ import emu.lunarcore.server.packet.PacketHandler;
|
||||
import emu.lunarcore.server.packet.send.PacketSceneGroupRefreshScNotify;
|
||||
|
||||
@Opcodes(CmdId.RogueNpcDisappearCsReq)
|
||||
public class HandleRogueNpcDisappearCsReq extends PacketHandler {
|
||||
public class HandlerRogueNpcDisappearCsReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
var req = RogueNpcDisappearCsReq.parseFrom(data);
|
||||
@@ -1,7 +1,6 @@
|
||||
package emu.lunarcore.server.packet.recv;
|
||||
|
||||
import emu.lunarcore.game.scene.entity.EntityNpc;
|
||||
import emu.lunarcore.proto.FinishRogueDialogueGroupCsReqOuterClass.FinishRogueDialogueGroupCsReq;
|
||||
import emu.lunarcore.proto.SelectRogueDialogueEventCsReqOuterClass.SelectRogueDialogueEventCsReq;
|
||||
import emu.lunarcore.server.game.GameSession;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
@@ -15,17 +14,17 @@ public class HandlerSelectRogueDialogueEventCsReq extends PacketHandler {
|
||||
@Override
|
||||
public void handle(GameSession session, byte[] data) throws Exception {
|
||||
var req = SelectRogueDialogueEventCsReq.parseFrom(data);
|
||||
|
||||
if (session.getPlayer().getRogueInstance() != null) {
|
||||
session.getPlayer().getRogueInstance().onSelectDialogue(req.getDialogueEventId());
|
||||
}
|
||||
|
||||
EntityNpc npc = (EntityNpc)session.getPlayer().getScene().getEntityById(req.getEntityId());
|
||||
|
||||
session.send(new PacketSelectRogueDialogueEventScRsp(req.getDialogueEventId(), npc));
|
||||
new HandlerFinishRogueDialogueGroupCsReq().handle(session, FinishRogueDialogueGroupCsReq.newInstance() // using it before the event is implemented
|
||||
.setEntityId(req.getEntityId())
|
||||
.toByteArray());
|
||||
if (npc == null) return;
|
||||
|
||||
int callback = 0;
|
||||
if (session.getPlayer().getRogueInstance() != null) {
|
||||
callback = session.getPlayer().getRogueInstance().onSelectDialogue(req.getDialogueEventId());
|
||||
}
|
||||
|
||||
session.send(new PacketSelectRogueDialogueEventScRsp(req.getDialogueEventId(), npc, callback));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,18 @@
|
||||
package emu.lunarcore.server.packet.send;
|
||||
|
||||
import emu.lunarcore.proto.EnhanceRogueBuffScRspOuterClass.EnhanceRogueBuffScRsp;
|
||||
import emu.lunarcore.proto.RogueBuffOuterClass.RogueBuff;
|
||||
import emu.lunarcore.server.packet.BasePacket;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
|
||||
public class PacketEnhanceRogueBuffScRsp extends BasePacket {
|
||||
public PacketEnhanceRogueBuffScRsp(RogueBuff buff) {
|
||||
super(CmdId.EnhanceRogueBuffScRsp);
|
||||
|
||||
var proto = EnhanceRogueBuffScRsp.newInstance()
|
||||
.setIsSuccess(true)
|
||||
.setRogueBuff(buff);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package emu.lunarcore.server.packet.send;
|
||||
|
||||
import emu.lunarcore.data.excel.RogueBuffExcel;
|
||||
import emu.lunarcore.game.player.Player;
|
||||
import emu.lunarcore.proto.GetRogueBuffEnhanceInfoScRspOuterClass.GetRogueBuffEnhanceInfoScRsp;
|
||||
import emu.lunarcore.proto.ItemCostListOuterClass.ItemCostList;
|
||||
import emu.lunarcore.proto.ItemCostOuterClass.ItemCost;
|
||||
import emu.lunarcore.proto.ItemCostOuterClass.PileItem;
|
||||
import emu.lunarcore.proto.RogueBuffEnhanceInfoOuterClass.RogueBuffEnhanceInfo;
|
||||
import emu.lunarcore.proto.RogueBuffEnhanceShopInfoOuterClass.RogueBuffEnhanceShopInfo;
|
||||
import emu.lunarcore.server.packet.BasePacket;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
|
||||
public class PacketGetRogueBuffEnhanceInfoScRsp extends BasePacket {
|
||||
public PacketGetRogueBuffEnhanceInfoScRsp(Player player) {
|
||||
super(CmdId.GetRogueBuffEnhanceInfoScRsp);
|
||||
|
||||
var buffs = player.getRogueInstance().getBuffs();
|
||||
var proto = GetRogueBuffEnhanceInfoScRsp.newInstance();
|
||||
var shop = RogueBuffEnhanceShopInfo.newInstance();
|
||||
|
||||
for (var buff : buffs.values()) {
|
||||
if (buff.getLevel() > 1) continue;
|
||||
shop.addBuffInfo(RogueBuffEnhanceInfo.newInstance()
|
||||
.setBuffId(buff.getId())
|
||||
.setItemCostList(this.getItemCostList(buff.getExcel()))
|
||||
.setHNHFMFCDCOC(1));
|
||||
}
|
||||
proto.setShopInfo(shop);
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public ItemCostList getItemCostList(RogueBuffExcel excel) {
|
||||
int cost = 100 + (excel.getRogueBuffRarity() - 1) * 30;
|
||||
return ItemCostList.newInstance()
|
||||
.addItemList(ItemCost.newInstance()
|
||||
.setPileItem(PileItem.newInstance()
|
||||
.setItemId(31)
|
||||
.setItemNum(cost)));
|
||||
}
|
||||
}
|
||||
@@ -1,47 +1,45 @@
|
||||
package emu.lunarcore.server.packet.send;
|
||||
|
||||
import emu.lunarcore.data.GameData;
|
||||
import emu.lunarcore.data.GameDepot;
|
||||
import emu.lunarcore.data.excel.RogueNPCExcel;
|
||||
import emu.lunarcore.game.player.Player;
|
||||
import emu.lunarcore.game.scene.entity.EntityNpc;
|
||||
import emu.lunarcore.proto.MEMPJPLINCNOuterClass.MEMPJPLINCN;
|
||||
import emu.lunarcore.proto.RogueDialogueEventOuterClass.RogueDialogueEvent;
|
||||
import emu.lunarcore.proto.RogueDialogueEventParamOuterClass.RogueDialogueEventParam;
|
||||
import emu.lunarcore.proto.SelectRogueDialogueEventScRspOuterClass.SelectRogueDialogueEventScRsp;
|
||||
import emu.lunarcore.server.packet.BasePacket;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
import emu.lunarcore.util.Utils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class PacketSelectRogueDialogueEventScRsp extends BasePacket {
|
||||
|
||||
public PacketSelectRogueDialogueEventScRsp(int dialogueEventId, EntityNpc npc) {
|
||||
public PacketSelectRogueDialogueEventScRsp(int dialogueEventId, EntityNpc npc, int nextEventId) {
|
||||
super(CmdId.SelectRogueDialogueEventScRsp);
|
||||
|
||||
var data = SelectRogueDialogueEventScRsp.newInstance()
|
||||
.setDialogueEventId(dialogueEventId);
|
||||
|
||||
RogueNPCExcel rogueNpcExcel = Utils.randomElement(GameDepot.getRogueRandomNpcList());
|
||||
var params = new ArrayList<RogueDialogueEventParam>();
|
||||
var start = rogueNpcExcel.getId();
|
||||
|
||||
while (true) {
|
||||
var event = GameData.getRogueDialogueEventList().get(start);
|
||||
if (event == null) break;
|
||||
params.add(RogueDialogueEventParam.newInstance()
|
||||
.setDialogueEventId(start)
|
||||
.setIsValid(true));
|
||||
start++;
|
||||
var instance = npc.getScene().getPlayer().getRogueInstance();
|
||||
|
||||
var params = instance.curDialogueParams.get(npc.getRogueNpcId());
|
||||
if (params == null) {
|
||||
params = instance.setDialogueParams(npc.getRogueNpcId());
|
||||
}
|
||||
|
||||
var event = RogueDialogueEvent.newInstance()
|
||||
.setNpcId(npc.getRogueNpcId())
|
||||
.setGameModeType(5)
|
||||
.addAllNNOHLEAOJPP(dialogueEventId)
|
||||
.addSelectEventId(dialogueEventId)
|
||||
.setGBMDBBBMBEJ(instance.getEventId())
|
||||
.addAllRogueDialogueEventParam(params.toArray(RogueDialogueEventParam[]::new));
|
||||
|
||||
var l = MEMPJPLINCN.newInstance();
|
||||
for (var param : params) {
|
||||
l.addBLGIMDCNDHJ(param.getDialogueEventId());
|
||||
}
|
||||
if (nextEventId != 0) {
|
||||
l.addBLGIMDCNDHJ(nextEventId);
|
||||
}
|
||||
data.addLELKNNDCGJM(l);
|
||||
data.setEventData(event);
|
||||
|
||||
this.setData(data);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import emu.lunarcore.proto.RogueMiracleDataOuterClass.RogueMiracleData;
|
||||
import emu.lunarcore.proto.RogueActionResultDataOuterClass.RogueActionResultData;
|
||||
import emu.lunarcore.proto.RogueActionResultOuterClass.RogueActionResult;
|
||||
import emu.lunarcore.proto.RogueBuffSourceOuterClass.RogueBuffSource;
|
||||
import emu.lunarcore.proto.RogueVirtualItemDataOuterClass.RogueVirtualItemData;
|
||||
import emu.lunarcore.proto.SyncRogueCommonActionResultScNotifyOuterClass.SyncRogueCommonActionResultScNotify;
|
||||
import emu.lunarcore.server.packet.BasePacket;
|
||||
import emu.lunarcore.server.packet.CmdId;
|
||||
@@ -13,7 +14,8 @@ public class PacketSyncRogueCommonActionResultScNotify extends BasePacket {
|
||||
public PacketSyncRogueCommonActionResultScNotify(RogueActionResult action) {
|
||||
super(CmdId.SyncRogueCommonActionResultScNotify);
|
||||
|
||||
var proto = SyncRogueCommonActionResultScNotify.newInstance();
|
||||
var proto = SyncRogueCommonActionResultScNotify.newInstance()
|
||||
.setOCPBNBPAMEN(101);
|
||||
|
||||
proto.setAction(action);
|
||||
|
||||
@@ -35,4 +37,10 @@ public class PacketSyncRogueCommonActionResultScNotify extends BasePacket {
|
||||
this(source, RogueActionResultData.newInstance()
|
||||
.setAddBuffList(buff));
|
||||
}
|
||||
|
||||
public PacketSyncRogueCommonActionResultScNotify(RogueBuffSource source, int addMoneyNum) {
|
||||
this(source, RogueActionResultData.newInstance()
|
||||
.setAddItemList(RogueVirtualItemData.newInstance()
|
||||
.setNum(addMoneyNum)));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -27,6 +27,10 @@ public class PacketSyncRogueCommonPendingActionScNotify extends BasePacket {
|
||||
.setRogueAction(action));
|
||||
}
|
||||
|
||||
public PacketSyncRogueCommonPendingActionScNotify(int id) {
|
||||
this(RogueAction.newInstance(), id);
|
||||
}
|
||||
|
||||
public PacketSyncRogueCommonPendingActionScNotify(RogueCommonBuffSelectInfo info, int id) {
|
||||
this(RogueAction.newInstance()
|
||||
.setBuffSelectInfo(info), id);
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package emu.lunarcore.server.packet.send;
|
||||
|
||||
import emu.lunarcore.LunarCore;
|
||||
import emu.lunarcore.proto.RogueDialogueEventOuterClass.RogueDialogueEvent;
|
||||
import emu.lunarcore.proto.RogueDialogueEventParamOuterClass.RogueDialogueEventParam;
|
||||
import emu.lunarcore.proto.SyncRogueDialogueEventDataScNotifyOuterClass.SyncRogueDialogueEventDataScNotify;
|
||||
@@ -14,14 +15,15 @@ public class PacketSyncRogueDialogueEventDataScNotify extends BasePacket {
|
||||
|
||||
var proto = SyncRogueDialogueEventDataScNotify.newInstance()
|
||||
.addRogueDialogueEvent(event);
|
||||
|
||||
|
||||
this.setData(proto);
|
||||
}
|
||||
|
||||
public PacketSyncRogueDialogueEventDataScNotify(int rogueNpcId, List<RogueDialogueEventParam> params) {
|
||||
public PacketSyncRogueDialogueEventDataScNotify(int rogueNpcId, List<RogueDialogueEventParam> params, int eventId) {
|
||||
this(RogueDialogueEvent.newInstance()
|
||||
.setGameModeType(5) // rogue explore
|
||||
.setNpcId(rogueNpcId)
|
||||
.setGBMDBBBMBEJ(eventId)
|
||||
.addAllRogueDialogueEventParam(params.toArray(RogueDialogueEventParam[]::new)));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user