Change control over side to AI and back mid turn
Moderator: Forum Moderators
Forum rules
- Please use [code] BBCode tags in your posts for embedding WML snippets.
- To keep your code readable so that others can easily help you, make sure to indent it following our conventions.
- Nyanyanyan
- Posts: 73
- Joined: May 11th, 2018, 10:40 pm
Change control over side to AI and back mid turn
For a mod I'd like to change the control over a player's side to the ai for the movement of some units and then back to the player.
The first thing I thought of was simply switch the control of the side to controller=ai at the beginning of the turn and then give it over to the player once the AI is done, but I didn't find anything I could attach a switch event to, that indicates the AI actually being done (save for it ending the turn).
The second thing I tried was putting in a menu item that switches the control to the AI after the player is done moving, which would require a bit more work but at least it would work in theory.
Problem here is that for some reason the AI does not move, despite me switching the ai to ai_default_rca.cfg and setting controller=ai. It also does not end the turn or do anything else.
This is my code:
Any insights would be appreciated since my knowledge of the Wesnoth AI is very limited.
The first thing I thought of was simply switch the control of the side to controller=ai at the beginning of the turn and then give it over to the player once the AI is done, but I didn't find anything I could attach a switch event to, that indicates the AI actually being done (save for it ending the turn).
The second thing I tried was putting in a menu item that switches the control to the AI after the player is done moving, which would require a bit more work but at least it would work in theory.
Problem here is that for some reason the AI does not move, despite me switching the ai to ai_default_rca.cfg and setting controller=ai. It also does not end the turn or do anything else.
This is my code:
Code: Select all
[event]
name=prestart
first_time_only=no
[set_menu_item]
id=give_ai_command
description=_"Move Command"
[command]
[modify_side]
side=1
controller=ai
switch_ai=ai/ais/ai_default_rca.cfg
[/modify_side]
[/command]
[/set_menu_item]
[/event]
Author of Age of Lords and the Revolution and Civil War and Expendable Leaders 2 multiplayer mods.
- Celtic_Minstrel
- Developer
- Posts: 2222
- Joined: August 3rd, 2012, 11:26 pm
- Location: Canada
- Contact:
Re: Change control over side to AI and back mid turn
Hmm... this is somewhat interesting. There is a way to do the precise opposite of what you want (where the AI moves some units, then allows the player to move others), but I don't know of a way to let the player move some units and then the AI takes over until the end of the turn. Could this reverse feature possibly get you the result you're looking for?
(There is also the "droid" functionality that can be invoked by a command, but I believe that sets the side to AI until the player reverses it by issuing the command again, so it's probably also not what you want; and I don't know of a way to invoke it from WML or Lua.)
(There is also the "droid" functionality that can be invoked by a command, but I believe that sets the side to AI until the player reverses it by issuing the command again, so it's probably also not what you want; and I don't know of a way to invoke it from WML or Lua.)
Re: Change control over side to AI and back mid turn
hmm sounds like a bug, my first suspect woudl be the equivalent of this line https://github.com/wesnoth/wesnoth/blob ... 1499-L1504 missing in the code that changes controllers from wml. can you run (c++) source patches to test if we give you them?
Scenario with Robots SP scenario (1.11/1.12), allows you to build your units with components, PYR No preperation turn 1.12 mp-mod that allows you to select your units immideately after the game begins.
- Nyanyanyan
- Posts: 73
- Joined: May 11th, 2018, 10:40 pm
Re: Change control over side to AI and back mid turn
It wouldn't be ideal but I'd apprciate if you'd tell me how to do that.Celtic_Minstrel wrote: ↑October 5th, 2019, 1:09 am Could this reverse feature possibly get you the result you're looking for?
I don't think I have a compiler for c++ installed if that's needed but if you give me instructions I could install the needed components.
Author of Age of Lords and the Revolution and Civil War and Expendable Leaders 2 multiplayer mods.
- Celtic_Minstrel
- Developer
- Posts: 2222
- Joined: August 3rd, 2012, 11:26 pm
- Location: Canada
- Contact:
Re: Change control over side to AI and back mid turn
So what I was envisioning is a little involved, but the general outline would be:
- Set the side to AI initially, rather than human (ie,
controller=ai
in the[side]
tag). - Add parameters to the AI that make it only consider a subset of the units. If you don't do this, even units that it doesn't move will have their moves zeroed. I'm not 100% sure how to do this, though...
- Add an extra Lua candidate action with a lower priority than all other candidate actions. It does nothing but call
ai.fallback_human()
.
Re: Change control over side to AI and back mid turn
the bugfix https://github.com/wesnoth/wesnoth/comm ... e3407ef162 is pushed to master and i tested that it works , hopefully i don't forget to backport it to 1.14 before a 1.14.10 release.
Scenario with Robots SP scenario (1.11/1.12), allows you to build your units with components, PYR No preperation turn 1.12 mp-mod that allows you to select your units immideately after the game begins.
- Nyanyanyan
- Posts: 73
- Joined: May 11th, 2018, 10:40 pm
Re: Change control over side to AI and back mid turn
Does that mean it's fixed in 1.15.x ?
And I'm not big on lua or AI parameters, so I don't think I can implement that workaround @celtic.
Author of Age of Lords and the Revolution and Civil War and Expendable Leaders 2 multiplayer mods.
Re: Change control over side to AI and back mid turn
It means that when there is a new weanoth version that will be 1.14.10 or 1.15.2 it will probably be fixed in that version.
Scenario with Robots SP scenario (1.11/1.12), allows you to build your units with components, PYR No preperation turn 1.12 mp-mod that allows you to select your units immideately after the game begins.
- Nyanyanyan
- Posts: 73
- Joined: May 11th, 2018, 10:40 pm
Re: Change control over side to AI and back mid turn
Great, thanks.
Author of Age of Lords and the Revolution and Civil War and Expendable Leaders 2 multiplayer mods.
Re: Change control over side to AI and back mid turn
I know you said that you'll probably not do it this way, but just for the record (in case somebody looks up this thread in the future) I'll add one thing: Celtic_Minstrel's method should work, but I'd probably do a minor variation on it: Instead of the candidate action in Step 3. returning a very low score, I'd set it up to return a variable score: zero at the beginning, and then a very high score (higher than all the other CAs) once the turn-over-to-player condition is met. That way you do not need to restrict Step 2. to only a subset of the units. You "only" need to make sure that the units you want moved by the AI are moved first (which might or might not be easier, depending on your scenario setup).
SP campaigns: Galuldur's First Journey (1.12 & 1.14) & Grnk the Mighty (1.10 & 1.12)
AI experiments: Micro AIs (wiki, forum thread, known/fixed bugs), Fred, AI-demos add-on
AI experiments: Micro AIs (wiki, forum thread, known/fixed bugs), Fred, AI-demos add-on
- PapaSmurfReloaded
- Posts: 822
- Joined: November 17th, 2007, 1:10 pm
- Location: Argentina
Re: Change control over side to AI and back mid turn
Ow, I ran into this issue too, at least it will be fixed with the next version.