H.D.D. and Combat commissions implementation
Implement Combat commissions (PureHollowBattle and LongFight) (including Rally commissions) Refactor some battle structures Unlock hollow quests (QuestInfo and YorozuyaInfo)
This commit is contained in:
parent
f99165e452
commit
50f694add0
34 changed files with 131305 additions and 143 deletions
31203
assets/FileCfg/BattleEventConfigTemplateTb.json
Normal file
31203
assets/FileCfg/BattleEventConfigTemplateTb.json
Normal file
File diff suppressed because it is too large
Load diff
1262
assets/FileCfg/BattleGroupConfigTemplateTb.json
Normal file
1262
assets/FileCfg/BattleGroupConfigTemplateTb.json
Normal file
File diff suppressed because it is too large
Load diff
212
assets/FileCfg/HollowConfigTemplateTb.json
Normal file
212
assets/FileCfg/HollowConfigTemplateTb.json
Normal file
|
@ -0,0 +1,212 @@
|
|||
[
|
||||
{
|
||||
"ID": 100001,
|
||||
"FOPDNLNNHDJ": 1000,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_Arcade",
|
||||
"EFPBDDJIJBO": "1040140114",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_RallyQuest.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_L.prefab",
|
||||
"LDKNDDHOHND": "FF0019FF",
|
||||
"EEBAIANJMEC": "006EFFFF|FF001900",
|
||||
"EKMLECIKMID": false,
|
||||
"FNIGJDFMHBA": "",
|
||||
"BECFHCOGPKG": ""
|
||||
},
|
||||
{
|
||||
"ID": 100101,
|
||||
"FOPDNLNNHDJ": 1001,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_Story",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Story.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_M.prefab",
|
||||
"LDKNDDHOHND": "FF9500FF",
|
||||
"EEBAIANJMEC": "FF9500FF|FFDE0000",
|
||||
"EKMLECIKMID": false,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_01"
|
||||
},
|
||||
{
|
||||
"ID": 100102,
|
||||
"FOPDNLNNHDJ": 1001,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_exploration",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Explore.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_M02.prefab",
|
||||
"LDKNDDHOHND": "00A1FFFF",
|
||||
"EEBAIANJMEC": "00A1FFFF|00FFD300",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips03.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_03"
|
||||
},
|
||||
{
|
||||
"ID": 100103,
|
||||
"FOPDNLNNHDJ": 1001,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_combat",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Combat.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_S.prefab",
|
||||
"LDKNDDHOHND": "00A1FFFF",
|
||||
"EEBAIANJMEC": "00A1FFFF|00FFD300",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips02.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_02"
|
||||
},
|
||||
{
|
||||
"ID": 100201,
|
||||
"FOPDNLNNHDJ": 1002,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_Story",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Story.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_M.prefab",
|
||||
"LDKNDDHOHND": "FF9500FF",
|
||||
"EEBAIANJMEC": "FF9500FF|FFDE0000",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_01"
|
||||
},
|
||||
{
|
||||
"ID": 100202,
|
||||
"FOPDNLNNHDJ": 1002,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_exploration",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Explore.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_M02.prefab",
|
||||
"LDKNDDHOHND": "00A1FFFF",
|
||||
"EEBAIANJMEC": "00A1FFFF|00FFD300",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips03.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_03"
|
||||
},
|
||||
{
|
||||
"ID": 100203,
|
||||
"FOPDNLNNHDJ": 1002,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_combat",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Combat.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_S.prefab",
|
||||
"LDKNDDHOHND": "00A1FFFF",
|
||||
"EEBAIANJMEC": "00A1FFFF|00FFD300",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips02.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_02"
|
||||
},
|
||||
{
|
||||
"ID": 100301,
|
||||
"FOPDNLNNHDJ": 1003,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_Story",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Story.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_M.prefab",
|
||||
"LDKNDDHOHND": "FF9500FF",
|
||||
"EEBAIANJMEC": "FF9500FF|FFDE0000",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_01"
|
||||
},
|
||||
{
|
||||
"ID": 100302,
|
||||
"FOPDNLNNHDJ": 1003,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_exploration",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Explore.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_M02.prefab",
|
||||
"LDKNDDHOHND": "00A1FFFF",
|
||||
"EEBAIANJMEC": "00A1FFFF|00FFD300",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips03.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_03"
|
||||
},
|
||||
{
|
||||
"ID": 100303,
|
||||
"FOPDNLNNHDJ": 1003,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_combat",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Combat.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_S.prefab",
|
||||
"LDKNDDHOHND": "00A1FFFF",
|
||||
"EEBAIANJMEC": "00A1FFFF|00FFD300",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips02.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_02"
|
||||
},
|
||||
{
|
||||
"ID": 100401,
|
||||
"FOPDNLNNHDJ": 1004,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_BigWorld",
|
||||
"EFPBDDJIJBO": "1100140008",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_HighRisk.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_L.prefab",
|
||||
"LDKNDDHOHND": "00A1FFFF",
|
||||
"EEBAIANJMEC": "00A1FFFF|00FFD300",
|
||||
"EKMLECIKMID": false,
|
||||
"FNIGJDFMHBA": "",
|
||||
"BECFHCOGPKG": ""
|
||||
},
|
||||
{
|
||||
"ID": 100501,
|
||||
"FOPDNLNNHDJ": 1005,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_Story",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Story.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_M.prefab",
|
||||
"LDKNDDHOHND": "FF9500FF",
|
||||
"EEBAIANJMEC": "FF9500FF|FFDE0000",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_01"
|
||||
},
|
||||
{
|
||||
"ID": 100502,
|
||||
"FOPDNLNNHDJ": 1005,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_exploration",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Explore.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_M02.prefab",
|
||||
"LDKNDDHOHND": "00A1FFFF",
|
||||
"EEBAIANJMEC": "00A1FFFF|00FFD300",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips03.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_03"
|
||||
},
|
||||
{
|
||||
"ID": 100503,
|
||||
"FOPDNLNNHDJ": 1005,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_combat",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Combat.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_S.prefab",
|
||||
"LDKNDDHOHND": "00A1FFFF",
|
||||
"EEBAIANJMEC": "00A1FFFF|00FFD300",
|
||||
"EKMLECIKMID": true,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips02.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_02"
|
||||
},
|
||||
{
|
||||
"ID": 109901,
|
||||
"FOPDNLNNHDJ": 1099,
|
||||
"DIIDBBGLDOL": "HollowGroupNameText_Story",
|
||||
"EFPBDDJIJBO": "",
|
||||
"OCBLGHECPLH": "Hollow_LockedHint_01",
|
||||
"BEIEFNLAJCH": "UI/Sprite/A1DynamicLoad/YorozuyaPage/UnPacker/Icon_Story.png",
|
||||
"CCFBKFKFJGM": "UI/3D/Yorozuya/Yorozuya_Hollow_Sphere_M.prefab",
|
||||
"LDKNDDHOHND": "FF9500FF",
|
||||
"EEBAIANJMEC": "FF9500FF|FFDE0000",
|
||||
"EKMLECIKMID": false,
|
||||
"FNIGJDFMHBA": "UI/Menus/Widget/Yorozuya/Icon_MapTips.prefab",
|
||||
"BECFHCOGPKG": "YorozuyaMapTipsUnLockChange_01"
|
||||
}
|
||||
]
|
11622
assets/FileCfg/HollowQuestTemplateTb.json
Normal file
11622
assets/FileCfg/HollowQuestTemplateTb.json
Normal file
File diff suppressed because it is too large
Load diff
84672
assets/FileCfg/OnceRewardTemplateTb.json
Normal file
84672
assets/FileCfg/OnceRewardTemplateTb.json
Normal file
File diff suppressed because it is too large
Load diff
882
assets/FileCfg/SubAreaDataTemplateTb.json
Normal file
882
assets/FileCfg/SubAreaDataTemplateTb.json
Normal file
|
@ -0,0 +1,882 @@
|
|||
[
|
||||
{
|
||||
"AreaID": 500000101,
|
||||
"BattleEventID": 5000001,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000001_1.asset",
|
||||
"MDMOGIDKCLG": "metro4_2",
|
||||
"LLPNKBBJHKL": "PlayerPos_E2",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000102,
|
||||
"BattleEventID": 5000001,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000001_2.asset",
|
||||
"MDMOGIDKCLG": "metro4_2",
|
||||
"LLPNKBBJHKL": "PlayerPos_E1",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000103,
|
||||
"BattleEventID": 5000001,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000001_3.asset",
|
||||
"MDMOGIDKCLG": "metro4_2",
|
||||
"LLPNKBBJHKL": "PlayerPos_E1",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000201,
|
||||
"BattleEventID": 5000002,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000002_1.asset",
|
||||
"MDMOGIDKCLG": "Construction2_3_Boss",
|
||||
"LLPNKBBJHKL": "PlayerPos_B5",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Thunder",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000202,
|
||||
"BattleEventID": 5000002,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000002_2.asset",
|
||||
"MDMOGIDKCLG": "Construction2_3_Boss",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Thunder",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000203,
|
||||
"BattleEventID": 5000002,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000002_3.asset",
|
||||
"MDMOGIDKCLG": "Construction2_3_Boss",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Thunder",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000301,
|
||||
"BattleEventID": 5000003,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000003_1.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_3_1",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000302,
|
||||
"BattleEventID": 5000003,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000003_2.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_3_1",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000303,
|
||||
"BattleEventID": 5000003,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000003_3.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_3_1",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000401,
|
||||
"BattleEventID": 5000004,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000004_1.asset",
|
||||
"MDMOGIDKCLG": "Stage_Zero_SpecialRoom_5",
|
||||
"LLPNKBBJHKL": "PlayerPos_E1",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000402,
|
||||
"BattleEventID": 5000004,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000004_2.asset",
|
||||
"MDMOGIDKCLG": "Stage_Zero_SpecialRoom_5",
|
||||
"LLPNKBBJHKL": "PlayerPos_SP",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 500000403,
|
||||
"BattleEventID": 5000004,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5000004_3.asset",
|
||||
"MDMOGIDKCLG": "Stage_Zero_SpecialRoom_5",
|
||||
"LLPNKBBJHKL": "PlayerPos_SP",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501010101,
|
||||
"BattleEventID": 5010101,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010101_1.asset",
|
||||
"MDMOGIDKCLG": "metro4_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501010102,
|
||||
"BattleEventID": 5010101,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010101_2.asset",
|
||||
"MDMOGIDKCLG": "metro4_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint2",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501010103,
|
||||
"BattleEventID": 5010101,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010101_3.asset",
|
||||
"MDMOGIDKCLG": "metro4_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint3",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501010104,
|
||||
"BattleEventID": 5010101,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010101_4.asset",
|
||||
"MDMOGIDKCLG": "Stage_Zero_ComplexRoom_22",
|
||||
"LLPNKBBJHKL": "SpecialPlayerPos_1",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501010105,
|
||||
"BattleEventID": 5010101,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010101_5.asset",
|
||||
"MDMOGIDKCLG": "metro4_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint5",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501011101,
|
||||
"BattleEventID": 5010111,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010111_1.asset",
|
||||
"MDMOGIDKCLG": "metro4_2_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Rain",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501011102,
|
||||
"BattleEventID": 5010111,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010111_2.asset",
|
||||
"MDMOGIDKCLG": "metro4_2_Rally",
|
||||
"LLPNKBBJHKL": "RallyPlayerPos_C1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Rain",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501011103,
|
||||
"BattleEventID": 5010111,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010111_3.asset",
|
||||
"MDMOGIDKCLG": "metro4_2_Rally",
|
||||
"LLPNKBBJHKL": "RallyPlayerPos_A1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Rain",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501011104,
|
||||
"BattleEventID": 5010111,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010111_4.asset",
|
||||
"MDMOGIDKCLG": "Stage_Zero_ComplexRoom_22",
|
||||
"LLPNKBBJHKL": "SpecialPlayerPos_1",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "Rain",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501011105,
|
||||
"BattleEventID": 5010111,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010111_5.asset",
|
||||
"MDMOGIDKCLG": "metro4_2_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_F2",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Rain",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501012101,
|
||||
"BattleEventID": 5010121,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010121_1.asset",
|
||||
"MDMOGIDKCLG": "metro4_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint6",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501012102,
|
||||
"BattleEventID": 5010121,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010121_2.asset",
|
||||
"MDMOGIDKCLG": "metro4_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint7",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501012103,
|
||||
"BattleEventID": 5010121,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010121_3.asset",
|
||||
"MDMOGIDKCLG": "metro4_2_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501012104,
|
||||
"BattleEventID": 5010121,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010121_4.asset",
|
||||
"MDMOGIDKCLG": "metro4_2_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_E2",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501020200,
|
||||
"BattleEventID": 5010201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010201_0.asset",
|
||||
"MDMOGIDKCLG": "Stage_VR_TrainingRoom_30R",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501020201,
|
||||
"BattleEventID": 5010201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010201_1.asset",
|
||||
"MDMOGIDKCLG": "Construction3_4_SuccessiveLevel",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint1",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501020202,
|
||||
"BattleEventID": 5010201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010201_2.asset",
|
||||
"MDMOGIDKCLG": "Construction3_4_SuccessiveLevel",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint2",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501020203,
|
||||
"BattleEventID": 5010201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010201_3.asset",
|
||||
"MDMOGIDKCLG": "Construction3_4_SuccessiveLevel",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint3",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501020204,
|
||||
"BattleEventID": 5010201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010201_4.asset",
|
||||
"MDMOGIDKCLG": "Construction3_4_SuccessiveLevel",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint4",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501020205,
|
||||
"BattleEventID": 5010201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010201_5.asset",
|
||||
"MDMOGIDKCLG": "Construction3_4_SuccessiveLevel",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint5",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501020206,
|
||||
"BattleEventID": 5010201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010201_6.asset",
|
||||
"MDMOGIDKCLG": "Stage_Zero_ComplexRoom_25_SuccessiveLevel",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint6",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501020207,
|
||||
"BattleEventID": 5010201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010201_7.asset",
|
||||
"MDMOGIDKCLG": "Construction3_4_SuccessiveLevel",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint7",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501020208,
|
||||
"BattleEventID": 5010201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010201_6.asset",
|
||||
"MDMOGIDKCLG": "Stage_Zero_ComplexRoom_25_SuccessiveLevel",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint6",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501020209,
|
||||
"BattleEventID": 5010201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010201_9.asset",
|
||||
"MDMOGIDKCLG": "Construction2_3_Boss",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Thunder",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021101,
|
||||
"BattleEventID": 5010211,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010211_1.asset",
|
||||
"MDMOGIDKCLG": "Construction2_5_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint1",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021102,
|
||||
"BattleEventID": 5010211,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010211_2.asset",
|
||||
"MDMOGIDKCLG": "Construction2_5_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint2",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021103,
|
||||
"BattleEventID": 5010211,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010211_3.asset",
|
||||
"MDMOGIDKCLG": "Construction2_5_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint3",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021104,
|
||||
"BattleEventID": 5010211,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010211_4.asset",
|
||||
"MDMOGIDKCLG": "Stage_Zero_ComplexRoom_12_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint4",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021105,
|
||||
"BattleEventID": 5010211,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010211_5.asset",
|
||||
"MDMOGIDKCLG": "Construction2_5_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint5",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021106,
|
||||
"BattleEventID": 5010211,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010211_6.asset",
|
||||
"MDMOGIDKCLG": "Construction2_5_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint6",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021107,
|
||||
"BattleEventID": 5010211,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010211_7.asset",
|
||||
"MDMOGIDKCLG": "Construction2_5_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint3",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021301,
|
||||
"BattleEventID": 5010213,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010213_1.asset",
|
||||
"MDMOGIDKCLG": "Construction2_3_Boss",
|
||||
"LLPNKBBJHKL": "PlayerPos_B5",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Thunder",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021302,
|
||||
"BattleEventID": 5010213,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010213_2.asset",
|
||||
"MDMOGIDKCLG": "Construction2_3_Boss",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Thunder",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021303,
|
||||
"BattleEventID": 5010213,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010213_3.asset",
|
||||
"MDMOGIDKCLG": "Construction2_3_Boss",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Thunder",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501021304,
|
||||
"BattleEventID": 5010213,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010213_4.asset",
|
||||
"MDMOGIDKCLG": "Construction2_3_Boss",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "Thunder",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501022101,
|
||||
"BattleEventID": 5010221,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010221_1.asset",
|
||||
"MDMOGIDKCLG": "Construction3_4_SuccessiveLevel",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint9",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501022102,
|
||||
"BattleEventID": 5010221,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010221_2.asset",
|
||||
"MDMOGIDKCLG": "Construction3_4_SuccessiveLevel",
|
||||
"LLPNKBBJHKL": "PlayerPos_C2",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501022103,
|
||||
"BattleEventID": 5010221,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010221_3.asset",
|
||||
"MDMOGIDKCLG": "Construction2_3_Zero",
|
||||
"LLPNKBBJHKL": "PlayerPos_E4_Rally",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501022104,
|
||||
"BattleEventID": 5010221,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010221_4.asset",
|
||||
"MDMOGIDKCLG": "Construction2_3_Zero",
|
||||
"LLPNKBBJHKL": "PlayerPos_D4_Rally",
|
||||
"TimePeriod": "Evening",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501030101,
|
||||
"BattleEventID": 5010301,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010301_1.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_2_3_Successive",
|
||||
"LLPNKBBJHKL": "SpecialPlayerPos_B1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501030102,
|
||||
"BattleEventID": 5010301,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010301_2.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_2_1_Successive",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501030103,
|
||||
"BattleEventID": 5010301,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010301_3.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_2_1_Successive",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint2",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501030104,
|
||||
"BattleEventID": 5010301,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010301_4.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_2_1_Successive",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint3",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501030105,
|
||||
"BattleEventID": 5010301,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010301_5.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_2_1_Successive",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint4",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501030106,
|
||||
"BattleEventID": 5010301,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010301_6.asset",
|
||||
"MDMOGIDKCLG": "Stage_Zero_ComplexRoom_15_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPointSideQuest1",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501030107,
|
||||
"BattleEventID": 5010301,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010301_7.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_2_1_Successive",
|
||||
"LLPNKBBJHKL": "SpecialRallyPos_7",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031101,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_1.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_2_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031102,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_2.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_2_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint2",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031103,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_3.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_2_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint3",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031104,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_4.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_2_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint4",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031105,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_5.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_2_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint5",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031106,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_6.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_2_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint6",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031107,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_7.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_1_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint7",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031108,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_8.asset",
|
||||
"MDMOGIDKCLG": "Stage_Zero_ComplexRoom_15_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint8",
|
||||
"TimePeriod": "Morning",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031109,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_9.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_2_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint9",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031110,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_10.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_1_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint10",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031111,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_11.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_2_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint11",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501031112,
|
||||
"BattleEventID": 5010311,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010311_12.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_1_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_CheckPoint12",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501032101,
|
||||
"BattleEventID": 5010321,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010321_1.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_1_2_Zero",
|
||||
"LLPNKBBJHKL": "PlayerPos_A5_Rally",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501032102,
|
||||
"BattleEventID": 5010321,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010321_2.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_1_2_Zero",
|
||||
"LLPNKBBJHKL": "PlayerPos_A6_Rally",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501032103,
|
||||
"BattleEventID": 5010321,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010321_3.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_1_2_Zero",
|
||||
"LLPNKBBJHKL": "PlayerPos_C5_Rally",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 501032104,
|
||||
"BattleEventID": 5010321,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5010321_4.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_H_1_1_Rally",
|
||||
"LLPNKBBJHKL": "PlayerPos_A1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": true,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 503020101,
|
||||
"BattleEventID": 5030201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5030201_1.asset",
|
||||
"MDMOGIDKCLG": "Stage_MetroArea_4_1_Lycaon",
|
||||
"LLPNKBBJHKL": "PlayerPos_Ly1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 503020102,
|
||||
"BattleEventID": 5030201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5030201_2.asset",
|
||||
"MDMOGIDKCLG": "Stage_MetroArea_4_1_Lycaon",
|
||||
"LLPNKBBJHKL": "PlayerPos_Ly2",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 503020103,
|
||||
"BattleEventID": 5030201,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5030201_3.asset",
|
||||
"MDMOGIDKCLG": "Stage_MetroArea_4_1_Lycaon",
|
||||
"LLPNKBBJHKL": "PlayerPos_Ly3",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 503021101,
|
||||
"BattleEventID": 5030211,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5030211_1.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_1_2_Lycaon",
|
||||
"LLPNKBBJHKL": "PlayerPos_Ly1",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 503021102,
|
||||
"BattleEventID": 5030211,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5030211_2.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_1_2_Lycaon",
|
||||
"LLPNKBBJHKL": "PlayerPos_Ly2",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
},
|
||||
{
|
||||
"AreaID": 503021103,
|
||||
"BattleEventID": 5030211,
|
||||
"NELIKCGAKEJ": "Level/FC_Main/FC_Successive/FC_5030211_3.asset",
|
||||
"MDMOGIDKCLG": "Stage_SkyScraper_L_1_2_Lycaon",
|
||||
"LLPNKBBJHKL": "PlayerPos_Ly3",
|
||||
"TimePeriod": "Night",
|
||||
"Weather": "SunShine",
|
||||
"HAIGBCBDJPL": false,
|
||||
"MBIMPLIHABC": ""
|
||||
}
|
||||
]
|
604
assets/FileCfg/VariableDataTemplateTb.json
Normal file
604
assets/FileCfg/VariableDataTemplateTb.json
Normal file
|
@ -0,0 +1,604 @@
|
|||
[
|
||||
{
|
||||
"ID": 500000101,
|
||||
"BattleEventID": 5000001,
|
||||
"VariableName": "IsArea1Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000102,
|
||||
"BattleEventID": 5000001,
|
||||
"VariableName": "IsArea2Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000103,
|
||||
"BattleEventID": 5000001,
|
||||
"VariableName": "IsArea3Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000104,
|
||||
"BattleEventID": 5000001,
|
||||
"VariableName": "IsArea4Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000105,
|
||||
"BattleEventID": 5000001,
|
||||
"VariableName": "IsArea5Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000106,
|
||||
"BattleEventID": 5000001,
|
||||
"VariableName": "IsArea6Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000107,
|
||||
"BattleEventID": 5000001,
|
||||
"VariableName": "SideQuest",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000108,
|
||||
"BattleEventID": 5000001,
|
||||
"VariableName": "SecondSideQuest",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000109,
|
||||
"BattleEventID": 5000001,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 500000201,
|
||||
"BattleEventID": 5000002,
|
||||
"VariableName": "whichAreaIn",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 500000202,
|
||||
"BattleEventID": 5000002,
|
||||
"VariableName": "IsArea2Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000203,
|
||||
"BattleEventID": 5000002,
|
||||
"VariableName": "IsArea3Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000204,
|
||||
"BattleEventID": 5000002,
|
||||
"VariableName": "IsArea4Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000205,
|
||||
"BattleEventID": 5000002,
|
||||
"VariableName": "IsArea5Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 500000206,
|
||||
"BattleEventID": 5000002,
|
||||
"VariableName": "SecretMission",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 500000207,
|
||||
"BattleEventID": 5000002,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 500000301,
|
||||
"BattleEventID": 5000003,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 500000401,
|
||||
"BattleEventID": 5000004,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 501010100,
|
||||
"BattleEventID": 5010101,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 501010101,
|
||||
"BattleEventID": 5010101,
|
||||
"VariableName": "SideQuest",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501010102,
|
||||
"BattleEventID": 5010101,
|
||||
"VariableName": "IsSideQuestFinsih",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501010103,
|
||||
"BattleEventID": 5010101,
|
||||
"VariableName": "RevivedTime",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501010104,
|
||||
"BattleEventID": 5010101,
|
||||
"VariableName": "IsSideQuestRestart",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501011101,
|
||||
"BattleEventID": 5010111,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 501011102,
|
||||
"BattleEventID": 5010111,
|
||||
"VariableName": "SideQuest",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501011103,
|
||||
"BattleEventID": 5010111,
|
||||
"VariableName": "IsSideQuestFinsih",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501011104,
|
||||
"BattleEventID": 5010111,
|
||||
"VariableName": "RevivedTime",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501011105,
|
||||
"BattleEventID": 5010111,
|
||||
"VariableName": "GroundSideQuest",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501011106,
|
||||
"BattleEventID": 5010111,
|
||||
"VariableName": "IsSideQuestRestart",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "FALSE"
|
||||
},
|
||||
{
|
||||
"ID": 501012101,
|
||||
"BattleEventID": 5010121,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "4"
|
||||
},
|
||||
{
|
||||
"ID": 501012102,
|
||||
"BattleEventID": 5010121,
|
||||
"VariableName": "RevivedTime",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501020200,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsEnterTeachLevel",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020201,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsArea1Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020202,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsArea2Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020203,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsArea3Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020204,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsArea4Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020205,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsArea5Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020206,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsArea6Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020207,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsArea7Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020208,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "SideQuest",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020209,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsArea8Finish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020210,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "SecondSideQuest",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020211,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "StartSecondPhase",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020212,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 501020213,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsSideQuestRestart",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020214,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "IsSideQuestFinsih",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501020215,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "RevivedTime",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501020216,
|
||||
"BattleEventID": 5010201,
|
||||
"VariableName": "LifeCoinGet",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "FALSE"
|
||||
},
|
||||
{
|
||||
"ID": 501021101,
|
||||
"BattleEventID": 5010211,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 501021102,
|
||||
"BattleEventID": 5010211,
|
||||
"VariableName": "IsSideQuestRestart",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501021103,
|
||||
"BattleEventID": 5010211,
|
||||
"VariableName": "IsSideQuestFinsih",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501021104,
|
||||
"BattleEventID": 5010211,
|
||||
"VariableName": "RevivedTime",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501021105,
|
||||
"BattleEventID": 5010211,
|
||||
"VariableName": "BossHealth",
|
||||
"ValueType": "float",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 501021106,
|
||||
"BattleEventID": 5010211,
|
||||
"VariableName": "CargoCartStopped",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "FALSE"
|
||||
},
|
||||
{
|
||||
"ID": 501021107,
|
||||
"BattleEventID": 5010211,
|
||||
"VariableName": "IsLastAreaFinish",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501021301,
|
||||
"BattleEventID": 5010213,
|
||||
"VariableName": "whichAreaIn",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 501022101,
|
||||
"BattleEventID": 5010221,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "4"
|
||||
},
|
||||
{
|
||||
"ID": 501022102,
|
||||
"BattleEventID": 5010221,
|
||||
"VariableName": "RevivedTime",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501030101,
|
||||
"BattleEventID": 5010301,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 501030102,
|
||||
"BattleEventID": 5010301,
|
||||
"VariableName": "IsSideQuestFinsih",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501030103,
|
||||
"BattleEventID": 5010301,
|
||||
"VariableName": "RevivedTime",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501030104,
|
||||
"BattleEventID": 5010301,
|
||||
"VariableName": "DoorStatus1",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501030105,
|
||||
"BattleEventID": 5010301,
|
||||
"VariableName": "DoorStatus2",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501030106,
|
||||
"BattleEventID": 5010301,
|
||||
"VariableName": "DoorStatus3",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501030107,
|
||||
"BattleEventID": 5010301,
|
||||
"VariableName": "DoorStatus4",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501030108,
|
||||
"BattleEventID": 5010301,
|
||||
"VariableName": "DoorStatus5",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501030109,
|
||||
"BattleEventID": 5010301,
|
||||
"VariableName": "IsSideQuestRestart",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "FALSE"
|
||||
},
|
||||
{
|
||||
"ID": 501030110,
|
||||
"BattleEventID": 5010301,
|
||||
"VariableName": "IsTrickFinish",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501031101,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 501031102,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "IsSideQuestFinsih",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "false"
|
||||
},
|
||||
{
|
||||
"ID": 501031103,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "RevivedTime",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501031104,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "IsAllyRescued",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "FALSE"
|
||||
},
|
||||
{
|
||||
"ID": 501031105,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "IsShortcutOpened",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "FALSE"
|
||||
},
|
||||
{
|
||||
"ID": 501031106,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "IsGuardDefeated",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "FALSE"
|
||||
},
|
||||
{
|
||||
"ID": 501031107,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "DoorStatus1",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501031108,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "DoorStatus2",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501031109,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "DoorStatus3",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501031110,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "DoorStatus4",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501031111,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "DoorStatus5",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 501031112,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "IsAllyImposterCatched",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "FALSE"
|
||||
},
|
||||
{
|
||||
"ID": 501031113,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "IsSideQuestRestart",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "FALSE"
|
||||
},
|
||||
{
|
||||
"ID": 501031114,
|
||||
"BattleEventID": 5010311,
|
||||
"VariableName": "LifeCoinGet",
|
||||
"ValueType": "bool",
|
||||
"InitialValue": "FALSE"
|
||||
},
|
||||
{
|
||||
"ID": 501032101,
|
||||
"BattleEventID": 5010321,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "4"
|
||||
},
|
||||
{
|
||||
"ID": 501032102,
|
||||
"BattleEventID": 5010321,
|
||||
"VariableName": "RevivedTime",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "0"
|
||||
},
|
||||
{
|
||||
"ID": 503020101,
|
||||
"BattleEventID": 5030201,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
},
|
||||
{
|
||||
"ID": 503021101,
|
||||
"BattleEventID": 5030211,
|
||||
"VariableName": "AreaSelect",
|
||||
"ValueType": "int",
|
||||
"InitialValue": "1"
|
||||
}
|
||||
]
|
|
@ -1,5 +1,7 @@
|
|||
use serde::Deserialize;
|
||||
|
||||
use super::BattleEventConfigID;
|
||||
|
||||
template_id!(ArchiveBattleQuest u32 id);
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
|
@ -19,7 +21,7 @@ pub struct ArchiveBattleQuestTemplate {
|
|||
#[serde(rename = "FirstBattleEventID")]
|
||||
pub first_battle_event_id: u32,
|
||||
#[serde(rename = "BattleEventID")]
|
||||
pub battle_event_id: u32,
|
||||
pub battle_event_id: BattleEventConfigID,
|
||||
pub battle_rank: String,
|
||||
pub slot1_avatar: i32,
|
||||
pub slot2_avatar: i32,
|
||||
|
|
16
nap_data/src/tables/battle_event_config_template.rs
Normal file
16
nap_data/src/tables/battle_event_config_template.rs
Normal file
|
@ -0,0 +1,16 @@
|
|||
use serde::Deserialize;
|
||||
|
||||
use super::OnceRewardID;
|
||||
|
||||
template_id!(BattleEventConfig u32 id);
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub struct BattleEventConfigTemplate {
|
||||
#[serde(rename = "ID")]
|
||||
pub id: BattleEventConfigID,
|
||||
#[serde(rename = "LevelDesignID")]
|
||||
pub level_design_id: u32,
|
||||
pub normal_drop: String,
|
||||
pub special_drop: Vec<OnceRewardID>,
|
||||
}
|
16
nap_data/src/tables/battle_group_config_template.rs
Normal file
16
nap_data/src/tables/battle_group_config_template.rs
Normal file
|
@ -0,0 +1,16 @@
|
|||
use serde::Deserialize;
|
||||
|
||||
use super::BattleEventConfigID;
|
||||
|
||||
template_id!(BattleGroupConfig u32 id);
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub struct BattleGroupConfigTemplate {
|
||||
#[serde(rename = "ID")]
|
||||
pub id: BattleGroupConfigID,
|
||||
#[serde(rename = "QuestID")]
|
||||
pub quest_id: u32,
|
||||
#[serde(rename = "BattleEventID")]
|
||||
pub battle_event_id: BattleEventConfigID,
|
||||
}
|
10
nap_data/src/tables/hollow_config_template.rs
Normal file
10
nap_data/src/tables/hollow_config_template.rs
Normal file
|
@ -0,0 +1,10 @@
|
|||
use serde::Deserialize;
|
||||
|
||||
template_id!(HollowConfig u32 id);
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub struct HollowConfigTemplate {
|
||||
#[serde(rename = "ID")]
|
||||
pub id: HollowConfigID,
|
||||
}
|
13
nap_data/src/tables/hollow_quest_template.rs
Normal file
13
nap_data/src/tables/hollow_quest_template.rs
Normal file
|
@ -0,0 +1,13 @@
|
|||
use serde::Deserialize;
|
||||
|
||||
template_id!(HollowQuest u32 id);
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub struct HollowQuestTemplate {
|
||||
#[serde(rename = "ID")]
|
||||
pub id: HollowQuestID,
|
||||
#[serde(rename = "ChessBoardID")]
|
||||
pub chess_board_id: u32,
|
||||
pub hollow_quest_type: u32,
|
||||
}
|
|
@ -87,4 +87,11 @@ template_tables! {
|
|||
MainCityBgmConfigTemplate;
|
||||
ArchiveFileQuestTemplate;
|
||||
ArchiveBattleQuestTemplate;
|
||||
HollowQuestTemplate;
|
||||
HollowConfigTemplate;
|
||||
BattleEventConfigTemplate;
|
||||
BattleGroupConfigTemplate;
|
||||
SubAreaDataTemplate;
|
||||
VariableDataTemplate;
|
||||
OnceRewardTemplate;
|
||||
}
|
||||
|
|
19
nap_data/src/tables/once_reward_template.rs
Normal file
19
nap_data/src/tables/once_reward_template.rs
Normal file
|
@ -0,0 +1,19 @@
|
|||
use serde::Deserialize;
|
||||
|
||||
template_id!(OnceReward u32 reward_id);
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub struct OnceRewardTemplate {
|
||||
#[serde(rename = "RewardID")]
|
||||
pub reward_id: OnceRewardID,
|
||||
pub reward_list: Vec<RewardItem>,
|
||||
}
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub struct RewardItem {
|
||||
#[serde(rename = "RewardItemID")]
|
||||
pub reward_item_id: u32,
|
||||
pub reward_amount: u32,
|
||||
}
|
16
nap_data/src/tables/sub_area_data_template.rs
Normal file
16
nap_data/src/tables/sub_area_data_template.rs
Normal file
|
@ -0,0 +1,16 @@
|
|||
use std::u32;
|
||||
|
||||
use serde::Deserialize;
|
||||
|
||||
template_id!(SubAreaData u32 area_id);
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub struct SubAreaDataTemplate {
|
||||
#[serde(rename = "AreaID")]
|
||||
pub area_id: SubAreaDataID,
|
||||
#[serde(rename = "BattleEventID")]
|
||||
pub battle_event_id: u32,
|
||||
pub time_period: String,
|
||||
pub weather: String,
|
||||
}
|
|
@ -1,5 +1,7 @@
|
|||
use serde::Deserialize;
|
||||
|
||||
use super::BattleEventConfigID;
|
||||
|
||||
template_id!(TrainingQuest u32 id);
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
|
@ -7,5 +9,5 @@ template_id!(TrainingQuest u32 id);
|
|||
pub struct TrainingQuestTemplate {
|
||||
pub id: TrainingQuestID,
|
||||
pub training_type: u32,
|
||||
pub battle_event_id: u32,
|
||||
pub battle_event_id: BattleEventConfigID,
|
||||
}
|
||||
|
|
25
nap_data/src/tables/variable_data_template.rs
Normal file
25
nap_data/src/tables/variable_data_template.rs
Normal file
|
@ -0,0 +1,25 @@
|
|||
use std::u32;
|
||||
|
||||
use serde::Deserialize;
|
||||
|
||||
template_id!(VariableData u32 id);
|
||||
|
||||
#[derive(Deserialize, Debug)]
|
||||
#[serde(rename_all = "PascalCase")]
|
||||
pub struct VariableDataTemplate {
|
||||
#[serde(rename = "ID")]
|
||||
pub id: VariableDataID,
|
||||
#[serde(rename = "BattleEventID")]
|
||||
pub battle_event_id: u32,
|
||||
pub variable_name: String,
|
||||
pub value_type: VariableValueType,
|
||||
pub initial_value: String,
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum VariableValueType {
|
||||
Int,
|
||||
Bool,
|
||||
Float,
|
||||
}
|
|
@ -98,7 +98,10 @@ req_handlers! {
|
|||
world::LeaveCurDungeon;
|
||||
world::InteractWithUnit;
|
||||
world::EnterSection;
|
||||
world::ArchiveQuestsSeen;
|
||||
world::JumpPageSystem;
|
||||
world::StartHollowQuest;
|
||||
world::FinishHollowBattleEvent;
|
||||
world::LongFightProgressUpdate;
|
||||
client_systems::ReportUiLayoutPlatform;
|
||||
client_systems::PlayerOperation;
|
||||
client_systems::UnlockNewbieGroup;
|
||||
|
|
|
@ -16,13 +16,22 @@ pub async fn on_get_quest_data(
|
|||
retcode: Retcode::RetSucc.into(),
|
||||
quest_type: req.quest_type,
|
||||
quest_data: Some(QuestData {
|
||||
quest_collection_list: vec![QuestCollection {
|
||||
quest_collection_list: vec![
|
||||
QuestCollection {
|
||||
quest_type: EQuestType::ArchiveFile as u32,
|
||||
quest_id_list: tables::archive_file_quest_template_tb::iter()
|
||||
.map(|tmpl| tmpl.id.value())
|
||||
.collect(),
|
||||
..Default::default()
|
||||
}],
|
||||
},
|
||||
QuestCollection {
|
||||
quest_type: EQuestType::Hollow as u32,
|
||||
quest_id_list: tables::hollow_quest_template_tb::iter()
|
||||
.map(|tmpl| tmpl.id.value())
|
||||
.collect(),
|
||||
..Default::default()
|
||||
},
|
||||
],
|
||||
}),
|
||||
})
|
||||
}
|
||||
|
@ -35,22 +44,19 @@ pub async fn on_get_yorozuya_info(
|
|||
Ok(GetYorozuyaInfoScRsp {
|
||||
retcode: Retcode::RetSucc.into(),
|
||||
yorozuya_info: Some(YorozuyaInfo {
|
||||
odohdljfdlf: vec![1001],
|
||||
apmojjlcooa: vec![1001],
|
||||
npgjhahijkb: vec![100001, 100101, 100401, 109901],
|
||||
eoljpdnjgeg: vec![
|
||||
Ofhlkjeakif {
|
||||
nnkcanmllod: 199030,
|
||||
odohdljfdlf: vec![1000, 1001, 1002, 1003, 1004],
|
||||
apmojjlcooa: vec![1000, 1001, 1002, 1003, 1004],
|
||||
akiddbalfoa: vec![10010001, 10010002, 10010004],
|
||||
npgjhahijkb: tables::hollow_config_template_tb::iter()
|
||||
.map(|tmpl| tmpl.id.value())
|
||||
.collect(),
|
||||
eoljpdnjgeg: tables::hollow_quest_template_tb::iter()
|
||||
.map(|tmpl| Ofhlkjeakif {
|
||||
nnkcanmllod: tmpl.id.value(),
|
||||
kkjlnkehddj: Some(Cgpajijemlj::default()),
|
||||
..Default::default()
|
||||
},
|
||||
Ofhlkjeakif {
|
||||
nnkcanmllod: 199035,
|
||||
ggnbpiofdpp: 110103,
|
||||
kkjlnkehddj: Some(Cgpajijemlj::default()),
|
||||
..Default::default()
|
||||
},
|
||||
],
|
||||
})
|
||||
.collect(),
|
||||
..Default::default()
|
||||
}),
|
||||
})
|
||||
|
|
|
@ -1,12 +1,14 @@
|
|||
use data::{
|
||||
event,
|
||||
tables::{ProcedureConfigID, SectionConfigID, TrainingQuestID},
|
||||
tables::{HollowQuestID, ProcedureConfigID, SectionConfigID, TrainingQuestID},
|
||||
};
|
||||
|
||||
use super::core::NetError;
|
||||
|
||||
use crate::{
|
||||
logic::{game::*, procedure::ProcedureAction, ELocalPlayType, ENPCInteraction},
|
||||
logic::{
|
||||
game::*, procedure::ProcedureAction, EHollowQuestType, ELocalPlayType, ENPCInteraction,
|
||||
},
|
||||
net::NetSessionState,
|
||||
};
|
||||
|
||||
|
@ -128,7 +130,7 @@ pub async fn on_beginner_battle_rebegin(
|
|||
pub async fn on_sync_hall_event(
|
||||
_session: &NetSession,
|
||||
_player: &mut Player,
|
||||
_req: SyncHallEventCsReq,
|
||||
req: SyncHallEventCsReq,
|
||||
) -> NetResult<SyncHallEventScRsp> {
|
||||
Ok(SyncHallEventScRsp {
|
||||
retcode: Retcode::RetSucc.into(),
|
||||
|
@ -182,10 +184,42 @@ pub async fn on_start_trial_fighting_mission(
|
|||
}
|
||||
|
||||
pub async fn on_end_battle(
|
||||
_session: &NetSession,
|
||||
_player: &mut Player,
|
||||
_req: EndBattleCsReq,
|
||||
session: &NetSession,
|
||||
player: &mut Player,
|
||||
req: EndBattleCsReq,
|
||||
) -> NetResult<EndBattleScRsp> {
|
||||
match &mut player.game_instance {
|
||||
GameInstance::Hollow(hollow) if hollow.quest_manager.has_active_quests() => {
|
||||
hollow
|
||||
.quest_manager
|
||||
.finish_quest(hollow.battle_event_id.value())
|
||||
.map_err(LogicError::from)?;
|
||||
|
||||
session
|
||||
.notify(DungeonQuestFinishedScNotify {
|
||||
result: req.battle_result.unwrap().result as u32,
|
||||
quest_id: hollow.quest_id,
|
||||
..Default::default()
|
||||
})
|
||||
.await?;
|
||||
}
|
||||
GameInstance::LongFight(fight) => {
|
||||
fight
|
||||
.quest_manager
|
||||
.finish_quest(fight.battle_event_id.value())
|
||||
.map_err(LogicError::from)?;
|
||||
|
||||
session
|
||||
.notify(DungeonQuestFinishedScNotify {
|
||||
result: req.battle_result.unwrap().result as u32,
|
||||
quest_id: fight.quest_id,
|
||||
..Default::default()
|
||||
})
|
||||
.await?;
|
||||
}
|
||||
_ => (),
|
||||
};
|
||||
|
||||
Ok(EndBattleScRsp {
|
||||
battle_reward: Some(BattleRewardInfo::default()),
|
||||
retcode: Retcode::RetSucc.into(),
|
||||
|
@ -259,13 +293,79 @@ pub async fn on_enter_section(
|
|||
})
|
||||
}
|
||||
|
||||
pub async fn on_archive_quests_seen(
|
||||
pub async fn on_jump_page_system(
|
||||
_session: &NetSession,
|
||||
_player: &mut Player,
|
||||
_req: ArchiveQuestsSeenCsReq,
|
||||
) -> NetResult<ArchiveQuestsSeenScRsp> {
|
||||
Ok(ArchiveQuestsSeenScRsp {
|
||||
_req: JumpPageSystemCsReq,
|
||||
) -> NetResult<JumpPageSystemScRsp> {
|
||||
Ok(JumpPageSystemScRsp {
|
||||
retcode: Retcode::RetSucc.into(),
|
||||
..Default::default()
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn on_start_hollow_quest(
|
||||
session: &NetSession,
|
||||
player: &mut Player,
|
||||
req: StartHollowQuestCsReq,
|
||||
) -> NetResult<StartHollowQuestScRsp> {
|
||||
use crate::logic::{TimePeriodType, WeatherType};
|
||||
|
||||
let quest_id = HollowQuestID::new(req.quest_id).ok_or(Retcode::RetFail)?;
|
||||
let quest_type = EHollowQuestType::from(quest_id.template().hollow_quest_type);
|
||||
|
||||
match quest_type {
|
||||
EHollowQuestType::RallyBattle => {
|
||||
player.game_instance = GameInstance::LongFight(
|
||||
LongFightGame::create_rally_game(
|
||||
quest_id,
|
||||
&req.avatars,
|
||||
req.buddy_id,
|
||||
TimePeriodType::from_str(&req.quest_time_period),
|
||||
WeatherType::from_str(&req.quest_weather),
|
||||
)
|
||||
.map_err(LogicError::from)?,
|
||||
)
|
||||
}
|
||||
_ => {
|
||||
player.game_instance = GameInstance::Hollow(
|
||||
HollowGame::create_pure_hollow_battle(
|
||||
quest_id,
|
||||
&req.avatars,
|
||||
req.buddy_id,
|
||||
TimePeriodType::from_str(&req.quest_time_period),
|
||||
WeatherType::from_str(&req.quest_weather),
|
||||
)
|
||||
.map_err(LogicError::from)?,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
let world_init_notify = player.game_instance.create_world_init_notify()?;
|
||||
session.notify(world_init_notify).await?;
|
||||
|
||||
Ok(StartHollowQuestScRsp {
|
||||
retcode: Retcode::RetSucc.into(),
|
||||
quest_id: 0,
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn on_finish_hollow_battle_event(
|
||||
_session: &NetSession,
|
||||
_player: &mut Player,
|
||||
_req: FinishHollowBattleEventCsReq,
|
||||
) -> NetResult<FinishHollowBattleEventScRsp> {
|
||||
Ok(FinishHollowBattleEventScRsp {
|
||||
retcode: Retcode::RetSucc.into(),
|
||||
})
|
||||
}
|
||||
|
||||
pub async fn on_long_fight_progress_update(
|
||||
_session: &NetSession,
|
||||
_player: &mut Player,
|
||||
_req: LongFightProgressUpdateCsReq,
|
||||
) -> NetResult<LongFightProgressUpdateScRsp> {
|
||||
Ok(LongFightProgressUpdateScRsp {
|
||||
retcode: Retcode::RetSucc.into(),
|
||||
})
|
||||
}
|
||||
|
|
67
nap_gameserver/src/logic/battle/drop/fight_drop.rs
Normal file
67
nap_gameserver/src/logic/battle/drop/fight_drop.rs
Normal file
|
@ -0,0 +1,67 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use data::tables::{BattleEventConfigID, OnceRewardID};
|
||||
use proto::{FightDropInfo, FightReward, RewardItems};
|
||||
|
||||
pub struct FightDropPool {
|
||||
special_drop: Vec<SpecialReward>,
|
||||
}
|
||||
|
||||
pub struct SpecialReward {
|
||||
pub reward_id: OnceRewardID,
|
||||
pub item_count_map: HashMap<u32, u32>,
|
||||
}
|
||||
|
||||
impl FightDropPool {
|
||||
pub fn new(battle_event_id: BattleEventConfigID) -> Self {
|
||||
let template = battle_event_id.template();
|
||||
|
||||
Self {
|
||||
special_drop: template
|
||||
.special_drop
|
||||
.iter()
|
||||
.map(|id| SpecialReward::new(*id))
|
||||
.collect(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn to_client(&self) -> FightDropInfo {
|
||||
FightDropInfo {
|
||||
normal_drop_list: Vec::new(),
|
||||
special_drop_list: self
|
||||
.special_drop
|
||||
.iter()
|
||||
.map(SpecialReward::to_client)
|
||||
.collect(),
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl SpecialReward {
|
||||
pub fn new(template_id: OnceRewardID) -> Self {
|
||||
let template = template_id.template();
|
||||
|
||||
Self {
|
||||
reward_id: template_id,
|
||||
item_count_map: template
|
||||
.reward_list
|
||||
.iter()
|
||||
.map(|r| (r.reward_item_id, r.reward_amount))
|
||||
.collect(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn to_client(&self) -> FightReward {
|
||||
FightReward {
|
||||
reward_id: self.reward_id.value(),
|
||||
fight_reward_map: HashMap::from([(
|
||||
0,
|
||||
RewardItems {
|
||||
reward_item_map: self.item_count_map.clone(),
|
||||
},
|
||||
)]),
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
}
|
2
nap_gameserver/src/logic/battle/drop/mod.rs
Normal file
2
nap_gameserver/src/logic/battle/drop/mod.rs
Normal file
|
@ -0,0 +1,2 @@
|
|||
mod fight_drop;
|
||||
pub use fight_drop::FightDropPool;
|
|
@ -1,7 +1,9 @@
|
|||
mod avatar;
|
||||
mod buddy;
|
||||
pub mod drop;
|
||||
mod quest;
|
||||
mod team;
|
||||
pub mod unit;
|
||||
mod variable;
|
||||
|
||||
pub use avatar::InLevelAvatarDataItem;
|
||||
pub use buddy::EquippedBuddyDataItem;
|
||||
pub use team::TeamDataItem;
|
||||
pub use quest::{DungeonQuestError, DungeonQuestManager};
|
||||
pub use team::{BuddyParam, TeamDataItem};
|
||||
pub use variable::LogicVariableTable;
|
||||
|
|
44
nap_gameserver/src/logic/battle/quest.rs
Normal file
44
nap_gameserver/src/logic/battle/quest.rs
Normal file
|
@ -0,0 +1,44 @@
|
|||
use data::tables::BattleGroupConfigID;
|
||||
use proto::DungeonQuestInfo;
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct DungeonQuestManager {
|
||||
inner_quests: Vec<u32>,
|
||||
}
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum DungeonQuestError {
|
||||
#[error("dungeon inner quest with id {0} is not active")]
|
||||
QuestNotActive(u32),
|
||||
}
|
||||
|
||||
impl DungeonQuestManager {
|
||||
pub fn new_for_battle_group(battle_group_id: BattleGroupConfigID) -> Self {
|
||||
Self {
|
||||
inner_quests: vec![battle_group_id.template().battle_event_id.value()],
|
||||
}
|
||||
}
|
||||
|
||||
pub fn finish_quest(&mut self, quest_id: u32) -> Result<(), DungeonQuestError> {
|
||||
let idx = self
|
||||
.inner_quests
|
||||
.iter()
|
||||
.position(|id| *id == quest_id)
|
||||
.ok_or(DungeonQuestError::QuestNotActive(quest_id))?;
|
||||
|
||||
self.inner_quests.remove(idx);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn has_active_quests(&self) -> bool {
|
||||
!self.inner_quests.is_empty()
|
||||
}
|
||||
|
||||
pub fn to_client(&self) -> DungeonQuestInfo {
|
||||
DungeonQuestInfo {
|
||||
inner_quest_id_list: self.inner_quests.clone(),
|
||||
..Default::default()
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,30 +2,33 @@ use std::collections::HashMap;
|
|||
|
||||
use crate::logic::BuddyTeamType;
|
||||
|
||||
use super::{EquippedBuddyDataItem, InLevelAvatarDataItem};
|
||||
use super::unit::{AvatarUnit, BuddyUnit};
|
||||
|
||||
pub struct TeamDataItem {
|
||||
pub avatar_member_list: Vec<InLevelAvatarDataItem>,
|
||||
pub equipped_buddy_list: Vec<EquippedBuddyDataItem>,
|
||||
pub avatar_member_list: Vec<AvatarUnit>,
|
||||
pub equipped_buddy_list: Vec<BuddyUnit>,
|
||||
}
|
||||
|
||||
pub struct BuddyParam(pub u32, pub BuddyTeamType);
|
||||
|
||||
impl TeamDataItem {
|
||||
pub fn new(avatars: &[u32], buddy_id: u32) -> Self {
|
||||
pub fn new(avatars: &[u32], buddy_params: &[BuddyParam]) -> Self {
|
||||
Self {
|
||||
avatar_member_list: avatars
|
||||
.iter()
|
||||
.map(|id| InLevelAvatarDataItem {
|
||||
.map(|id| AvatarUnit {
|
||||
avatar_id: *id,
|
||||
mp_property_override: HashMap::new(),
|
||||
})
|
||||
.collect(),
|
||||
equipped_buddy_list: (buddy_id != 0)
|
||||
.then_some(vec![EquippedBuddyDataItem {
|
||||
buddy_id,
|
||||
buddy_team: BuddyTeamType::Assisting,
|
||||
equipped_buddy_list: buddy_params
|
||||
.iter()
|
||||
.map(|param| BuddyUnit {
|
||||
buddy_id: param.0,
|
||||
buddy_team: param.1,
|
||||
override_property_map: HashMap::new(),
|
||||
}])
|
||||
.unwrap_or_default(),
|
||||
})
|
||||
.collect(),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use crate::logic::BaseProperty;
|
||||
use proto::InLevelAvatarData;
|
||||
use proto::AvatarUnitInfo;
|
||||
|
||||
pub struct InLevelAvatarDataItem {
|
||||
pub struct AvatarUnit {
|
||||
pub avatar_id: u32,
|
||||
pub mp_property_override: HashMap<BaseProperty, i32>,
|
||||
}
|
||||
|
||||
impl InLevelAvatarDataItem {
|
||||
pub fn to_client(&self) -> InLevelAvatarData {
|
||||
InLevelAvatarData {
|
||||
impl AvatarUnit {
|
||||
pub fn to_client(&self) -> AvatarUnitInfo {
|
||||
AvatarUnitInfo {
|
||||
avatar_id: self.avatar_id,
|
||||
mp_property_override_map: self
|
||||
.mp_property_override
|
|
@ -1,18 +1,18 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use proto::EquippedBuddyData;
|
||||
use proto::BuddyUnitInfo;
|
||||
|
||||
use crate::logic::{BaseProperty, BuddyTeamType};
|
||||
|
||||
pub struct EquippedBuddyDataItem {
|
||||
pub struct BuddyUnit {
|
||||
pub buddy_id: u32,
|
||||
pub buddy_team: BuddyTeamType,
|
||||
pub override_property_map: HashMap<BaseProperty, i32>,
|
||||
}
|
||||
|
||||
impl EquippedBuddyDataItem {
|
||||
pub fn to_client(&self) -> EquippedBuddyData {
|
||||
EquippedBuddyData {
|
||||
impl BuddyUnit {
|
||||
pub fn to_client(&self) -> BuddyUnitInfo {
|
||||
BuddyUnitInfo {
|
||||
buddy_id: self.buddy_id,
|
||||
r#type: self.buddy_team.to_protocol().into(),
|
||||
mp_property_override_map: self
|
5
nap_gameserver/src/logic/battle/unit/mod.rs
Normal file
5
nap_gameserver/src/logic/battle/unit/mod.rs
Normal file
|
@ -0,0 +1,5 @@
|
|||
mod avatar;
|
||||
mod buddy;
|
||||
|
||||
pub use avatar::AvatarUnit;
|
||||
pub use buddy::BuddyUnit;
|
74
nap_gameserver/src/logic/battle/variable.rs
Normal file
74
nap_gameserver/src/logic/battle/variable.rs
Normal file
|
@ -0,0 +1,74 @@
|
|||
use std::collections::HashMap;
|
||||
|
||||
use data::tables::{self, BattleEventConfigID, VariableDataID, VariableValueType};
|
||||
use proto::FightVariable;
|
||||
|
||||
pub struct LogicVariableTable {
|
||||
variable_map: HashMap<String, LogicVariable>,
|
||||
}
|
||||
|
||||
impl LogicVariableTable {
|
||||
pub fn new(battle_event_id: BattleEventConfigID) -> Self {
|
||||
let event_id = battle_event_id.value();
|
||||
|
||||
Self {
|
||||
variable_map: tables::variable_data_template_tb::iter()
|
||||
.filter(|tmpl| tmpl.battle_event_id == event_id)
|
||||
.map(|tmpl| (tmpl.variable_name.clone(), LogicVariable::new(tmpl.id)))
|
||||
.collect(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn to_client(&self) -> HashMap<String, FightVariable> {
|
||||
self.variable_map
|
||||
.iter()
|
||||
.map(|(name, var)| (name.clone(), var.to_client()))
|
||||
.collect()
|
||||
}
|
||||
}
|
||||
|
||||
pub enum LogicVariable {
|
||||
Int(i64),
|
||||
Float(f64),
|
||||
Bool(bool),
|
||||
}
|
||||
|
||||
impl LogicVariable {
|
||||
pub fn new(id: VariableDataID) -> Self {
|
||||
let template = id.template();
|
||||
|
||||
match template.value_type {
|
||||
VariableValueType::Int => Self::Int(template.initial_value.parse().unwrap_or_default()),
|
||||
VariableValueType::Bool => Self::Bool(
|
||||
template
|
||||
.initial_value
|
||||
.to_lowercase()
|
||||
.parse()
|
||||
.unwrap_or_default(),
|
||||
),
|
||||
VariableValueType::Float => {
|
||||
Self::Float(template.initial_value.parse().unwrap_or_default())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn to_client(&self) -> FightVariable {
|
||||
match self {
|
||||
Self::Int(val) => FightVariable {
|
||||
r#type: 1,
|
||||
int_value: *val,
|
||||
..Default::default()
|
||||
},
|
||||
Self::Bool(val) => FightVariable {
|
||||
r#type: 4,
|
||||
int_value: *val as i64,
|
||||
..Default::default()
|
||||
},
|
||||
Self::Float(val) => FightVariable {
|
||||
r#type: 2,
|
||||
float_value: *val,
|
||||
..Default::default()
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
|
@ -12,6 +12,7 @@ pub enum ESceneType {
|
|||
Fight = 3,
|
||||
Fresh = 4,
|
||||
MultiFight = 5,
|
||||
LongFight = 7,
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
|
@ -26,6 +27,28 @@ pub enum EQuestType {
|
|||
HollowChallenge = 6,
|
||||
ArchiveBattle = 7,
|
||||
Knowledge = 8,
|
||||
Daily = 9,
|
||||
}
|
||||
|
||||
#[allow(dead_code)]
|
||||
#[derive(Debug, PartialEq, Eq, Clone, Copy, FromPrimitive)]
|
||||
#[repr(u32)]
|
||||
pub enum EHollowQuestType {
|
||||
ChallengeChaos = 6,
|
||||
BossRushBattle = 14,
|
||||
World = 8,
|
||||
MainQuest = 1,
|
||||
SideQuest = 2,
|
||||
#[default]
|
||||
Common = 0,
|
||||
Challenge = 5,
|
||||
PromoteBattle = 11,
|
||||
DifficutyBattle = 12,
|
||||
AvatarSide = 7,
|
||||
RallyBattle = 13,
|
||||
Urgent = 3,
|
||||
UrgentSupplement = 4,
|
||||
NormalBattle = 10,
|
||||
}
|
||||
|
||||
#[derive(Debug, Default, PartialEq, Eq, Clone, Copy, FromPrimitive)]
|
||||
|
@ -102,6 +125,17 @@ pub enum TimePeriodType {
|
|||
Night = 2,
|
||||
}
|
||||
|
||||
impl TimePeriodType {
|
||||
pub fn from_str(s: &str) -> Self {
|
||||
match s {
|
||||
"Morning" => Self::Morning,
|
||||
"Evening" => Self::Evening,
|
||||
"Night" => Self::Night,
|
||||
_ => Self::Morning,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for TimePeriodType {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
std::fmt::Debug::fmt(self, f)
|
||||
|
@ -122,6 +156,21 @@ pub enum WeatherType {
|
|||
None = 0xFFFFFFFF,
|
||||
}
|
||||
|
||||
impl WeatherType {
|
||||
pub fn from_str(s: &str) -> Self {
|
||||
match s {
|
||||
"SunShine" => Self::SunShine,
|
||||
"Fog" => Self::Fog,
|
||||
"Cloudy" => Self::Cloudy,
|
||||
"Rain" => Self::Rain,
|
||||
"Thunder" => Self::Thunder,
|
||||
"ThickFog" => Self::ThickFog,
|
||||
"ThickCloudy" => Self::ThickCloudy,
|
||||
_ => Self::SunShine,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Display for WeatherType {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
std::fmt::Debug::fmt(self, f)
|
||||
|
@ -264,7 +313,7 @@ pub enum BaseProperty {
|
|||
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
|
||||
#[repr(i32)]
|
||||
pub enum BuddyTeamType {
|
||||
Unknown = 0,
|
||||
RallyGuidance = 0,
|
||||
Fighting = 1,
|
||||
Assisting = 2,
|
||||
}
|
||||
|
@ -272,7 +321,7 @@ pub enum BuddyTeamType {
|
|||
impl BuddyTeamType {
|
||||
pub fn to_protocol(&self) -> ::proto::BuddyTeamType {
|
||||
match *self {
|
||||
Self::Unknown => ::proto::BuddyTeamType::Unknown,
|
||||
Self::RallyGuidance => ::proto::BuddyTeamType::RallyGuidance,
|
||||
Self::Fighting => ::proto::BuddyTeamType::Fighting,
|
||||
Self::Assisting => ::proto::BuddyTeamType::Assisting,
|
||||
}
|
||||
|
|
|
@ -1,26 +1,39 @@
|
|||
use common::util;
|
||||
use data::tables::{ArchiveBattleQuestID, TrainingQuestID};
|
||||
use data::tables::{
|
||||
self, ArchiveBattleQuestID, BattleEventConfigID, HollowQuestID, TrainingQuestID,
|
||||
};
|
||||
use proto::{DungeonInfo, DungeonItemData, FightSceneInfo, SceneInfo, WeatherPoolInfo};
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::logic::{
|
||||
battle::{EquippedBuddyDataItem, InLevelAvatarDataItem, TeamDataItem},
|
||||
ELocalPlayType, ESceneType, TimePeriodType, WeatherType,
|
||||
battle::{
|
||||
drop::FightDropPool,
|
||||
unit::{AvatarUnit, BuddyUnit},
|
||||
BuddyParam, DungeonQuestManager, TeamDataItem,
|
||||
},
|
||||
BuddyTeamType, EHollowQuestType, ELocalPlayType, ESceneType, TimePeriodType, WeatherType,
|
||||
};
|
||||
|
||||
use super::NapGameMode;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum HollowGameError {}
|
||||
pub enum HollowGameError {
|
||||
#[error("Quest ({0}) type is not supported: {1:?}")]
|
||||
QuestTypeNotSupported(u32, EHollowQuestType),
|
||||
#[error("Battle group not found, quest id: {0}")]
|
||||
BattleGroupNotFound(u32),
|
||||
}
|
||||
|
||||
pub struct HollowGame {
|
||||
pub quest_id: u32,
|
||||
pub battle_event_id: u32,
|
||||
pub battle_event_id: BattleEventConfigID,
|
||||
pub time_period: TimePeriodType,
|
||||
pub weather: WeatherType,
|
||||
pub play_type: ELocalPlayType,
|
||||
pub start_timestamp: i64,
|
||||
pub team_data: TeamDataItem,
|
||||
pub fight_drop_pool: FightDropPool,
|
||||
pub quest_manager: DungeonQuestManager,
|
||||
}
|
||||
|
||||
impl HollowGame {
|
||||
|
@ -38,7 +51,9 @@ impl HollowGame {
|
|||
weather: WeatherType::SunShine,
|
||||
start_timestamp: util::cur_timestamp() as i64,
|
||||
play_type,
|
||||
team_data: TeamDataItem::new(avatars, 0),
|
||||
team_data: TeamDataItem::new(avatars, &[]),
|
||||
fight_drop_pool: FightDropPool::new(template.battle_event_id),
|
||||
quest_manager: DungeonQuestManager::default(),
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -57,9 +72,66 @@ impl HollowGame {
|
|||
weather: WeatherType::SunShine,
|
||||
start_timestamp: util::cur_timestamp() as i64,
|
||||
play_type,
|
||||
team_data: TeamDataItem::new(avatars, buddy_id),
|
||||
team_data: TeamDataItem::new(
|
||||
avatars,
|
||||
&(buddy_id != 0)
|
||||
.then_some(vec![BuddyParam(buddy_id, BuddyTeamType::Fighting)])
|
||||
.unwrap_or_default(),
|
||||
),
|
||||
fight_drop_pool: FightDropPool::new(template.battle_event_id),
|
||||
quest_manager: DungeonQuestManager::default(),
|
||||
})
|
||||
}
|
||||
|
||||
pub fn create_pure_hollow_battle(
|
||||
quest_id: HollowQuestID,
|
||||
avatars: &[u32],
|
||||
buddy_id: u32,
|
||||
time_period: TimePeriodType,
|
||||
weather: WeatherType,
|
||||
) -> Result<Self, HollowGameError> {
|
||||
let template = quest_id.template();
|
||||
if template.chess_board_id != 0 {
|
||||
return Err(HollowGameError::QuestTypeNotSupported(
|
||||
template.id.value(),
|
||||
EHollowQuestType::from(template.hollow_quest_type),
|
||||
));
|
||||
}
|
||||
|
||||
let Some(battle_group) = tables::battle_group_config_template_tb::iter()
|
||||
.find(|tmpl| tmpl.quest_id == template.id.value())
|
||||
else {
|
||||
return Err(HollowGameError::BattleGroupNotFound(template.id.value()));
|
||||
};
|
||||
|
||||
Ok(Self {
|
||||
quest_id: template.id.value(),
|
||||
battle_event_id: battle_group.battle_event_id,
|
||||
time_period,
|
||||
weather,
|
||||
start_timestamp: util::cur_timestamp() as i64,
|
||||
play_type: Self::get_play_type_by_quest_type(EHollowQuestType::from(
|
||||
template.hollow_quest_type,
|
||||
)),
|
||||
team_data: TeamDataItem::new(
|
||||
avatars,
|
||||
&(buddy_id != 0)
|
||||
.then_some(vec![BuddyParam(buddy_id, BuddyTeamType::Fighting)])
|
||||
.unwrap_or_default(),
|
||||
),
|
||||
fight_drop_pool: FightDropPool::new(battle_group.battle_event_id),
|
||||
quest_manager: DungeonQuestManager::new_for_battle_group(battle_group.id),
|
||||
})
|
||||
}
|
||||
|
||||
pub fn get_play_type_by_quest_type(quest_type: EHollowQuestType) -> ELocalPlayType {
|
||||
match quest_type {
|
||||
EHollowQuestType::NormalBattle => ELocalPlayType::PureHollowBattle,
|
||||
EHollowQuestType::BossRushBattle => ELocalPlayType::BossRushBattle,
|
||||
EHollowQuestType::DifficutyBattle => ELocalPlayType::PureHollowBattleHardmode,
|
||||
_ => ELocalPlayType::PureHollowBattle,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl NapGameMode for HollowGame {
|
||||
|
@ -70,14 +142,16 @@ impl NapGameMode for HollowGame {
|
|||
fn scene_info(&self) -> Option<SceneInfo> {
|
||||
Some(SceneInfo {
|
||||
scene_type: self.scene_type() as u32,
|
||||
battle_event_id: self.battle_event_id,
|
||||
battle_event_id: self.battle_event_id.value(),
|
||||
play_type: self.play_type as u32,
|
||||
fight_scene_info: Some(FightSceneInfo {
|
||||
nmhdkmcabjg: true,
|
||||
weather_pool: Some(WeatherPoolInfo {
|
||||
time_period: self.time_period.to_string(),
|
||||
weather: self.weather.to_string(),
|
||||
..Default::default()
|
||||
}),
|
||||
fight_drop_info: Some(self.fight_drop_pool.to_client()),
|
||||
..Default::default()
|
||||
}),
|
||||
..Default::default()
|
||||
|
@ -93,14 +167,15 @@ impl NapGameMode for HollowGame {
|
|||
.team_data
|
||||
.avatar_member_list
|
||||
.iter()
|
||||
.map(InLevelAvatarDataItem::to_client)
|
||||
.map(AvatarUnit::to_client)
|
||||
.collect(),
|
||||
buddy_list: self
|
||||
.team_data
|
||||
.equipped_buddy_list
|
||||
.iter()
|
||||
.map(EquippedBuddyDataItem::to_client)
|
||||
.map(BuddyUnit::to_client)
|
||||
.collect(),
|
||||
dungeon_quest_info: Some(self.quest_manager.to_client()),
|
||||
..Default::default()
|
||||
})
|
||||
}
|
||||
|
|
141
nap_gameserver/src/logic/game/long_fight.rs
Normal file
141
nap_gameserver/src/logic/game/long_fight.rs
Normal file
|
@ -0,0 +1,141 @@
|
|||
use common::util;
|
||||
use data::tables::{self, BattleEventConfigID, HollowQuestID};
|
||||
use proto::{
|
||||
DungeonInfo, DungeonItemData, FightQuestInfo, LongFightInfo, LongFightSceneInfo, SceneInfo,
|
||||
WeatherPoolInfo,
|
||||
};
|
||||
use thiserror::Error;
|
||||
|
||||
use crate::logic::{
|
||||
battle::{
|
||||
drop::FightDropPool,
|
||||
unit::{AvatarUnit, BuddyUnit},
|
||||
BuddyParam, DungeonQuestManager, LogicVariableTable, TeamDataItem,
|
||||
},
|
||||
BuddyTeamType, EHollowQuestType, ELocalPlayType, ESceneType, TimePeriodType, WeatherType,
|
||||
};
|
||||
|
||||
use super::NapGameMode;
|
||||
|
||||
#[derive(Error, Debug)]
|
||||
pub enum LongFightGameError {
|
||||
#[error("Tried to run quest of type {0:?} using LongFight logic")]
|
||||
InvalidQuestType(EHollowQuestType),
|
||||
#[error("Battle group not found, quest id: {0}")]
|
||||
BattleGroupNotFound(u32),
|
||||
}
|
||||
|
||||
pub struct LongFightGame {
|
||||
pub quest_id: u32,
|
||||
pub battle_event_id: BattleEventConfigID,
|
||||
pub play_type: ELocalPlayType,
|
||||
pub time_period: TimePeriodType,
|
||||
pub weather: WeatherType,
|
||||
pub start_timestamp: i64,
|
||||
pub team_data: TeamDataItem,
|
||||
pub variable_table: LogicVariableTable,
|
||||
pub fight_drop_pool: FightDropPool,
|
||||
pub quest_manager: DungeonQuestManager,
|
||||
}
|
||||
|
||||
impl LongFightGame {
|
||||
const RALLY_GUIDANCE_BUDDY_ID: u32 = 50001;
|
||||
|
||||
pub fn create_rally_game(
|
||||
quest_id: HollowQuestID,
|
||||
avatars: &[u32],
|
||||
buddy_id: u32,
|
||||
time_period: TimePeriodType,
|
||||
weather: WeatherType,
|
||||
) -> Result<Self, LongFightGameError> {
|
||||
let template = quest_id.template();
|
||||
let quest_type = EHollowQuestType::from(template.hollow_quest_type);
|
||||
|
||||
if quest_type != EHollowQuestType::RallyBattle {
|
||||
return Err(LongFightGameError::InvalidQuestType(quest_type));
|
||||
}
|
||||
|
||||
let Some(battle_group) = tables::battle_group_config_template_tb::iter()
|
||||
.find(|tmpl| tmpl.quest_id == template.id.value())
|
||||
else {
|
||||
return Err(LongFightGameError::BattleGroupNotFound(template.id.value()));
|
||||
};
|
||||
|
||||
let mut buddy_params = vec![BuddyParam(
|
||||
Self::RALLY_GUIDANCE_BUDDY_ID,
|
||||
BuddyTeamType::RallyGuidance,
|
||||
)];
|
||||
|
||||
if buddy_id != 0 {
|
||||
buddy_params.push(BuddyParam(buddy_id, BuddyTeamType::Fighting));
|
||||
}
|
||||
|
||||
Ok(Self {
|
||||
quest_id: template.id.value(),
|
||||
battle_event_id: battle_group.battle_event_id,
|
||||
play_type: ELocalPlayType::RallyLongFight,
|
||||
time_period,
|
||||
weather,
|
||||
start_timestamp: util::cur_timestamp() as i64,
|
||||
team_data: TeamDataItem::new(avatars, &buddy_params),
|
||||
variable_table: LogicVariableTable::new(battle_group.battle_event_id),
|
||||
fight_drop_pool: FightDropPool::new(battle_group.battle_event_id),
|
||||
quest_manager: DungeonQuestManager::new_for_battle_group(battle_group.id),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl NapGameMode for LongFightGame {
|
||||
fn scene_type(&self) -> ESceneType {
|
||||
ESceneType::LongFight
|
||||
}
|
||||
|
||||
fn scene_info(&self) -> Option<SceneInfo> {
|
||||
Some(SceneInfo {
|
||||
scene_type: self.scene_type() as u32,
|
||||
battle_event_id: self.battle_event_id.value(),
|
||||
play_type: self.play_type as u32,
|
||||
long_fight_scene_info: Some(LongFightSceneInfo {
|
||||
fight_data: Some(LongFightInfo {
|
||||
fight_quest_info: Some(FightQuestInfo {
|
||||
fight_variable_map: self.variable_table.to_client(),
|
||||
..Default::default()
|
||||
}),
|
||||
..Default::default()
|
||||
}),
|
||||
fight_drop_info: Some(self.fight_drop_pool.to_client()),
|
||||
weather_pool: Some(WeatherPoolInfo {
|
||||
time_period: self.time_period.to_string(),
|
||||
weather: self.weather.to_string(),
|
||||
febgjinpcbp: true,
|
||||
bejeblcfcha: true,
|
||||
..Default::default()
|
||||
}),
|
||||
..Default::default()
|
||||
}),
|
||||
..Default::default()
|
||||
})
|
||||
}
|
||||
|
||||
fn dungeon_info(&self) -> Option<DungeonInfo> {
|
||||
Some(DungeonInfo {
|
||||
quest_id: self.quest_id,
|
||||
start_timestamp: self.start_timestamp,
|
||||
dungeon_item_data: Some(DungeonItemData::default()),
|
||||
avatar_list: self
|
||||
.team_data
|
||||
.avatar_member_list
|
||||
.iter()
|
||||
.map(AvatarUnit::to_client)
|
||||
.collect(),
|
||||
buddy_list: self
|
||||
.team_data
|
||||
.equipped_buddy_list
|
||||
.iter()
|
||||
.map(BuddyUnit::to_client)
|
||||
.collect(),
|
||||
dungeon_quest_info: Some(self.quest_manager.to_client()),
|
||||
..Default::default()
|
||||
})
|
||||
}
|
||||
}
|
|
@ -1,20 +1,23 @@
|
|||
mod fresh;
|
||||
mod frontend;
|
||||
mod hollow;
|
||||
mod long_fight;
|
||||
pub use fresh::*;
|
||||
pub use frontend::*;
|
||||
pub use hollow::*;
|
||||
pub use long_fight::*;
|
||||
|
||||
use proto::{DungeonInfo, SceneInfo, WorldInitScNotify};
|
||||
use thiserror::Error;
|
||||
|
||||
use super::{procedure::ProcedureError, ESceneType};
|
||||
use super::{battle::DungeonQuestError, procedure::ProcedureError, ESceneType};
|
||||
|
||||
#[derive(Default)]
|
||||
pub enum GameInstance {
|
||||
Frontend(FrontendGame),
|
||||
Fresh(FreshGame),
|
||||
Hollow(HollowGame),
|
||||
LongFight(LongFightGame),
|
||||
#[default]
|
||||
Null,
|
||||
}
|
||||
|
@ -29,6 +32,10 @@ pub enum LogicError {
|
|||
Procedure(#[from] ProcedureError),
|
||||
#[error("hollow error: {0}")]
|
||||
Hollow(#[from] HollowGameError),
|
||||
#[error("longfight error: {0}")]
|
||||
LongFight(#[from] LongFightGameError),
|
||||
#[error("dungeon quest error: {0}")]
|
||||
DungeonQuest(#[from] DungeonQuestError),
|
||||
}
|
||||
|
||||
impl GameInstance {
|
||||
|
@ -41,6 +48,7 @@ impl GameInstance {
|
|||
Self::Frontend(game) => game,
|
||||
Self::Fresh(game) => game,
|
||||
Self::Hollow(game) => game,
|
||||
Self::LongFight(game) => game,
|
||||
Self::Null => return Err(LogicError::GameIsNull),
|
||||
}))
|
||||
}
|
||||
|
|
|
@ -378,7 +378,7 @@ pub struct Pijchhdicik {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Plfbkmmmdbm {
|
||||
#[prost(map = "uint32, int32", tag = "15")]
|
||||
pub nknnphiofnc: ::std::collections::HashMap<u32, i32>,
|
||||
pub reward_item_map: ::std::collections::HashMap<u32, i32>,
|
||||
#[xor(10983)]
|
||||
#[prost(uint32, tag = "7")]
|
||||
pub num: u32,
|
||||
|
@ -449,7 +449,7 @@ pub struct Ebjndhaabhd {}
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Bpjgcjfagjn {
|
||||
pub struct StartHollowQuestScRsp {
|
||||
#[xor(10421)]
|
||||
#[prost(int32, tag = "12")]
|
||||
pub retcode: i32,
|
||||
|
@ -1181,7 +1181,7 @@ pub struct Dpcaompjmkd {
|
|||
pub struct Leijdkhanbk {
|
||||
#[xor(3946)]
|
||||
#[prost(uint32, tag = "3")]
|
||||
pub bodgohfdpdm: u32,
|
||||
pub reward_id: u32,
|
||||
#[prost(uint32, repeated, tag = "11")]
|
||||
pub jbgdcefooig: ::prost::alloc::vec::Vec<u32>,
|
||||
}
|
||||
|
@ -1408,7 +1408,7 @@ pub struct Cgfaciihkhg {
|
|||
pub retcode: i32,
|
||||
#[xor(11896)]
|
||||
#[prost(uint32, tag = "4")]
|
||||
pub bodgohfdpdm: u32,
|
||||
pub reward_id: u32,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[cmdid(506)]
|
||||
|
@ -2797,7 +2797,7 @@ pub struct Eoaebmjlfjc {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct EquippedBuddyData {
|
||||
pub struct BuddyUnitInfo {
|
||||
#[xor(8856)]
|
||||
#[prost(uint32, tag = "9")]
|
||||
pub buddy_id: u32,
|
||||
|
@ -3569,7 +3569,7 @@ pub struct Oibjennolgc {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Jjfgnfbllam {
|
||||
#[prost(message, optional, tag = "5")]
|
||||
pub imlccggifln: ::core::option::Option<Dakiokjppim>,
|
||||
pub imlccggifln: ::core::option::Option<RewardItems>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
|
@ -6213,12 +6213,12 @@ pub struct Idjdkpcemml {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Kcpiaoolaoa {
|
||||
pub struct DungeonQuestInfo {
|
||||
#[xor(14765)]
|
||||
#[prost(uint32, tag = "6")]
|
||||
pub ddpnajpnana: u32,
|
||||
#[prost(uint32, repeated, tag = "14")]
|
||||
pub lpkbljdldhh: ::prost::alloc::vec::Vec<u32>,
|
||||
pub inner_quest_id_list: ::prost::alloc::vec::Vec<u32>,
|
||||
#[prost(bool, tag = "7")]
|
||||
pub mbkjmjajnfh: bool,
|
||||
}
|
||||
|
@ -6525,7 +6525,7 @@ pub struct FightSceneInfo {
|
|||
#[prost(bool, tag = "4")]
|
||||
pub nmhdkmcabjg: bool,
|
||||
#[prost(message, optional, tag = "2")]
|
||||
pub ecchkhdeaip: ::core::option::Option<Micfkdoklip>,
|
||||
pub fight_drop_info: ::core::option::Option<FightDropInfo>,
|
||||
#[prost(message, optional, tag = "12")]
|
||||
pub weather_pool: ::core::option::Option<WeatherPoolInfo>,
|
||||
#[prost(enumeration = "Nohmcjnnpmm", tag = "8")]
|
||||
|
@ -9094,7 +9094,7 @@ pub struct Fngaidbpnkj {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Gkfhklbbcpo {
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub bodgohfdpdm: ::core::option::Option<StringEntry>,
|
||||
pub reward_id: ::core::option::Option<StringEntry>,
|
||||
#[prost(message, optional, tag = "2")]
|
||||
pub hcbmgnoifbm: ::core::option::Option<StringEntry>,
|
||||
#[prost(bool, tag = "3")]
|
||||
|
@ -9187,7 +9187,7 @@ pub struct Bffgkjikbhp {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Cidlkacaddl {
|
||||
#[prost(message, optional, tag = "4")]
|
||||
pub hoilnlbpbhj: ::core::option::Option<Apeikaeanjn>,
|
||||
pub fight_data: ::core::option::Option<LongFightInfo>,
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub weather_pool: ::core::option::Option<WeatherPoolInfo>,
|
||||
#[prost(bool, tag = "3")]
|
||||
|
@ -9945,7 +9945,7 @@ pub struct Ldoblghjoln {
|
|||
pub struct Igoalcdgmjl {
|
||||
#[xor(3591)]
|
||||
#[prost(uint32, tag = "4")]
|
||||
pub bodgohfdpdm: u32,
|
||||
pub reward_id: u32,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[cmdid(832)]
|
||||
|
@ -10309,15 +10309,15 @@ pub struct Hiedoccooec {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Pdodojnohie {
|
||||
pub struct FightReward {
|
||||
#[xor(11616)]
|
||||
#[prost(uint32, tag = "13")]
|
||||
pub lkcfnbhnfea: u32,
|
||||
#[xor(2332)]
|
||||
#[prost(uint32, tag = "9")]
|
||||
pub bodgohfdpdm: u32,
|
||||
pub reward_id: u32,
|
||||
#[prost(map = "uint32, message", tag = "4")]
|
||||
pub imfkhpmeddc: ::std::collections::HashMap<u32, Dakiokjppim>,
|
||||
pub fight_reward_map: ::std::collections::HashMap<u32, RewardItems>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
|
@ -10674,7 +10674,7 @@ pub struct Hldiflejdfc {
|
|||
#[prost(int32, tag = "12")]
|
||||
pub retcode: i32,
|
||||
#[prost(message, optional, tag = "5")]
|
||||
pub fbenfhmeoib: ::core::option::Option<Dakiokjppim>,
|
||||
pub fbenfhmeoib: ::core::option::Option<RewardItems>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[cmdid(2970)]
|
||||
|
@ -11288,9 +11288,9 @@ pub struct Hingogdjkgk {}
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Kkdokpblmel {
|
||||
pub struct LongFightSceneInfo {
|
||||
#[prost(message, optional, tag = "4")]
|
||||
pub hoilnlbpbhj: ::core::option::Option<Apeikaeanjn>,
|
||||
pub fight_data: ::core::option::Option<LongFightInfo>,
|
||||
#[xor(9629)]
|
||||
#[prost(uint32, tag = "15")]
|
||||
pub pimheackgbn: u32,
|
||||
|
@ -11298,7 +11298,7 @@ pub struct Kkdokpblmel {
|
|||
#[prost(uint32, tag = "13")]
|
||||
pub godemojnplf: u32,
|
||||
#[prost(message, optional, tag = "2")]
|
||||
pub ecchkhdeaip: ::core::option::Option<Micfkdoklip>,
|
||||
pub fight_drop_info: ::core::option::Option<FightDropInfo>,
|
||||
#[xor(521)]
|
||||
#[prost(uint32, tag = "10")]
|
||||
pub bepokkffcno: u32,
|
||||
|
@ -12103,7 +12103,7 @@ pub struct Fnkcmdleffa {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Apeikaeanjn {
|
||||
pub struct LongFightInfo {
|
||||
#[prost(message, repeated, tag = "5")]
|
||||
pub kcbpcgehkop: ::prost::alloc::vec::Vec<Edbojjhlefk>,
|
||||
#[prost(uint32, repeated, tag = "2")]
|
||||
|
@ -12133,7 +12133,7 @@ pub struct Apeikaeanjn {
|
|||
#[prost(int32, tag = "1")]
|
||||
pub nnhpiaalhbb: i32,
|
||||
#[prost(message, optional, tag = "15")]
|
||||
pub bfcjlcmoneo: ::core::option::Option<Ibapndpfkgg>,
|
||||
pub fight_quest_info: ::core::option::Option<FightQuestInfo>,
|
||||
#[xor(10292)]
|
||||
#[prost(int32, tag = "11")]
|
||||
pub fejncgfeejm: i32,
|
||||
|
@ -12166,7 +12166,7 @@ pub struct Phfdjdddddf {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Mbfcgalihdj {
|
||||
#[prost(message, repeated, tag = "1")]
|
||||
pub hoilnlbpbhj: ::prost::alloc::vec::Vec<Dhnkecjhcph>,
|
||||
pub fight_data: ::prost::alloc::vec::Vec<Dhnkecjhcph>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[cmdid(1344)]
|
||||
|
@ -14695,7 +14695,7 @@ pub struct Leojkfpnfnh {
|
|||
#[prost(int32, tag = "8")]
|
||||
pub retcode: i32,
|
||||
#[prost(message, optional, tag = "3")]
|
||||
pub imlccggifln: ::core::option::Option<Dakiokjppim>,
|
||||
pub imlccggifln: ::core::option::Option<RewardItems>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
|
@ -15583,7 +15583,7 @@ pub struct Ekbekcnehij {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Kngeifmanhe {
|
||||
pub struct FinishHollowBattleEventScRsp {
|
||||
#[xor(8897)]
|
||||
#[prost(int32, tag = "3")]
|
||||
pub retcode: i32,
|
||||
|
@ -16216,7 +16216,7 @@ pub struct NeedItemInfo {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Onlmpmgcdle {
|
||||
#[prost(message, repeated, tag = "13")]
|
||||
pub buddy_list: ::prost::alloc::vec::Vec<EquippedBuddyData>,
|
||||
pub buddy_list: ::prost::alloc::vec::Vec<BuddyUnitInfo>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[cmdid(5211)]
|
||||
|
@ -18513,9 +18513,9 @@ pub struct ItemSync {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Dakiokjppim {
|
||||
pub struct RewardItems {
|
||||
#[prost(map = "uint32, uint32", tag = "1")]
|
||||
pub nknnphiofnc: ::std::collections::HashMap<u32, u32>,
|
||||
pub reward_item_map: ::std::collections::HashMap<u32, u32>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
|
@ -18711,9 +18711,9 @@ pub struct Kajaeggdaed {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Kokopmmjjkd {
|
||||
pub struct LongFightProgressUpdateCsReq {
|
||||
#[prost(message, optional, tag = "5")]
|
||||
pub dpfkafjjpgg: ::core::option::Option<Apeikaeanjn>,
|
||||
pub dpfkafjjpgg: ::core::option::Option<LongFightInfo>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
|
@ -18886,7 +18886,7 @@ pub struct Fplohgjjakh {}
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Mlmhhgahjef {
|
||||
#[prost(map = "uint32, uint32", tag = "5")]
|
||||
pub nknnphiofnc: ::std::collections::HashMap<u32, u32>,
|
||||
pub reward_item_map: ::std::collections::HashMap<u32, u32>,
|
||||
#[prost(message, repeated, tag = "13")]
|
||||
pub klbehoieibi: ::prost::alloc::vec::Vec<Cojcpppiloj>,
|
||||
}
|
||||
|
@ -18942,7 +18942,7 @@ pub struct BattleResult {
|
|||
#[prost(int32, tag = "13")]
|
||||
pub fejncgfeejm: i32,
|
||||
#[prost(message, optional, tag = "14")]
|
||||
pub bfcjlcmoneo: ::core::option::Option<Ibapndpfkgg>,
|
||||
pub fight_quest_info: ::core::option::Option<FightQuestInfo>,
|
||||
#[prost(uint32, tag = "15")]
|
||||
pub fjochpjpckk: u32,
|
||||
#[prost(uint32, tag = "16")]
|
||||
|
@ -20432,14 +20432,14 @@ pub struct Bhadkflffdn {
|
|||
#[prost(int32, repeated, tag = "11")]
|
||||
pub lafgnlffjap: ::prost::alloc::vec::Vec<i32>,
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub nknnphiofnc: ::core::option::Option<Dakiokjppim>,
|
||||
pub reward_item_map: ::core::option::Option<RewardItems>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[cmdid(616)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Digbkbbhapo {}
|
||||
pub struct FinishHollowBattleEventCsReq {}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[cmdid(452)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
|
@ -21885,7 +21885,7 @@ pub struct Hfmncckhjlb {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct ArchiveQuestsSeenCsReq {
|
||||
pub struct JumpPageSystemCsReq {
|
||||
#[prost(bool, tag = "8")]
|
||||
pub ehmopjccohg: bool,
|
||||
#[prost(bool, tag = "7")]
|
||||
|
@ -23013,7 +23013,7 @@ pub struct Gpaeenlhmeg {
|
|||
#[prost(uint32, tag = "14")]
|
||||
pub ielhdeegnof: u32,
|
||||
#[prost(message, optional, tag = "1")]
|
||||
pub ecchkhdeaip: ::core::option::Option<Micfkdoklip>,
|
||||
pub fight_drop_info: ::core::option::Option<FightDropInfo>,
|
||||
#[xor(11485)]
|
||||
#[prost(uint32, tag = "11")]
|
||||
pub pimheackgbn: u32,
|
||||
|
@ -23095,7 +23095,7 @@ pub struct Jjmnjckodgk {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Fopnijbcimm {
|
||||
#[prost(map = "uint32, message", tag = "1")]
|
||||
pub foicfpfnlcf: ::std::collections::HashMap<u32, InLevelAvatarData>,
|
||||
pub foicfpfnlcf: ::std::collections::HashMap<u32, AvatarUnitInfo>,
|
||||
#[prost(uint32, repeated, tag = "6")]
|
||||
pub ajnocghpbmj: ::prost::alloc::vec::Vec<u32>,
|
||||
#[prost(bool, tag = "12")]
|
||||
|
@ -23240,7 +23240,7 @@ pub struct Ohecicdbffc {}
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Jjeopgljjdi {
|
||||
#[prost(message, optional, tag = "15")]
|
||||
pub imlccggifln: ::core::option::Option<Dakiokjppim>,
|
||||
pub imlccggifln: ::core::option::Option<RewardItems>,
|
||||
#[xor(3398)]
|
||||
#[prost(int32, tag = "2")]
|
||||
pub retcode: i32,
|
||||
|
@ -23358,7 +23358,7 @@ pub struct Bkfegfokfhb {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Nnibknhmkde {
|
||||
#[prost(message, optional, tag = "4")]
|
||||
pub hjnilekelcl: ::core::option::Option<Dakiokjppim>,
|
||||
pub hjnilekelcl: ::core::option::Option<RewardItems>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
|
@ -23765,15 +23765,15 @@ pub struct Ifehnndilna {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Gjahalfimjf {
|
||||
pub struct FightVariable {
|
||||
#[prost(uint32, tag = "1")]
|
||||
pub r#type: u32,
|
||||
#[prost(int64, tag = "3")]
|
||||
pub ckaehkfnglp: i64,
|
||||
pub int_value: i64,
|
||||
#[prost(double, tag = "5")]
|
||||
pub cajdgnnmhnc: f64,
|
||||
pub float_value: f64,
|
||||
#[prost(string, tag = "6")]
|
||||
pub ihdplhhldbg: ::prost::alloc::string::String,
|
||||
pub string_value: ::prost::alloc::string::String,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[cmdid(37)]
|
||||
|
@ -24091,13 +24091,13 @@ pub struct Geacbdjcidc {}
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Micfkdoklip {
|
||||
pub struct FightDropInfo {
|
||||
#[prost(message, repeated, tag = "4")]
|
||||
pub njnjifcplpc: ::prost::alloc::vec::Vec<Pdodojnohie>,
|
||||
pub normal_drop_list: ::prost::alloc::vec::Vec<FightReward>,
|
||||
#[prost(message, repeated, tag = "13")]
|
||||
pub nfjppfdhjln: ::prost::alloc::vec::Vec<Pdodojnohie>,
|
||||
pub special_drop_list: ::prost::alloc::vec::Vec<FightReward>,
|
||||
#[prost(message, repeated, tag = "14")]
|
||||
pub lnjhkpgojjo: ::prost::alloc::vec::Vec<Pdodojnohie>,
|
||||
pub lnjhkpgojjo: ::prost::alloc::vec::Vec<FightReward>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
|
@ -25751,13 +25751,13 @@ pub struct DungeonInfo {
|
|||
#[prost(message, optional, tag = "3")]
|
||||
pub ncfafdpojjh: ::core::option::Option<Kalfjemiaaa>,
|
||||
#[prost(message, optional, tag = "8")]
|
||||
pub buddy: ::core::option::Option<EquippedBuddyData>,
|
||||
pub buddy: ::core::option::Option<BuddyUnitInfo>,
|
||||
#[prost(bool, tag = "1724")]
|
||||
pub gjhgpapkmod: bool,
|
||||
#[prost(bool, tag = "1109")]
|
||||
pub jgkfjmdinmo: bool,
|
||||
#[prost(message, repeated, tag = "13")]
|
||||
pub avatar_list: ::prost::alloc::vec::Vec<InLevelAvatarData>,
|
||||
pub avatar_list: ::prost::alloc::vec::Vec<AvatarUnitInfo>,
|
||||
#[prost(message, optional, tag = "522")]
|
||||
pub chnhoilfkhf: ::core::option::Option<Afhnppffhoh>,
|
||||
#[prost(message, optional, tag = "1725")]
|
||||
|
@ -25769,7 +25769,7 @@ pub struct DungeonInfo {
|
|||
#[prost(map = "uint32, int32", tag = "7")]
|
||||
pub njfikojmpcm: ::std::collections::HashMap<u32, i32>,
|
||||
#[prost(message, repeated, tag = "1395")]
|
||||
pub buddy_list: ::prost::alloc::vec::Vec<EquippedBuddyData>,
|
||||
pub buddy_list: ::prost::alloc::vec::Vec<BuddyUnitInfo>,
|
||||
#[prost(message, optional, tag = "2")]
|
||||
pub dungeon_item_data: ::core::option::Option<DungeonItemData>,
|
||||
#[prost(message, optional, tag = "5")]
|
||||
|
@ -25801,7 +25801,7 @@ pub struct DungeonInfo {
|
|||
#[prost(message, repeated, tag = "6")]
|
||||
pub leccoclclio: ::prost::alloc::vec::Vec<Kkncmfaiipc>,
|
||||
#[prost(message, optional, tag = "770")]
|
||||
pub jpegbgpmkcb: ::core::option::Option<Kcpiaoolaoa>,
|
||||
pub dungeon_quest_info: ::core::option::Option<DungeonQuestInfo>,
|
||||
#[prost(message, optional, tag = "11")]
|
||||
pub pkhipbapmhb: ::core::option::Option<Cgpajijemlj>,
|
||||
}
|
||||
|
@ -25997,7 +25997,7 @@ pub struct Kajejllpdia {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Lchodkpiolg {
|
||||
pub struct LongFightProgressUpdateScRsp {
|
||||
#[xor(5903)]
|
||||
#[prost(int32, tag = "3")]
|
||||
pub retcode: i32,
|
||||
|
@ -26194,7 +26194,7 @@ pub struct Aliigncbcfb {}
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct ArchiveQuestsSeenScRsp {
|
||||
pub struct JumpPageSystemScRsp {
|
||||
#[xor(11593)]
|
||||
#[prost(int32, tag = "9")]
|
||||
pub retcode: i32,
|
||||
|
@ -26941,11 +26941,11 @@ pub struct Ebdcbdkeeij {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Ibapndpfkgg {
|
||||
pub struct FightQuestInfo {
|
||||
#[prost(map = "string, message", tag = "1")]
|
||||
pub nfjmhkmgcfh: ::std::collections::HashMap<
|
||||
pub fight_variable_map: ::std::collections::HashMap<
|
||||
::prost::alloc::string::String,
|
||||
Gjahalfimjf,
|
||||
FightVariable,
|
||||
>,
|
||||
#[prost(int32, tag = "2")]
|
||||
pub lgchgcpaebe: i32,
|
||||
|
@ -27673,7 +27673,7 @@ pub struct Dehlcmioiab {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct InLevelAvatarData {
|
||||
pub struct AvatarUnitInfo {
|
||||
#[prost(uint32, repeated, tag = "8")]
|
||||
pub fnaikfegocl: ::prost::alloc::vec::Vec<u32>,
|
||||
#[prost(map = "uint32, int32", tag = "14")]
|
||||
|
@ -30478,7 +30478,7 @@ pub struct SceneInfo {
|
|||
#[prost(message, optional, tag = "11")]
|
||||
pub ioljbfcnngh: ::core::option::Option<Kmfjldhlcaa>,
|
||||
#[prost(message, optional, tag = "5")]
|
||||
pub oclcngkobkh: ::core::option::Option<Kkdokpblmel>,
|
||||
pub long_fight_scene_info: ::core::option::Option<LongFightSceneInfo>,
|
||||
#[xor(13355)]
|
||||
#[prost(uint32, tag = "15")]
|
||||
pub battle_event_id: u32,
|
||||
|
@ -32332,7 +32332,7 @@ pub struct Oflcipncgff {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Fbpbgapdoio {
|
||||
#[prost(map = "uint32, uint32", tag = "1")]
|
||||
pub nknnphiofnc: ::std::collections::HashMap<u32, u32>,
|
||||
pub reward_item_map: ::std::collections::HashMap<u32, u32>,
|
||||
#[prost(string, tag = "2")]
|
||||
pub hacnhcflago: ::prost::alloc::string::String,
|
||||
#[prost(int32, repeated, tag = "3")]
|
||||
|
@ -32976,7 +32976,7 @@ pub struct Mlkecejbbnk {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Nkjdgaedenj {
|
||||
#[prost(map = "uint32, uint32", tag = "1")]
|
||||
pub nknnphiofnc: ::std::collections::HashMap<u32, u32>,
|
||||
pub reward_item_map: ::std::collections::HashMap<u32, u32>,
|
||||
#[prost(uint32, tag = "2")]
|
||||
pub amkgocmddkl: u32,
|
||||
#[prost(uint32, tag = "3")]
|
||||
|
@ -33763,14 +33763,14 @@ pub struct BeginnerBattleRebeginScRsp {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Dlnnaniponi {
|
||||
#[prost(message, optional, tag = "14")]
|
||||
pub dpfkafjjpgg: ::core::option::Option<Apeikaeanjn>,
|
||||
pub dpfkafjjpgg: ::core::option::Option<LongFightInfo>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[cmdid(575)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Jhinopamaoa {
|
||||
pub struct StartHollowQuestCsReq {
|
||||
#[prost(uint32, repeated, tag = "8")]
|
||||
pub olcifcglpdd: ::prost::alloc::vec::Vec<u32>,
|
||||
#[prost(uint32, repeated, tag = "11")]
|
||||
|
@ -33786,7 +33786,7 @@ pub struct Jhinopamaoa {
|
|||
#[prost(bool, tag = "9")]
|
||||
pub is_story: bool,
|
||||
#[prost(string, tag = "15")]
|
||||
pub aljacgiaang: ::prost::alloc::string::String,
|
||||
pub quest_weather: ::prost::alloc::string::String,
|
||||
#[xor(15965)]
|
||||
#[prost(uint32, tag = "4")]
|
||||
pub quest_id: u32,
|
||||
|
@ -33802,7 +33802,7 @@ pub struct Jhinopamaoa {
|
|||
#[prost(uint32, repeated, tag = "1")]
|
||||
pub bfgcegliaig: ::prost::alloc::vec::Vec<u32>,
|
||||
#[prost(string, tag = "13")]
|
||||
pub hhfhnaflido: ::prost::alloc::string::String,
|
||||
pub quest_time_period: ::prost::alloc::string::String,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
|
@ -34382,7 +34382,7 @@ pub struct Gmpbopcdfdf {
|
|||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Ihngahmmdip {
|
||||
#[prost(message, optional, tag = "10")]
|
||||
pub nknnphiofnc: ::core::option::Option<Dakiokjppim>,
|
||||
pub reward_item_map: ::core::option::Option<RewardItems>,
|
||||
#[xor(12003)]
|
||||
#[prost(int32, tag = "1")]
|
||||
pub retcode: i32,
|
||||
|
@ -34542,7 +34542,7 @@ pub struct Eoofpncjjhk {
|
|||
#[derive(proto_gen::XorFields)]
|
||||
#[allow(clippy::derive_partial_eq_without_eq)]
|
||||
#[derive(Clone, PartialEq, ::prost::Message)]
|
||||
pub struct Pllkofkchmk {
|
||||
pub struct DungeonQuestFinishedScNotify {
|
||||
#[prost(message, optional, tag = "1760")]
|
||||
pub bojcpfdbolc: ::core::option::Option<Hpalfgllgje>,
|
||||
#[xor(15752)]
|
||||
|
@ -34569,7 +34569,7 @@ pub struct Pllkofkchmk {
|
|||
#[prost(uint32, tag = "763")]
|
||||
pub nldgcedhoej: u32,
|
||||
#[prost(map = "uint32, message", tag = "4")]
|
||||
pub imfkhpmeddc: ::std::collections::HashMap<u32, Jflokpkocia>,
|
||||
pub fight_reward_map: ::std::collections::HashMap<u32, Jflokpkocia>,
|
||||
#[prost(message, repeated, tag = "9")]
|
||||
pub kjmdchdpakf: ::prost::alloc::vec::Vec<Ifndfopgcph>,
|
||||
#[xor(5804)]
|
||||
|
@ -35132,7 +35132,7 @@ pub struct Aaooljgnjll {
|
|||
#[prost(int32, tag = "13")]
|
||||
pub retcode: i32,
|
||||
#[prost(message, optional, tag = "6")]
|
||||
pub hoilnlbpbhj: ::core::option::Option<Bcenmkcdllf>,
|
||||
pub fight_data: ::core::option::Option<Bcenmkcdllf>,
|
||||
}
|
||||
#[derive(proto_gen::CmdID)]
|
||||
#[derive(proto_gen::XorFields)]
|
||||
|
@ -48348,7 +48348,7 @@ impl DungeonContentDropPoolType {
|
|||
#[repr(i32)]
|
||||
pub enum BuddyTeamType {
|
||||
None = 0,
|
||||
Unknown = 1,
|
||||
RallyGuidance = 1,
|
||||
Fighting = 2,
|
||||
Assisting = 3,
|
||||
}
|
||||
|
@ -48360,7 +48360,7 @@ impl BuddyTeamType {
|
|||
pub fn as_str_name(&self) -> &'static str {
|
||||
match self {
|
||||
BuddyTeamType::None => "BUDDY_TEAM_TYPE_NONE",
|
||||
BuddyTeamType::Unknown => "BUDDY_TEAM_TYPE_UNKNOWN",
|
||||
BuddyTeamType::RallyGuidance => "BUDDY_TEAM_TYPE_RALLY_GUIDANCE",
|
||||
BuddyTeamType::Fighting => "BUDDY_TEAM_TYPE_FIGHTING",
|
||||
BuddyTeamType::Assisting => "BUDDY_TEAM_TYPE_ASSISTING",
|
||||
}
|
||||
|
@ -48369,7 +48369,7 @@ impl BuddyTeamType {
|
|||
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
|
||||
match value {
|
||||
"BUDDY_TEAM_TYPE_NONE" => Some(Self::None),
|
||||
"BUDDY_TEAM_TYPE_UNKNOWN" => Some(Self::Unknown),
|
||||
"BUDDY_TEAM_TYPE_RALLY_GUIDANCE" => Some(Self::RallyGuidance),
|
||||
"BUDDY_TEAM_TYPE_FIGHTING" => Some(Self::Fighting),
|
||||
"BUDDY_TEAM_TYPE_ASSISTING" => Some(Self::Assisting),
|
||||
_ => None,
|
||||
|
|
Loading…
Reference in a new issue