From 8dca33e5cc3bca64b6511c41a58d1cc2aff498ae Mon Sep 17 00:00:00 2001 From: Kelsi Date: Sat, 21 Mar 2026 09:32:40 -0700 Subject: [PATCH] feat: add UnitOnTaxi function for flight path detection Returns true when the player is on a taxi/flight path. Used by action bar addons to disable abilities during flight and by map addons to track taxi state. --- src/addons/lua_engine.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/addons/lua_engine.cpp b/src/addons/lua_engine.cpp index 27a8bc40..8505ce02 100644 --- a/src/addons/lua_engine.cpp +++ b/src/addons/lua_engine.cpp @@ -540,6 +540,21 @@ static int lua_UnitDetailedThreatSituation(lua_State* L) { return 5; } +// UnitOnTaxi(unit) → boolean (true if on a flight path) +static int lua_UnitOnTaxi(lua_State* L) { + const char* uid = luaL_optstring(L, 1, "player"); + auto* gh = getGameHandler(L); + if (!gh) { lua_pushboolean(L, 0); return 1; } + std::string uidStr(uid); + for (char& c : uidStr) c = static_cast(std::tolower(static_cast(c))); + if (uidStr == "player") { + lua_pushboolean(L, gh->isOnTaxiFlight()); + } else { + lua_pushboolean(L, 0); // Can't determine for other units + } + return 1; +} + // UnitSex(unit) → 1=unknown, 2=male, 3=female static int lua_UnitSex(lua_State* L) { const char* uid = luaL_optstring(L, 1, "player"); @@ -3219,6 +3234,7 @@ void LuaEngine::registerCoreAPI() { {"UnitIsTapped", lua_UnitIsTapped}, {"UnitIsTappedByPlayer", lua_UnitIsTappedByPlayer}, {"UnitIsTappedByAllThreatList", lua_UnitIsTappedByAllThreatList}, + {"UnitOnTaxi", lua_UnitOnTaxi}, {"UnitThreatSituation", lua_UnitThreatSituation}, {"UnitDetailedThreatSituation", lua_UnitDetailedThreatSituation}, {"UnitSex", lua_UnitSex},