Unverified Commit 5ffc07cf authored by GanyusLeftHorn's avatar GanyusLeftHorn Committed by GitHub
Browse files

3.1 Support (#1808)



* Update 3.0 protos

* Update classes to match protos

* Fix RegionHandler versions

* 3.0 Opcodes

* Fixed Gadget Spawning

Original Commit Message: fixed gadget spawning ty MJDerp
Gitea Author: yh0Nathan
Co-authored-by: default avataryh0Nathan <yhonathancaleb@gmail.com>

* Make PointData compatible with alternative PointData

Original Commit Message: Make PointData compatible with windied scene points.
Gitea Author: GanyusLeftHorn
Co-authored-by: default avatarGanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>

* Add scene tag for Vanarana.

Original Commit Message: Add scene tag for Vanarana.
Gitea Author: GanyusLeftHorn
Co-authored-by: default avatarGanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>

* Add Sumeru expeditions.

Original Commit Message: Add Sumeru expeditions.
Gitea Author: GanyusLeftHorn
Co-authored-by: default avatarGanyusLeftHorn <1244229+GanyusLeftHorn@users.noreply.github.com>

* Update game version to 3.0.0

* versionFix must be >= 50 not == 50 in RegionHandler

* Add new 3.0 Reliquary and SkillParticleGeneration data

Original Commit Message: Repair 3.0 added Reliquary 3-in-1 on the crafting table. Add skill particle generation info for Tighnari,Collei and Dori
Gitea Author: Roly

* Actually fix RegionHandler

* Remove asset names from json and comments

* Add scene areas for Sumeru desert to /prop um

* Added New MaterialType

* Change version to 3.1.0

* funny welcome message back

* Fix pyramid skill issue.

* Fix pyramid and event scene tags without ugly bruteforce.

* Remove backrooms chat welcome message.

* Incorporate suggestions.

* RoomSceneId and empty list checking.
Co-authored-by: default avatarBenj <benjamin7006@gmail.com>
Co-authored-by: default avataryh0Nathan <yhonathancaleb@gmail.com>
Co-authored-by: default avatarKokoboy <anushkumar222001@gmail.com>
Co-authored-by: default avatarnitro <31241699+nitrog0d@users.noreply.github.com>
Co-authored-by: default avatarVexeone <vexeone@gmail.com>
parent 41542297
......@@ -6,7 +6,7 @@ import emu.grasscutter.utils.Position;
import emu.grasscutter.utils.Utils;
public final class GameConstants {
public static String VERSION = "3.0.0";
public static String VERSION = "3.1.0";
public static final int DEFAULT_TEAMS = 4;
public static final int MAX_TEAMS = 10;
......
......@@ -231,7 +231,7 @@ public final class SetPropCommand implements CommandHandler {
}
// List of map areas. Unfortunately, there is no readily available source for them in excels or bins.
final static private List<Integer> sceneAreas = List.of(1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,18,19,20,21,22,23,24,25,29,100,101,102,103,200,210,300,400,401,402,403);
final static private List<Integer> sceneAreas = List.of(1,2,3,4,5,6,7,8,9,10,11,12,13,14,17,18,19,20,21,22,23,24,25,26,27,28,29,100,101,102,103,200,210,300,400,401,402,403);
private boolean unlockMap(Player targetPlayer) {
// Unlock.
GameData.getScenePointsPerScene().forEach((sceneId, scenePoints) -> {
......
......@@ -75,7 +75,8 @@ public class ItemData extends GameResource {
private int comfort;
private List<Integer> furnType;
private List<Integer> furnitureGadgetID;
@SerializedName(value="OHIANNAEEAK", alternate={"DANFGGLKLNO", "JFDLJGDFIGL"})
@SerializedName(value="roomSceneId", alternate={"DANFGGLKLNO", "JFDLJGDFIGL", "OHIANNAEEAK"})
private int roomSceneId;
// Custom
......
......@@ -46,7 +46,9 @@ public enum MaterialType {
MATERIAL_SPICE_FOOD (37),
MATERIAL_ACTIVITY_ROBOT (38),
MATERIAL_ACTIVITY_GEAR (39),
MATERIAL_ACTIVITY_JIGSAW (40);
MATERIAL_ACTIVITY_JIGSAW (40),
MATERIAL_ARANARA (41),
MATERIAL_DESHRET_MANUAL (46);
private final int value;
private static final Int2ObjectMap<MaterialType> map = new Int2ObjectOpenHashMap<>();
......
......@@ -85,6 +85,10 @@ public class WorldDataSystem extends BaseGameSystem {
return level;
}
private InvestigationMonsterOuterClass.InvestigationMonster getInvestigationMonster(Player player, InvestigationMonsterData imd) {
if(imd.getGroupIdList().isEmpty() || imd.getMonsterIdList().isEmpty()){
return null;
}
var groupId = imd.getGroupIdList().get(0);
var monsterId = imd.getMonsterIdList().get(0);
var sceneId = imd.getCityData().getSceneId();
......
......@@ -19,7 +19,7 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
player.setSceneLoadState(SceneLoadState.LOADING);
player.setEnterSceneToken(Utils.randomRange(1000, 99999));
PlayerEnterSceneNotify proto = PlayerEnterSceneNotify.newBuilder()
PlayerEnterSceneNotify.Builder proto = PlayerEnterSceneNotify.newBuilder()
.setSceneId(player.getSceneId())
.setPos(player.getPosition().toProto())
.setSceneBeginTime(System.currentTimeMillis())
......@@ -30,8 +30,7 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
.setEnterReason(EnterReason.Login.getValue())
.setIsFirstLoginEnterScene(player.isFirstLoginEnterScene())
.setWorldType(1)
.setSceneTransaction("3-" + player.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402)
.build();
.setSceneTransaction("3-" + player.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402);
this.setData(proto);
}
......@@ -61,10 +60,6 @@ public class PacketPlayerEnterSceneNotify extends BasePacket {
.setWorldType(1)
.setSceneTransaction(newScene + "-" + target.getUid() + "-" + (int) (System.currentTimeMillis() / 1000) + "-" + 18402);
for (int i = 0; i < 3000; i++) {
proto.addSceneTagIdList(i);
}
this.setData(proto.build());
this.setData(proto);
}
}
package emu.grasscutter.server.packet.send;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.PlayerWorldSceneInfoListNotifyOuterClass.PlayerWorldSceneInfoListNotify;
import emu.grasscutter.net.proto.PlayerWorldSceneInfoOuterClass;
import emu.grasscutter.net.proto.SceneUnlockInfoOuterClass.SceneUnlockInfo;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
import static emu.grasscutter.net.proto.PlayerWorldSceneInfoOuterClass.*;
import emu.grasscutter.net.packet.BasePacket;
import emu.grasscutter.net.packet.PacketOpcodes;
import emu.grasscutter.net.proto.PlayerWorldSceneInfoListNotifyOuterClass.PlayerWorldSceneInfoListNotify;
import emu.grasscutter.net.proto.PlayerWorldSceneInfoOuterClass.PlayerWorldSceneInfo;
public class PacketPlayerWorldSceneInfoListNotify extends BasePacket {
......@@ -27,14 +24,26 @@ public class PacketPlayerWorldSceneInfoListNotify extends BasePacket {
PlayerWorldSceneInfo.newBuilder()
.setSceneId(3)
.setIsLocked(false)
.addSceneTagIdList(102)
.addSceneTagIdList(102) // Jade chamber
.addSceneTagIdList(113)
.addSceneTagIdList(117)
.addSceneTagIdList(1093)
//.addSceneTagIdList(1094)
//.addSceneTagIdList(1095)
//.addSceneTagIdList(1096)
//.addAllSceneTagIdList(IntStream.range(1000, 2000).boxed().collect(Collectors.toList()))
// Vanarana (Sumeru tree)
.addSceneTagIdList(1093) // Vana_real
// .addSceneTagIdList(1094) // Vana_dream
// .addSceneTagIdList(1095) // Vana_first
// .addSceneTagIdList(1096) // Vana_festival
// 3.1 event
.addSceneTagIdList(152)
.addSceneTagIdList(153)
// Pyramid
.addSceneTagIdList(1164) // Arena (XMSM_CWLTop)
.addSceneTagIdList(1166) // Pyramid (CWL_Trans_02)
// Brute force
//.addAllSceneTagIdList(IntStream.range(1150, 1250).boxed().toList())
.build()
)
.addInfoList(
......@@ -63,17 +72,14 @@ public class PacketPlayerWorldSceneInfoListNotify extends BasePacket {
.setSceneId(7)
.setIsLocked(false)
.build()
);
var gaa = PlayerWorldSceneInfo.newBuilder()
)
.addInfoList(
PlayerWorldSceneInfo.newBuilder()
.setSceneId(9)
.setIsLocked(false);
for (int i = 0; i < 3000; i++) {
gaa.addSceneTagIdList(i);
}
proto.addInfoList(gaa);
.setIsLocked(false)
.addAllSceneTagIdList(IntStream.range(0, 3000).boxed().toList())
.build()
);
this.setData(proto);
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment