@@ -99,9 +99,15 @@ ModInfoWithConflictInfo::Conflicts ModInfoWithConflictInfo::doConflictCheck() co
99
99
bool providesAnything = false ;
100
100
bool hasHiddenFiles = false ;
101
101
102
- int dataID = 0 ;
102
+ QList< int > dataIDs ;
103
103
if (m_Core.directoryStructure ()->originExists (L" data" )) {
104
- dataID = m_Core.directoryStructure ()->getOriginByName (L" data" ).getID ();
104
+ dataIDs.append (m_Core.directoryStructure ()->getOriginByName (L" data" ).getID ());
105
+ }
106
+ for (auto origin : m_Core.managedGame ()->secondaryDataDirectories ().keys ()) {
107
+ if (m_Core.directoryStructure ()->originExists (origin.toStdWString ())) {
108
+ dataIDs.append (
109
+ m_Core.directoryStructure ()->getOriginByName (origin.toStdWString ()).getID ());
110
+ }
105
111
}
106
112
107
113
std::wstring name = ToWString (this ->name ());
@@ -145,7 +151,8 @@ ModInfoWithConflictInfo::Conflicts ModInfoWithConflictInfo::doConflictCheck() co
145
151
}
146
152
147
153
auto alternatives = file->getAlternatives ();
148
- if ((alternatives.size () == 0 ) || (alternatives.back ().originID () == dataID)) {
154
+ if ((alternatives.size () == 0 ) ||
155
+ dataIDs.contains (alternatives.back ().originID ())) {
149
156
// no alternatives -> no conflict
150
157
providesAnything = true ;
151
158
} else {
@@ -181,7 +188,7 @@ ModInfoWithConflictInfo::Conflicts ModInfoWithConflictInfo::doConflictCheck() co
181
188
182
189
// Sort out the alternatives
183
190
for (const auto & altInfo : alternatives) {
184
- if ((altInfo.originID () != dataID ) &&
191
+ if ((!dataIDs. contains ( altInfo.originID ()) ) &&
185
192
(altInfo.originID () != origin.getID ())) {
186
193
FilesOrigin& altOrigin =
187
194
m_Core.directoryStructure ()->getOriginByID (altInfo.originID ());
0 commit comments