diff --git a/.editorconfig b/.editorconfig index f0a1794..aa39c23 100644 --- a/.editorconfig +++ b/.editorconfig @@ -7,7 +7,7 @@ indent_style = space insert_final_newline = true max_line_length = 120 tab_width = 4 -trim_trailing_whitespace = true +trim_trailing_whitespace = false [{*.json,*.xml,*.yml,*.html}] indent_size = 2 diff --git a/src/generated/main/emu/lunarcore/proto/BattleAvatarOuterClass.java b/src/generated/main/emu/lunarcore/proto/BattleAvatarOuterClass.java index fc6c0e5..6afc064 100644 --- a/src/generated/main/emu/lunarcore/proto/BattleAvatarOuterClass.java +++ b/src/generated/main/emu/lunarcore/proto/BattleAvatarOuterClass.java @@ -65,6 +65,10 @@ public final class BattleAvatarOuterClass { private int avatarType; /** + *
+ * DGPADLEIDFM BLGGGJFHGCP = 15; + *+ * *
optional .SpBarInfo sp_bar = 16;
*/
private final SpBarInfoOuterClass.SpBarInfo spBar = SpBarInfoOuterClass.SpBarInfo.newInstance();
@@ -453,6 +457,10 @@ public final class BattleAvatarOuterClass {
}
/**
+ * + * DGPADLEIDFM BLGGGJFHGCP = 15; + *+ * *
optional .SpBarInfo sp_bar = 16;
* @return whether the spBar field is set
*/
@@ -461,6 +469,10 @@ public final class BattleAvatarOuterClass {
}
/**
+ * + * DGPADLEIDFM BLGGGJFHGCP = 15; + *+ * *
optional .SpBarInfo sp_bar = 16;
* @return this
*/
@@ -471,6 +483,10 @@ public final class BattleAvatarOuterClass {
}
/**
+ * + * DGPADLEIDFM BLGGGJFHGCP = 15; + *+ * *
optional .SpBarInfo sp_bar = 16;
*
* This method returns the internal storage object without modifying any has state.
@@ -485,6 +501,10 @@ public final class BattleAvatarOuterClass {
}
/**
+ * + * DGPADLEIDFM BLGGGJFHGCP = 15; + *+ * *
optional .SpBarInfo sp_bar = 16;
*
* This method returns the internal storage object and sets the corresponding
@@ -499,6 +519,10 @@ public final class BattleAvatarOuterClass {
}
/**
+ * + * DGPADLEIDFM BLGGGJFHGCP = 15; + *+ * *
optional .SpBarInfo sp_bar = 16;
* @param value the spBar to set
* @return this
diff --git a/src/generated/main/emu/lunarcore/proto/BattleEventBattleInfoOuterClass.java b/src/generated/main/emu/lunarcore/proto/BattleEventBattleInfoOuterClass.java
index 3688ee7..864afb7 100644
--- a/src/generated/main/emu/lunarcore/proto/BattleEventBattleInfoOuterClass.java
+++ b/src/generated/main/emu/lunarcore/proto/BattleEventBattleInfoOuterClass.java
@@ -10,6 +10,7 @@ import us.hebi.quickbuf.MessageFactory;
import us.hebi.quickbuf.ProtoMessage;
import us.hebi.quickbuf.ProtoSink;
import us.hebi.quickbuf.ProtoSource;
+import us.hebi.quickbuf.RepeatedMessage;
public final class BattleEventBattleInfoOuterClass {
/**
@@ -28,6 +29,11 @@ public final class BattleEventBattleInfoOuterClass {
*/
private final BattleEventInitedDataOuterClass.BattleEventInitedData status = BattleEventInitedDataOuterClass.BattleEventInitedData.newInstance();
+ /**
+ * repeated .BattleSkillInfo skill_list = 3;
+ */
+ private final RepeatedMessagerepeated .BattleSkillInfo skill_list = 3;
+ * @return whether the skillList field is set
+ */
+ public boolean hasSkillList() {
+ return (bitField0_ & 0x00000004) != 0;
+ }
+
+ /**
+ * repeated .BattleSkillInfo skill_list = 3;
+ * @return this
+ */
+ public BattleEventBattleInfo clearSkillList() {
+ bitField0_ &= ~0x00000004;
+ skillList.clear();
+ return this;
+ }
+
+ /**
+ * repeated .BattleSkillInfo skill_list = 3;
+ *
+ * This method returns the internal storage object without modifying any has state.
+ * The returned object should not be modified and be treated as read-only.
+ *
+ * Use {@link #getMutableSkillList()} if you want to modify it.
+ *
+ * @return internal storage object for reading
+ */
+ public RepeatedMessagerepeated .BattleSkillInfo skill_list = 3;
+ *
+ * This method returns the internal storage object and sets the corresponding
+ * has state. The returned object will become part of this message and its
+ * contents may be modified as long as the has state is not cleared.
+ *
+ * @return internal storage object for modifications
+ */
+ public RepeatedMessagerepeated .BattleSkillInfo skill_list = 3;
+ * @param value the skillList to add
+ * @return this
+ */
+ public BattleEventBattleInfo addSkillList(
+ final BattleSkillInfoOuterClass.BattleSkillInfo value) {
+ bitField0_ |= 0x00000004;
+ skillList.add(value);
+ return this;
+ }
+
+ /**
+ * repeated .BattleSkillInfo skill_list = 3;
+ * @param values the skillList to add
+ * @return this
+ */
+ public BattleEventBattleInfo addAllSkillList(
+ final BattleSkillInfoOuterClass.BattleSkillInfo... values) {
+ bitField0_ |= 0x00000004;
+ skillList.addAll(values);
+ return this;
+ }
+
@Override
public BattleEventBattleInfo copyFrom(final BattleEventBattleInfo other) {
cachedSize = other.cachedSize;
@@ -140,6 +216,7 @@ public final class BattleEventBattleInfoOuterClass {
bitField0_ = other.bitField0_;
battleEventId = other.battleEventId;
status.copyFrom(other.status);
+ skillList.copyFrom(other.skillList);
}
return this;
}
@@ -156,6 +233,9 @@ public final class BattleEventBattleInfoOuterClass {
if (other.hasStatus()) {
getMutableStatus().mergeFrom(other.status);
}
+ if (other.hasSkillList()) {
+ getMutableSkillList().addAll(other.skillList);
+ }
return this;
}
@@ -168,6 +248,7 @@ public final class BattleEventBattleInfoOuterClass {
bitField0_ = 0;
battleEventId = 0;
status.clear();
+ skillList.clear();
return this;
}
@@ -179,6 +260,7 @@ public final class BattleEventBattleInfoOuterClass {
cachedSize = -1;
bitField0_ = 0;
status.clearQuick();
+ skillList.clearQuick();
return this;
}
@@ -193,7 +275,8 @@ public final class BattleEventBattleInfoOuterClass {
BattleEventBattleInfo other = (BattleEventBattleInfo) o;
return bitField0_ == other.bitField0_
&& (!hasBattleEventId() || battleEventId == other.battleEventId)
- && (!hasStatus() || status.equals(other.status));
+ && (!hasStatus() || status.equals(other.status))
+ && (!hasSkillList() || skillList.equals(other.skillList));
}
@Override
@@ -206,6 +289,12 @@ public final class BattleEventBattleInfoOuterClass {
output.writeRawByte((byte) 18);
output.writeMessageNoTag(status);
}
+ if ((bitField0_ & 0x00000004) != 0) {
+ for (int i = 0; i < skillList.length(); i++) {
+ output.writeRawByte((byte) 26);
+ output.writeMessageNoTag(skillList.get(i));
+ }
+ }
}
@Override
@@ -217,6 +306,9 @@ public final class BattleEventBattleInfoOuterClass {
if ((bitField0_ & 0x00000002) != 0) {
size += 1 + ProtoSink.computeMessageSizeNoTag(status);
}
+ if ((bitField0_ & 0x00000004) != 0) {
+ size += (1 * skillList.length()) + ProtoSink.computeRepeatedMessageSizeNoTag(skillList);
+ }
return size;
}
@@ -241,6 +333,14 @@ public final class BattleEventBattleInfoOuterClass {
input.readMessage(status);
bitField0_ |= 0x00000002;
tag = input.readTag();
+ if (tag != 26) {
+ break;
+ }
+ }
+ case 26: {
+ // skillList
+ tag = input.readRepeatedMessage(skillList, tag);
+ bitField0_ |= 0x00000004;
if (tag != 0) {
break;
}
@@ -268,6 +368,9 @@ public final class BattleEventBattleInfoOuterClass {
if ((bitField0_ & 0x00000002) != 0) {
output.writeMessage(FieldNames.status, status);
}
+ if ((bitField0_ & 0x00000004) != 0) {
+ output.writeRepeatedMessage(FieldNames.skillList, skillList);
+ }
output.endObject();
}
@@ -301,6 +404,18 @@ public final class BattleEventBattleInfoOuterClass {
}
break;
}
+ case 1990942351:
+ case 1607297484: {
+ if (input.isAtField(FieldNames.skillList)) {
+ if (!input.trySkipNullValue()) {
+ input.readRepeatedMessage(skillList);
+ bitField0_ |= 0x00000004;
+ }
+ } else {
+ input.skipUnknownField();
+ }
+ break;
+ }
default: {
input.skipUnknownField();
break;
@@ -357,6 +472,8 @@ public final class BattleEventBattleInfoOuterClass {
static final FieldName battleEventId = FieldName.forField("battleEventId", "battle_event_id");
static final FieldName status = FieldName.forField("status");
+
+ static final FieldName skillList = FieldName.forField("skillList", "skill_list");
}
}
}
diff --git a/src/generated/main/emu/lunarcore/proto/BattleRelicOuterClass.java b/src/generated/main/emu/lunarcore/proto/BattleRelicOuterClass.java
index 2269655..63937ed 100644
--- a/src/generated/main/emu/lunarcore/proto/BattleRelicOuterClass.java
+++ b/src/generated/main/emu/lunarcore/proto/BattleRelicOuterClass.java
@@ -39,6 +39,21 @@ public final class BattleRelicOuterClass {
*/
private int uniqueId;
+ /**
+ * optional uint32 relic_id = 6;
+ */
+ private int relicId;
+
+ /**
+ * optional uint32 slot = 7;
+ */
+ private int slot;
+
+ /**
+ * optional uint32 DCKIHBLMEGF = 8;
+ */
+ private int dCKIHBLMEGF;
+
/**
* repeated .RelicAffix sub_affix_list = 4;
*/
@@ -202,12 +217,123 @@ public final class BattleRelicOuterClass {
return this;
}
+ /**
+ * optional uint32 relic_id = 6;
+ * @return whether the relicId field is set
+ */
+ public boolean hasRelicId() {
+ return (bitField0_ & 0x00000010) != 0;
+ }
+
+ /**
+ * optional uint32 relic_id = 6;
+ * @return this
+ */
+ public BattleRelic clearRelicId() {
+ bitField0_ &= ~0x00000010;
+ relicId = 0;
+ return this;
+ }
+
+ /**
+ * optional uint32 relic_id = 6;
+ * @return the relicId
+ */
+ public int getRelicId() {
+ return relicId;
+ }
+
+ /**
+ * optional uint32 relic_id = 6;
+ * @param value the relicId to set
+ * @return this
+ */
+ public BattleRelic setRelicId(final int value) {
+ bitField0_ |= 0x00000010;
+ relicId = value;
+ return this;
+ }
+
+ /**
+ * optional uint32 slot = 7;
+ * @return whether the slot field is set
+ */
+ public boolean hasSlot() {
+ return (bitField0_ & 0x00000020) != 0;
+ }
+
+ /**
+ * optional uint32 slot = 7;
+ * @return this
+ */
+ public BattleRelic clearSlot() {
+ bitField0_ &= ~0x00000020;
+ slot = 0;
+ return this;
+ }
+
+ /**
+ * optional uint32 slot = 7;
+ * @return the slot
+ */
+ public int getSlot() {
+ return slot;
+ }
+
+ /**
+ * optional uint32 slot = 7;
+ * @param value the slot to set
+ * @return this
+ */
+ public BattleRelic setSlot(final int value) {
+ bitField0_ |= 0x00000020;
+ slot = value;
+ return this;
+ }
+
+ /**
+ * optional uint32 DCKIHBLMEGF = 8;
+ * @return whether the dCKIHBLMEGF field is set
+ */
+ public boolean hasDCKIHBLMEGF() {
+ return (bitField0_ & 0x00000040) != 0;
+ }
+
+ /**
+ * optional uint32 DCKIHBLMEGF = 8;
+ * @return this
+ */
+ public BattleRelic clearDCKIHBLMEGF() {
+ bitField0_ &= ~0x00000040;
+ dCKIHBLMEGF = 0;
+ return this;
+ }
+
+ /**
+ * optional uint32 DCKIHBLMEGF = 8;
+ * @return the dCKIHBLMEGF
+ */
+ public int getDCKIHBLMEGF() {
+ return dCKIHBLMEGF;
+ }
+
+ /**
+ * optional uint32 DCKIHBLMEGF = 8;
+ * @param value the dCKIHBLMEGF to set
+ * @return this
+ */
+ public BattleRelic setDCKIHBLMEGF(final int value) {
+ bitField0_ |= 0x00000040;
+ dCKIHBLMEGF = value;
+ return this;
+ }
+
/**
* repeated .RelicAffix sub_affix_list = 4;
* @return whether the subAffixList field is set
*/
public boolean hasSubAffixList() {
- return (bitField0_ & 0x00000010) != 0;
+ return (bitField0_ & 0x00000080) != 0;
}
/**
@@ -215,7 +341,7 @@ public final class BattleRelicOuterClass {
* @return this
*/
public BattleRelic clearSubAffixList() {
- bitField0_ &= ~0x00000010;
+ bitField0_ &= ~0x00000080;
subAffixList.clear();
return this;
}
@@ -244,7 +370,7 @@ public final class BattleRelicOuterClass {
* @return internal storage object for modifications
*/
public RepeatedMessage+ * AHJODGJDJGA LMAPJDNAEKC = 450; + *+ * *
optional uint32 battle_id = 1;
*/
private int battleId;
@@ -29,6 +33,11 @@ public final class SceneBattleInfoOuterClass {
*/
private int stageId;
+ /**
+ * optional uint32 GCNHGANFJKF = 9;
+ */
+ private int gCNHGANFJKF;
+
/**
* optional uint32 rounds_limit = 11;
*/
@@ -44,6 +53,16 @@ public final class SceneBattleInfoOuterClass {
*/
private int worldLevel;
+ /**
+ * optional bool CHELNDDEKPB = 10;
+ */
+ private boolean cHELNDDEKPB;
+
+ /**
+ * optional .BattleMechanismBar mechanism_bar_info = 12;
+ */
+ private final BattleMechanismBarOuterClass.BattleMechanismBar mechanismBarInfo = BattleMechanismBarOuterClass.BattleMechanismBar.newInstance();
+
/**
* repeated .SceneMonsterWave monster_wave_list = 2;
*/
@@ -80,6 +99,10 @@ public final class SceneBattleInfoOuterClass {
}
/**
+ * + * AHJODGJDJGA LMAPJDNAEKC = 450; + *+ * *
optional uint32 battle_id = 1;
* @return whether the battleId field is set
*/
@@ -88,6 +111,10 @@ public final class SceneBattleInfoOuterClass {
}
/**
+ * + * AHJODGJDJGA LMAPJDNAEKC = 450; + *+ * *
optional uint32 battle_id = 1;
* @return this
*/
@@ -98,6 +125,10 @@ public final class SceneBattleInfoOuterClass {
}
/**
+ * + * AHJODGJDJGA LMAPJDNAEKC = 450; + *+ * *
optional uint32 battle_id = 1;
* @return the battleId
*/
@@ -106,6 +137,10 @@ public final class SceneBattleInfoOuterClass {
}
/**
+ * + * AHJODGJDJGA LMAPJDNAEKC = 450; + *+ * *
optional uint32 battle_id = 1;
* @param value the battleId to set
* @return this
@@ -153,12 +188,49 @@ public final class SceneBattleInfoOuterClass {
return this;
}
+ /**
+ * optional uint32 GCNHGANFJKF = 9;
+ * @return whether the gCNHGANFJKF field is set
+ */
+ public boolean hasGCNHGANFJKF() {
+ return (bitField0_ & 0x00000004) != 0;
+ }
+
+ /**
+ * optional uint32 GCNHGANFJKF = 9;
+ * @return this
+ */
+ public SceneBattleInfo clearGCNHGANFJKF() {
+ bitField0_ &= ~0x00000004;
+ gCNHGANFJKF = 0;
+ return this;
+ }
+
+ /**
+ * optional uint32 GCNHGANFJKF = 9;
+ * @return the gCNHGANFJKF
+ */
+ public int getGCNHGANFJKF() {
+ return gCNHGANFJKF;
+ }
+
+ /**
+ * optional uint32 GCNHGANFJKF = 9;
+ * @param value the gCNHGANFJKF to set
+ * @return this
+ */
+ public SceneBattleInfo setGCNHGANFJKF(final int value) {
+ bitField0_ |= 0x00000004;
+ gCNHGANFJKF = value;
+ return this;
+ }
+
/**
* optional uint32 rounds_limit = 11;
* @return whether the roundsLimit field is set
*/
public boolean hasRoundsLimit() {
- return (bitField0_ & 0x00000004) != 0;
+ return (bitField0_ & 0x00000008) != 0;
}
/**
@@ -166,7 +238,7 @@ public final class SceneBattleInfoOuterClass {
* @return this
*/
public SceneBattleInfo clearRoundsLimit() {
- bitField0_ &= ~0x00000004;
+ bitField0_ &= ~0x00000008;
roundsLimit = 0;
return this;
}
@@ -185,7 +257,7 @@ public final class SceneBattleInfoOuterClass {
* @return this
*/
public SceneBattleInfo setRoundsLimit(final int value) {
- bitField0_ |= 0x00000004;
+ bitField0_ |= 0x00000008;
roundsLimit = value;
return this;
}
@@ -195,7 +267,7 @@ public final class SceneBattleInfoOuterClass {
* @return whether the logicRandomSeed field is set
*/
public boolean hasLogicRandomSeed() {
- return (bitField0_ & 0x00000008) != 0;
+ return (bitField0_ & 0x00000010) != 0;
}
/**
@@ -203,7 +275,7 @@ public final class SceneBattleInfoOuterClass {
* @return this
*/
public SceneBattleInfo clearLogicRandomSeed() {
- bitField0_ &= ~0x00000008;
+ bitField0_ &= ~0x00000010;
logicRandomSeed = 0;
return this;
}
@@ -222,7 +294,7 @@ public final class SceneBattleInfoOuterClass {
* @return this
*/
public SceneBattleInfo setLogicRandomSeed(final int value) {
- bitField0_ |= 0x00000008;
+ bitField0_ |= 0x00000010;
logicRandomSeed = value;
return this;
}
@@ -232,7 +304,7 @@ public final class SceneBattleInfoOuterClass {
* @return whether the worldLevel field is set
*/
public boolean hasWorldLevel() {
- return (bitField0_ & 0x00000010) != 0;
+ return (bitField0_ & 0x00000020) != 0;
}
/**
@@ -240,7 +312,7 @@ public final class SceneBattleInfoOuterClass {
* @return this
*/
public SceneBattleInfo clearWorldLevel() {
- bitField0_ &= ~0x00000010;
+ bitField0_ &= ~0x00000020;
worldLevel = 0;
return this;
}
@@ -259,17 +331,112 @@ public final class SceneBattleInfoOuterClass {
* @return this
*/
public SceneBattleInfo setWorldLevel(final int value) {
- bitField0_ |= 0x00000010;
+ bitField0_ |= 0x00000020;
worldLevel = value;
return this;
}
+ /**
+ * optional bool CHELNDDEKPB = 10;
+ * @return whether the cHELNDDEKPB field is set
+ */
+ public boolean hasCHELNDDEKPB() {
+ return (bitField0_ & 0x00000040) != 0;
+ }
+
+ /**
+ * optional bool CHELNDDEKPB = 10;
+ * @return this
+ */
+ public SceneBattleInfo clearCHELNDDEKPB() {
+ bitField0_ &= ~0x00000040;
+ cHELNDDEKPB = false;
+ return this;
+ }
+
+ /**
+ * optional bool CHELNDDEKPB = 10;
+ * @return the cHELNDDEKPB
+ */
+ public boolean getCHELNDDEKPB() {
+ return cHELNDDEKPB;
+ }
+
+ /**
+ * optional bool CHELNDDEKPB = 10;
+ * @param value the cHELNDDEKPB to set
+ * @return this
+ */
+ public SceneBattleInfo setCHELNDDEKPB(final boolean value) {
+ bitField0_ |= 0x00000040;
+ cHELNDDEKPB = value;
+ return this;
+ }
+
+ /**
+ * optional .BattleMechanismBar mechanism_bar_info = 12;
+ * @return whether the mechanismBarInfo field is set
+ */
+ public boolean hasMechanismBarInfo() {
+ return (bitField0_ & 0x00000080) != 0;
+ }
+
+ /**
+ * optional .BattleMechanismBar mechanism_bar_info = 12;
+ * @return this
+ */
+ public SceneBattleInfo clearMechanismBarInfo() {
+ bitField0_ &= ~0x00000080;
+ mechanismBarInfo.clear();
+ return this;
+ }
+
+ /**
+ * optional .BattleMechanismBar mechanism_bar_info = 12;
+ *
+ * This method returns the internal storage object without modifying any has state.
+ * The returned object should not be modified and be treated as read-only.
+ *
+ * Use {@link #getMutableMechanismBarInfo()} if you want to modify it.
+ *
+ * @return internal storage object for reading
+ */
+ public BattleMechanismBarOuterClass.BattleMechanismBar getMechanismBarInfo() {
+ return mechanismBarInfo;
+ }
+
+ /**
+ * optional .BattleMechanismBar mechanism_bar_info = 12;
+ *
+ * This method returns the internal storage object and sets the corresponding
+ * has state. The returned object will become part of this message and its
+ * contents may be modified as long as the has state is not cleared.
+ *
+ * @return internal storage object for modifications
+ */
+ public BattleMechanismBarOuterClass.BattleMechanismBar getMutableMechanismBarInfo() {
+ bitField0_ |= 0x00000080;
+ return mechanismBarInfo;
+ }
+
+ /**
+ * optional .BattleMechanismBar mechanism_bar_info = 12;
+ * @param value the mechanismBarInfo to set
+ * @return this
+ */
+ public SceneBattleInfo setMechanismBarInfo(
+ final BattleMechanismBarOuterClass.BattleMechanismBar value) {
+ bitField0_ |= 0x00000080;
+ mechanismBarInfo.copyFrom(value);
+ return this;
+ }
+
/**
* repeated .SceneMonsterWave monster_wave_list = 2;
* @return whether the monsterWaveList field is set
*/
public boolean hasMonsterWaveList() {
- return (bitField0_ & 0x00000020) != 0;
+ return (bitField0_ & 0x00000100) != 0;
}
/**
@@ -277,7 +444,7 @@ public final class SceneBattleInfoOuterClass {
* @return this
*/
public SceneBattleInfo clearMonsterWaveList() {
- bitField0_ &= ~0x00000020;
+ bitField0_ &= ~0x00000100;
monsterWaveList.clear();
return this;
}
@@ -307,7 +474,7 @@ public final class SceneBattleInfoOuterClass {
*/
public RepeatedMessageoptional uint32 DNDLGLKFBHB = 5;
+ */
+ private int dNDLGLKFBHB;
+
/**
* optional uint32 level = 8;
*/
private int level;
+ /**
+ * optional uint32 AGFKKDONMOI = 14;
+ */
+ private int aGFKKDONMOI;
+
+ /**
+ * optional uint32 APKKFCLEGCI = 15;
+ */
+ private int aPKKFCLEGCI;
+
private SceneMonsterWaveParam() {
}
@@ -33,12 +48,49 @@ public final class SceneMonsterWaveParamOuterClass {
return new SceneMonsterWaveParam();
}
+ /**
+ * optional uint32 DNDLGLKFBHB = 5;
+ * @return whether the dNDLGLKFBHB field is set
+ */
+ public boolean hasDNDLGLKFBHB() {
+ return (bitField0_ & 0x00000001) != 0;
+ }
+
+ /**
+ * optional uint32 DNDLGLKFBHB = 5;
+ * @return this
+ */
+ public SceneMonsterWaveParam clearDNDLGLKFBHB() {
+ bitField0_ &= ~0x00000001;
+ dNDLGLKFBHB = 0;
+ return this;
+ }
+
+ /**
+ * optional uint32 DNDLGLKFBHB = 5;
+ * @return the dNDLGLKFBHB
+ */
+ public int getDNDLGLKFBHB() {
+ return dNDLGLKFBHB;
+ }
+
+ /**
+ * optional uint32 DNDLGLKFBHB = 5;
+ * @param value the dNDLGLKFBHB to set
+ * @return this
+ */
+ public SceneMonsterWaveParam setDNDLGLKFBHB(final int value) {
+ bitField0_ |= 0x00000001;
+ dNDLGLKFBHB = value;
+ return this;
+ }
+
/**
* optional uint32 level = 8;
* @return whether the level field is set
*/
public boolean hasLevel() {
- return (bitField0_ & 0x00000001) != 0;
+ return (bitField0_ & 0x00000002) != 0;
}
/**
@@ -46,7 +98,7 @@ public final class SceneMonsterWaveParamOuterClass {
* @return this
*/
public SceneMonsterWaveParam clearLevel() {
- bitField0_ &= ~0x00000001;
+ bitField0_ &= ~0x00000002;
level = 0;
return this;
}
@@ -65,17 +117,94 @@ public final class SceneMonsterWaveParamOuterClass {
* @return this
*/
public SceneMonsterWaveParam setLevel(final int value) {
- bitField0_ |= 0x00000001;
+ bitField0_ |= 0x00000002;
level = value;
return this;
}
+ /**
+ * optional uint32 AGFKKDONMOI = 14;
+ * @return whether the aGFKKDONMOI field is set
+ */
+ public boolean hasAGFKKDONMOI() {
+ return (bitField0_ & 0x00000004) != 0;
+ }
+
+ /**
+ * optional uint32 AGFKKDONMOI = 14;
+ * @return this
+ */
+ public SceneMonsterWaveParam clearAGFKKDONMOI() {
+ bitField0_ &= ~0x00000004;
+ aGFKKDONMOI = 0;
+ return this;
+ }
+
+ /**
+ * optional uint32 AGFKKDONMOI = 14;
+ * @return the aGFKKDONMOI
+ */
+ public int getAGFKKDONMOI() {
+ return aGFKKDONMOI;
+ }
+
+ /**
+ * optional uint32 AGFKKDONMOI = 14;
+ * @param value the aGFKKDONMOI to set
+ * @return this
+ */
+ public SceneMonsterWaveParam setAGFKKDONMOI(final int value) {
+ bitField0_ |= 0x00000004;
+ aGFKKDONMOI = value;
+ return this;
+ }
+
+ /**
+ * optional uint32 APKKFCLEGCI = 15;
+ * @return whether the aPKKFCLEGCI field is set
+ */
+ public boolean hasAPKKFCLEGCI() {
+ return (bitField0_ & 0x00000008) != 0;
+ }
+
+ /**
+ * optional uint32 APKKFCLEGCI = 15;
+ * @return this
+ */
+ public SceneMonsterWaveParam clearAPKKFCLEGCI() {
+ bitField0_ &= ~0x00000008;
+ aPKKFCLEGCI = 0;
+ return this;
+ }
+
+ /**
+ * optional uint32 APKKFCLEGCI = 15;
+ * @return the aPKKFCLEGCI
+ */
+ public int getAPKKFCLEGCI() {
+ return aPKKFCLEGCI;
+ }
+
+ /**
+ * optional uint32 APKKFCLEGCI = 15;
+ * @param value the aPKKFCLEGCI to set
+ * @return this
+ */
+ public SceneMonsterWaveParam setAPKKFCLEGCI(final int value) {
+ bitField0_ |= 0x00000008;
+ aPKKFCLEGCI = value;
+ return this;
+ }
+
@Override
public SceneMonsterWaveParam copyFrom(final SceneMonsterWaveParam other) {
cachedSize = other.cachedSize;
if ((bitField0_ | other.bitField0_) != 0) {
bitField0_ = other.bitField0_;
+ dNDLGLKFBHB = other.dNDLGLKFBHB;
level = other.level;
+ aGFKKDONMOI = other.aGFKKDONMOI;
+ aPKKFCLEGCI = other.aPKKFCLEGCI;
}
return this;
}
@@ -86,9 +215,18 @@ public final class SceneMonsterWaveParamOuterClass {
return this;
}
cachedSize = -1;
+ if (other.hasDNDLGLKFBHB()) {
+ setDNDLGLKFBHB(other.dNDLGLKFBHB);
+ }
if (other.hasLevel()) {
setLevel(other.level);
}
+ if (other.hasAGFKKDONMOI()) {
+ setAGFKKDONMOI(other.aGFKKDONMOI);
+ }
+ if (other.hasAPKKFCLEGCI()) {
+ setAPKKFCLEGCI(other.aPKKFCLEGCI);
+ }
return this;
}
@@ -99,7 +237,10 @@ public final class SceneMonsterWaveParamOuterClass {
}
cachedSize = -1;
bitField0_ = 0;
+ dNDLGLKFBHB = 0;
level = 0;
+ aGFKKDONMOI = 0;
+ aPKKFCLEGCI = 0;
return this;
}
@@ -123,23 +264,47 @@ public final class SceneMonsterWaveParamOuterClass {
}
SceneMonsterWaveParam other = (SceneMonsterWaveParam) o;
return bitField0_ == other.bitField0_
- && (!hasLevel() || level == other.level);
+ && (!hasDNDLGLKFBHB() || dNDLGLKFBHB == other.dNDLGLKFBHB)
+ && (!hasLevel() || level == other.level)
+ && (!hasAGFKKDONMOI() || aGFKKDONMOI == other.aGFKKDONMOI)
+ && (!hasAPKKFCLEGCI() || aPKKFCLEGCI == other.aPKKFCLEGCI);
}
@Override
public void writeTo(final ProtoSink output) throws IOException {
if ((bitField0_ & 0x00000001) != 0) {
+ output.writeRawByte((byte) 40);
+ output.writeUInt32NoTag(dNDLGLKFBHB);
+ }
+ if ((bitField0_ & 0x00000002) != 0) {
output.writeRawByte((byte) 64);
output.writeUInt32NoTag(level);
}
+ if ((bitField0_ & 0x00000004) != 0) {
+ output.writeRawByte((byte) 112);
+ output.writeUInt32NoTag(aGFKKDONMOI);
+ }
+ if ((bitField0_ & 0x00000008) != 0) {
+ output.writeRawByte((byte) 120);
+ output.writeUInt32NoTag(aPKKFCLEGCI);
+ }
}
@Override
protected int computeSerializedSize() {
int size = 0;
if ((bitField0_ & 0x00000001) != 0) {
+ size += 1 + ProtoSink.computeUInt32SizeNoTag(dNDLGLKFBHB);
+ }
+ if ((bitField0_ & 0x00000002) != 0) {
size += 1 + ProtoSink.computeUInt32SizeNoTag(level);
}
+ if ((bitField0_ & 0x00000004) != 0) {
+ size += 1 + ProtoSink.computeUInt32SizeNoTag(aGFKKDONMOI);
+ }
+ if ((bitField0_ & 0x00000008) != 0) {
+ size += 1 + ProtoSink.computeUInt32SizeNoTag(aPKKFCLEGCI);
+ }
return size;
}
@@ -150,10 +315,37 @@ public final class SceneMonsterWaveParamOuterClass {
int tag = input.readTag();
while (true) {
switch (tag) {
+ case 40: {
+ // dNDLGLKFBHB
+ dNDLGLKFBHB = input.readUInt32();
+ bitField0_ |= 0x00000001;
+ tag = input.readTag();
+ if (tag != 64) {
+ break;
+ }
+ }
case 64: {
// level
level = input.readUInt32();
- bitField0_ |= 0x00000001;
+ bitField0_ |= 0x00000002;
+ tag = input.readTag();
+ if (tag != 112) {
+ break;
+ }
+ }
+ case 112: {
+ // aGFKKDONMOI
+ aGFKKDONMOI = input.readUInt32();
+ bitField0_ |= 0x00000004;
+ tag = input.readTag();
+ if (tag != 120) {
+ break;
+ }
+ }
+ case 120: {
+ // aPKKFCLEGCI
+ aPKKFCLEGCI = input.readUInt32();
+ bitField0_ |= 0x00000008;
tag = input.readTag();
if (tag != 0) {
break;
@@ -177,8 +369,17 @@ public final class SceneMonsterWaveParamOuterClass {
public void writeTo(final JsonSink output) throws IOException {
output.beginObject();
if ((bitField0_ & 0x00000001) != 0) {
+ output.writeUInt32(FieldNames.dNDLGLKFBHB, dNDLGLKFBHB);
+ }
+ if ((bitField0_ & 0x00000002) != 0) {
output.writeUInt32(FieldNames.level, level);
}
+ if ((bitField0_ & 0x00000004) != 0) {
+ output.writeUInt32(FieldNames.aGFKKDONMOI, aGFKKDONMOI);
+ }
+ if ((bitField0_ & 0x00000008) != 0) {
+ output.writeUInt32(FieldNames.aPKKFCLEGCI, aPKKFCLEGCI);
+ }
output.endObject();
}
@@ -189,11 +390,44 @@ public final class SceneMonsterWaveParamOuterClass {
}
while (!input.isAtEnd()) {
switch (input.readFieldHash()) {
+ case 1710437610: {
+ if (input.isAtField(FieldNames.dNDLGLKFBHB)) {
+ if (!input.trySkipNullValue()) {
+ dNDLGLKFBHB = input.readUInt32();
+ bitField0_ |= 0x00000001;
+ }
+ } else {
+ input.skipUnknownField();
+ }
+ break;
+ }
case 102865796: {
if (input.isAtField(FieldNames.level)) {
if (!input.trySkipNullValue()) {
level = input.readUInt32();
- bitField0_ |= 0x00000001;
+ bitField0_ |= 0x00000002;
+ }
+ } else {
+ input.skipUnknownField();
+ }
+ break;
+ }
+ case -2145842908: {
+ if (input.isAtField(FieldNames.aGFKKDONMOI)) {
+ if (!input.trySkipNullValue()) {
+ aGFKKDONMOI = input.readUInt32();
+ bitField0_ |= 0x00000004;
+ }
+ } else {
+ input.skipUnknownField();
+ }
+ break;
+ }
+ case -241059960: {
+ if (input.isAtField(FieldNames.aPKKFCLEGCI)) {
+ if (!input.trySkipNullValue()) {
+ aPKKFCLEGCI = input.readUInt32();
+ bitField0_ |= 0x00000008;
}
} else {
input.skipUnknownField();
@@ -253,7 +487,13 @@ public final class SceneMonsterWaveParamOuterClass {
* Contains name constants used for serializing JSON
*/
static class FieldNames {
+ static final FieldName dNDLGLKFBHB = FieldName.forField("DNDLGLKFBHB");
+
static final FieldName level = FieldName.forField("level");
+
+ static final FieldName aGFKKDONMOI = FieldName.forField("AGFKKDONMOI");
+
+ static final FieldName aPKKFCLEGCI = FieldName.forField("APKKFCLEGCI");
}
}
}
diff --git a/src/main/java/emu/lunarcore/game/battle/BattleService.java b/src/main/java/emu/lunarcore/game/battle/BattleService.java
index abd2c58..759d393 100644
--- a/src/main/java/emu/lunarcore/game/battle/BattleService.java
+++ b/src/main/java/emu/lunarcore/game/battle/BattleService.java
@@ -21,10 +21,7 @@ import emu.lunarcore.proto.BattleEndStatusOuterClass.BattleEndStatus;
import emu.lunarcore.proto.BattleStatisticsOuterClass.BattleStatistics;
import emu.lunarcore.server.game.BaseGameService;
import emu.lunarcore.server.game.GameServer;
-import emu.lunarcore.server.packet.send.PacketReEnterLastElementStageScRsp;
-import emu.lunarcore.server.packet.send.PacketSceneCastSkillScRsp;
-import emu.lunarcore.server.packet.send.PacketStartCocoonStageScRsp;
-import emu.lunarcore.server.packet.send.PacketSyncLineupNotify;
+import emu.lunarcore.server.packet.send.*;
import it.unimi.dsi.fastutil.ints.IntSet;
public class BattleService extends BaseGameService {
@@ -166,7 +163,7 @@ public class BattleService extends BaseGameService {
player.sendPacket(new PacketSceneCastSkillScRsp(attackedGroupId));
}
- public void startBattle(Player player, int stageId) { // TODO: should send SceneEnterStageScRsp instead of SceneCastSkillScRsp
+ public void startBattle(Player player, int stageId) {
// Sanity check to make sure player isnt in a battle
if (player.isInBattle()) {
return;
@@ -181,10 +178,21 @@ public class BattleService extends BaseGameService {
// Create new battle for player
Battle battle = new Battle(player, player.getCurrentLineup(), stage);
+
+ // Challenge
+ if (player.getChallengeInstance() != null) {
+ player.getChallengeInstance().onBattleStart(battle);
+ }
+
+ // Rogue
+ if (player.getRogueInstance() != null) {
+ player.getRogueInstance().onBattleStart(battle);
+ }
+
player.setBattle(battle);
// Send packet
- player.sendPacket(new PacketSceneCastSkillScRsp(battle, 0)); // remain to be tested
+ player.sendPacket(new PacketSceneEnterStageScRsp(battle));
}
public void startCocoon(Player player, int cocoonId, int worldLevel, int wave) {
diff --git a/src/main/java/emu/lunarcore/game/rogue/RogueEntityLoader.java b/src/main/java/emu/lunarcore/game/rogue/RogueEntityLoader.java
index 1460447..d8922a0 100644
--- a/src/main/java/emu/lunarcore/game/rogue/RogueEntityLoader.java
+++ b/src/main/java/emu/lunarcore/game/rogue/RogueEntityLoader.java
@@ -78,7 +78,7 @@ public class RogueEntityLoader extends SceneEntityLoader {
PropRogueData propExtra = null;
// Rogue Door id is 1000
- if (propId == 1000 || propId == 1021) {
+ if (propId == 1000 || propId == 1021 || propId == 1022 || propId == 1023) {
// Site index
int index = 0;
@@ -91,15 +91,20 @@ public class RogueEntityLoader extends SceneEntityLoader {
RogueRoomData room = rogue.getCurrentRoom();
if (room.getNextSiteIds().length > 0) {
int siteId = room.getNextSiteIds()[index];
- int roomId = rogue.getRooms().get(siteId).getRoomId();
+ var nextRoom = rogue.getRooms().get(siteId);
- propExtra = new PropRogueData(roomId, siteId);
+ propId = switch (nextRoom.getRoomExcel().getRogueRoomType()) {
+ case 3 -> 1022;
+ case 5 -> 1023;
+ default -> 1021;
+ };
+ propExtra = new PropRogueData(nextRoom.getRoomId(), siteId);
} else {
// Exit portal?
+ propId = 1000;
}
-
+
// Force rogue door to be open
- propId = 1021;
state = PropState.Open;
}
diff --git a/src/main/java/emu/lunarcore/game/rogue/RogueEventManager.java b/src/main/java/emu/lunarcore/game/rogue/RogueEventManager.java
index 8ac08f5..80763cc 100644
--- a/src/main/java/emu/lunarcore/game/rogue/RogueEventManager.java
+++ b/src/main/java/emu/lunarcore/game/rogue/RogueEventManager.java
@@ -20,7 +20,7 @@ public class RogueEventManager {
var param = event.getRogueEffectParamList();
switch (event.getRogueEffectType()) {
case GetItem -> rogueInstance.setMoney(rogueInstance.getMoney() + param.get(1));
- case TriggerBattle -> rogueInstance.createBuffSelect(3); //this.getPlayer().getServer().getBattleService().startBattle(player, param.get(0)); // NOT WORKING
+ case TriggerBattle -> this.getPlayer().getServer().getBattleService().startBattle(player, param.get(0)); // Client Send Packet SceneEnterStageCsReq so we dont have to handle it here
case TriggerRogueMiracleSelect -> this.getRogueInstance().createMiracleSelect(1);
case TriggerRogueBuffSelect -> this.getRogueInstance().createBuffSelect(1);
}
diff --git a/src/main/java/emu/lunarcore/game/rogue/RogueInstance.java b/src/main/java/emu/lunarcore/game/rogue/RogueInstance.java
index 5db26ad..b27aa75 100644
--- a/src/main/java/emu/lunarcore/game/rogue/RogueInstance.java
+++ b/src/main/java/emu/lunarcore/game/rogue/RogueInstance.java
@@ -469,6 +469,8 @@ public class RogueInstance {
int amount = battle.getNpcMonsters().size();
this.createBuffSelect(amount);
}
+ } else {
+ this.getPlayer().getRogueManager().quitRogue();
}
}
diff --git a/src/main/java/emu/lunarcore/server/packet/recv/HandlerSceneEnterStageCsReq.java b/src/main/java/emu/lunarcore/server/packet/recv/HandlerSceneEnterStageCsReq.java
new file mode 100644
index 0000000..5349c7d
--- /dev/null
+++ b/src/main/java/emu/lunarcore/server/packet/recv/HandlerSceneEnterStageCsReq.java
@@ -0,0 +1,17 @@
+package emu.lunarcore.server.packet.recv;
+
+import emu.lunarcore.proto.SceneEnterStageCsReqOuterClass.SceneEnterStageCsReq;
+import emu.lunarcore.server.game.GameSession;
+import emu.lunarcore.server.packet.CmdId;
+import emu.lunarcore.server.packet.Opcodes;
+import emu.lunarcore.server.packet.PacketHandler;
+
+@Opcodes(CmdId.SceneEnterStageCsReq)
+public class HandlerSceneEnterStageCsReq extends PacketHandler {
+ @Override
+ public void handle(GameSession session, byte[] data) throws Exception {
+ var req = SceneEnterStageCsReq.parseFrom(data);
+
+ session.getPlayer().getServer().getBattleService().startBattle(session.getPlayer(), req.getStageId());
+ }
+}
diff --git a/src/main/java/emu/lunarcore/server/packet/send/PacketSceneEnterStageScRsp.java b/src/main/java/emu/lunarcore/server/packet/send/PacketSceneEnterStageScRsp.java
new file mode 100644
index 0000000..b177a85
--- /dev/null
+++ b/src/main/java/emu/lunarcore/server/packet/send/PacketSceneEnterStageScRsp.java
@@ -0,0 +1,17 @@
+package emu.lunarcore.server.packet.send;
+
+import emu.lunarcore.game.battle.Battle;
+import emu.lunarcore.proto.SceneEnterStageScRspOuterClass.SceneEnterStageScRsp;
+import emu.lunarcore.server.packet.BasePacket;
+import emu.lunarcore.server.packet.CmdId;
+
+public class PacketSceneEnterStageScRsp extends BasePacket {
+ public PacketSceneEnterStageScRsp(Battle battle) {
+ super(CmdId.SceneEnterStageScRsp);
+
+ var proto = SceneEnterStageScRsp.newInstance()
+ .setBattleInfo(battle.toProto());
+
+ this.setData(proto);
+ }
+}