diff --git a/proto/AccountType.proto b/proto/AccountType.proto
new file mode 100644
index 00000000..82a06df3
--- /dev/null
+++ b/proto/AccountType.proto
@@ -0,0 +1,40 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum AccountType {
+ ACCOUNT_TYPE_MIHOYO_GUEST = 0;
+ ACCOUNT_TYPE_MIHOYO = 1;
+ ACCOUNT_TYPE_XIAOMI = 11;
+ ACCOUNT_TYPE_COOLPAD = 12;
+ ACCOUNT_TYPE_YYB = 13;
+ ACCOUNT_TYPE_BILI = 14;
+ ACCOUNT_TYPE_HUAWEI = 15;
+ ACCOUNT_TYPE_MEIZU = 16;
+ ACCOUNT_TYPE_360 = 17;
+ ACCOUNT_TYPE_OPPO = 18;
+ ACCOUNT_TYPE_VIVO = 19;
+ ACCOUNT_TYPE_UC = 20;
+ ACCOUNT_TYPE_WANDOJIA = 21;
+ ACCOUNT_TYPE_LENOVO = 22;
+ ACCOUNT_TYPE_JINLI = 23;
+ ACCOUNT_TYPE_BAIDU = 25;
+ ACCOUNT_TYPE_DANGLE = 26;
+}
diff --git a/proto/ActionReasonType.proto b/proto/ActionReasonType.proto
index 88304a44..fa1cd6f9 100644
--- a/proto/ActionReasonType.proto
+++ b/proto/ActionReasonType.proto
@@ -1,212 +1,269 @@
// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
enum ActionReasonType {
- ACTION_REASON_NONE = 0;
- ACTION_REASON_QUEST_ITEM = 1;
- ACTION_REASON_QUEST_REWARD = 2;
- ACTION_REASON_TRIFLE = 3;
- ACTION_REASON_SHOP = 4;
- ACTION_REASON_PLAYER_UPGRADE_REWARD = 5;
- ACTION_REASON_ADD_AVATAR = 6;
- ACTION_REASON_GADGET_ENV_ANIMAL = 7;
- ACTION_REASON_MONSTER_ENV_ANIMAL = 8;
- ACTION_REASON_COMPOUND = 9;
- ACTION_REASON_COOK = 10;
- ACTION_REASON_GATHER = 11;
- ACTION_REASON_MAIL_ATTACHMENT = 12;
- ACTION_REASON_CITY_LEVELUP_RETURN = 15;
- ACTION_REASON_CITY_LEVELUP_REWARD = 17;
- ACTION_REASON_AREA_EXPLORE_REWARD = 18;
- ACTION_REASON_UNLOCK_POINT_REWARD = 19;
- ACTION_REASON_DUNGEON_FIRST_PASS = 20;
- ACTION_REASON_DUNGEON_PASS = 21;
- ACTION_REASON_CHANGE_ELEM_TYPE = 23;
- ACTION_REASON_FETTER_OPEN = 25;
- ACTION_REASON_DAILY_TASK_SCORE = 26;
- ACTION_REASON_DAILY_TASK_HOST = 27;
- ACTION_REASON_RAND_TASK_HOST = 28;
- ACTION_REASON_EXPEDITION = 29;
- ACTION_REASON_GACHA = 30;
- ACTION_REASON_COMBINE = 31;
- ACTION_REASON_RAND_TASK_GUEST = 32;
- ACTION_REASON_DAILY_TASK_GUEST = 33;
- ACTION_REASON_FORGE_OUTPUT = 34;
- ACTION_REASON_FORGE_RETURN = 35;
- ACTION_REASON_INIT_AVATAR = 36;
- ACTION_REASON_MONSTER_DIE = 37;
- ACTION_REASON_GM = 38;
- ACTION_REASON_OPEN_CHEST = 39;
- ACTION_REASON_GADGET_DIE = 40;
- ACTION_REASON_MONSTER_CHANGE_HP = 41;
- ACTION_REASON_SUBFIELD_DROP = 42;
- ACTION_REASON_PUSH_TIPS_REWARD = 43;
- ACTION_REASON_ACTIVITY_MONSTER_DROP = 44;
- ACTION_REASON_ACTIVITY_GATHER = 45;
- ACTION_REASON_ACTIVITY_SUBFIELD_DROP = 46;
- ACTION_REASON_TOWER_SCHEDULE_REWARD = 47;
- ACTION_REASON_TOWER_FLOOR_STAR_REWARD = 48;
- ACTION_REASON_TOWER_FIRST_PASS_REWARD = 49;
- ACTION_REASON_TOWER_DAILY_REWARD = 50;
- ACTION_REASON_HIT_CLIENT_TRIVIAL_ENTITY = 51;
- ACTION_REASON_OPEN_WORLD_BOSS_CHEST = 52;
- ACTION_REASON_MATERIAL_DELETE_RETURN = 53;
- ACTION_REASON_SIGN_IN_REWARD = 54;
- ACTION_REASON_OPEN_BLOSSOM_CHEST = 55;
- ACTION_REASON_RECHARGE = 56;
- ACTION_REASON_BONUS_ACTIVITY_REWARD = 57;
- ACTION_REASON_TOWER_COMMEMORATIVE_REWARD = 58;
- ACTION_REASON_TOWER_SKIP_FLOOR_REWARD = 59;
- ACTION_REASON_RECHARGE_BONUS = 60;
- ACTION_REASON_RECHARGE_CARD = 61;
- ACTION_REASON_RECHARGE_CARD_DAILY = 62;
- ACTION_REASON_RECHARGE_CARD_REPLACE = 63;
- ACTION_REASON_RECHARGE_CARD_REPLACE_FREE = 64;
- ACTION_REASON_RECHARGE_PLAY_REPLACE = 65;
- ACTION_REASON_MP_PLAY_TAKE_REWARD = 66;
- ACTION_REASON_ACTIVITY_WATCHER = 67;
- ACTION_REASON_SALESMAN_DELIVER_ITEM = 68;
- ACTION_REASON_SALESMAN_REWARD = 69;
- ACTION_REASON_REBATE = 70;
- ACTION_REASON_MCOIN_EXCHANGE_HCOIN = 71;
- ACTION_REASON_DAILY_TASK_EXCHANGE_LEGENDARY_KEY = 72;
- ACTION_REASON_UNLOCK_PERSON_LINE = 73;
- ACTION_REASON_FETTER_LEVEL_REWARD = 74;
- ACTION_REASON_BUY_RESIN = 75;
- ACTION_REASON_RECHARGE_PACKAGE = 76;
- ACTION_REASON_DELIVERY_DAILY_REWARD = 77;
- ACTION_REASON_CITY_REPUTATION_LEVEL = 78;
- ACTION_REASON_CITY_REPUTATION_QUEST = 79;
- ACTION_REASON_CITY_REPUTATION_REQUEST = 80;
- ACTION_REASON_CITY_REPUTATION_EXPLORE = 81;
- ACTION_REASON_OFFERGING_LEVEL = 82;
- ACTION_REASON_ROUTINE_HOST = 83;
- ACTION_REASON_ROUTINE_GUEST = 84;
- ACTION_REASON_TREASURE_MAP_SPOT_TOKEN = 89;
- ACTION_REASON_TREASURE_MAP_BONUS_LEVEL_REWARD = 90;
- ACTION_REASON_TREASURE_MAP_MP_REWARD = 91;
- ACTION_REASON_CONVERT = 92;
- ACTION_REASON_OVERFLOW_TRANSFORM = 93;
- ACTION_REASON_ACTIVITY_AVATAR_SELECTION_REWARD = 96;
- ACTION_REASON_ACTIVITY_WATCHER_BATCH = 97;
- ACTION_REASON_HIT_TREE_DROP = 98;
- ACTION_REASON_GET_HOME_LEVELUP_REWARD = 99;
- ACTION_REASON_HOME_DEFAULT_FURNITURE = 100;
- ACTION_REASON_ACTIVITY_COND = 101;
- ACTION_REASON_BATTLE_PASS_NOTIFY = 102;
- ACTION_REASON_RELIQUARY_DECOMPOSE = 103;
- ACTION_REASON_RECHARGE_GOOGLE_GIFT_GARD = 104;
- ACTION_REASON_RECHARGE_CONCERT_PRODUCT = 105;
- ACTION_REASON_RECHARGE_CONCERT_PRODUCT_REPLACE = 106;
- ACTION_REASON_SEND_CONCERT_PRODUCT_BY_MUIP = 107;
- ACTION_REASON_RECHARGE_APPLE_GIFT_GARD = 108;
- ACTION_REASON_PLAYER_USE_ITEM = 1001;
- ACTION_REASON_DROP_ITEM = 1002;
- ACTION_REASON_WEAPON_UPGRADE = 1011;
- ACTION_REASON_WEAPON_PROMOTE = 1012;
- ACTION_REASON_WEAPON_AWAKEN = 1013;
- ACTION_REASON_RELIC_UPGRADE = 1014;
- ACTION_REASON_ABILITY = 1015;
- ACTION_REASON_DUNGEON_STATUE_DROP = 1016;
- ACTION_REASON_OFFLINE_MSG = 1017;
- ACTION_REASON_AVATAR_UPGRADE = 1018;
- ACTION_REASON_AVATAR_PROMOTE = 1019;
- ACTION_REASON_QUEST_ACTION = 1021;
- ACTION_REASON_CITY_LEVELUP = 1022;
- ACTION_REASON_UPGRADE_SKILL = 1024;
- ACTION_REASON_UNLOCK_TALENT = 1025;
- ACTION_REASON_UPGRADE_PROUD_SKILL = 1026;
- ACTION_REASON_PLAYER_LEVEL_LIMIT_UP = 1027;
- ACTION_REASON_DUNGEON_DAILY = 1028;
- ACTION_REASON_ITEM_GIVING = 1030;
- ACTION_REASON_FORGE_COST = 1031;
- ACTION_REASON_INVESTIGATION_REWARD = 1032;
- ACTION_REASON_INVESTIGATION_TARGET_REWARD = 1033;
- ACTION_REASON_GADGET_INTERACT = 1034;
- ACTION_REASON_SEA_LAMP_CI_MATERIAL = 1036;
- ACTION_REASON_SEA_LAMP_CONTRIBUTION_REWARD = 1037;
- ACTION_REASON_SEA_LAMP_PHASE_REWARD = 1038;
- ACTION_REASON_SEA_LAMP_FLY_LAMP = 1039;
- ACTION_REASON_AUTO_RECOVER = 1040;
- ACTION_REASON_ACTIVITY_EXPIRE_ITEM = 1041;
- ACTION_REASON_SUB_COIN_NEGATIVE = 1042;
- ACTION_REASON_BARGAIN_DEDUCT = 1043;
- ACTION_REASON_BATTLE_PASS_PAID_REWARD = 1044;
- ACTION_REASON_BATTLE_PASS_LEVEL_REWARD = 1045;
- ACTION_REASON_TRIAL_AVATAR_ACTIVITY_FIRST_PASS_REWARD = 1046;
- ACTION_REASON_BUY_BATTLE_PASS_LEVEL = 1047;
- ACTION_REASON_GRANT_BIRTHDAY_BENEFIT = 1048;
- ACTION_REASON_ACHIEVEMENT_REWARD = 1049;
- ACTION_REASON_ACHIEVEMENT_GOAL_REWARD = 1050;
- ACTION_REASON_FIRST_SHARE_TO_SOCIAL_NETWORK = 1051;
- ACTION_REASON_DESTROY_MATERIAL = 1052;
- ACTION_REASON_CODEX_LEVELUP_REWARD = 1053;
- ACTION_REASON_HUNTING_OFFER_REWARD = 1054;
- ACTION_REASON_USE_WIDGET_ANCHOR_POINT = 1055;
- ACTION_REASON_USE_WIDGET_BONFIRE = 1056;
- ACTION_REASON_UNGRADE_WEAPON_RETURN_MATERIAL = 1057;
- ACTION_REASON_USE_WIDGET_ONEOFF_GATHER_POINT_DETECTOR = 1058;
- ACTION_REASON_USE_WIDGET_CLIENT_COLLECTOR = 1059;
- ACTION_REASON_USE_WIDGET_CLIENT_DETECTOR = 1060;
- ACTION_REASON_TAKE_GENERAL_REWARD = 1061;
- ACTION_REASON_ASTER_TAKE_SPECIAL_REWARD = 1062;
- ACTION_REASON_REMOVE_CODEX_BOOK = 1063;
- ACTION_REASON_OFFERING_ITEM = 1064;
- ACTION_REASON_USE_WIDGET_GADGET_BUILDER = 1065;
- ACTION_REASON_EFFIGY_FIRST_PASS_REWARD = 1066;
- ACTION_REASON_EFFIGY_REWARD = 1067;
- ACTION_REASON_REUNION_FIRST_GIFT_REWARD = 1068;
- ACTION_REASON_REUNION_SIGN_IN_REWARD = 1069;
- ACTION_REASON_REUNION_WATCHER_REWARD = 1070;
- ACTION_REASON_SALESMAN_MP_REWARD = 1071;
- ACTION_REASION_AVATAR_PROMOTE_REWARD = 1072;
- ACTION_REASON_BLESSING_REDEEM_REWARD = 1073;
- ACTION_MIRACLE_RING_REWARD = 1074;
- ACTION_REASON_EXPEDITION_REWARD = 1075;
- ACTION_REASON_TREASURE_MAP_REMOVE_DETECTOR = 1076;
- ACTION_REASON_MECHANICUS_DUNGEON_TICKET = 1077;
- ACTION_REASON_MECHANICUS_LEVELUP_GEAR = 1078;
- ACTION_REASON_MECHANICUS_BATTLE_SETTLE = 1079;
- ACTION_REASON_REGION_SEARCH_REWARD = 1080;
- ACTION_REASON_UNLOCK_COOP_CHAPTER = 1081;
- ACTION_REASON_TAKE_COOP_REWARD = 1082;
- ACTION_REASON_FLEUR_FAIR_DUNGEON_REWARD = 1083;
- ACTION_REASON_ACTIVITY_SCORE = 1084;
- ACTION_REASON_CHANNELLER_SLAB_ONEOFF_DUNGEON_REWARD = 1085;
- ACTION_REASON_FURNITURE_MAKE_START = 1086;
- ACTION_REASON_FURNITURE_MAKE_TAKE = 1087;
- ACTION_REASON_FURNITURE_MAKE_CANCEL = 1088;
- ACTION_REASON_FURNITURE_MAKE_FAST_FINISH = 1089;
- ACTION_REASON_CHANNELLER_SLAB_LOOP_DUNGEON_FIRST_PASS_REWARD = 1090;
- ACTION_REASON_CHANNELLER_SLAB_LOOP_DUNGEON_SCORE_REWARD = 1091;
- ACTION_REASON_HOME_LIMITED_SHOP_BUY = 1092;
- ACTION_REASON_HOME_COIN_COLLECT = 1093;
- ACTION_REASON_SUMMER_TIME_SENTRY_TOWER_REWARD = 1094;
- ACTION_REASON_SUMMER_TIME_SPRINT_BOAT_REWARD = 1095;
- ACTION_REASON_SUMMER_TIME_BOSS_REWARD = 1096;
- ACTION_REASON_SUMMER_TIME_BOMB_REWARD = 1097;
- ACTION_REASON_HOME_FETTER_COLLECT = 1098;
- ACTION_REASON_ECHO_SHELL_REWARD = 1099;
- ACTION_REASON_HOME_EVENT_REWARD = 1100;
- ACTION_REASON_BLITZ_RUSH_DUNGEON_REWARD = 1101;
- ACTION_REASON_FURNITURE_MAKE_RETURN = 1102;
- ACTION_REASON_HOME_PLANT_BOX_GATHER = 1103;
- ACTION_REASON_HOME_PLANT_SEED = 1104;
- ACTION_REASON_HOME_PLANT_GATHER = 1105;
- ACTION_REASON_CHESS_DUNGEON_REWARD = 1106;
- ACTION_REASON_GROUP_LINK_BUNDLE_FINISH = 1107;
- ACTION_REASON_LUNA_RITE_SACRIFICE = 1108;
- ACTION_REASON_LUNA_RITE_TAKE_SACRIFICE_REWARD = 1109;
- ACTION_REASON_FISH_BITE = 1110;
- ACTION_REASON_FISH_SUCC = 1111;
- ACTION_REASON_PLANT_FLOWER_REWARD = 1112;
- ACTION_REASON_PLANT_FLOWER_DELIVER_ITEM = 1113;
- ACTION_REASON_PLANT_FLOWER_GIVE_FLOWER = 1114;
- ACTION_REASON_PLANT_FLOWER_RECV_FLOWER = 1115;
- ACTION_REASON_ROGUE_CHALLENGE_SETTLE = 1116;
- ACTION_REASON_ROGUE_TAKE_FIRST_PASS_REWARD = 1117;
- ACTION_REASON_ROGUE_UPGRADE_SHIKIGAMI = 1118;
- ACTION_REASON_ROGUE_REFRESH_CARD = 1119;
+ ACTION_REASON_TYPE_NONE = 0;
+ ACTION_REASON_TYPE_QUEST_ITEM = 1;
+ ACTION_REASON_TYPE_QUEST_REWARD = 2;
+ ACTION_REASON_TYPE_TRIFLE = 3;
+ ACTION_REASON_TYPE_SHOP = 4;
+ ACTION_REASON_TYPE_PLAYER_UPGRADE_REWARD = 5;
+ ACTION_REASON_TYPE_ADD_AVATAR = 6;
+ ACTION_REASON_TYPE_GADGET_ENV_ANIMAL = 7;
+ ACTION_REASON_TYPE_MONSTER_ENV_ANIMAL = 8;
+ ACTION_REASON_TYPE_COMPOUND = 9;
+ ACTION_REASON_TYPE_COOK = 10;
+ ACTION_REASON_TYPE_GATHER = 11;
+ ACTION_REASON_TYPE_MAIL_ATTACHMENT = 12;
+ ACTION_REASON_TYPE_CITY_LEVELUP_RETURN = 15;
+ ACTION_REASON_TYPE_CITY_LEVELUP_REWARD = 17;
+ ACTION_REASON_TYPE_AREA_EXPLORE_REWARD = 18;
+ ACTION_REASON_TYPE_UNLOCK_POINT_REWARD = 19;
+ ACTION_REASON_TYPE_DUNGEON_FIRST_PASS = 20;
+ ACTION_REASON_TYPE_DUNGEON_PASS = 21;
+ ACTION_REASON_TYPE_CHANGE_ELEM_TYPE = 23;
+ ACTION_REASON_TYPE_FETTER_OPEN = 25;
+ ACTION_REASON_TYPE_DAILY_TASK_SCORE = 26;
+ ACTION_REASON_TYPE_DAILY_TASK_HOST = 27;
+ ACTION_REASON_TYPE_RAND_TASK_HOST = 28;
+ ACTION_REASON_TYPE_EXPEDITION = 29;
+ ACTION_REASON_TYPE_GACHA = 30;
+ ACTION_REASON_TYPE_COMBINE = 31;
+ ACTION_REASON_TYPE_RAND_TASK_GUEST = 32;
+ ACTION_REASON_TYPE_DAILY_TASK_GUEST = 33;
+ ACTION_REASON_TYPE_FORGE_OUTPUT = 34;
+ ACTION_REASON_TYPE_FORGE_RETURN = 35;
+ ACTION_REASON_TYPE_INIT_AVATAR = 36;
+ ACTION_REASON_TYPE_MONSTER_DIE = 37;
+ ACTION_REASON_TYPE_GM = 38;
+ ACTION_REASON_TYPE_OPEN_CHEST = 39;
+ ACTION_REASON_TYPE_GADGET_DIE = 40;
+ ACTION_REASON_TYPE_MONSTER_CHANGE_HP = 41;
+ ACTION_REASON_TYPE_SUBFIELD_DROP = 42;
+ ACTION_REASON_TYPE_PUSH_TIPS_REWARD = 43;
+ ACTION_REASON_TYPE_ACTIVITY_MONSTER_DROP = 44;
+ ACTION_REASON_TYPE_ACTIVITY_GATHER = 45;
+ ACTION_REASON_TYPE_ACTIVITY_SUBFIELD_DROP = 46;
+ ACTION_REASON_TYPE_TOWER_SCHEDULE_REWARD = 47;
+ ACTION_REASON_TYPE_TOWER_FLOOR_STAR_REWARD = 48;
+ ACTION_REASON_TYPE_TOWER_FIRST_PASS_REWARD = 49;
+ ACTION_REASON_TYPE_TOWER_DAILY_REWARD = 50;
+ ACTION_REASON_TYPE_HIT_CLIENT_TRIVIAL_ENTITY = 51;
+ ACTION_REASON_TYPE_OPEN_WORLD_BOSS_CHEST = 52;
+ ACTION_REASON_TYPE_MATERIAL_DELETE_RETURN = 53;
+ ACTION_REASON_TYPE_SIGN_IN_REWARD = 54;
+ ACTION_REASON_TYPE_OPEN_BLOSSOM_CHEST = 55;
+ ACTION_REASON_TYPE_RECHARGE = 56;
+ ACTION_REASON_TYPE_BONUS_ACTIVITY_REWARD = 57;
+ ACTION_REASON_TYPE_TOWER_COMMEMORATIVE_REWARD = 58;
+ ACTION_REASON_TYPE_TOWER_SKIP_FLOOR_REWARD = 59;
+ ACTION_REASON_TYPE_RECHARGE_BONUS = 60;
+ ACTION_REASON_TYPE_RECHARGE_CARD = 61;
+ ACTION_REASON_TYPE_RECHARGE_CARD_DAILY = 62;
+ ACTION_REASON_TYPE_RECHARGE_CARD_REPLACE = 63;
+ ACTION_REASON_TYPE_RECHARGE_CARD_REPLACE_FREE = 64;
+ ACTION_REASON_TYPE_RECHARGE_PLAY_REPLACE = 65;
+ ACTION_REASON_TYPE_MP_PLAY_TAKE_REWARD = 66;
+ ACTION_REASON_TYPE_ACTIVITY_WATCHER = 67;
+ ACTION_REASON_TYPE_SALESMAN_DELIVER_ITEM = 68;
+ ACTION_REASON_TYPE_SALESMAN_REWARD = 69;
+ ACTION_REASON_TYPE_REBATE = 70;
+ ACTION_REASON_TYPE_MCOIN_EXCHANGE_HCOIN = 71;
+ ACTION_REASON_TYPE_DAILY_TASK_EXCHANGE_LEGENDARY_KEY = 72;
+ ACTION_REASON_TYPE_UNLOCK_PERSON_LINE = 73;
+ ACTION_REASON_TYPE_FETTER_LEVEL_REWARD = 74;
+ ACTION_REASON_TYPE_BUY_RESIN = 75;
+ ACTION_REASON_TYPE_RECHARGE_PACKAGE = 76;
+ ACTION_REASON_TYPE_DELIVERY_DAILY_REWARD = 77;
+ ACTION_REASON_TYPE_CITY_REPUTATION_LEVEL = 78;
+ ACTION_REASON_TYPE_CITY_REPUTATION_QUEST = 79;
+ ACTION_REASON_TYPE_CITY_REPUTATION_REQUEST = 80;
+ ACTION_REASON_TYPE_CITY_REPUTATION_EXPLORE = 81;
+ ACTION_REASON_TYPE_OFFERGING_LEVEL = 82;
+ ACTION_REASON_TYPE_ROUTINE_HOST = 83;
+ ACTION_REASON_TYPE_ROUTINE_GUEST = 84;
+ ACTION_REASON_TYPE_TREASURE_MAP_SPOT_TOKEN = 89;
+ ACTION_REASON_TYPE_TREASURE_MAP_BONUS_LEVEL_REWARD = 90;
+ ACTION_REASON_TYPE_TREASURE_MAP_MP_REWARD = 91;
+ ACTION_REASON_TYPE_CONVERT = 92;
+ ACTION_REASON_TYPE_OVERFLOW_TRANSFORM = 93;
+ ACTION_REASON_TYPE_ACTIVITY_AVATAR_SELECTION_REWARD = 96;
+ ACTION_REASON_TYPE_ACTIVITY_WATCHER_BATCH = 97;
+ ACTION_REASON_TYPE_HIT_TREE_DROP = 98;
+ ACTION_REASON_TYPE_GET_HOME_LEVELUP_REWARD = 99;
+ ACTION_REASON_TYPE_HOME_DEFAULT_FURNITURE = 100;
+ ACTION_REASON_TYPE_ACTIVITY_COND = 101;
+ ACTION_REASON_TYPE_BATTLE_PASS_NOTIFY = 102;
+ ACTION_REASON_TYPE_RELIQUARY_DECOMPOSE = 103;
+ ACTION_REASON_TYPE_RECHARGE_GOOGLE_GIFT_GARD = 104;
+ ACTION_REASON_TYPE_RECHARGE_CONCERT_PRODUCT = 105;
+ ACTION_REASON_TYPE_RECHARGE_CONCERT_PRODUCT_REPLACE = 106;
+ ACTION_REASON_TYPE_SEND_CONCERT_PRODUCT_BY_MUIP = 107;
+ ACTION_REASON_TYPE_RECHARGE_APPLE_GIFT_GARD = 108;
+ ACTION_REASON_TYPE_RECHARGE_PSN_COMPENSATION_PRODUCT = 109;
+ ACTION_REASON_TYPE_COMPOUND_BOOST = 110;
+ ACTION_REASON_TYPE_WOOD_EXCHANGE = 111;
+ ACTION_REASON_TYPE_AVATAR_RENAME_AUDIT_FAILED = 112;
+ ACTION_REASON_TYPE_AVATAR_RENAME_RESET = 113;
+ ACTION_REASON_TYPE_PLAYER_USE_ITEM = 1001;
+ ACTION_REASON_TYPE_DROP_ITEM = 1002;
+ ACTION_REASON_TYPE_WEAPON_UPGRADE = 1011;
+ ACTION_REASON_TYPE_WEAPON_PROMOTE = 1012;
+ ACTION_REASON_TYPE_WEAPON_AWAKEN = 1013;
+ ACTION_REASON_TYPE_RELIC_UPGRADE = 1014;
+ ACTION_REASON_TYPE_ABILITY = 1015;
+ ACTION_REASON_TYPE_DUNGEON_STATUE_DROP = 1016;
+ ACTION_REASON_TYPE_OFFLINE_MSG = 1017;
+ ACTION_REASON_TYPE_AVATAR_UPGRADE = 1018;
+ ACTION_REASON_TYPE_AVATAR_PROMOTE = 1019;
+ ACTION_REASON_TYPE_QUEST_ACTION = 1021;
+ ACTION_REASON_TYPE_CITY_LEVELUP = 1022;
+ ACTION_REASON_TYPE_UPGRADE_SKILL = 1024;
+ ACTION_REASON_TYPE_UNLOCK_TALENT = 1025;
+ ACTION_REASON_TYPE_UPGRADE_PROUD_SKILL = 1026;
+ ACTION_REASON_TYPE_PLAYER_LEVEL_LIMIT_UP = 1027;
+ ACTION_REASON_TYPE_DUNGEON_DAILY = 1028;
+ ACTION_REASON_TYPE_ITEM_GIVING = 1030;
+ ACTION_REASON_TYPE_FORGE_COST = 1031;
+ ACTION_REASON_TYPE_INVESTIGATION_REWARD = 1032;
+ ACTION_REASON_TYPE_INVESTIGATION_TARGET_REWARD = 1033;
+ ACTION_REASON_TYPE_GADGET_INTERACT = 1034;
+ ACTION_REASON_TYPE_SEA_LAMP_CI_MATERIAL = 1036;
+ ACTION_REASON_TYPE_SEA_LAMP_CONTRIBUTION_REWARD = 1037;
+ ACTION_REASON_TYPE_SEA_LAMP_PHASE_REWARD = 1038;
+ ACTION_REASON_TYPE_SEA_LAMP_FLY_LAMP = 1039;
+ ACTION_REASON_TYPE_AUTO_RECOVER = 1040;
+ ACTION_REASON_TYPE_ACTIVITY_EXPIRE_ITEM = 1041;
+ ACTION_REASON_TYPE_SUB_COIN_NEGATIVE = 1042;
+ ACTION_REASON_TYPE_BARGAIN_DEDUCT = 1043;
+ ACTION_REASON_TYPE_BATTLE_PASS_PAID_REWARD = 1044;
+ ACTION_REASON_TYPE_BATTLE_PASS_LEVEL_REWARD = 1045;
+ ACTION_REASON_TYPE_TRIAL_AVATAR_ACTIVITY_FIRST_PASS_REWARD = 1046;
+ ACTION_REASON_TYPE_BUY_BATTLE_PASS_LEVEL = 1047;
+ ACTION_REASON_TYPE_GRANT_BIRTHDAY_BENEFIT = 1048;
+ ACTION_REASON_TYPE_ACHIEVEMENT_REWARD = 1049;
+ ACTION_REASON_TYPE_ACHIEVEMENT_GOAL_REWARD = 1050;
+ ACTION_REASON_TYPE_FIRST_SHARE_TO_SOCIAL_NETWORK = 1051;
+ ACTION_REASON_TYPE_DESTROY_MATERIAL = 1052;
+ ACTION_REASON_TYPE_CODEX_LEVELUP_REWARD = 1053;
+ ACTION_REASON_TYPE_HUNTING_OFFER_REWARD = 1054;
+ ACTION_REASON_TYPE_USE_WIDGET_ANCHOR_POINT = 1055;
+ ACTION_REASON_TYPE_USE_WIDGET_BONFIRE = 1056;
+ ACTION_REASON_TYPE_UNGRADE_WEAPON_RETURN_MATERIAL = 1057;
+ ACTION_REASON_TYPE_USE_WIDGET_ONEOFF_GATHER_POINT_DETECTOR = 1058;
+ ACTION_REASON_TYPE_USE_WIDGET_CLIENT_COLLECTOR = 1059;
+ ACTION_REASON_TYPE_USE_WIDGET_CLIENT_DETECTOR = 1060;
+ ACTION_REASON_TYPE_TAKE_GENERAL_REWARD = 1061;
+ ACTION_REASON_TYPE_ASTER_TAKE_SPECIAL_REWARD = 1062;
+ ACTION_REASON_TYPE_REMOVE_CODEX_BOOK = 1063;
+ ACTION_REASON_TYPE_OFFERING_ITEM = 1064;
+ ACTION_REASON_TYPE_USE_WIDGET_GADGET_BUILDER = 1065;
+ ACTION_REASON_TYPE_EFFIGY_FIRST_PASS_REWARD = 1066;
+ ACTION_REASON_TYPE_EFFIGY_REWARD = 1067;
+ ACTION_REASON_TYPE_REUNION_FIRST_GIFT_REWARD = 1068;
+ ACTION_REASON_TYPE_REUNION_SIGN_IN_REWARD = 1069;
+ ACTION_REASON_TYPE_REUNION_WATCHER_REWARD = 1070;
+ ACTION_REASON_TYPE_SALESMAN_MP_REWARD = 1071;
+ ACTION_REASON_TYPE_AVATAR_PROMOTE_REWARD = 1072;
+ ACTION_REASON_TYPE_BLESSING_REDEEM_REWARD = 1073;
+ ACTION_REASON_TYPE_MIRACLE_RING_REWARD = 1074;
+ ACTION_REASON_TYPE_EXPEDITION_REWARD = 1075;
+ ACTION_REASON_TYPE_TREASURE_MAP_REMOVE_DETECTOR = 1076;
+ ACTION_REASON_TYPE_MECHANICUS_DUNGEON_TICKET = 1077;
+ ACTION_REASON_TYPE_MECHANICUS_LEVELUP_GEAR = 1078;
+ ACTION_REASON_TYPE_MECHANICUS_BATTLE_SETTLE = 1079;
+ ACTION_REASON_TYPE_REGION_SEARCH_REWARD = 1080;
+ ACTION_REASON_TYPE_UNLOCK_COOP_CHAPTER = 1081;
+ ACTION_REASON_TYPE_TAKE_COOP_REWARD = 1082;
+ ACTION_REASON_TYPE_FLEUR_FAIR_DUNGEON_REWARD = 1083;
+ ACTION_REASON_TYPE_ACTIVITY_SCORE = 1084;
+ ACTION_REASON_TYPE_CHANNELLER_SLAB_ONEOFF_DUNGEON_REWARD = 1085;
+ ACTION_REASON_TYPE_FURNITURE_MAKE_START = 1086;
+ ACTION_REASON_TYPE_FURNITURE_MAKE_TAKE = 1087;
+ ACTION_REASON_TYPE_FURNITURE_MAKE_CANCEL = 1088;
+ ACTION_REASON_TYPE_FURNITURE_MAKE_FAST_FINISH = 1089;
+ ACTION_REASON_TYPE_CHANNELLER_SLAB_LOOP_DUNGEON_FIRST_PASS_REWARD = 1090;
+ ACTION_REASON_TYPE_CHANNELLER_SLAB_LOOP_DUNGEON_SCORE_REWARD = 1091;
+ ACTION_REASON_TYPE_HOME_LIMITED_SHOP_BUY = 1092;
+ ACTION_REASON_TYPE_HOME_COIN_COLLECT = 1093;
+ ACTION_REASON_TYPE_SUMMER_TIME_SENTRY_TOWER_REWARD = 1094;
+ ACTION_REASON_TYPE_SUMMER_TIME_SPRINT_BOAT_REWARD = 1095;
+ ACTION_REASON_TYPE_SUMMER_TIME_BOSS_REWARD = 1096;
+ ACTION_REASON_TYPE_SUMMER_TIME_BOMB_REWARD = 1097;
+ ACTION_REASON_TYPE_HOME_FETTER_COLLECT = 1098;
+ ACTION_REASON_TYPE_ECHO_SHELL_REWARD = 1099;
+ ACTION_REASON_TYPE_HOME_EVENT_REWARD = 1100;
+ ACTION_REASON_TYPE_BLITZ_RUSH_DUNGEON_REWARD = 1101;
+ ACTION_REASON_TYPE_FURNITURE_MAKE_RETURN = 1102;
+ ACTION_REASON_TYPE_HOME_PLANT_BOX_GATHER = 1103;
+ ACTION_REASON_TYPE_HOME_PLANT_SEED = 1104;
+ ACTION_REASON_TYPE_HOME_PLANT_GATHER = 1105;
+ ACTION_REASON_TYPE_CHESS_DUNGEON_REWARD = 1106;
+ ACTION_REASON_TYPE_GROUP_LINK_BUNDLE_FINISH = 1107;
+ ACTION_REASON_TYPE_LUNA_RITE_SACRIFICE = 1108;
+ ACTION_REASON_TYPE_LUNA_RITE_TAKE_SACRIFICE_REWARD = 1109;
+ ACTION_REASON_TYPE_FISH_BITE = 1110;
+ ACTION_REASON_TYPE_FISH_SUCC = 1111;
+ ACTION_REASON_TYPE_PLANT_FLOWER_REWARD = 1112;
+ ACTION_REASON_TYPE_PLANT_FLOWER_DELIVER_ITEM = 1113;
+ ACTION_REASON_TYPE_PLANT_FLOWER_GIVE_FLOWER = 1114;
+ ACTION_REASON_TYPE_PLANT_FLOWER_RECV_FLOWER = 1115;
+ ACTION_REASON_TYPE_ROGUE_CHALLENGE_SETTLE = 1116;
+ ACTION_REASON_TYPE_ROGUE_TAKE_FIRST_PASS_REWARD = 1117;
+ ACTION_REASON_TYPE_ROGUE_UPGRADE_SHIKIGAMI = 1118;
+ ACTION_REASON_TYPE_ROGUE_REFRESH_CARD = 1119;
+ ACTION_REASON_TYPE_USE_WIDGET_CAPTURE_ANIMAL = 1120;
+ ACTION_REASON_TYPE_CAPTURE_ANIMAL_SUCC = 1121;
+ ACTION_REASON_TYPE_SNOW_DRIFTS = 1122;
+ ACTION_REASON_TYPE_WINTER_CAMP_GIVE_ITEM = 1123;
+ ACTION_REASON_TYPE_WINTER_CAMP_RECV_ITEM = 1124;
+ ACTION_REASON_TYPE_WINTER_CAMP_EXPLORE_REWARD = 1125;
+ ACTION_REASON_TYPE_WINTER_CAMP_BATTLE_REWARD = 1126;
+ ACTION_REASON_TYPE_LANTERN_RITE_SKIN_REWARD = 1127;
+ ACTION_REASON_TYPE_LANTERN_RITE_DUNGEON_REWARD = 1128;
+ ACTION_REASON_TYPE_MICHIAE_MATSURI_DARK_CHALLENGE_REWARD = 1129;
+ ACTION_REASON_TYPE_MICHIAE_MATSURI_UNLOCK_CRYSTAL_SKILL = 1130;
+ ACTION_REASON_TYPE_LANTERN_RITE_GROUP_REWARD = 1131;
+ ACTION_REASON_TYPE_COSTUME_DEFAULT_UNLOCK = 1132;
+ ACTION_REASON_TYPE_SPICE_ACTIVITY_MAKE_SPICE = 1133;
+ ACTION_REASON_TYPE_SPICE_ACTIVITY_PROCESS_FOOD = 1134;
+ ACTION_REASON_TYPE_SPICE_ADD_AVATAR_FETTER = 1135;
+ ACTION_REASON_TYPE_GACHA_ACTIVITY_ROBOT_REWARD = 1136;
+ ACTION_REASON_TYPE_GIVING_TAKE_BACK = 1137;
+ ACTION_REASON_TYPE_SUMMER_TIME_V2_DUNGEON_REWARD = 1138;
+ ACTION_REASON_TYPE_GRAVEN_INNOCENCE_CAMP_REWARD = 1139;
+ ACTION_REASON_TYPE_TREASURE_SEELIE_CHEST_REWARD = 1140;
+ ACTION_REASON_TYPE_GCG_TAVERN_CHALLENGE_UNLOCK_CHARACTER = 1141;
+ ACTION_REASON_TYPE_GCG_LEVEL_REWARD = 1143;
+ ACTION_REASON_TYPE_GCG_CHALLENGE_FINISH = 1144;
+ ACTION_REASON_TYPE_VINTAGE_MARKET_DEAL = 1145;
+ ACTION_REASON_TYPE_VINTAGE_MARKET_BARGAIN = 1146;
+ ACTION_REASON_TYPE_VINTAGE_MARKET_STORE = 1147;
+ ACTION_REASON_TYPE_VINTAGE_PRESENT = 1148;
+ ACTION_REASON_TYPE_VINTAGE_OPEN_STORE = 1149;
+ ACTION_REASON_TYPE_VINTAGE_STORE_UNLOCK_SLOT = 1150;
+ ACTION_REASON_TYPE_VINTAGE_STORE_NPC_EVENT = 1151;
+ ACTION_REASON_TYPE_ROCK_BOARD_EXPLORE_REWARD = 1152;
+ ACTION_REASON_TYPE_VINTAGE_STORE_DIVIDEND = 1153;
+ ACTION_REASON_TYPE_AVATAR_RENAME = 1154;
+ ACTION_REASON_TYPE_GCG_FINISH_LEVEL_QUEST = 1155;
+ ACTION_REASON_TYPE_GCG_PROFICIENCY_REWARD = 1156;
}
diff --git a/proto/AvatarDataNotify.proto b/proto/AvatarDataNotify.proto
index 50e90417..1c5329d0 100644
--- a/proto/AvatarDataNotify.proto
+++ b/proto/AvatarDataNotify.proto
@@ -35,10 +35,10 @@ message AvatarDataNotify {
repeated AvatarInfo avatar_list = 14;
repeated AvatarRenameInfo avatar_rename_list = 8;
uint32 cur_avatar_team_id = 7;
- repeated uint32 Unk3300_HHKJBGKHIEJ = 6;
+ repeated uint32 owned_flycloak_list = 6;
repeated uint64 temp_avatar_guid_list = 15;
uint64 choose_avatar_guid = 1;
map avatar_team_map = 11;
- repeated uint32 Unk3300_MDNLGGMGHAF = 5;
+ repeated uint32 owned_costume_list = 5;
repeated uint32 backup_avatar_team_order_list = 3;
}
diff --git a/proto/BattlePassMission.proto b/proto/BattlePassMission.proto
index a2f5e6a4..b4aac19d 100644
--- a/proto/BattlePassMission.proto
+++ b/proto/BattlePassMission.proto
@@ -28,8 +28,8 @@ message BattlePassMission {
}
uint32 cur_progress = 10;
- uint32 Unk3300_MBOMOLFKPPO = 9;
- uint32 Unk3300_DAHDCJNCALE = 14;
+ uint32 mission_type = 9;
+ uint32 reward_battle_pass_point = 14;
uint32 total_progress = 12;
uint32 mission_id = 15;
MissionStatus mission_status = 11;
diff --git a/proto/ChannelIdType.proto b/proto/ChannelIdType.proto
new file mode 100644
index 00000000..a8324671
--- /dev/null
+++ b/proto/ChannelIdType.proto
@@ -0,0 +1,39 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ChannelIdType {
+ CHANNEL_ID_TYPE_NONE = 0;
+ CHANNEL_ID_TYPE_MIHOYO = 1;
+ CHANNEL_ID_TYPE_XIAOMI = 11;
+ CHANNEL_ID_TYPE_COOLPAD = 12;
+ CHANNEL_ID_TYPE_YYB = 13;
+ CHANNEL_ID_TYPE_BILI = 14;
+ CHANNEL_ID_TYPE_HUAWEI = 15;
+ CHANNEL_ID_TYPE_MEIZU = 16;
+ CHANNEL_ID_TYPE_360 = 17;
+ CHANNEL_ID_TYPE_OPPO = 18;
+ CHANNEL_ID_TYPE_VIVO = 19;
+ CHANNEL_ID_TYPE_UC = 20;
+ CHANNEL_ID_TYPE_LENOVO = 22;
+ CHANNEL_ID_TYPE_JINLI = 23;
+ CHANNEL_ID_TYPE_BAIDU = 25;
+ CHANNEL_ID_TYPE_DANGLE = 26;
+}
diff --git a/proto/ChatChannel.proto b/proto/ChatChannel.proto
new file mode 100644
index 00000000..735a8f44
--- /dev/null
+++ b/proto/ChatChannel.proto
@@ -0,0 +1,30 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ChatChannel {
+ CHAT_CHANNEL_TEAM = 0;
+ CHAT_CHANNEL_FRIEND = 1;
+ CHAT_CHANNEL_NONE = 2;
+ CHAT_CHANNEL_HIDEANDSEEK = 3;
+ CHAT_CHANNEL_HIDEANDSEEK_TEAM = 5;
+ CHAT_CHANNEL_ALL = 10;
+ CHAT_CHANNEL_TEST = 100;
+}
diff --git a/proto/ChatInfo.proto b/proto/ChatInfo.proto
index 04536c2c..e406d26b 100644
--- a/proto/ChatInfo.proto
+++ b/proto/ChatInfo.proto
@@ -32,9 +32,9 @@ message ChatInfo {
bool is_read = 3;
uint32 time = 1;
- uint32 Unk3300_HENLDIJMIOE = 10;
+ uint32 to_uid = 10;
uint32 uid = 11;
- uint32 Unk3300_PHBEHIGHOCD = 5;
+ uint32 sequence = 5;
oneof content {
string text = 909;
uint32 icon = 990;
diff --git a/proto/CityidConstValue.proto b/proto/CityidConstValue.proto
new file mode 100644
index 00000000..d9d5b977
--- /dev/null
+++ b/proto/CityidConstValue.proto
@@ -0,0 +1,28 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum CityidConstValue {
+ CITYID_CONST_VALUE_NONE = 0;
+ CITYID_CONST_VALUE_MENGDE = 1;
+ CITYID_CONST_VALUE_LIYUE = 2;
+ CITYID_CONST_VALUE_DAOQI = 3;
+ CITYID_CONST_VALUE_XUMI = 4;
+}
diff --git a/proto/ClientType.proto b/proto/ClientType.proto
new file mode 100644
index 00000000..184eae9a
--- /dev/null
+++ b/proto/ClientType.proto
@@ -0,0 +1,25 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ClientType {
+ CLIENT_TYPE_PRODUCT = 0;
+ CLIENT_TYPE_DEV = 1;
+}
diff --git a/proto/CreateGadgetReason.proto b/proto/CreateGadgetReason.proto
new file mode 100644
index 00000000..8f90809d
--- /dev/null
+++ b/proto/CreateGadgetReason.proto
@@ -0,0 +1,27 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum CreateGadgetReason {
+ CREATE_GADGET_REASON_NONE = 0;
+ CREATE_GADGET_REASON_PLAYER = 1;
+ CREATE_GADGET_REASON_MISSION = 2;
+ CREATE_GADGET_REASON_GM = 3;
+}
diff --git a/proto/CustomDungeonEvent.proto b/proto/CustomDungeonEvent.proto
new file mode 100644
index 00000000..1ab37ce0
--- /dev/null
+++ b/proto/CustomDungeonEvent.proto
@@ -0,0 +1,26 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum CustomDungeonEvent {
+ CUSTOM_DUNGEON_EVENT_NONE = 0;
+ CUSTOM_DUNGEON_EVENT_OFFICIAL_RESTART = 1;
+ CUSTOM_DUNGEON_EVENT_OUT_STUCK = 2;
+}
diff --git a/proto/DataResVersionNotify.proto b/proto/DataResVersionNotify.proto
index 9d48c2b5..ca96ed67 100644
--- a/proto/DataResVersionNotify.proto
+++ b/proto/DataResVersionNotify.proto
@@ -41,8 +41,8 @@ message DataResVersionNotify {
string client_silence_version_suffix = 3;
string client_version_suffix = 9;
bool is_data_need_relogin = 15;
- string Unk3300_HMGCPAGLDHB = 12;
+ string client_silence_md5 = 12;
uint32 client_data_version = 5;
- string Unk3300_OPGDBOLKLJA = 2;
+ string client_md5 = 2;
ResVersionConfig res_version_config = 7;
}
diff --git a/proto/DebugNotify.proto b/proto/DebugNotify.proto
index f27fa48d..22c826c6 100644
--- a/proto/DebugNotify.proto
+++ b/proto/DebugNotify.proto
@@ -30,8 +30,8 @@ message DebugNotify {
// }
enum Retcode {
- RETCODE_SUCC = 0;
- RETCODE_FAIL = 1;
+ SUCC = 0;
+ FAIL = 1;
}
uint32 id = 1;
diff --git a/proto/DungeonCandidateTeamInviteState.proto b/proto/DungeonCandidateTeamInviteState.proto
new file mode 100644
index 00000000..fbb9ae2f
--- /dev/null
+++ b/proto/DungeonCandidateTeamInviteState.proto
@@ -0,0 +1,27 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum DungeonCandidateTeamInviteState {
+ DUNGEON_CANDIDATE_TEAM_INVITE_STATE_NONE = 0;
+ DUNGEON_CANDIDATE_TEAM_INVITE_STATE_SEND = 1;
+ DUNGEON_CANDIDATE_TEAM_INVITE_STATE_ACCEPT = 2;
+ DUNGEON_CANDIDATE_TEAM_INVITE_STATE_REFUSE = 3;
+}
diff --git a/proto/ENetReason.proto b/proto/ENetReason.proto
new file mode 100644
index 00000000..1d073d6e
--- /dev/null
+++ b/proto/ENetReason.proto
@@ -0,0 +1,46 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ENetReason {
+ E_NET_REASON_ENET_TIMEOUT = 0;
+ E_NET_REASON_ENET_CLIENT_CLOSE = 1;
+ E_NET_REASON_ENET_CLIENT_REBIND_FAIL = 2;
+ E_NET_REASON_ENET_CLIENT_SHUTDOWN = 3;
+ E_NET_REASON_ENET_SERVER_RELOGIN = 4;
+ E_NET_REASON_ENET_SERVER_KICK = 5;
+ E_NET_REASON_ENET_SERVER_SHUTDOWN = 6;
+ E_NET_REASON_ENET_NOT_FOUND_SESSION = 7;
+ E_NET_REASON_ENET_LOGIN_UNFINISHED = 8;
+ E_NET_REASON_ENET_PACKET_FREQ_TOO_HIGH = 9;
+ E_NET_REASON_ENET_PING_TIMEOUT = 10;
+ E_NET_REASON_ENET_TRANFER_FAILED = 11;
+ E_NET_REASON_ENET_SERVER_KILL_CLIENT = 12;
+ E_NET_REASON_ENET_CHECK_MOVE_SPEED = 13;
+ E_NET_REASON_ENET_ACCOUNT_PASSWORD_CHANGE = 14;
+ E_NET_REASON_ENET_SECURITY_KICK = 15;
+ E_NET_REASON_ENET_LUA_SHELL_TIMEOUT = 16;
+ E_NET_REASON_ENET_SDKFAIL_KICK = 17;
+ E_NET_REASON_ENET_PACKET_COST_TIME = 18;
+ E_NET_REASON_ENET_PACKET_UNION_FREQ = 19;
+ E_NET_REASON_ENET_WAIT_SND_MAX = 20;
+ E_NET_REASON_ENET_CLIENT_CONNECT_KEY = 1234567890;
+ E_NET_REASON_ENET_CLIENT_EDITOR_CONNECT_KEY = 987654321;
+}
diff --git a/proto/EnterReason.proto b/proto/EnterReason.proto
new file mode 100644
index 00000000..c772f098
--- /dev/null
+++ b/proto/EnterReason.proto
@@ -0,0 +1,78 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum EnterReason {
+ ENTER_REASON_NONE = 0;
+ ENTER_REASON_LOGIN = 1;
+ ENTER_REASON_DUNGEON_REPLAY = 11;
+ ENTER_REASON_DUNGEON_REVIVE_ON_WAYPOINT = 12;
+ ENTER_REASON_DUNGEON_ENTER = 13;
+ ENTER_REASON_DUNGEON_QUIT = 14;
+ ENTER_REASON_GM = 21;
+ ENTER_REASON_QUEST_ROLLBACK = 31;
+ ENTER_REASON_REVIVAL = 32;
+ ENTER_REASON_PERSONAL_SCENE = 41;
+ ENTER_REASON_TRANS_POINT = 42;
+ ENTER_REASON_CLIENT_TRANSMIT = 43;
+ ENTER_REASON_FORCE_DRAG_BACK = 44;
+ ENTER_REASON_TEAM_KICK = 51;
+ ENTER_REASON_TEAM_JOIN = 52;
+ ENTER_REASON_TEAM_BACK = 53;
+ ENTER_REASON_MUIP = 54;
+ ENTER_REASON_DUNGEON_INVITE_ACCEPT = 55;
+ ENTER_REASON_LUA = 56;
+ ENTER_REASON_ACTIVITY_LOAD_TERRAIN = 57;
+ ENTER_REASON_HOST_FROM_SINGLE_TO_MP = 58;
+ ENTER_REASON_MP_PLAY = 59;
+ ENTER_REASON_ANCHOR_POINT = 60;
+ ENTER_REASON_LUA_SKIP_UI = 61;
+ ENTER_REASON_RELOAD_TERRAIN = 62;
+ ENTER_REASON_DRAFT_TRANSFER = 63;
+ ENTER_REASON_ENTER_HOME = 64;
+ ENTER_REASON_EXIT_HOME = 65;
+ ENTER_REASON_CHANGE_HOME_MODULE = 66;
+ ENTER_REASON_GALLERY = 67;
+ ENTER_REASON_HOME_SCENE_JUMP = 68;
+ ENTER_REASON_HIDE_AND_SEEK = 69;
+ ENTER_REASON_SUMMER_TIME_MIST_ZONE = 70;
+ ENTER_REASON_FORCE_QUIT_SCENE = 71;
+ ENTER_REASON_HERO_COURSE = 72;
+ ENTER_REASON_TRANS_CLIMATE = 73;
+ ENTER_REASON_SUMMER_TIME_BOAT_RESTART = 74;
+ ENTER_REASON_TSURUMI_MIST_CLIMATE = 75;
+ ENTER_REASON_TSURUMI_REGIONAL_MIST_CLIMATE = 76;
+ ENTER_REASON_WINTER_CAMP_RESTART = 77;
+ ENTER_REASON_TALK_EXEC_TRANSFER = 78;
+ ENTER_REASON_SEALAMP_BOAT_RESTART = 79;
+ ENTER_REASON_SEALAMP_BOAT_BACK = 80;
+ ENTER_REASON_CHALLENGE_INTERRUPT_BACK = 81;
+ ENTER_REASON_IRODORI_MASTER_TRANSFER = 82;
+ ENTER_REASON_GALLERY_BACK = 83;
+ ENTER_REASON_SUMMER_TIME_V2_BOAT_RESTART = 84;
+ ENTER_REASON_ISLAND_PARTY_GALLERY_START_FAILED = 85;
+ ENTER_REASON_GRAVEN_INNOCENCE_RACE_RESTART = 86;
+ ENTER_REASON_VINTAGE_HUNTING_TRANSFER = 87;
+ ENTER_REASON_FUNGUS_FIGHTER_TRANSFER = 88;
+ ENTER_REASON_BRICK_BREAKER = 89;
+ ENTER_REASON_BRICK_BREAKER_SINGLE = 90;
+ ENTER_REASON_TRANSFER_GUARD_STOP = 91;
+ ENTER_REASON_COIN_COLLECT_SINGLE = 92;
+}
diff --git a/proto/ExchangeMcoinType.proto b/proto/ExchangeMcoinType.proto
new file mode 100644
index 00000000..74f80bec
--- /dev/null
+++ b/proto/ExchangeMcoinType.proto
@@ -0,0 +1,26 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ExchangeMcoinType {
+ EXCHANGE_MCOIN_TYPE_NONE = 0;
+ EXCHANGE_MCOIN_TYPE_PCM_TO_PSN = 1;
+ EXCHANGE_MCOIN_TYPE_PSN_TO_PCM = 2;
+}
diff --git a/proto/ExploreType.proto b/proto/ExploreType.proto
new file mode 100644
index 00000000..eade9742
--- /dev/null
+++ b/proto/ExploreType.proto
@@ -0,0 +1,28 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ExploreType {
+ EXPLORE_TYPE_NONE = 0;
+ EXPLORE_TYPE_CRYSTAL = 1;
+ EXPLORE_TYPE_CHEST = 2;
+ EXPLORE_TYPE_TEMPLE = 3;
+ EXPLORE_TYPE_TELEPORT = 4;
+}
diff --git a/proto/FeatureBlockType.proto b/proto/FeatureBlockType.proto
new file mode 100644
index 00000000..9fff6a6d
--- /dev/null
+++ b/proto/FeatureBlockType.proto
@@ -0,0 +1,28 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum FeatureBlockType {
+ FEATURE_BLOCK_TYPE_NONE = 0;
+ FEATURE_BLOCK_TYPE_CHAT = 1;
+ FEATURE_BLOCK_TYPE_MP = 2;
+ FEATURE_BLOCK_TYPE_CRC = 3;
+ FEATURE_BLOCK_TYPE_HOME = 4;
+}
diff --git a/proto/FetterState.proto b/proto/FetterState.proto
new file mode 100644
index 00000000..fe7f869d
--- /dev/null
+++ b/proto/FetterState.proto
@@ -0,0 +1,28 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum FetterState {
+ FETTER_STATE_NONE = 0;
+ FETTER_STATE_NOT_OPEN = 1;
+ FETTER_STATE_OPEN = 2;
+ FETTER_STATE_FINISH = 3;
+ FETTER_STATE_CONCEAL = 4;
+}
diff --git a/proto/FleurFairActivityDetailInfo.proto b/proto/FleurFairActivityDetailInfo.proto
index b95002e0..1fa445d6 100644
--- a/proto/FleurFairActivityDetailInfo.proto
+++ b/proto/FleurFairActivityDetailInfo.proto
@@ -27,9 +27,9 @@ message FleurFairActivityDetailInfo {
uint32 Unk3300_KONOCAMIIIE = 3;
repeated FleurFairChapterInfo chapter_info_list = 5;
bool is_dungeon_unlocked = 6;
- map Unk3300_HNFNMCKHAJK = 8;
+ map dungeon_section_info_map = 8;
bool is_content_closed = 13;
- map Unk3300_FICFGHJNCOA = 9;
+ map minigame_info_map = 9;
uint32 Unk3300_LOFLGOOIMNH = 10;
uint32 content_close_time = 4;
}
diff --git a/proto/GadgetGuestBanDrop.proto b/proto/GadgetGuestBanDrop.proto
new file mode 100644
index 00000000..b4dd4e6e
--- /dev/null
+++ b/proto/GadgetGuestBanDrop.proto
@@ -0,0 +1,26 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum GadgetGuestBanDrop {
+ GADGET_GUEST_BAN_DROP_NONE = 0;
+ GADGET_GUEST_BAN_DROP_DIE_LUA = 1;
+ GADGET_GUEST_BAN_DROP_SUBFIELD = 2;
+}
diff --git a/proto/GadgetPlayType.proto b/proto/GadgetPlayType.proto
new file mode 100644
index 00000000..969d17f0
--- /dev/null
+++ b/proto/GadgetPlayType.proto
@@ -0,0 +1,25 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum GadgetPlayType {
+ GADGET_PLAY_TYPE_NONE = 0;
+ GADGET_PLAY_TYPE_CRUSIBLE = 1;
+}
diff --git a/proto/GetPlayerTokenRsp.proto b/proto/GetPlayerTokenRsp.proto
index fb829126..05769cbd 100644
--- a/proto/GetPlayerTokenRsp.proto
+++ b/proto/GetPlayerTokenRsp.proto
@@ -51,7 +51,7 @@ message GetPlayerTokenRsp {
int32 retcode = 2;
string client_version_random_key = 1152;
string psn_id = 242;
- bool Unk3300_PPGJMLBGJED = 9;
+ bool is_proficient_player = 9;
uint32 platform_type = 10;
uint32 reg_platform = 646;
StopServerInfo stop_server = 1897;
diff --git a/proto/GroupLoadStrategy.proto b/proto/GroupLoadStrategy.proto
new file mode 100644
index 00000000..1f841690
--- /dev/null
+++ b/proto/GroupLoadStrategy.proto
@@ -0,0 +1,27 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum GroupLoadStrategy {
+ GROUP_LOAD_STRATEGY_NONE = 0;
+ GROUP_LOAD_STRATEGY_SINGLE = 1;
+ GROUP_LOAD_STRATEGY_MULTI = 2;
+ GROUP_LOAD_STRATEGY_ALL = 3;
+}
diff --git a/proto/GroupVariableType.proto b/proto/GroupVariableType.proto
new file mode 100644
index 00000000..50509716
--- /dev/null
+++ b/proto/GroupVariableType.proto
@@ -0,0 +1,25 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum GroupVariableType {
+ GROUP_VARIABLE_TYPE_NORMAL = 0;
+ GROUP_VARIABLE_TYPE_LOGIC_STATE = 1;
+}
diff --git a/proto/HomeBasicInfo.proto b/proto/HomeBasicInfo.proto
index 8dbe5c6c..5702989a 100644
--- a/proto/HomeBasicInfo.proto
+++ b/proto/HomeBasicInfo.proto
@@ -23,10 +23,10 @@ option java_package = "emu.grasscutter.net.proto";
message HomeBasicInfo {
uint64 exp = 3;
- uint32 Unk3300_AKPAPPGOFGN = 11;
- uint32 Unk3300_GNFGFIIGHEA = 14;
+ uint32 home_owner_uid = 11;
+ uint32 cur_room_scene_id = 14;
string owner_nick_name = 6;
- uint32 Unk3300_KGCBFKGGHDD = 4;
+ uint32 cur_module_id = 4;
HomeLimitedShopInfo limited_shop_info = 13;
bool is_in_edit_mode = 7;
uint32 level = 9;
diff --git a/proto/HomeLimitedShopInfo.proto b/proto/HomeLimitedShopInfo.proto
index 3d393427..a6df3ee3 100644
--- a/proto/HomeLimitedShopInfo.proto
+++ b/proto/HomeLimitedShopInfo.proto
@@ -23,9 +23,9 @@ option java_package = "emu.grasscutter.net.proto";
message HomeLimitedShopInfo {
uint32 uid = 9;
- uint32 Unk3300_FKGDIDFIBAA = 8;
+ fixed32 next_guest_open_time = 8;
Vector djinn_rot = 11;
- uint32 Unk3300_DLIEFPNMGFC = 5;
+ fixed32 next_open_time = 5;
Vector djinn_pos = 2;
- uint32 Unk3300_NOJPDKDPPPA = 15;
+ fixed32 next_close_time = 15;
}
diff --git a/proto/HomeResource.proto b/proto/HomeResource.proto
index 787076dd..0eeabf52 100644
--- a/proto/HomeResource.proto
+++ b/proto/HomeResource.proto
@@ -20,7 +20,7 @@ syntax = "proto3";
option java_package = "emu.grasscutter.net.proto";
message HomeResource {
- uint32 Unk3300_LJCAIDECBND = 6;
+ uint32 store_limit = 6;
fixed32 next_refresh_time = 13;
- uint32 Unk3300_LINAPIIPNOB = 1;
+ uint32 store_value = 1;
}
diff --git a/proto/LeaveWorldReason.proto b/proto/LeaveWorldReason.proto
new file mode 100644
index 00000000..f005f6fe
--- /dev/null
+++ b/proto/LeaveWorldReason.proto
@@ -0,0 +1,27 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum LeaveWorldReason {
+ LEAVE_WORLD_REASON_NONE = 0;
+ LEAVE_WORLD_REASON_LOGOUT = 1;
+ LEAVE_WORLD_REASON_BACK_MY_WORLD = 2;
+ LEAVE_WORLD_REASON_KICK_BY_OWNER = 3;
+}
diff --git a/proto/LoginRewardConfigType.proto b/proto/LoginRewardConfigType.proto
new file mode 100644
index 00000000..24cd537a
--- /dev/null
+++ b/proto/LoginRewardConfigType.proto
@@ -0,0 +1,25 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum LoginRewardConfigType {
+ LOGIN_REWARD_CONFIG_TYPE_IMMEDIDATE = 0;
+ LOGIN_REWARD_CONFIG_TYPE_FIRST = 1;
+}
diff --git a/proto/LuaShellNotifyType.proto b/proto/LuaShellNotifyType.proto
new file mode 100644
index 00000000..752e216a
--- /dev/null
+++ b/proto/LuaShellNotifyType.proto
@@ -0,0 +1,25 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum LuaShellNotifyType {
+ LUA_SHELL_NOTIFY_TYPE_LUASHELL_NOTIFY = 0;
+ LUA_SHELL_NOTIFY_TYPE_LUASHELL_HIDE = 1;
+}
diff --git a/proto/MathExpressionType.proto b/proto/MathExpressionType.proto
new file mode 100644
index 00000000..c934ac47
--- /dev/null
+++ b/proto/MathExpressionType.proto
@@ -0,0 +1,29 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum MathExpressionType {
+ MATH_EXPRESSION_TYPE_EXPR_NONE = 0;
+ MATH_EXPRESSION_TYPE_EXPR_LEVEL = 1;
+ MATH_EXPRESSION_TYPE_EXPR_REGISTER_TIME = 2;
+ MATH_EXPRESSION_TYPE_EXPR_LAST_LOGIN_TIME = 3;
+ MATH_EXPRESSION_TYPE_EXPR_TOTAL_LOGIN_DAYS = 4;
+ MATH_EXPRESSION_TYPE_EXPR_PLATFORM = 5;
+}
diff --git a/proto/MonsterGuestBanDrop.proto b/proto/MonsterGuestBanDrop.proto
new file mode 100644
index 00000000..05dbdb80
--- /dev/null
+++ b/proto/MonsterGuestBanDrop.proto
@@ -0,0 +1,30 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum MonsterGuestBanDrop {
+ MONSTER_GUEST_BAN_DROP_NONE = 0;
+ MONSTER_GUEST_BAN_DROP_DIE_EXP = 1;
+ MONSTER_GUEST_BAN_DROP_DIE_LUA = 2;
+ MONSTER_GUEST_BAN_DROP_DIE_EXCEL = 4;
+ MONSTER_GUEST_BAN_DROP_DIE_ACTIVITY = 8;
+ MONSTER_GUEST_BAN_DROP_HP = 16;
+ MONSTER_GUEST_BAN_DROP_SUBFIELD = 32;
+}
diff --git a/proto/MpPlayType.proto b/proto/MpPlayType.proto
new file mode 100644
index 00000000..241aa2a3
--- /dev/null
+++ b/proto/MpPlayType.proto
@@ -0,0 +1,26 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum MpPlayType {
+ MP_PLAY_TYPE_NONE = 0;
+ MP_PLAY_TYPE_DUNGEON = 1;
+ MP_PLAY_TYPE_CRUCIBLE = 2;
+}
diff --git a/proto/NpcTalkState.proto b/proto/NpcTalkState.proto
new file mode 100644
index 00000000..b4b9043e
--- /dev/null
+++ b/proto/NpcTalkState.proto
@@ -0,0 +1,26 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum NpcTalkState {
+ NPC_TALK_STATE_NONE = 0;
+ NPC_TALK_STATE_AUTO = 1;
+ NPC_TALK_STATE_MANUAL = 2;
+}
diff --git a/proto/OpActivityType.proto b/proto/OpActivityType.proto
new file mode 100644
index 00000000..d1d40f71
--- /dev/null
+++ b/proto/OpActivityType.proto
@@ -0,0 +1,28 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum OpActivityType {
+ OP_ACTIVITY_TYPE_NONE = 0;
+ OP_ACTIVITY_TYPE_SIGN_IN = 1;
+ OP_ACTIVITY_TYPE_BONUS = 2;
+ OP_ACTIVITY_TYPE_TRAVEL_BUSINESS = 3;
+ OP_ACTIVITY_TYPE_CRUCIBLE = 4;
+}
diff --git a/proto/PlatformCategory.proto b/proto/PlatformCategory.proto
new file mode 100644
index 00000000..175b698c
--- /dev/null
+++ b/proto/PlatformCategory.proto
@@ -0,0 +1,26 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum PlatformCategory {
+ PLATFORM_CATEGORY_NONE = 0;
+ PLATFORM_CATEGORY_PCM = 1;
+ PLATFORM_CATEGORY_PSN = 2;
+}
diff --git a/proto/PlayerEnterSceneNotify.proto b/proto/PlayerEnterSceneNotify.proto
index eed0c98b..37599cf1 100644
--- a/proto/PlayerEnterSceneNotify.proto
+++ b/proto/PlayerEnterSceneNotify.proto
@@ -43,7 +43,7 @@ message PlayerEnterSceneNotify {
EnterType type = 12;
repeated uint32 scene_tag_id_list = 5;
uint64 scene_begin_time = 9;
- uint32 Unk3300_OOLKIEKNKKN = 287;
+ uint32 enter_reason = 287;
uint32 target_uid = 8;
Vector prev_pos = 10;
string scene_transaction = 370;
diff --git a/proto/PlayerLoginReq.proto b/proto/PlayerLoginReq.proto
index 83188c4b..06a5601c 100644
--- a/proto/PlayerLoginReq.proto
+++ b/proto/PlayerLoginReq.proto
@@ -42,7 +42,7 @@ message PlayerLoginReq {
uint32 language_type = 11;
uint32 client_data_version = 847;
uint32 account_type = 7;
- string Unk3300_BBAABEHNFOE = 868;
+ string security_library_md5 = 868;
string online_id = 577;
uint32 Unk3300_PMGFBMJNNCL = 82;
string device_name = 12;
@@ -61,7 +61,7 @@ message PlayerLoginReq {
uint32 Unk3300_PIPLDEAPMMN = 1790;
TrackingIOInfo tracking_io_info = 1713;
bool is_transfer = 624;
- string Unk3300_BIAKNIALBFJ = 828;
+ string security_library_version = 828;
string client_version = 2;
bool is_guest = 13;
string system_version = 6;
diff --git a/proto/PlayerLoginRsp.proto b/proto/PlayerLoginRsp.proto
index 3f990171..85be5faf 100644
--- a/proto/PlayerLoginRsp.proto
+++ b/proto/PlayerLoginRsp.proto
@@ -34,10 +34,10 @@ message PlayerLoginRsp {
// }
uint64 login_rand = 9;
- bytes Unk3300_DHCMDHHDLFF = 2;
- string Unk3300_HMGCPAGLDHB = 16;
+ bytes player_data = 2;
+ string client_silence_md5 = 16;
double total_tick_time = 530;
- bool Unk3300_LLIJKLDBHNN = 5;
+ bool is_use_ability_hash = 5;
bool is_audit = 930;
string birthday = 1387;
bool Unk3300_HGFNECIJDLN = 13;
@@ -50,11 +50,11 @@ message PlayerLoginRsp {
ResVersionConfig res_version_config = 808;
uint32 client_silence_data_version = 1;
uint32 target_uid = 15;
- string Unk3300_NEICPFBPNPD = 99;
- bool Unk3300_CANONIPHMDI = 1522;
+ string register_cps = 99;
+ bool is_sc_open = 1522;
bool Unk3300_IIHDKKNJPGD = 8;
uint32 player_data_version = 14;
- bytes Unk3300_MOPDDGHMKBD = 1888;
+ bytes sc_info = 1888;
string country_code = 360;
ResVersionConfig next_res_version_config = 1688;
bool Unk3300_IADLIIMGDMC = 17;
@@ -65,7 +65,7 @@ message PlayerLoginRsp {
map ability_hash_map = 3;
int32 ability_hash_code = 12;
uint32 client_data_version = 10;
- string Unk3300_OPGDBOLKLJA = 1299;
+ string client_md5 = 1299;
int32 retcode = 7;
repeated FeatureBlockInfo feature_block_info_list = 138;
}
diff --git a/proto/PlayerTag.proto b/proto/PlayerTag.proto
new file mode 100644
index 00000000..1cee8f13
--- /dev/null
+++ b/proto/PlayerTag.proto
@@ -0,0 +1,26 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum PlayerTag {
+ PLAYER_TAG_NORMAL = 0;
+ PLAYER_TAG_SUB_ACCOUNT = 3;
+ PLAYER_TAG_SUB_ACCOUNT_TRANS_TO_NORMAL = 5;
+}
diff --git a/proto/RegionType.proto b/proto/RegionType.proto
new file mode 100644
index 00000000..91d03e0b
--- /dev/null
+++ b/proto/RegionType.proto
@@ -0,0 +1,27 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum RegionType {
+ REGION_TYPE_PRODUCT = 0;
+ REGION_TYPE_EXAM = 1;
+ REGION_TYPE_DEV_PUB = 2;
+ REGION_TYPE_DEV_PRI = 3;
+}
diff --git a/proto/ReliquaryFilterKey.proto b/proto/ReliquaryFilterKey.proto
new file mode 100644
index 00000000..468c8a5b
--- /dev/null
+++ b/proto/ReliquaryFilterKey.proto
@@ -0,0 +1,27 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ReliquaryFilterKey {
+ RELIQUARY_FILTER_KEY_NONE = 0;
+ RELIQUARY_FILTER_KEY_LOCK = 1;
+ RELIQUARY_FILTER_KEY_LEVEL = 2;
+ RELIQUARY_FILTER_KEY_WEARING = 3;
+}
diff --git a/proto/ReliquaryFilterLevelState.proto b/proto/ReliquaryFilterLevelState.proto
new file mode 100644
index 00000000..d543bce6
--- /dev/null
+++ b/proto/ReliquaryFilterLevelState.proto
@@ -0,0 +1,26 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ReliquaryFilterLevelState {
+ RELIQUARY_FILTER_LEVEL_STATE_NONE = 0;
+ RELIQUARY_FILTER_LEVEL_STATE_FULL_LEVEL = 1;
+ RELIQUARY_FILTER_LEVEL_STATE_NOT_FULL_LEVEL = 2;
+}
diff --git a/proto/ReliquaryFilterLockState.proto b/proto/ReliquaryFilterLockState.proto
new file mode 100644
index 00000000..16515744
--- /dev/null
+++ b/proto/ReliquaryFilterLockState.proto
@@ -0,0 +1,26 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ReliquaryFilterLockState {
+ RELIQUARY_FILTER_LOCK_STATE_NONE = 0;
+ RELIQUARY_FILTER_LOCK_STATE_LOCK = 1;
+ RELIQUARY_FILTER_LOCK_STATE_UNLOCK = 2;
+}
diff --git a/proto/ReliquaryFilterWearedState.proto b/proto/ReliquaryFilterWearedState.proto
new file mode 100644
index 00000000..eab270ad
--- /dev/null
+++ b/proto/ReliquaryFilterWearedState.proto
@@ -0,0 +1,26 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ReliquaryFilterWearedState {
+ RELIQUARY_FILTER_WEARED_STATE_NONE = 0;
+ RELIQUARY_FILTER_WEARED_STATE_HAS_BEEN_WEARED = 1;
+ RELIQUARY_FILTER_WEARED_STATE_HAS_NOT_BEEN_WEARED = 2;
+}
diff --git a/proto/SceneidConstValue.proto b/proto/SceneidConstValue.proto
new file mode 100644
index 00000000..6f6d8fd5
--- /dev/null
+++ b/proto/SceneidConstValue.proto
@@ -0,0 +1,29 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum SceneidConstValue {
+ SCENEID_CONST_VALUE_NONE = 0;
+ SCENEID_CONST_VALUE_MAIN = 3;
+ SCENEID_CONST_VALUE_ISLAND = 4;
+ SCENEID_CONST_VALUE_ENKANOMIYA = 5;
+ SCENEID_CONST_VALUE_MICHIAE_MATSURI = 7;
+ SCENEID_CONST_VALUE_28_ISLAND = 9;
+}
diff --git a/proto/SecurityCheckType.proto b/proto/SecurityCheckType.proto
new file mode 100644
index 00000000..7072a8d9
--- /dev/null
+++ b/proto/SecurityCheckType.proto
@@ -0,0 +1,25 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum SecurityCheckType {
+ SECURITY_CHECK_TYPE_NONE = 0;
+ SECURITY_CHECK_TYPE_LOGIN = 1;
+}
diff --git a/proto/SegmentCRCModuleType.proto b/proto/SegmentCRCModuleType.proto
new file mode 100644
index 00000000..1b61655c
--- /dev/null
+++ b/proto/SegmentCRCModuleType.proto
@@ -0,0 +1,31 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum SegmentCRCModuleType {
+ SEGMENT_CRC_MODULE_TYPE_NONE = 0;
+ SEGMENT_CRC_MODULE_TYPE_PC_UNITYPLAYER = 1;
+ SEGMENT_CRC_MODULE_TYPE_PC_USERASSEMBLY = 2;
+ SEGMENT_CRC_MODULE_TYPE_PC_XLUA = 3;
+ SEGMENT_CRC_MODULE_TYPE_ANDROID_LIBIL2CPP = 11;
+ SEGMENT_CRC_MODULE_TYPE_ANDROID_LIBUNITY = 12;
+ SEGMENT_CRC_MODULE_TYPE_ANDROID_LIBXLUA = 13;
+ SEGMENT_CRC_MODULE_TYPE_IOS_HK4E = 21;
+}
diff --git a/proto/ServiceType.proto b/proto/ServiceType.proto
new file mode 100644
index 00000000..05145d46
--- /dev/null
+++ b/proto/ServiceType.proto
@@ -0,0 +1,44 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum ServiceType {
+ SERVICE_TYPE_NONE = 0;
+ SERVICE_TYPE_CLIENT = 1;
+ SERVICE_TYPE_GATE = 2;
+ SERVICE_TYPE_GAME = 3;
+ SERVICE_TYPE_NODE = 4;
+ SERVICE_TYPE_DB = 5;
+ SERVICE_TYPE_SNS = 6;
+ SERVICE_TYPE_DISPATCH = 7;
+ SERVICE_TYPE_MUIP = 8;
+ SERVICE_TYPE_OFFLINE_MSG = 9;
+ SERVICE_TYPE_MAIL = 10;
+ SERVICE_TYPE_MP = 11;
+ SERVICE_TYPE_HTTPPROXY = 12;
+ SERVICE_TYPE_ACTIVITY = 13;
+ SERVICE_TYPE_PATHFINDING = 14;
+ SERVICE_TYPE_SOCIAL = 15;
+ SERVICE_TYPE_OA = 16;
+ SERVICE_TYPE_MATCH = 17;
+ SERVICE_TYPE_OFFLINE_OP = 18;
+ SERVICE_TYPE_TOTHEMOON = 19;
+ SERVICE_TYPE_GCG = 20;
+}
diff --git a/proto/StoreWeightLimitNotify.proto b/proto/StoreWeightLimitNotify.proto
index eaab88f2..3d3c999d 100644
--- a/proto/StoreWeightLimitNotify.proto
+++ b/proto/StoreWeightLimitNotify.proto
@@ -30,7 +30,7 @@ message StoreWeightLimitNotify {
// ENET_IS_RELIABLE = 1;
// }
- uint32 Unk3300_ICDKCEOJKKG = 14;
+ uint32 reliquary_count_limit = 14;
uint32 Unk3300_NIKMCBLHFNJ = 10;
uint32 Unk3300_OONMFCGDMMF = 5;
uint32 Unk3300_JGPODDEKAPB = 1;
diff --git a/proto/TowerAllDataRsp.proto b/proto/TowerAllDataRsp.proto
index 27dbc678..be24b386 100644
--- a/proto/TowerAllDataRsp.proto
+++ b/proto/TowerAllDataRsp.proto
@@ -33,11 +33,11 @@ message TowerAllDataRsp {
// }
uint32 Unk3300_HCDFJBHMHHF = 6;
- uint32 Unk3300_ILDODKDADMI = 8;
+ uint32 next_schedule_change_time = 8;
bool is_first_interact = 5;
uint32 tower_schedule_id = 1;
uint32 Unk3300_JBACKENDHDG = 10;
- uint32 Unk3300_KGHOIIAEIHH = 610;
+ uint32 schedule_start_time = 610;
int32 retcode = 11;
uint32 Unk3300_OHCHCJGJIDK = 4;
uint32 Unk3300_BBHKBDDFPFE = 2;
diff --git a/proto/TowerBriefDataNotify.proto b/proto/TowerBriefDataNotify.proto
index 2f850112..121ceb98 100644
--- a/proto/TowerBriefDataNotify.proto
+++ b/proto/TowerBriefDataNotify.proto
@@ -28,11 +28,11 @@ message TowerBriefDataNotify {
// ENET_IS_RELIABLE = 1;
// }
- uint32 Unk3300_OLBDJEGPDFE = 6;
- uint32 Unk3300_ILDODKDADMI = 9;
+ uint32 last_level_index = 6;
+ uint32 next_schedule_change_time = 9;
bool is_finished_entrance_floor = 14;
- uint32 Unk3300_CFKJBOIJDBD = 1;
+ uint32 last_floor_index = 1;
uint32 tower_schedule_id = 11;
- uint32 Unk3300_KGHOIIAEIHH = 8;
- uint32 Unk3300_CNMMBJABMKA = 7;
+ uint32 schedule_start_time = 8;
+ uint32 total_star_num = 7;
}
diff --git a/proto/VehicleSlot.proto b/proto/VehicleSlot.proto
new file mode 100644
index 00000000..72b48e69
--- /dev/null
+++ b/proto/VehicleSlot.proto
@@ -0,0 +1,24 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum VehicleSlot {
+ VEHICLE_SLOT_OPERATOR = 0;
+}
diff --git a/proto/VirtualItem.proto b/proto/VirtualItem.proto
new file mode 100644
index 00000000..76dab844
--- /dev/null
+++ b/proto/VirtualItem.proto
@@ -0,0 +1,85 @@
+// Proto has been converted from Sorapointa to Grasscutter format
+// Sorapointa - A server software re-implementation for a certain anime game, and avoid sorapointa.
+// Copyright (C) 2022 Sorapointa 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";
+
+enum VirtualItem {
+ VIRTUAL_ITEM_VIRTUAL_NONE = 0;
+ VIRTUAL_ITEM_VIRTUAL_AVATAR_EXP = 101;
+ VIRTUAL_ITEM_VIRTUAL_PLAYER_EXP = 102;
+ VIRTUAL_ITEM_VIRTUAL_FETTER_EXP = 105;
+ VIRTUAL_ITEM_VIRTUAL_RESIN = 106;
+ VIRTUAL_ITEM_VIRTUAL_LEGENDARY_KEY = 107;
+ VIRTUAL_ITEM_VIRTUAL_ASTER_PROGRESS = 108;
+ VIRTUAL_ITEM_VIRTUAL_ASTER_CREDIT = 109;
+ VIRTUAL_ITEM_VIRTUAL_ASTER_TOKEN = 110;
+ VIRTUAL_ITEM_VIRTUAL_SHIMMERING_ESSENCE = 111;
+ VIRTUAL_ITEM_VIRTUAL_WARM_ESSENCE = 112;
+ VIRTUAL_ITEM_VIRTUAL_WONDROUS_ESSENCE = 113;
+ VIRTUAL_ITEM_VIRTUAL_TREASURE_MAP_TOKEN = 114;
+ VIRTUAL_ITEM_VIRTUAL_SEA_LAMP_COIN = 115;
+ VIRTUAL_ITEM_VIRTUAL_SEA_LAMP_POPULARITY = 116;
+ VIRTUAL_ITEM_VIRTUAL_MECHANICUS_COIN = 117;
+ VIRTUAL_ITEM_VIRTUAL_FLEUR_FAIR_CREDIT = 118;
+ VIRTUAL_ITEM_VIRTUAL_FLEUR_FAIR_TOKEN = 119;
+ VIRTUAL_ITEM_VIRTUAL_WATER_SPIRIT_COIN = 120;
+ VIRTUAL_ITEM_VIRTUAL_HOME_EXP = 121;
+ VIRTUAL_ITEM_VIRTUAL_CHANNELLER_SLAB_TOKEN = 122;
+ VIRTUAL_ITEM_VIRTUAL_HIDE_AND_SEEK_COIN = 123;
+ VIRTUAL_ITEM_VIRTUAL_SUMMER_TIME_DRAFT_WOOD = 124;
+ VIRTUAL_ITEM_VIRTUAL_SUMMER_TIME_MINI_HARPASTUM = 125;
+ VIRTUAL_ITEM_VIRTUAL_BOUNCE_CONJURING_COIN = 126;
+ VIRTUAL_ITEM_VIRTUAL_BLITZ_RUSH_COIN_A = 127;
+ VIRTUAL_ITEM_VIRTUAL_BLITZ_RUSH_COIN_B = 128;
+ VIRTUAL_ITEM_VIRTUAL_CHESS_EXP = 129;
+ VIRTUAL_ITEM_VIRTUAL_CHESS_COIN = 130;
+ VIRTUAL_ITEM_VIRTUAL_LUNA_RITE_ATMOSPHERE = 131;
+ VIRTUAL_ITEM_VIRTUAL_ROGUELIKE_COIN_A = 132;
+ VIRTUAL_ITEM_VIRTUAL_ROGUELIKE_COIN_B = 133;
+ VIRTUAL_ITEM_VIRTUAL_ROGUELIKE_COIN_C = 134;
+ VIRTUAL_ITEM_VIRTUAL_WINTER_CAMP_COIN_A = 135;
+ VIRTUAL_ITEM_VIRTUAL_WINTER_CAMP_COIN_B = 136;
+ VIRTUAL_ITEM_VIRTUAL_LANTERN_RITE_COIN_A = 137;
+ VIRTUAL_ITEM_VIRTUAL_LANTERN_RITE_COIN_B = 138;
+ VIRTUAL_ITEM_VIRTUAL_LANTERN_RITE_COIN_C = 139;
+ VIRTUAL_ITEM_VIRTUAL_ROGUE_DIARY_COIN = 140;
+ VIRTUAL_ITEM_VIRTUAL_SUMMER_TIME_V2_COIN = 141;
+ VIRTUAL_ITEM_VIRTUAL_ROGUE_DIARY_DUNGEON_COIN = 142;
+ VIRTUAL_ITEM_VIRTUAL_GRAVEN_INNOCENCE_COIN_A = 143;
+ VIRTUAL_ITEM_VIRTUAL_GRAVEN_INNOCENCE_COIN_B = 144;
+ VIRTUAL_ITEM_VIRTUAL_TREASURE_SEELIE_COIN = 145;
+ VIRTUAL_ITEM_VIRTUAL_VINTAGE_POPULARITY = 147;
+ VIRTUAL_ITEM_VIRTUAL_GCG_EXP = 146;
+ VIRTUAL_ITEM_VIRTUAL_VINTAGE_MARKET_COIN_A = 148;
+ VIRTUAL_ITEM_VIRTUAL_VINTAGE_MARKET_COIN_B = 149;
+ VIRTUAL_ITEM_VIRTUAL_VINTAGE_MARKET_COIN_C = 150;
+ VIRTUAL_ITEM_VIRTUAL_FUNGUS_FIGHTER_CAPTURE_COIN = 151;
+ VIRTUAL_ITEM_VIRTUAL_FUNGUS_FIGHTER_TRAINING_COIN = 152;
+ VIRTUAL_ITEM_VIRTUAL_EFFIGY_CHALLENGE_V2_COIN = 153;
+ VIRTUAL_ITEM_VIRTUAL_BRICK_BREAKER_COIN = 155;
+ VIRTUAL_ITEM_VIRTUAL_HCOIN = 201;
+ VIRTUAL_ITEM_VIRTUAL_SCOIN = 202;
+ VIRTUAL_ITEM_VIRTUAL_MCOIN = 203;
+ VIRTUAL_ITEM_VIRTUAL_HOME_COIN = 204;
+ VIRTUAL_ITEM_VIRTUAL_GCG_COIN = 205;
+ VIRTUAL_ITEM_VIRTUAL_INAZUMA_REPUTATION = 314;
+ VIRTUAL_ITEM_VIRTUAL_MENGDE_REPUTATION = 315;
+ VIRTUAL_ITEM_VIRTUAL_SUMERU_REPUTATION = 316;
+ VIRTUAL_ITEM_VIRTUAL_LIYUE_REPUTATION = 317;
+}