side switching
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.
side switching
I'm having a problem with my campaign. In the first few scenarios the player plays using a particular side and leader. Then, for a few scenarios, the leader switches and the player controls a different leader with different recruits, recalls, etc.
Now, in my next scenario, I want the player to be able to use the original leader again with all the recallable units he/she gained in the scenarios before the first leader switch. I've tried using save_id but it doesn't seem to make a difference. The player just has an un-leveled leader and no units available to recall like it's a brand new side.
I just can't figure it out. Hopefully you guys can help.
Here's the [side] code for each of the relevent scenarios:
the first two:
and the one i'm working on:
Thanks
Now, in my next scenario, I want the player to be able to use the original leader again with all the recallable units he/she gained in the scenarios before the first leader switch. I've tried using save_id but it doesn't seem to make a difference. The player just has an un-leveled leader and no units available to recall like it's a brand new side.
I just can't figure it out. Hopefully you guys can help.
Here's the [side] code for each of the relevent scenarios:
the first two:
Code: Select all
[side]
type=Raid Captain
description=Gashnu
user_description= _ "Gashnu"
unrenamable=yes
profile=portraits/Gashnu.png
side=1
canrecruit=yes
controller=human
recruit= Wolf Rider
enemy=2,3
persistent=1
save_id=Gashnu
gold=100
fog=yes
facing=ne
[/side]
-----------------------------------------
[side]
type=Raid Captain
description=Gashnu
user_description= _ "Gashnu"
unrenamable=yes
profile=portraits/Gashnu.png
team_name=Orcs
side=1
canrecruit=yes
controller=human
recruit= Wolf Rider, Goblin Spearman
enemy=2
gold=150
persistent=1
save_id=Gashnu
fog=no
village_gold=1
[/side]
Code: Select all
[side]
type=Raid Captain
description=Gashnu
user_description= _ "Gashnu"
unrenamable=yes
profile=portraits/Gashnu.png
team_name=Orcs
side=1
canrecruit=yes
controller=human
persistent=1
save_id=Gashnu
recruit=Wolf Rider, Goblin Spearman, Orcish Grunt, Orcish Archer, Orcish Assassin
gold=150
fog=no
shroud=yes
village_gold=1
[/side]
Re: side switching
hope this helps:
http://www.wesnoth.org/wiki/SideSwitchingWML
http://www.wesnoth.org/wiki/SideSwitchingWML
Re: side switching
the words "bug report?" come to mind...
http://www.wesnoth.org/wiki/User:Sapient... "Looks like your skills saved us again. Uh, well at least, they saved Soarin's apple pie."
Re: side switching
No, sorry. Thats actually one of the first places I went when I had the problem. I havn't used save_ids before this and added them after reading that.Max2008 wrote:hope this helps:
http://www.wesnoth.org/wiki/SideSwitchingWML
So, my code checks out and that should work? I had kind of ruled out the bug possibility because i'm using the stable version.Sapient wrote:the words "bug report?" come to mind...
-
- Posts: 547
- Joined: August 11th, 2008, 3:19 pm
Re: side switching
Hah! Funny...Limabean wrote:I had kind of ruled out the bug possibility because i'm using the stable version.
I've been messing around with a few persistent sides myself, and I might have a foggy grasp on what's going on.
If you assign a side to a specific save_id, that seems to work. However, if you opt not to use that save_id in a later scenario, the wesnoth engine seems to still tie it to whatever side it was on before. For example, if in scenario 1, side 1 uses the save_id "foo", and in scenario 2, side 1 is just a normal side, all of the units from the previous scenario will still be available for recall. That's been my experience so far.
Now to throw a stab in the dark at your problem, I'm guessing that when you tied a new save_id to side 1 (when you switched to a new leader/army), it overwrote, knocked out, or overshadows the original save_id, Gashnu. Any units you had were removed (you may want to confirm/disprove this with your save file), including the old leader, and your side 1 default leader is used instead.
I have no idea if any of that is accurate, but it's my best appraisal of the situation. If you decide to put in a bug report, let me know so I can follow it.
--OSJ
P.S. I'm working on a macro set to use as a workaround. If you like, I'll post it here when it's finished.
what if the Bible's claims about Christ depicted accurate, verifiable history? given some research, you might be surprised at the evidence...
-
- Posts: 547
- Joined: August 11th, 2008, 3:19 pm
Re: side switching
Here're the two macros I wrote:
The first macro, SOL_PACKAGE_SIDE, is used to bundle all of a side's data into one variable. It takes two arguments - the side being packaged, and the variable that will hold it.
The second macro, SOL_UNPACKAGE_SIDE replaces the default leader (if there is one) with the stored leader, places the stored units on the recall list, and sets the gold to that in the scenario previous (you may need to add in gold for the scenario bonus; that isn't factored in here)
SOL_UNPACKAGE_SIDE takes two arguments, SIDE and VAR. VAR should be a variable stored via SOL_PACKAGE_SIDE. SIDE refers to the side that the units will be unpacked on, not to the side they come from. This allows a smooth switch from side 1 to side 3, if such a switch is required.
Hope someone can use this :-)
--OSJ
Code: Select all
#define SOL_PACKAGE_SIDE SIDE VAR
##:: Store Leader
[store_unit]
[filter]
side={SIDE}
canrecruit=yes
[/filter]
kill=yes
variable={VAR}.leader
[/store_unit]
##:: Store Other Units
[store_unit]
[filter]
side={SIDE}
[/filter]
kill=yes
variable={VAR}.units
[/store_unit]
##:: Store Side Stats
[store_side]
variable={VAR}.stats
[/store_side]
#enddef
#define SOL_UNPACKAGE_SIDE SIDE VAR
##:: Remove Default Leader (if available)
[if]
[have_unit]
side={SIDE}
canrecruit=yes
[/have_unit]
[then]
## store/kill default leader
[store_unit]
[filter]
side={SIDE}
canrecruit=yes
[/filter]
variable=SOL_UNPACKAGE_SIDE_leader
kill=yes
[/store_unit]
## grab coordinates
{VARIABLE {VAR}.leader.x $SOL_UNPACKAGE_SIDE_leader.x}
{VARIABLE {VAR}.leader.y $SOL_UNPACKAGE_SIDE_leader.y}
[/then]
[/if]
##:: Unstore Leader
{VARIABLE {VAR}.leader.side {SIDE}}
[unstore_unit]
variable={VAR}.leader
find_vacant=yes
[/unstore_unit]
##:: Unstore Other Units
{FOREACH {VAR}.units SOL_UNPACKAGE_SIDE_i}
{VARIABLE {VAR}.units[$SOL_UNPACKAGE_SIDE_i].side {SIDE}}
{VARIABLE {VAR}.units[$SOL_UNPACKAGE_SIDE_i].x recall}
{VARIABLE {VAR}.units[$SOL_UNPACKAGE_SIDE_i].y recall}
[unstore_unit]
variable={VAR}.units[$SOL_UNPACKAGE_SIDE_i]
find_vacant=yes
[/unstore_unit]
{NEXT SOL_UNPACKAGE_SIDE_i}
##:: Set Gold
[modify_side]
side={SIDE}
gold=${VAR}.stats.gold
[/modify_side]
##:: Clear Variables
{CLEAR_VARIABLE SOL_UNPACKAGE_SIDE_leader}
{CLEAR_VARIABLE SOL_UNPACKAGE_SIDE_i} # just in case NEXT doesn't do it
{CLEAR_VARIABLE {VAR}}
#enddef
The second macro, SOL_UNPACKAGE_SIDE replaces the default leader (if there is one) with the stored leader, places the stored units on the recall list, and sets the gold to that in the scenario previous (you may need to add in gold for the scenario bonus; that isn't factored in here)
SOL_UNPACKAGE_SIDE takes two arguments, SIDE and VAR. VAR should be a variable stored via SOL_PACKAGE_SIDE. SIDE refers to the side that the units will be unpacked on, not to the side they come from. This allows a smooth switch from side 1 to side 3, if such a switch is required.
Hope someone can use this :-)
--OSJ
- Attachments
-
- utils-side.cfg
- (2.04 KiB) Downloaded 299 times
what if the Bible's claims about Christ depicted accurate, verifiable history? given some research, you might be surprised at the evidence...
Re: side switching
lol, I'll certainly be re-reading your posts a few times
I'm still a noobish coder and don't even know how to use macros (I know, it's sad ). This does seem like you're on the right track though so I will certainly be trying to figure them out. Thanks for the help.
I'm still a noobish coder and don't even know how to use macros (I know, it's sad ). This does seem like you're on the right track though so I will certainly be trying to figure them out. Thanks for the help.