diff --git a/CMake/Assets.cmake b/CMake/Assets.cmake index 43ce170beb4..7e41fc39fe3 100644 --- a/CMake/Assets.cmake +++ b/CMake/Assets.cmake @@ -149,6 +149,7 @@ set(devilutionx_assets lua_internal/get_lua_function_signature.lua lua/devilutionx/events.lua lua/inspect.lua + lua/mods/clock/init.lua lua/repl_prelude.lua nlevels/cutl5w.clx nlevels/cutl6w.clx diff --git a/Source/options.cpp b/Source/options.cpp index 7aaa6823b1e..85bb47b55df 100644 --- a/Source/options.cpp +++ b/Source/options.cpp @@ -1829,7 +1829,15 @@ std::vector &ModOptions::GetModEntries() if (modEntries) return *modEntries; - std::vector modNames = ini->getKeys(name); + std::vector modNames = ini->getKeys(key); + + // Add mods available by default: + for (const std::string_view modName : { "clock" }) { + if (c_find(modNames, modName) != modNames.end()) continue; + ini->set(key, modName, false); + modNames.emplace_back(modName); + } + std::vector &newModEntries = modEntries.emplace(); for (auto &modName : modNames) { newModEntries.emplace_back(modName); diff --git a/assets/lua/mods/clock/init.lua b/assets/lua/mods/clock/init.lua new file mode 100644 index 00000000000..0c2981386ad --- /dev/null +++ b/assets/lua/mods/clock/init.lua @@ -0,0 +1,6 @@ +local events = require("devilutionx.events") +local render = require("devilutionx.render") + +events.GameDrawComplete.add(function() + render.string(os.date('%H:%M:%S', os.time()), render.screen_width() - 69, 6) +end)