2022-07-29 17:32:56 +00:00
# pragma once
2022-07-31 18:55:11 +00:00
static bool bMessageShown = false ;
2022-07-29 17:32:56 +00:00
2022-07-31 18:55:11 +00:00
static std : : unordered_set < std : : string > aModNames ;
2022-09-01 09:20:08 +00:00
inline bool DataFileExists ( std : : string filename , int maxSize = 1000000 )
{
const auto path = std : : format ( " Data \\ {} " , filename ) ;
return std : : filesystem : : exists ( path ) & & std : : filesystem : : file_size ( path ) > maxSize ;
}
2022-07-31 18:55:11 +00:00
inline void NotifyInvalidForm ( const RE : : TESForm * form )
{
if ( ! form ) {
if ( ! bMessageShown ) {
bMessageShown = true ;
RE : : DebugMessageBox ( " Some of the installed mods are incompatible with Enderal. " ) ;
}
return ;
}
if ( ! bMessageShown ) {
bMessageShown = true ;
RE : : DebugMessageBox ( std : : format ( " {} is incompatible with Enderal. \n Check console for the list of flagged mods. " , form - > GetFile ( ) - > fileName ) . c_str ( ) ) ;
RE : : ConsoleLog : : GetSingleton ( ) - > Print ( " Some of the installed mods are incompatible! This list is not exhaustive, always use xEdit to verify mod compatibility. " ) ;
}
if ( ! aModNames . contains ( form - > GetFile ( ) - > fileName ) ) {
aModNames . insert ( form - > GetFile ( ) - > fileName ) ;
RE : : ConsoleLog : : GetSingleton ( ) - > Print ( std : : format ( " {} is incompatible " , form - > GetFile ( ) - > fileName ) . c_str ( ) ) ;
}
}
inline void CheckWorldspaces ( )
{
auto * form = RE : : TESForm : : LookupByID ( 0x3C ) ; // Tamriel
if ( form ) {
RE : : TESWorldSpace * world = form - > As < RE : : TESWorldSpace > ( ) ;
if ( ! world | | std : : string ( world - > editorID ) ! = " MQP01Home " ) {
NotifyInvalidForm ( form ) ;
}
} else {
if ( ! bMessageShown ) {
bMessageShown = true ;
RE : : ConsoleLog : : GetSingleton ( ) - > Print ( " Some of the installed mods are incompatible! This list is not exhaustive, always use xEdit to verify mod compatibility. " ) ;
RE : : DebugMessageBox ( " Some of the installed mods are incompatible with Enderal. " ) ;
}
}
form = RE : : TESForm : : LookupByID ( 0x16BB4 ) ; // RiftenWorld
RE : : TESWorldSpace * world = form ? form - > As < RE : : TESWorldSpace > ( ) : nullptr ;
if ( world ) {
NotifyInvalidForm ( form ) ;
}
}
inline void CheckSkyrimCells ( )
2022-07-29 17:32:56 +00:00
{
// FormIDs of all Skyrim cells.
2022-07-29 17:50:39 +00:00
// 9 of them are commented out, because they are cells in Enderal as well.
2022-07-29 17:32:56 +00:00
2022-09-14 17:40:26 +00:00
uint32_t formids [ 574 ] = {
2022-07-29 17:32:56 +00:00
0x0004B8FB ,
0x000352C7 ,
0x000161E7 ,
0x00013A73 ,
0x000BA599 ,
0x00042BED ,
0x000361F9 ,
0x00016A11 ,
0x000152A1 ,
0x0001523D ,
0x000A8B23 ,
0x000918D3 ,
0x0004761B ,
2022-09-14 17:40:26 +00:00
//0x0003CBCB,
2022-07-29 17:32:56 +00:00
0x00016A07 ,
0x00015233 ,
0x000138CF ,
0x0009CCDD ,
0x0008B84D ,
0x0003EA9D ,
0x000198DD ,
0x000165B1 ,
0x00015229 ,
0x000D9DC7 ,
0x000965B3 ,
0x0006F3EB ,
0x000466CB ,
0x000165A7 ,
0x00015283 ,
0x000139E7 ,
0x000EF325 ,
0x000AD5A1 ,
0x00016BDD ,
0x00015279 ,
0x00015215 ,
0x00013979 ,
0x0007BEF7 ,
0x0004E227 ,
0x000240B7 ,
0x00016BD3 ,
0x00016787 ,
0x0001526F ,
0x0005015D ,
0x0002E521 ,
0x0001677D ,
0x00016205 ,
0x00015265 ,
0x00015201 ,
0x00013901 ,
0x0007BC27 ,
0x0002D3E7 ,
0x0001B147 ,
0x0001A337 ,
0x000196B7 ,
0x000161FB ,
0x00013A87 ,
0x00033779 ,
0x0002D5D1 ,
0x000161F1 ,
0x00015251 ,
0x00013A7D ,
2022-09-14 17:40:26 +00:00
//0x00030442,
2022-07-29 17:32:56 +00:00
0x000152AA ,
0x00013A72 ,
0x000571B4 ,
0x00042BEC ,
0x00037EE0 ,
0x00016A10 ,
0x000152A0 ,
0x0001523C ,
0x00013A68 ,
0x00013810 ,
0x0001DB4E ,
0x00016A06 ,
0x00015296 ,
0x000138CE ,
0x0001528C ,
0x000371DE ,
0x00036A72 ,
0x000165A6 ,
//0x00015282,
0x00013856 ,
0x000EF324 ,
0x000EB440 ,
0x0009B238 ,
0x00081DEC ,
0x0007144C ,
0x0005DE24 ,
0x000597D4 ,
0x00016BDC ,
0x00013978 ,
0x00065AB6 ,
0x0001D09A ,
0x00016BD2 ,
0x00016786 ,
0x0001526E ,
0x0001520A ,
0x000139D2 ,
0x000F39C4 ,
0x000A9194 ,
0x0005015C ,
0x00035604 ,
0x00033D68 ,
0x0001677C ,
0x00016204 ,
0x00015200 ,
0x000B6BE6 ,
0x000A95D6 ,
0x0009AA4A ,
0x0006C3B6 ,
0x000152BE ,
0x000151F6 ,
0x00013A86 ,
0x0001382E ,
0x0001AB60 ,
0x00019454 ,
0x000161F0 ,
0x000152B4 ,
0x00013A7C ,
0x000F7631 ,
0x00053081 ,
0x000529DD ,
0x0003538D ,
0x00013A71 ,
0x000138E1 ,
0x001037E7 ,
0x0005C483 ,
0x00047817 ,
0x00022F53 ,
0x00016DF7 ,
0x00016A0F ,
0x0001529F ,
0x00013A67 ,
0x0001380F ,
0x00016A05 ,
0x00015295 ,
0x00015231 ,
0x00013A5D ,
0x000138CD ,
0x0005B91B ,
0x000165AF ,
0x00015227 ,
0x0001321F ,
0x0005D01D ,
0x000371DD ,
0x00025195 ,
0x00016EA1 ,
0x00015281 ,
0x0007C98B ,
0x00052FEB ,
0x00028EDF ,
0x000243DF ,
0x0001F7B3 ,
0x00016BDB ,
0x00015277 ,
0x00065AB5 ,
0x0005B5DD ,
0x0003B87D ,
0x0002D525 ,
0x0002C779 ,
0x00016BD1 ,
0x00016785 ,
0x0001526D ,
0x000139D1 ,
0x00013909 ,
//0x00000025,
0x000AE783 ,
0x000A0877 ,
0x0006CCBB ,
0x000317E7 ,
0x00016203 ,
0x000A87C5 ,
0x000A0359 ,
0x000152BD ,
0x000151F5 ,
0x00013A85 ,
0x0001382D ,
0x00028ACF ,
0x0001AB5F ,
0x000161EF ,
0x00013A7B ,
0x000547F0 ,
0x00021594 ,
0x000213A0 ,
0x00016E00 ,
0x000152A8 ,
0x00013818 ,
0x00022F52 ,
0x00016DF6 ,
//0x00016A0E,
0x00013A66 ,
0x0001380E ,
0x000B64B4 ,
0x00056E88 ,
0x0001B7C0 ,
0x00016A04 ,
0x00015294 ,
0x00015230 ,
0x00013A5C ,
0x000138CC ,
0x00080C6A ,
0x0005A01A ,
0x0002031A ,
0x0001E11E ,
0x000165AE ,
0x0001528A ,
0x00015226 ,
0x00075270 ,
0x0003A184 ,
0x00034B94 ,
0x00015280 ,
0x0001521C ,
0x00013A48 ,
//0x0010CEEA,
0x00016BDA ,
0x00015276 ,
0x000DB070 ,
0x0003DD34 ,
0x0002D524 ,
0x0002C778 ,
0x0001CB84 ,
0x00016BD0 ,
0x00016784 ,
0x0001526C ,
0x00015208 ,
0x0001677A ,
0x00015262 ,
0x00069858 ,
0x00015258 ,
0x000151F4 ,
0x00013A84 ,
0x000B29D6 ,
0x000A6D8E ,
0x0008CDEE ,
0x00054D0E ,
0x000527F2 ,
0x00027552 ,
0x000193EE ,
0x000161EE ,
0x0001605E ,
0x00013A7A ,
0x000C9DAB ,
0x000A1793 ,
0x00094BAB ,
2022-09-14 17:40:26 +00:00
//0x00030313,
2022-07-29 17:32:56 +00:00
0x00016DFF ,
0x000152A7 ,
0x0007FCDD ,
0x000414DD ,
0x000399D1 ,
0x00016DF5 ,
0x00016A0D ,
0x0001529D ,
0x00015239 ,
0x00013871 ,
0x000F2CAB ,
0x000A013B ,
0x0005A857 ,
0x0001AEC3 ,
0x00016A03 ,
0x000165B7 ,
0x0001522F ,
0x000138CB ,
0x00013867 ,
0x000165AD ,
0x00056C1B ,
//0x000446BF,
0x0004401B ,
0x0003A183 ,
0x000263EF ,
0x000165A3 ,
0x0001527F ,
0x0001521B ,
0x000AB531 ,
0x00083559 ,
0x0005912D ,
0x00016BD9 ,
0x00015275 ,
0x00015211 ,
0x0003D62B ,
0x00016BCF ,
0x0001620B ,
0x0001526B ,
0x00015207 ,
0x00013907 ,
0x000A1BFD ,
0x00052CB5 ,
0x00034B75 ,
0x00016779 ,
0x00015261 ,
0x000EA28B ,
0x000BBB2F ,
0x000B1783 ,
0x00079F9F ,
0x00039F67 ,
0x0002BCD7 ,
0x000270AB ,
0x000161F7 ,
0x000152BB ,
0x00015257 ,
0x000151F3 ,
0x00013A83 ,
0x000EEC55 ,
0x000B29D5 ,
0x000161ED ,
0x000152B1 ,
0x00013A79 ,
0x00016DFE ,
0x000133CA ,
0x0006DAA0 ,
0x00052390 ,
0x00016DF4 ,
0x00016A0C ,
0x0001529C ,
0x00015238 ,
0x00013870 ,
//0x000B9BC6,
0x0005A856 ,
0x0002471A ,
0x000198E2 ,
0x00016A02 ,
0x000165B6 ,
0x000138CA ,
0x00059398 ,
0x0003E908 ,
0x000165AC ,
0x00015288 ,
0x00015224 ,
0x000CAB92 ,
0x0005F536 ,
0x0002A976 ,
0x00016D72 ,
0x0001527E ,
0x000C7348 ,
0x000AA20C ,
0x000A73F4 ,
0x00095C44 ,
0x0006E2AC ,
0x0005D010 ,
0x00018BE0 ,
0x00016BD8 ,
0x0001678C ,
0x00015274 ,
0x00015210 ,
0x000C0BBA ,
0x000280C2 ,
0x00016BCE ,
0x00016782 ,
0x0001526A ,
0x00015206 ,
0x000F5EDC ,
0x000ED8E0 ,
0x0007DCFC ,
0x00018460 ,
0x00016778 ,
0x00016200 ,
0x00015260 ,
0x000151FC ,
0x00013A8C ,
0x0005554A ,
0x00054226 ,
0x0003D35A ,
0x00037B76 ,
0x000161F6 ,
0x000152BA ,
0x000151F2 ,
0x000B29D4 ,
0x0003FF10 ,
0x0002E760 ,
0x000161EC ,
0x000152B0 ,
0x00013A78 ,
0x000ABD31 ,
0x00055215 ,
0x0002954D ,
0x00016DFD ,
0x000152A5 ,
0x000133C9 ,
0x0005EAC7 ,
0x00058663 ,
0x000336FB ,
0x00016DF3 ,
0x00016A0B ,
0x00015237 ,
0x00077289 ,
0x00075669 ,
2022-09-14 17:40:26 +00:00
//0x0002FD85,
2022-07-29 17:32:56 +00:00
0x000165B5 ,
0x0003FC8F ,
0x000165AB ,
0x00015223 ,
0x000CAB91 ,
0x00068B99 ,
0x0004C6DD ,
0x00035299 ,
0x00018BE9 ,
0x0001527D ,
0x00043FAB ,
0x00016BD7 ,
0x0001678B ,
0x00015273 ,
0x000DEBCD ,
0x00078715 ,
0x0001F359 ,
0x00016781 ,
0x00016209 ,
0x00015269 ,
0x0005B88B ,
0x0005723B ,
0x00016777 ,
0x000161FF ,
0x000152C3 ,
0x0001525F ,
0x000151FB ,
0x000A5A71 ,
//0x000A1A61,
0x000778F1 ,
0x00045A1D ,
0x000161F5 ,
0x00015255 ,
0x00013A81 ,
0x000EEC53 ,
0x00081D5B ,
0x000161EB ,
0x000152AF ,
0x00054B70 ,
0x0005258C ,
0x000471DC ,
0x0002954C ,
0x00016DFC ,
0x00013814 ,
0x000133C8 ,
0x000DBF12 ,
0x000CCDAA ,
0x00091872 ,
0x00036ED6 ,
0x00016DF2 ,
0x00034BA4 ,
0x0002D4E4 ,
0x00025E24 ,
0x000198E0 ,
0x00016A00 ,
0x00015290 ,
0x0001522C ,
0x0007947A ,
0x000165AA ,
0x00015286 ,
0x000138BE ,
0x00087764 ,
0x0003B698 ,
0x000165A0 ,
0x0001527C ,
0x00013850 ,
0x0008E906 ,
0x00071FFE ,
0x00016BD6 ,
0x000C5AA0 ,
0x0001F358 ,
0x00016780 ,
0x00015268 ,
2022-09-14 17:40:26 +00:00
//0x0002F83E,
2022-07-29 17:32:56 +00:00
0x0002529E ,
0x00016776 ,
0x000161FE ,
0x000151FA ,
0x00013A8A ,
0x00078124 ,
0x000362D8 ,
0x00023FD4 ,
0x0001FA4C ,
0x000161F4 ,
0x00015254 ,
0x00013A80 ,
0x000BBCB2 ,
0x000AC5D2 ,
0x00081972 ,
0x000261C6 ,
0x000161EA ,
0x000152AE ,
0x00013A76 ,
0x00054B6F ,
0x00032AE7 ,
0x000216BB ,
0x00016DFB ,
0x0001523F ,
0x00013813 ,
0x000133C7 ,
0x00070469 ,
0x00036ED5 ,
0x00034955 ,
0x00016A09 ,
0x00015235 ,
0x0009CCDF ,
0x0007B7AB ,
0x0002D4E3 ,
0x000198DF ,
0x000165B3 ,
0x00097299 ,
0x00089D51 ,
0x000681DD ,
0x00024771 ,
0x000AF227 ,
0x0007D033 ,
0x00041777 ,
0x00016BDF ,
0x0001527B ,
0x00058B4D ,
0x000275D9 ,
0x000227B9 ,
0x00016BD5 ,
0x00016789 ,
0x000FE47B ,
0x0001677F ,
0x00016207 ,
0x00015267 ,
0x001052FD ,
0x00104871 ,
2022-09-14 17:40:26 +00:00
//0x0002F83D,
2022-07-29 17:32:56 +00:00
0x00016775 ,
0x000152C1 ,
0x0001525D ,
0x000151F9 ,
0x00013A89 ,
0x000961FF ,
0x0007E00F ,
0x0004624F ,
0x000161F3 ,
0x000152B7 ,
0x00015253 ,
0x00013A7F ,
0x000221B5 ,
0x000161E9 ,
0x000152AD ,
0x0009174E ,
0x0004A376 ,
2022-07-29 17:50:39 +00:00
//0x000361FA,
2022-07-29 17:32:56 +00:00
0x0002A03A ,
0x00016DFA ,
0x000152A2 ,
0x00013812 ,
0x000133C6 ,
0x000DDF7C ,
0x000A8B24 ,
0x00016A08 ,
0x000138D0 ,
0x0001386C ,
0x000BE46A ,
0x0009CCDE ,
2022-07-29 17:50:39 +00:00
//0x0007284E,
2022-07-29 17:32:56 +00:00
0x00067F2A ,
2022-09-14 17:40:26 +00:00
//0x0003016A,
2022-07-29 17:32:56 +00:00
0x000198DE ,
0x000169FE ,
0x000165B2 ,
0x0001522A ,
0x00097298 ,
0x0007614C ,
0x000165A8 ,
0x00015284 ,
0x00015220 ,
0x000DD216 ,
0x000563E2 ,
0x00050F1E ,
0x0003F516 ,
0x0003B696 ,
0x00037CC6 ,
0x0003486E ,
0x0001FC66 ,
0x00016BDE ,
0x0007BEF8 ,
0x00058B4C ,
0x00034864 ,
0x000275D8 ,
0x00016BD4 ,
0x00016788 ,
0x0001677E ,
0x0001383A ,
0x0002D3E8 ,
0x00016774 ,
0x000161FC ,
0x000152C0 ,
0x0001525C ,
0x00013A88 ,
0x00094322 ,
0x000580A2 ,
0x00027F1A ,
0x0001CE8A ,
0x00013A7E ,
0x00039850 ,
0x00027D1C
} ;
2022-09-14 17:40:26 +00:00
for ( int i = 0 ; i < 574 ; i + + ) {
2022-07-31 18:55:11 +00:00
const auto * form = RE : : TESForm : : LookupByID ( formids [ i ] ) ;
if ( form & & form - > Is ( RE : : FormType : : Cell ) ) {
logger : : warn ( " Detected invalid cell: {:08X} " , formids [ i ] ) ;
NotifyInvalidForm ( form ) ;
}
}
//memset(formids, 0, sizeof(formids));
}
inline void CheckEnderalCells ( )
{
// FormIDs of all Enderal cells.
uint32_t formids [ 415 ] = {
0x0014DB0F ,
0x00114BBB ,
0x00108AC3 ,
0x00106863 ,
0x000E67E3 ,
0x000DCBA3 ,
0x000A1E3B ,
0x0008320B ,
0x0006A8AF ,
0x00050B67 ,
0x00043DEF ,
0x0003E737 ,
0x000E4961 ,
0x00030F8D ,
0x0014F6B7 ,
0x001080EB ,
0x0008613B ,
0x0010E671 ,
0x000ED971 ,
0x000EB581 ,
0x000C0E35 ,
0x00055DB5 ,
0x0012F42F ,
0x000905FF ,
0x00069C6B ,
0x00012C3B ,
0x000DABCD ,
0x00081299 ,
0x0005C971 ,
0x0004D5B1 ,
0x000E2CAB ,
0x0005530B ,
0x000299C7 ,
0x0007F65B ,
0x0007336F ,
0x0005BCD3 ,
0x0013FB45 ,
0x0011C4DD ,
0x000A5F1D ,
0x00072B95 ,
0x00069C9D ,
0x00149B58 ,
0x0012DAE8 ,
0x000E4960 ,
0x000B5264 ,
0x0009B710 ,
0x000ED97A ,
0x000C0E3E ,
0x0009FD56 ,
0x00024BCE ,
0x000C0E34 ,
0x0008783C ,
0x000528F8 ,
0x00033494 ,
0x00009900 ,
0x000EA95A ,
0x000C566E ,
0x0004145E ,
0x00015282 ,
0x000FE108 ,
0x0007FBF0 ,
0x000098EC ,
0x0011DC6A ,
0x00102DF2 ,
0x00074AF2 ,
0x0005530A ,
0x000299C6 ,
0x00010A84 ,
0x0014B5A2 ,
0x0007F65A ,
0x0007336E ,
0x0006C032 ,
0x00030FAA ,
0x0012EF4C ,
0x0011C4DC ,
0x000A5F1C ,
0x00096D50 ,
0x0004BC88 ,
0x00046ECC ,
0x00130C29 ,
0x00070799 ,
0x00149B57 ,
0x000E495F ,
0x000A5C4B ,
0x00074547 ,
0x00004E77 ,
0x000ED979 ,
0x000C0E3D ,
0x0009FD55 ,
0x00024BCD ,
0x001461D7 ,
0x0008783B ,
0x000528F7 ,
0x00033493 ,
0x000D9B6D ,
0x000C566D ,
0x0007FA69 ,
0x0004145D ,
0x000375C5 ,
0x00032999 ,
0x000D8E1B ,
0x000D89CF ,
0x0006FECF ,
0x001344F5 ,
0x00127E21 ,
0x0011DC69 ,
0x00102DF1 ,
0x000CBEA5 ,
0x00074AF1 ,
0x00033B19 ,
0x00000025 ,
0x0011847B ,
0x0006E4F3 ,
0x000169D3 ,
0x00089B95 ,
0x000028B1 ,
0x000A5F1B ,
0x00083213 ,
0x00069C9B ,
0x00130C28 ,
0x000E495E ,
0x0009B70E ,
0x00147F2C ,
0x00117890 ,
0x000ED978 ,
0x000C0E3C ,
0x00055DBC ,
0x00024BCC ,
0x0008783A ,
0x000250D6 ,
0x00127538 ,
0x000D9B6C ,
0x000813CC ,
0x00045A48 ,
0x00021634 ,
0x00014B78 ,
0x0011B1DE ,
0x0006FECE ,
0x000399AA ,
0x000098EA ,
0x00127E20 ,
0x0011DC68 ,
0x00102DF0 ,
0x000CBEA4 ,
0x000A5894 ,
0x00067288 ,
0x0011847A ,
0x0006E4F2 ,
0x00089B94 ,
0x0007336C ,
0x0004C26C ,
0x00083212 ,
0x0003C4DE ,
0x00128CCF ,
0x000D340F ,
0x000E495D ,
0x000A82F5 ,
0x000405A1 ,
0x00147F2B ,
0x0013D0F3 ,
0x000ED977 ,
0x000D24BF ,
0x000C0E3B ,
0x00055DBB ,
0x0009710D ,
0x00015671 ,
0x00098553 ,
0x000813CB ,
0x0015295D ,
0x0012AB15 ,
0x00085A75 ,
0x0006FECD ,
0x000399A9 ,
0x000098E9 ,
0x00127E1F ,
0x0011DC67 ,
0x000A5893 ,
0x000848D7 ,
0x0007075B ,
0x00067287 ,
0x001130E1 ,
0x0010FF45 ,
0x0010A829 ,
0x000DD775 ,
0x000CEB85 ,
0x000CD6D1 ,
0x0006E4F1 ,
0x000DEDAF ,
0x000A19FF ,
0x00089B93 ,
0x0004C26B ,
0x0002BA7F ,
0x000BCB8D ,
0x00083211 ,
0x0004B25D ,
0x001503AA ,
0x0013F5BE ,
0x0013B612 ,
0x00128CCE ,
0x000CAFA2 ,
0x000E495C ,
0x0009B70C ,
0x00020AFC ,
0x0010D1C2 ,
0x000ED976 ,
0x000D24BE ,
0x000C0E3A ,
0x000AECC6 ,
0x00055DBA ,
0x00009906 ,
0x001514BC ,
0x0009855C ,
0x0009710C ,
0x00090988 ,
0x0006C768 ,
0x00036A14 ,
0x000098FC ,
0x000E041A ,
0x000D9B6A ,
0x00082432 ,
0x0015295C ,
0x0012AB14 ,
0x0010BBC4 ,
0x00085A74 ,
0x0006FECC ,
0x000098E8 ,
0x0014E5BE ,
0x00127E1E ,
0x001152E6 ,
0x000848D6 ,
0x001130E0 ,
0x000CEB84 ,
0x0007D400 ,
0x00076E70 ,
0x0006E4F0 ,
0x000EFFE6 ,
0x000DEDAE ,
0x000E1A2C ,
0x000CC974 ,
0x000BCB8C ,
0x00083210 ,
0x00128CCD ,
0x00119B01 ,
0x000CAFA1 ,
0x000A9EB9 ,
0x00078625 ,
0x000E495B ,
0x000DE74F ,
0x000B525F ,
0x0009B70B ,
0x00020AFB ,
0x0000990F ,
0x00143B31 ,
0x0010D1C1 ,
0x000ED975 ,
0x000D74D1 ,
0x000D24BD ,
0x000AECC5 ,
0x0008D791 ,
0x00055DB9 ,
0x00009905 ,
0x00133E07 ,
0x0011267B ,
0x000C6677 ,
0x0009855B ,
0x0009710B ,
0x00090987 ,
0x00143479 ,
0x0011F9C5 ,
0x000D9B69 ,
0x0015295B ,
0x00102947 ,
0x000C3913 ,
0x00089123 ,
0x00085A73 ,
0x0006FECB ,
0x0013CA25 ,
0x00129141 ,
0x00127E1D ,
0x000848D5 ,
0x00056A11 ,
0x0013CF2F ,
0x001130DF ,
0x000CEB83 ,
0x0008E957 ,
0x0007D3FF ,
0x00079F43 ,
0x0006E4EF ,
0x000DEDAD ,
0x00086739 ,
0x000BCB8B ,
0x0008320F ,
0x00144954 ,
0x000A9EB8 ,
0x0007EB50 ,
0x0001CB58 ,
0x000E495A ,
0x000DE74E ,
0x000B525E ,
0x00004382 ,
0x00143B30 ,
0x000ED974 ,
0x000D24BC ,
0x000C0E38 ,
0x000AECC4 ,
0x0005A728 ,
0x00055DB8 ,
0x00022904 ,
0x00009904 ,
0x00133E06 ,
0x0012E492 ,
0x000C6676 ,
0x0009855A ,
0x0009710A ,
0x00069C6E ,
0x00019C50 ,
0x0015295A ,
0x0012AB12 ,
0x0006FECA ,
0x000098E6 ,
0x000FF034 ,
0x000EB818 ,
0x000C91B4 ,
0x0009B228 ,
0x000848D4 ,
0x001130DE ,
0x00100C4A ,
0x000CEB82 ,
0x0007D3FE ,
0x0006E4EE ,
0x0001A01A ,
0x0011F744 ,
0x000DEDAC ,
0x00086738 ,
0x0007BC20 ,
0x000ACECE ,
0x0008320E ,
0x00081CF6 ,
0x00048F32 ,
0x0003E73A ,
0x00011046 ,
0x000A9EB7 ,
0x000780AB ,
0x000E4959 ,
0x000B525D ,
0x00045101 ,
0x001461DB ,
0x00107EEF ,
0x000ED973 ,
0x000C0E37 ,
0x000AECC3 ,
0x0005A727 ,
0x00055DB7 ,
0x00034D97 ,
0x00009903 ,
0x001514B9 ,
0x0012E491 ,
0x00103F39 ,
0x000C5671 ,
0x0005AE7F ,
0x000A2635 ,
0x0006FEC9 ,
0x0003D825 ,
0x000FF033 ,
0x000EB817 ,
0x0009B227 ,
0x001315A1 ,
0x00127515 ,
0x001130DD ,
0x00100C49 ,
0x000DD771 ,
0x000A51E1 ,
0x0007A7D9 ,
0x0012511B ,
0x0011C4DF ,
0x000F524F ,
0x000DEDAB ,
0x000ACECD ,
0x0008320D ,
0x00081CF5 ,
0x00048F31 ,
0x0003E739 ,
0x0013584E ,
0x00030F8E ,
0x0013EB88 ,
0x000E77D4 ,
0x000E4958 ,
0x0012A552 ,
0x0010E672 ,
0x000C0E36 ,
0x0007284E ,
0x001514B8 ,
0x00136C80 ,
0x0012E490 ,
0x000C5670 ,
0x001421B6 ,
0x000E040C ,
0x00098D14 ,
0x0005530C ,
0x00043A94 ,
0x000FF032 ,
0x0009B226 ,
0x001130DC ,
0x000A51E0 ,
0x0008AD90 ,
0x0013FB46 ,
0x001346CE ,
0x0011C4DE ,
0x000DEDAA ,
0x0007B89A ,
0x00130C2C ,
0x00106864 ,
0x000DCBA4 ,
0x000A1E3C ,
0x0008320C
} ;
for ( int i = 0 ; i < 415 ; i + + ) {
const auto * form = RE : : TESForm : : LookupByID ( formids [ i ] ) ;
if ( ! form ) {
if ( ! bMessageShown ) {
bMessageShown = true ;
RE : : DebugMessageBox ( " Some of the installed mods are incompatible with Enderal. \n Check console for the list of flagged mods. " ) ;
}
} else if ( ! form - > Is ( RE : : FormType : : Cell ) ) {
logger : : warn ( " Detected invalid cell: {:08X} " , formids [ i ] ) ;
NotifyInvalidForm ( form ) ;
2022-07-29 17:32:56 +00:00
}
}
2022-07-31 18:55:11 +00:00
//memset(formids, 0, sizeof(formids));
aModNames . clear ( ) ;
2022-07-29 17:32:56 +00:00
}
2022-08-08 10:39:40 +00:00
inline void CheckCCMods ( )
{
std : : string filenames [ 74 ] = {
" ccASVSSE001-ALMSIVI.esm " ,
" ccBGSSSE001-Fish.esm " ,
" ccBGSSSE002-ExoticArrows.esl " ,
" ccBGSSSE003-Zombies.esl " ,
" ccBGSSSE004-RuinsEdge.esl " ,
" ccBGSSSE005-Goldbrand.esl " ,
" ccBGSSSE006-StendarsHammer.esl " ,
" ccBGSSSE007-Chrysamere.esl " ,
" ccBGSSSE010-PetDwarvenArmoredMudcrab.esl " ,
" ccBGSSSE011-HrsArmrElvn.esl " ,
" ccBGSSSE012-HrsArmrStl.esl " ,
" ccBGSSSE014-SpellPack01.esl " ,
" ccBGSSSE019-StaffofSheogorath.esl " ,
" ccBGSSSE020-GrayCowl.esl " ,
" ccBGSSSE021-LordsMail.esl " ,
" ccMTYSSE001-KnightsoftheNine.esl " ,
" ccQDRSSE001-SurvivalMode.esl " ,
" ccTWBSSE001-PuzzleDungeon.esm " ,
" ccEEJSSE001-Hstead.esm " ,
" ccQDRSSE002-Firewood.esl " ,
" ccBGSSSE018-Shadowrend.esl " ,
" ccBGSSSE035-PetNHound.esl " ,
" ccFSVSSE001-Backpacks.esl " ,
" ccEEJSSE002-Tower.esl " ,
" ccEDHSSE001-NorJewel.esl " ,
" ccVSVSSE002-Pets.esl " ,
" ccBGSSSE037-Curios.esl " ,
" ccBGSSSE034-MntUni.esl " ,
" ccBGSSSE045-Hasedoki.esl " ,
" ccBGSSSE008-Wraithguard.esl " ,
" ccBGSSSE036-PetBWolf.esl " ,
" ccFFBSSE001-ImperialDragon.esl " ,
" ccMTYSSE002-VE.esl " ,
" ccBGSSSE043-CrossElv.esl " ,
" ccVSVSSE001-Winter.esl " ,
" ccEEJSSE003-Hollow.esl " ,
" ccBGSSSE016-Umbra.esm " ,
" ccBGSSSE031-AdvCyrus.esm " ,
" ccBGSSSE038-BowofShadows.esl " ,
" ccBGSSSE040-AdvObGobs.esl " ,
" ccBGSSSE050-BA_Daedric.esl " ,
" ccBGSSSE052-BA_Iron.esl " ,
" ccBGSSSE054-BA_Orcish.esl " ,
" ccBGSSSE058-BA_Steel.esl " ,
" ccBGSSSE059-BA_Dragonplate.esl " ,
" ccBGSSSE061-BA_Dwarven.esl " ,
" ccPEWSSE002-ArmsOfChaos.esl " ,
" ccBGSSSE041-NetchLeather.esl " ,
" ccEDHSSE002-SplKntSet.esl " ,
" ccBGSSSE064-BA_Elven.esl " ,
" ccBGSSSE063-BA_Ebony.esl " ,
" ccBGSSSE062-BA_DwarvenMail.esl " ,
" ccBGSSSE060-BA_Dragonscale.esl " ,
" ccBGSSSE056-BA_Silver.esl " ,
" ccBGSSSE055-BA_OrcishScaled.esl " ,
" ccBGSSSE053-BA_Leather.esl " ,
" ccBGSSSE051-BA_DaedricMail.esl " ,
" ccBGSSSE057-BA_Stalhrim.esl " ,
" ccBGSSSE066-Staves.esl " ,
" ccBGSSSE067-DaedInv.esm " ,
" ccBGSSSE068-Bloodfall.esl " ,
" ccBGSSSE069-Contest.esl " ,
" ccVSVSSE003-NecroArts.esl " ,
" ccVSVSSE004-BeAFarmer.esl " ,
" ccBGSSSE025-AdvDSGS.esm " ,
" ccFFBSSE002-CrossbowPack.esl " ,
" ccBGSSSE013-Dawnfang.esl " ,
" ccRMSSSE001-NecroHouse.esl " ,
" ccEDHSSE003-Redguard.esl " ,
" ccEEJSSE004-Hall.esl " ,
" ccEEJSSE005-Cave.esm " ,
" ccKRTSSE001_Altar.esl " ,
" ccCBHSSE001-Gaunt.esl " ,
" ccAFDSSE001-DweSanctuary.esm " ,
} ;
for ( short i = 0 ; i < 74 ; i + + ) {
2022-09-01 09:20:08 +00:00
if ( DataFileExists ( filenames [ i ] , 800 ) ) {
2022-08-08 10:39:40 +00:00
MessageBoxW ( NULL , L " Creation Club mods are incompatible with Enderal. " , L " Error " , MB_OK | MB_ICONERROR ) ;
exit ( EXIT_FAILURE ) ;
}
}
}
2022-08-08 11:07:07 +00:00
inline void CheckUnconvertedMap ( )
{
auto * form = RE : : TESForm : : LookupByID ( 0x1D3C ) ; // Vyn
RE : : TESWorldSpace * world = form ? form - > As < RE : : TESWorldSpace > ( ) : nullptr ;
if ( ! form | | ! world ) {
MessageBoxW ( NULL , L " Unable to load Vyn, make sure you are not using EnderalSE.dll in Skyrim. " , L " Error " , MB_OK | MB_ICONERROR ) ;
exit ( EXIT_FAILURE ) ;
}
if ( world - > worldMapOffsetData . mapScale > 1.1 ) {
if ( ! bMessageShown ) {
bMessageShown = true ;
RE : : DebugMessageBox ( std : : format ( " {} is an Enderal LE mod, containing unconverted map data. \n Check console for the list of flagged mods. " , form - > GetFile ( ) - > fileName ) . c_str ( ) ) ;
RE : : ConsoleLog : : GetSingleton ( ) - > Print ( " Some of the installed mods are incompatible! This list is not exhaustive, always use xEdit to verify mod compatibility. " ) ;
}
if ( ! aModNames . contains ( form - > GetFile ( ) - > fileName ) ) {
aModNames . insert ( form - > GetFile ( ) - > fileName ) ;
RE : : ConsoleLog : : GetSingleton ( ) - > Print ( std : : format ( " {} is unconverted " , form - > GetFile ( ) - > fileName ) . c_str ( ) ) ;
}
}
}
2022-09-08 09:24:27 +00:00
inline void CheckEnderalContainers ( )
{
// Base forms of Enderal containers, having collisions with Skyrim
uint32_t formids [ 13 ] = {
0x17234 ,
0x3661E ,
0x43BF2 ,
0x4602B ,
0x469E6 ,
0x46AEF ,
0x46D85 ,
0x56161 ,
0x56165 ,
0x7BC22 ,
0x967AA ,
0xF85F4 ,
0x108AA7
} ;
for ( int i = 0 ; i < 13 ; i + + ) {
const auto * form = RE : : TESForm : : LookupByID ( formids [ i ] ) ;
if ( ! form | | ! form - > Is ( RE : : FormType : : Container ) ) {
logger : : warn ( " Detected invalid container: {:08X} " , formids [ i ] ) ;
NotifyInvalidForm ( form ) ;
}
}
}
inline void CheckEnderalNPCs ( )
{
// Base forms of Enderal actors, having collisions with Skyrim
uint32_t formids [ 55 ] = {
0x1722B ,
0x1723A ,
0x1A4E0 ,
0x22FA4 ,
0x22FA6 ,
0x23133 ,
0x2320C ,
0x25D20 ,
0x2A006 ,
0x3280A ,
0x365F6 ,
0x36613 ,
0x366F0 ,
0x3675D ,
0x39F58 ,
0x3C599 ,
0x447BE ,
0x447F3 ,
0x469E2 ,
0x469E3 ,
0x469E4 ,
0x46AF6 ,
0x46AF7 ,
0x46D83 ,
0x46D84 ,
0x46DFB ,
0x46EE4 ,
0x46EF1 ,
0x46EF2 ,
0x46EF3 ,
0x4838F ,
0x7265B ,
0x7265E ,
0x72660 ,
0x92A62 ,
0x92A64 ,
0x954D9 ,
0x967F9 ,
0xA8608 ,
0xA860B ,
0xA8614 ,
0xA861E ,
0xA9623 ,
0xBED8B ,
0xCC95C ,
0xDD714 ,
0xE48FA ,
0xEA717 ,
0xEA71A ,
0x103269 ,
0x1032B9 ,
0x1032C7 ,
0x1032CB ,
0x1032CC ,
0x1033FE
} ;
for ( int i = 0 ; i < 55 ; i + + ) {
const auto * form = RE : : TESForm : : LookupByID ( formids [ i ] ) ;
if ( ! form | | ! form - > Is ( RE : : FormType : : NPC ) ) {
logger : : warn ( " Detected invalid actor: {:08X} " , formids [ i ] ) ;
NotifyInvalidForm ( form ) ;
}
}
}
2022-09-29 20:23:14 +00:00
inline void CheckEnderalActivators ( )
{
// Base forms of Enderal activators, having collisions with Skyrim
uint32_t formids [ 46 ] = {
0x20A1C ,
0x23AB1 ,
0x36739 ,
0x3BCA5 ,
0x3BCB3 ,
0x3C570 ,
0x3C57F ,
0x43BEB ,
0x43BEE ,
0x447D3 ,
0x469F6 ,
0x469F8 ,
0x469FA ,
0x469FC ,
0x46ADE ,
0x46AEA ,
0x69F89 ,
0x69F8C ,
0x6A00D ,
0x6A00E ,
0x6A00F ,
0x6A010 ,
0x6A011 ,
0x6A013 ,
0x6A016 ,
0x6A024 ,
0x6A025 ,
0x6A026 ,
0x6A027 ,
0x6A029 ,
0x6A02A ,
0x6A02B ,
0x6A02C ,
0x6A02D ,
0x6A02E ,
0x6A030 ,
0x6A032 ,
0x6A033 ,
0x77358 ,
0xADC71 ,
0xB35AB ,
0xB35B4 ,
0xB35B5 ,
0xB6282 ,
0x106644 ,
0x1080DA
} ;
for ( int i = 0 ; i < 46 ; i + + ) {
const auto * form = RE : : TESForm : : LookupByID ( formids [ i ] ) ;
if ( ! form | | ! form - > Is ( RE : : FormType : : Activator ) ) {
logger : : warn ( " Detected invalid activator: {:08X} " , formids [ i ] ) ;
NotifyInvalidForm ( form ) ;
}
}
}
inline void CheckEnderalStatics ( )
{
// Base forms of Enderal statics, having collisions with Skyrim
uint32_t formids [ 138 ] = {
0x15C6F ,
0x1725C ,
0x20BC9 ,
0x20BDF ,
0x23E46 ,
0x2E6F8 ,
0x2EC26 ,
0x2EE3F ,
0x31949 ,
0x3194B ,
0x3195B ,
0x31974 ,
0x327AD ,
0x328D7 ,
0x33F45 ,
0x34944 ,
0x34946 ,
0x34BCD ,
0x36747 ,
0x36775 ,
0x36779 ,
0x3700B ,
0x3742A ,
0x37667 ,
0x37668 ,
0x37C01 ,
0x3A1C2 ,
0x3BCE3 ,
0x3BCE7 ,
0x3C58A ,
0x3ECAA ,
0x41449 ,
0x4B258 ,
0x4B25A ,
0x565F0 ,
0x6717B ,
0x6717C ,
0x6717D ,
0x69524 ,
0x69525 ,
0x69526 ,
0x69527 ,
0x6A034 ,
0x6A035 ,
0x6A036 ,
0x6A037 ,
0x6A038 ,
0x6A039 ,
0x6A03A ,
0x6A03B ,
0x6A03C ,
0x6A03D ,
0x6A03E ,
0x6A03F ,
0x6A040 ,
0x6A041 ,
0x6A042 ,
0x6A045 ,
0x6A046 ,
0x6A047 ,
0x6A048 ,
0x6A049 ,
0x6A04A ,
0x6A04B ,
0x6A04C ,
0x6A04D ,
0x6A04F ,
0x6A050 ,
0x6A051 ,
0x6A052 ,
0x6A053 ,
0x6A054 ,
0x6A057 ,
0x6A058 ,
0x6A059 ,
0x6A05A ,
0x6A094 ,
0x6D230 ,
0x6D233 ,
0x6D235 ,
0x6D23F ,
0x6D24D ,
0x6D253 ,
0x6D257 ,
0x6FEEA ,
0x6FEED ,
0x6FEEE ,
0x6FEEF ,
0x6FEF0 ,
0x6FEF1 ,
0x6FEF2 ,
0x6FEF3 ,
0x6FEF4 ,
0x6FEF5 ,
0x6FEF6 ,
0x6FEF7 ,
0x6FEF8 ,
0x6FEF9 ,
0x6FEFA ,
0x6FEFD ,
0x904B1 ,
0x904B2 ,
0x904B3 ,
0x904B4 ,
0x904B5 ,
0x904B6 ,
0x904B7 ,
0x904B8 ,
0x904B9 ,
0x904BA ,
0x904BB ,
0x904BC ,
0x904BD ,
0x904BE ,
0x904BF ,
0x904C0 ,
0xDAAF3 ,
0xDAAF5 ,
0xDAAF8 ,
0xDAAFC ,
0xDAAFE ,
0xDAB01 ,
0xE49F3 ,
0xE4A12 ,
0xE77BF ,
0xE77C0 ,
0xE77C1 ,
0xE77C2 ,
0xE77C3 ,
0xE77C4 ,
0xE77C5 ,
0xE77C6 ,
0xE77C7 ,
0xE77C8 ,
0xE77C9 ,
0xE77CA ,
0xE77CB ,
0xE77CF
} ;
for ( int i = 0 ; i < 138 ; i + + ) {
const auto * form = RE : : TESForm : : LookupByID ( formids [ i ] ) ;
if ( ! form | | ! form - > Is ( RE : : FormType : : Static ) ) {
logger : : warn ( " Detected invalid static: {:08X} " , formids [ i ] ) ;
NotifyInvalidForm ( form ) ;
}
}
}