@@ -32,40 +32,64 @@ function GameVersion({needs_list, set_needs_list}) {
3232 //巨构是深空的前置依赖
3333 let MMSGUID = game_data_info_list [ 1 ] . name_en + game_data_info_list [ 1 ] . version ;
3434 let TCFVGUID = game_data_info_list [ 2 ] . name_en + game_data_info_list [ 2 ] . version ;
35- let b1 = mods . includes ( MMSGUID ) ;
36- let b2 = mods . includes ( TCFVGUID ) ;
37- let b3 = modList . includes ( MMSGUID ) ;
38- let b4 = modList . includes ( TCFVGUID ) ;
39- if ( ! b1 && ! b2 && ! b3 && b4 ) {
35+ let mms_old = mods . includes ( MMSGUID ) ;
36+ let tcfv_old = mods . includes ( TCFVGUID ) ;
37+ let mms_new = modList . includes ( MMSGUID ) ;
38+ let tcfv_new = modList . includes ( TCFVGUID ) ;
39+ if ( ! mms_old && ! tcfv_old && ! mms_new && tcfv_new ) {
4040 modList . push ( MMSGUID ) ;
4141 }
42- if ( b1 && b2 && ! b3 && b4 ) {
42+ if ( mms_old && tcfv_old && ! mms_new && tcfv_new ) {
4343 modList = modList . filter ( ( mod ) => mod !== TCFVGUID ) ;
4444 }
45- //创世和分馏只能选择一个
45+ //创世和分馏只能各自选择一个,并且只能同时选择旧版或者同时选择新版
4646 let GBGUID1 = game_data_info_list [ 3 ] . name_en + game_data_info_list [ 3 ] . version ;
4747 let GBGUID2 = game_data_info_list [ 4 ] . name_en + game_data_info_list [ 4 ] . version ;
48- b1 = mods . includes ( GBGUID1 ) ;
49- b2 = mods . includes ( GBGUID2 ) ;
50- b3 = modList . includes ( GBGUID1 ) ;
51- b4 = modList . includes ( GBGUID2 ) ;
52- if ( b1 && ! b2 && b3 && b4 ) {
53- modList = modList . filter ( ( mod ) => mod !== GBGUID1 ) ;
54- }
55- if ( ! b1 && b2 && b3 && b4 ) {
56- modList = modList . filter ( ( mod ) => mod !== GBGUID2 ) ;
57- }
48+ let gb1_old = mods . includes ( GBGUID1 ) ;
49+ let gb2_old = mods . includes ( GBGUID2 ) ;
50+ let gb1_new = modList . includes ( GBGUID1 ) ;
51+ let gb2_new = modList . includes ( GBGUID2 ) ;
5852 let FEGUID1 = game_data_info_list [ 5 ] . name_en + game_data_info_list [ 5 ] . version ;
5953 let FEGUID2 = game_data_info_list [ 6 ] . name_en + game_data_info_list [ 6 ] . version ;
60- b1 = mods . includes ( FEGUID1 ) ;
61- b2 = mods . includes ( FEGUID2 ) ;
62- b3 = modList . includes ( FEGUID1 ) ;
63- b4 = modList . includes ( FEGUID2 ) ;
64- if ( b1 && ! b2 && b3 && b4 ) {
65- modList = modList . filter ( ( mod ) => mod !== FEGUID1 ) ;
54+ let fe1_old = mods . includes ( FEGUID1 ) ;
55+ let fe2_old = mods . includes ( FEGUID2 ) ;
56+ let fe1_new = modList . includes ( FEGUID1 ) ;
57+ let fe2_new = modList . includes ( FEGUID2 ) ;
58+ if ( ! gb1_old && gb1_new ) {
59+ if ( gb2_old ) {
60+ modList = modList . filter ( ( mod ) => mod !== GBGUID2 ) ;
61+ }
62+ if ( fe2_old ) {
63+ modList = modList . filter ( ( mod ) => mod !== FEGUID2 ) ;
64+ modList . push ( FEGUID1 ) ;
65+ }
66+ }
67+ if ( ! gb2_old && gb2_new ) {
68+ if ( gb1_old ) {
69+ modList = modList . filter ( ( mod ) => mod !== GBGUID1 ) ;
70+ }
71+ if ( fe1_old ) {
72+ modList = modList . filter ( ( mod ) => mod !== FEGUID1 ) ;
73+ modList . push ( FEGUID2 ) ;
74+ }
75+ }
76+ if ( ! fe1_old && fe1_new ) {
77+ if ( fe2_old ) {
78+ modList = modList . filter ( ( mod ) => mod !== FEGUID2 ) ;
79+ }
80+ if ( gb2_old ) {
81+ modList = modList . filter ( ( mod ) => mod !== GBGUID2 ) ;
82+ modList . push ( GBGUID1 ) ;
83+ }
6684 }
67- if ( ! b1 && b2 && b3 && b4 ) {
68- modList = modList . filter ( ( mod ) => mod !== FEGUID2 ) ;
85+ if ( ! fe2_old && fe2_new ) {
86+ if ( fe1_old ) {
87+ modList = modList . filter ( ( mod ) => mod !== FEGUID1 ) ;
88+ }
89+ if ( gb1_old ) {
90+ modList = modList . filter ( ( mod ) => mod !== GBGUID1 ) ;
91+ modList . push ( GBGUID2 ) ;
92+ }
6993 }
7094
7195 //按照规定的顺序排序mods
0 commit comments