
When a unit data passed to `to_map` either lacks a side or has side zero, implementation automatically sets it to 1, thus the existing code worked fine. However: 1. The lack of a `side` could trigger a warning in EmmyLua. It currently doesn't trigger that, but would with Celtic Minstrel's planned improvements in Wesnoth's lint hints. 2. The tutorial should be good example code, and the special-case in the C++ code that made this work is a case of "assume it's a SP situation, and choose the result that benefits side 1".
39 lines
1.1 KiB
Lua
39 lines
1.1 KiB
Lua
-- #textdomain wesnoth-tutorial
|
||
|
||
-- Allows the player to choose whether they want to play Konrad or Li’sar
|
||
-- for the tutorial
|
||
|
||
local T = wml.tag
|
||
local wml_actions = wesnoth.wml_actions
|
||
local _ = wesnoth.textdomain "wesnoth-tutorial"
|
||
|
||
function wml_actions.select_character()
|
||
local character_selection_dialog = wml.load "campaigns/tutorial/gui/character_selection.cfg"
|
||
local dialog_wml = wml.get_child(character_selection_dialog, 'resolution')
|
||
|
||
local result = wesnoth.sync.evaluate_single(function()
|
||
return { value = gui.show_dialog(dialog_wml) }
|
||
end)
|
||
local character = result.value
|
||
local unit = wml.variables.student_store
|
||
|
||
if character == 2 then
|
||
wesnoth.units.to_map({
|
||
type = "Fighteress",
|
||
side = 1,
|
||
id = unit.id,
|
||
name = _"Li’sar",
|
||
unrenamable = true,
|
||
profile = "portraits/lisar.webp",
|
||
canrecruit = true,
|
||
facing = unit.facing,
|
||
}, unit.x, unit.y )
|
||
wesnoth.sides[1].side_name = _"Li’sar"
|
||
-- enable the help to display this unit's page
|
||
wesnoth.add_known_unit("Fighteress")
|
||
else
|
||
wesnoth.units.to_map(unit)
|
||
end
|
||
|
||
wesnoth.redraw {}
|
||
end
|