diff --git a/proto/AllCoopInfoNotify.proto b/proto/AllCoopInfoNotify.proto
new file mode 100644
index 00000000..939c7ae0
--- /dev/null
+++ b/proto/AllCoopInfoNotify.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "MainCoop.proto";
+// CmdId: 2587
+// Obf: FMEOBOHIEGC
+message AllCoopInfoNotify {
+ repeated MainCoop main_coop_list = 13;
+}
diff --git a/proto/CancelCoopTaskReq.proto b/proto/CancelCoopTaskReq.proto
new file mode 100644
index 00000000..6dfc170a
--- /dev/null
+++ b/proto/CancelCoopTaskReq.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 27925
+// Obf: EGFKMLLMKGB
+message CancelCoopTaskReq {
+ uint32 chapter_id = 9;
+}
diff --git a/proto/CancelCoopTaskRsp.proto b/proto/CancelCoopTaskRsp.proto
new file mode 100644
index 00000000..57ba2a6c
--- /dev/null
+++ b/proto/CancelCoopTaskRsp.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 26816
+// Obf: MMIJBEHIGHH
+message CancelCoopTaskRsp {
+ int32 retcode = 3;
+ uint32 chapter_id = 9;
+}
diff --git a/proto/CoopCg.proto b/proto/CoopCg.proto
new file mode 100644
index 00000000..37715b89
--- /dev/null
+++ b/proto/CoopCg.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// Obf: OJCJONLPBME
+message CoopCg {
+ uint32 id = 5;
+ bool is_unlock = 6;
+}
diff --git a/proto/CoopCgShowNotify.proto b/proto/CoopCgShowNotify.proto
new file mode 100644
index 00000000..84e3ec8e
--- /dev/null
+++ b/proto/CoopCgShowNotify.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 26025
+// Obf: JDLGCMDAEFP
+message CoopCgShowNotify {
+ repeated uint32 cg_list = 4;
+}
diff --git a/proto/CoopCgUpdateNotify.proto b/proto/CoopCgUpdateNotify.proto
new file mode 100644
index 00000000..3447ace9
--- /dev/null
+++ b/proto/CoopCgUpdateNotify.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 25026
+// Obf: GFIFBOOBGOP
+message CoopCgUpdateNotify {
+ repeated uint32 cg_list = 6;
+}
diff --git a/proto/CoopChapter.proto b/proto/CoopChapter.proto
new file mode 100644
index 00000000..fccd5083
--- /dev/null
+++ b/proto/CoopChapter.proto
@@ -0,0 +1,42 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "CoopPoint.proto";
+import "CoopReward.proto";
+import "CoopCg.proto";
+// Obf: LOELOKMLPHL
+message CoopChapter {
+ // Obf: NDFCDJEIDEJ
+ enum State {
+ STATE_CLOSE = 0;
+ STATE_COND_NOT_MEET = 1;
+ STATE_COND_MEET = 2;
+ STATE_ACCEPT = 3;
+ }
+
+ State state = 3;
+ repeated uint32 LAAOIEBFJKP = 9;
+ map seen_ending_map = 15;
+ repeated CoopPoint coop_point_list = 6;
+ repeated CoopReward coop_reward_list = 11;
+ repeated CoopCg coop_cg_list = 8;
+ uint32 id = 14;
+ uint32 JDENGALMPJN = 13;
+ repeated uint32 EOMGDNCEACF = 7;
+ uint32 HKOAKJNBIIO = 5;
+}
diff --git a/proto/CoopChapterUpdateNotify.proto b/proto/CoopChapterUpdateNotify.proto
new file mode 100644
index 00000000..636b7d45
--- /dev/null
+++ b/proto/CoopChapterUpdateNotify.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "CoopChapter.proto";
+// CmdId: 6932
+// Obf: CJCEEDJNAAB
+message CoopChapterUpdateNotify {
+ repeated CoopChapter chapter_list = 1;
+}
diff --git a/proto/CoopDataNotify.proto b/proto/CoopDataNotify.proto
new file mode 100644
index 00000000..8bc3f607
--- /dev/null
+++ b/proto/CoopDataNotify.proto
@@ -0,0 +1,27 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "CoopChapter.proto";
+// CmdId: 21157
+// Obf: BAGILCCBHBF
+message CoopDataNotify {
+ bool is_have_progress = 7;
+ repeated CoopChapter chapter_list = 1;
+ uint32 cur_coop_point = 9;
+ repeated uint32 viewed_chapter_list = 8;
+}
diff --git a/proto/CoopPoint.proto b/proto/CoopPoint.proto
new file mode 100644
index 00000000..3da4f7f2
--- /dev/null
+++ b/proto/CoopPoint.proto
@@ -0,0 +1,31 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// Obf: JCOLKMKHPFO
+message CoopPoint {
+ // Obf: JOFAANNBAFC
+ enum State {
+ STATE_UNSTARTED = 0;
+ STATE_STARTED = 1;
+ STATE_FINISHED = 2;
+ }
+
+ uint32 id = 8;
+ State state = 14;
+ uint32 self_confidence = 10;
+}
diff --git a/proto/CoopPointUpdateNotify.proto b/proto/CoopPointUpdateNotify.proto
new file mode 100644
index 00000000..4844d191
--- /dev/null
+++ b/proto/CoopPointUpdateNotify.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "CoopPoint.proto";
+// CmdId: 7401
+// Obf: DELDCGOMOEG
+message CoopPointUpdateNotify {
+ CoopPoint coop_point = 6;
+}
diff --git a/proto/CoopProgressUpdateNotify.proto b/proto/CoopProgressUpdateNotify.proto
new file mode 100644
index 00000000..45d77ffa
--- /dev/null
+++ b/proto/CoopProgressUpdateNotify.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 29927
+// Obf: MMAMPOIJIFF
+message CoopProgressUpdateNotify {
+ bool is_have_progress = 11;
+ uint32 cur_coop_point = 12;
+}
diff --git a/proto/CoopReward.proto b/proto/CoopReward.proto
new file mode 100644
index 00000000..4c58136a
--- /dev/null
+++ b/proto/CoopReward.proto
@@ -0,0 +1,30 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// Obf: PCNHBJPDMOB
+message CoopReward {
+ // Obf: NNDLFEMBJMK
+ enum State {
+ STATE_UNLOCK = 0;
+ STATE_LOCK = 1;
+ STATE_TAKEN = 2;
+ }
+
+ uint32 id = 2;
+ State state = 10;
+}
diff --git a/proto/CoopRewardUpdateNotify.proto b/proto/CoopRewardUpdateNotify.proto
new file mode 100644
index 00000000..02cc4418
--- /dev/null
+++ b/proto/CoopRewardUpdateNotify.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "CoopReward.proto";
+// CmdId: 1034
+// Obf: ADOBCEAELOF
+message CoopRewardUpdateNotify {
+ repeated CoopReward reward_list = 13;
+}
diff --git a/proto/FinishMainCoopReq.proto b/proto/FinishMainCoopReq.proto
new file mode 100644
index 00000000..1bae0521
--- /dev/null
+++ b/proto/FinishMainCoopReq.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 20482
+// Obf: BCKINDNDCCJ
+message FinishMainCoopReq {
+ uint32 ending_save_point_id = 5;
+ uint32 id = 3;
+}
diff --git a/proto/FinishMainCoopRsp.proto b/proto/FinishMainCoopRsp.proto
new file mode 100644
index 00000000..fa565715
--- /dev/null
+++ b/proto/FinishMainCoopRsp.proto
@@ -0,0 +1,25 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 23766
+// Obf: FOIFFFGHDOJ
+message FinishMainCoopRsp {
+ int32 retcode = 13;
+ uint32 id = 4;
+ uint32 ending_save_point_id = 1;
+}
diff --git a/proto/MainCoop.proto b/proto/MainCoop.proto
new file mode 100644
index 00000000..aa0d5e78
--- /dev/null
+++ b/proto/MainCoop.proto
@@ -0,0 +1,35 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// Obf: CIGMGGBFGNB
+message MainCoop {
+ // Obf: HECGIMLHAJH
+ enum Status {
+ INVALID = 0;
+ RUNNING = 1;
+ FINISHED = 2;
+ }
+
+ uint32 self_confidence = 5;
+ Status status = 1;
+ repeated uint32 save_point_id_list = 9;
+ uint32 id = 6;
+ map GEHNFJEPCJL = 12;
+ map GDBKBKACDFO = 8;
+ map seen_ending_map = 3;
+}
diff --git a/proto/MainCoopFailNotify.proto b/proto/MainCoopFailNotify.proto
new file mode 100644
index 00000000..b885d478
--- /dev/null
+++ b/proto/MainCoopFailNotify.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 2503
+// Obf: IEMIIPKOOLI
+message MainCoopFailNotify {
+ string textmap_id = 14;
+ uint32 chapter_id = 11;
+}
diff --git a/proto/MainCoopUpdateNotify.proto b/proto/MainCoopUpdateNotify.proto
new file mode 100644
index 00000000..772b9c2a
--- /dev/null
+++ b/proto/MainCoopUpdateNotify.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "MainCoop.proto";
+// CmdId: 1415
+// Obf: ENDNJPEEBNB
+message MainCoopUpdateNotify {
+ repeated MainCoop main_coop_list = 7;
+}
diff --git a/proto/SaveCoopDialogReq.proto b/proto/SaveCoopDialogReq.proto
new file mode 100644
index 00000000..899dcd0f
--- /dev/null
+++ b/proto/SaveCoopDialogReq.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 24551
+// Obf: EOGGBCKOGIE
+message SaveCoopDialogReq {
+ uint32 CMJNNOEEBKC = 2;
+ uint32 HIJPOLONNOA = 12;
+}
diff --git a/proto/SaveCoopDialogRsp.proto b/proto/SaveCoopDialogRsp.proto
new file mode 100644
index 00000000..61f3400e
--- /dev/null
+++ b/proto/SaveCoopDialogRsp.proto
@@ -0,0 +1,25 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 8107
+// Obf: NAGJNOIEKMK
+message SaveCoopDialogRsp {
+ uint32 HIJPOLONNOA = 9;
+ uint32 CMJNNOEEBKC = 8;
+ int32 retcode = 15;
+}
diff --git a/proto/SaveMainCoopReq.proto b/proto/SaveMainCoopReq.proto
new file mode 100644
index 00000000..e6b9a9cb
--- /dev/null
+++ b/proto/SaveMainCoopReq.proto
@@ -0,0 +1,27 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 764
+// Obf: DEBIEHHKCMA
+message SaveMainCoopReq {
+ map GEHNFJEPCJL = 3;
+ map GDBKBKACDFO = 10;
+ uint32 save_point_id = 11;
+ uint32 id = 6;
+ uint32 self_confidence = 7;
+}
diff --git a/proto/SaveMainCoopRsp.proto b/proto/SaveMainCoopRsp.proto
new file mode 100644
index 00000000..44ca3133
--- /dev/null
+++ b/proto/SaveMainCoopRsp.proto
@@ -0,0 +1,25 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 27766
+// Obf: BHPGBGECOMC
+message SaveMainCoopRsp {
+ int32 retcode = 8;
+ uint32 id = 9;
+ repeated uint32 save_point_id_list = 3;
+}
diff --git a/proto/SetCoopChapterViewedReq.proto b/proto/SetCoopChapterViewedReq.proto
new file mode 100644
index 00000000..c18dfea3
--- /dev/null
+++ b/proto/SetCoopChapterViewedReq.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 2879
+// Obf: BJCIIGPPDJB
+message SetCoopChapterViewedReq {
+ uint32 chapter_id = 4;
+}
diff --git a/proto/SetCoopChapterViewedRsp.proto b/proto/SetCoopChapterViewedRsp.proto
new file mode 100644
index 00000000..fd45ee59
--- /dev/null
+++ b/proto/SetCoopChapterViewedRsp.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 23389
+// Obf: AIFNGABDBJK
+message SetCoopChapterViewedRsp {
+ int32 retcode = 12;
+ uint32 chapter_id = 6;
+}
diff --git a/proto/StartCoopPointReq.proto b/proto/StartCoopPointReq.proto
new file mode 100644
index 00000000..fc6ff8a7
--- /dev/null
+++ b/proto/StartCoopPointReq.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 22463
+// Obf: NEHKCPAFDAI
+message StartCoopPointReq {
+ uint32 coop_point = 8;
+}
diff --git a/proto/StartCoopPointRsp.proto b/proto/StartCoopPointRsp.proto
new file mode 100644
index 00000000..05ac24d0
--- /dev/null
+++ b/proto/StartCoopPointRsp.proto
@@ -0,0 +1,27 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+import "MainCoop.proto";
+// CmdId: 1231
+// Obf: LHBINHPHFKM
+message StartCoopPointRsp {
+ MainCoop start_main_coop = 1;
+ uint32 coop_point = 2;
+ int32 retcode = 14;
+ bool is_start = 6;
+}
diff --git a/proto/TakeCoopRewardReq.proto b/proto/TakeCoopRewardReq.proto
new file mode 100644
index 00000000..d88a76d0
--- /dev/null
+++ b/proto/TakeCoopRewardReq.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 23462
+// Obf: FELHCPBNOHO
+message TakeCoopRewardReq {
+ uint32 reward_config_id = 2;
+}
diff --git a/proto/TakeCoopRewardRsp.proto b/proto/TakeCoopRewardRsp.proto
new file mode 100644
index 00000000..f5308697
--- /dev/null
+++ b/proto/TakeCoopRewardRsp.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 22350
+// Obf: OCBMJEKGPLA
+message TakeCoopRewardRsp {
+ int32 retcode = 14;
+ uint32 reward_config_id = 1;
+}
diff --git a/proto/UnlockCoopChapterReq.proto b/proto/UnlockCoopChapterReq.proto
new file mode 100644
index 00000000..5df60c9f
--- /dev/null
+++ b/proto/UnlockCoopChapterReq.proto
@@ -0,0 +1,23 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 27931
+// Obf: LGAINENCJLA
+message UnlockCoopChapterReq {
+ uint32 chapter_id = 11;
+}
diff --git a/proto/UnlockCoopChapterRsp.proto b/proto/UnlockCoopChapterRsp.proto
new file mode 100644
index 00000000..8ed13bc4
--- /dev/null
+++ b/proto/UnlockCoopChapterRsp.proto
@@ -0,0 +1,24 @@
+// https://github.com/SlushinPS/beach-simulator
+// Copyright (C) 2023 Slushy Team
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as
+// published by the Free Software Foundation, either version 3 of the
+// License, or (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program. If not, see .
+
+syntax = "proto3";
+option java_package = "emu.grasscutter.net.proto";
+// CmdId: 3122
+// Obf: NDDHACEDMHC
+message UnlockCoopChapterRsp {
+ int32 retcode = 10;
+ uint32 chapter_id = 11;
+}