Actually, I beg to differ. (Edit: I think you might have edited your post before I got finished with mine, or I didn’t read through yours all the way.) The way the Lua bindings work, you can bind a C function to a Lua global “name,” so that Lua can call a C function.
I’d imagine that the “-campaign” flag in the command line basically creates that CampaignButton function in the C side of the program. (I just confirmed that the HW2 Ascension campaign is only accessible via (Update)HW2Campaign.big, and that the only way to load that big file is through the “-campaign ascension” flag.)
Since in normal operation, that function is never bound on the C side of the program into the Lua global namespace, that call in “exbuttons.lua” returns a nil value (as expected), which then binds a function called “CampainButton” into the Lua global namespace from the Lua side.
This is mostly just speculation, but I feel pretty confident in my assumptions. I’m sure @BitVenom (or another dev) could confirm.
Edit: I’m doing quite a bit of C-Lua binding research in my work of creating an updated FXTool; hence my confidence.




