The visual upgrade mod is not designed with x-com-files in mind. Even if you change its master, it will crash with these errors
[15-02-2025_14-09-01] [FATAL] A fatal error has occurred: vector::_M_range_check: __n (which is 1792) >= this->size() (which is 1792)
[15-02-2025_14-09-01] [FATAL] 0x7ff766c593b0 OpenXcom::CrossPlatform::stackTrace(void*)
[15-02-2025_14-09-01] [FATAL] 0x7ff766c5a870 OpenXcom::CrossPlatform::crashDump(void*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
[15-02-2025_14-09-01] [FATAL] 0x7ff7669edef0 exceptionLogger()
[15-02-2025_14-09-01] [FATAL] 0x7ff767423aa0 MPEGaction::MPEGaction()
[15-02-2025_14-09-01] [FATAL] 0x7ff7676948f0 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_expression_term<true, true>(std::pair<bool, char>&, std::__detail::_BracketMatcher<std::__cxx11::regex_traits<char>, true, true>&)::{lambda(char)#1}::operator()(char) const
[15-02-2025_14-09-01] [FATAL] 0x7ff767423aa0 MPEGaction::MPEGaction()
[15-02-2025_14-09-01] [FATAL] 0x7ff76740d140 YAML::Exp::Escape[abi:cxx11](YAML::Stream&)
[15-02-2025_14-09-01] [FATAL] 0x7ff7676948f0 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_expression_term<true, true>(std::pair<bool, char>&, std::__detail::_BracketMatcher<std::__cxx11::regex_traits<char>, true, true>&)::{lambda(char)#1}::operator()(char) const
[15-02-2025_14-09-01] [FATAL] 0x7ffeee823e70 _chkstk
[15-02-2025_14-09-01] [FATAL] 0x7ffeee6d30e0 RtlWow64GetCurrentCpuArea
[15-02-2025_14-09-01] [FATAL] 0x7ffeee6d2980 RtlRaiseException
[15-02-2025_14-09-01] [FATAL] 0x7ffeebd6ba80 RaiseException
[15-02-2025_14-09-01] [FATAL] 0x7ff76740d140 YAML::Exp::Escape[abi:cxx11](YAML::Stream&)
[15-02-2025_14-09-01] [FATAL] 0x7ff7676948f0 std::__detail::_Compiler<std::__cxx11::regex_traits<char> >::_M_expression_term<true, true>(std::pair<bool, char>&, std::__detail::_BracketMatcher<std::__cxx11::regex_traits<char>, true, true>&)::{lambda(char)#1}::operator()(char) const
[15-02-2025_14-09-01] [FATAL] 0x7ff767681ef0 void std::__merge_sort_with_buffer<__gnu_cxx::__normal_iterator<OpenXcom::Soldier**, std::vector<OpenXcom::Soldier*, std::allocator<OpenXcom::Soldier*> > >, OpenXcom::Soldier**, __gnu_cxx::__ops::_Iter_comp_iter<OpenXcom::SortFunctor> >(__gnu_cxx::__normal_iterator<OpenXcom::Soldier**, std::vector<OpenXcom::Soldier*, std::allocator<OpenXcom::Soldier*> > >, __gnu_cxx::__normal_iterator<OpenXcom::Soldier**, std::vector<OpenXcom::Soldier*, std::allocator<OpenXcom::Soldier*> > >, OpenXcom::Soldier**, __gnu_cxx::__ops::_Iter_comp_iter<OpenXcom::SortFunctor>)
[15-02-2025_14-09-01] [FATAL] 0x7ff766c24a10 OpenXcom::TileEngine::voxelCheck(OpenXcom::Position, OpenXcom::BattleUnit*, bool, bool, OpenXcom::BattleUnit*)
[15-02-2025_14-09-01] [FATAL] 0x7ff766c29360 OpenXcom::TileEngine::isPositionValidForUnit(OpenXcom::Position&, OpenXcom::BattleUnit*, bool, int)
[15-02-2025_14-09-01] [FATAL] 0x7ff766c2cdb0 OpenXcom::TileEngine::canTargetUnit(OpenXcom::Position*, OpenXcom::Tile*, OpenXcom::Position*, OpenXcom::BattleUnit*, bool, OpenXcom::BattleUnit*)
[15-02-2025_14-09-01] [FATAL] 0x7ff766c2d670 OpenXcom::TileEngine::visible(OpenXcom::BattleUnit*, OpenXcom::Tile*)
[15-02-2025_14-09-01] [FATAL] 0x7ff766c2daa0 OpenXcom::TileEngine::calculateUnitsInFOV(OpenXcom::BattleUnit*, OpenXcom::Position, int)
[15-02-2025_14-09-01] [FATAL] 0x7ff766c30d30 OpenXcom::TileEngine::recalculateFOV()
[15-02-2025_14-09-01] [FATAL] 0x7ff766bdf4b0 OpenXcom::InventoryState::~InventoryState()
[15-02-2025_14-09-01] [FATAL] 0x7ff766bdf7b0 OpenXcom::InventoryState::~InventoryState()
[15-02-2025_14-09-01] [FATAL] 0x7ff766c79a50 OpenXcom::Game::run()
[15-02-2025_14-09-01] [FATAL] 0x7ff7669ee060 SDL_main
[15-02-2025_14-09-01] [FATAL] 0x7ff76725ec10 console_main
[15-02-2025_14-09-01] [FATAL] 0x7ff76725ed50 WinMain
[15-02-2025_14-09-01] [FATAL] ??
[15-02-2025_14-09-01] [FATAL] ??
[15-02-2025_14-09-01] [FATAL] 0x7ffeec55e8c0 BaseThreadInitThunk
[15-02-2025_14-09-01] [FATAL] 0x7ffeee77bf00 RtlUserThreadStart
[15-02-2025_14-09-03] [FATAL] OpenXcom has crashed: vector::_M_range_check: __n (which is 1792) >= this->size() (which is 1792)
Log file: C:/Users/usuario/Documents/OpenXcom/openxcom.log
If this error was unexpected, please report it on the OpenXcom forum (OXCE board).
The following can help us solve the problem:
1. a saved game from just before the crash (helps 98%)
2. a detailed description how to reproduce the crash (helps 80%)
3. a log file (helps 10%)
4. a screenshot of this error message (helps 5%)
As far as I can tell, this is because of bad LOFTemps indexes used. Looking as the assets the mod provides, it includes its own LOFTEMPS.DAT and SCANG.DAT replacing the master mod's ones resulting in said crash. You can delete these 2 files in the visual upgrade mod and the crash will not occur, but there may be other issues that would need to be tested.
TL;DR: sub-mod is not compatible with XCF, changes are needed to make it so.