Follow-up Comment #2, bug #19086 (project wesnoth):
Thanks for the comments. As far as I understand it (and please let me know
if I am missing something), the BCA id is not used by the engine at all (or at
least its name can be set to anything arbitrarily), so I don't know how using
unit.id would cause a problem here. However, I don't have any preference
whatsoever for using id over underlying_id (if I were to use this for a BCA
that I wanted to remove later, I would explicitly define the id, rather than
using the implicit method anyway), so I changed the code to use the latter.
As for the diff, what's the standard way of showing that here? Here's the
text diff, and a screengrab of a graphical diff is attached as a file
13d12
< local id = cfg.bca_id or ("bca-" .. unit.__cfg.underlying_id)
25a25
> local id = "bca-" .. ca_counter
27a28,29
> ca_counter = ca_counter + 1
>
30a33,34
> ["id"] = id,
> ["name"] = id,
36a41
> ["side"] = side,
I changed the code slightly to:
1. Make the switch to underlying_id
2. Minimize the difference w.r.t. the current version so that the diff is as
short as possible.
Here's the new version:
function wml_actions.add_ai_behavior(cfg)
local unit = wesnoth.get_units(helper.get_child(cfg, "filter"))[1]
if not unit then
helper.wml_error("[add_ai_behavior]: no unit specified")
end
local side = cfg.side
local sticky = cfg.sticky or false
local loop_id = cfg.loop_id or "main_loop"
local eval = cfg.evaluation
local exec = cfg.execution
local id = cfg.bca_id or ("bca-" .. unit.__cfg.underlying_id)
local ux = unit.x -- @note: did I get it right that coordinates in
C++ differ by 1 from thos in-game(and in Lua)?
local uy = unit.y
if not side then
helper.wml_error("[add_ai_behavior]: no side attribute
given")
end
if not (eval and exec) then
helper.wml_error("[add_ai_behavior]: invalid
execution/evaluation handler(s)")
end
local path = "stage[" .. loop_id .. "].candidate_action[" .. id ..
"]" -- bca: behavior candidate action
local conf = {
["action"] = "add",
["engine"] = "lua",
["path"] = path,
{"candidate_action", {
["id"] = id,
["name"] = id,
["engine"] = "lua",
["sticky"] = sticky,
["unit_x"] = ux,
["unit_y"] = uy,
["evaluation"] = eval,
["execution"] = exec
}},
["side"] = side
}
wesnoth.wml_actions.modify_ai(conf)
--wesnoth.message("Adding a behavior")
end
(file #14645)
_______________________________________________________
Additional Item Attachment:
File name: xxdiff.add_ai_behavior.png Size:71 KB
_______________________________________________________
Reply to this item at:
<http://gna.org/bugs/?19086>
_______________________________________________
Message sent via/by Gna!
http://gna.org/
_______________________________________________
Wesnoth-bugs mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-bugs