"unknown scenario" error

The place to post your WML questions and answers.

Moderators: Forum Moderators, Developers

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.
Post Reply
yonightmare
Posts: 12
Joined: May 4th, 2015, 11:38 pm

"unknown scenario" error

Post by yonightmare » May 4th, 2015, 11:43 pm

I too have this problem, and this is my first scenario for my to be campaign. Any help you could provide would be greatly appreciated, thanks.
Anyway, here's my main.cfg

Code: Select all

[textdomain]
	name="wesnoth-my_first_campaign"
	path="data/add-ons/my_first_campaign/translations"	
[/textdomain]

#textdomain wesnoth-my_first_campaign

[campaign]
	#wesnoth-My_First_Campaign
	id=my_first_campaign
	name= _ "My First Campaign"
	abbrev= _ "MFC"
	define=CAMPAIGN_MY_FIRST_CAMPAIGN
#need icon and image (take from core files, don't include external files for sake of simplicity)
	icon=
	image=
	first_scenario=my_first_scenario
	description= _ "This is my very first campaign. I hope you enjoy. Special alliance vs southern evil forces. Middle is neutral."
	difficulties=EASY
	difficulty_descriptions={MENU_IMG_TXT2 units/undead/shadow-s-attack-4.png _"Easy" _""}
[/campaign]

#ifdef CAMPAIGN_MY_FIRST_CAMPAIGN

[binary_path]
	path=data/add-ons/my_first_campaign
[/binary_path]

#{-add-ons/my_first_campaign/macros}
#{-add-ons/my_first_campaign/utils}

#{-add-ons/my_first_campaign/scenarios}
#endif

[textdomain]
    name="wesnoth-my_first_campaign"
    path="data/add-ons/my_first_campaign/translations"
[/textdomain]

#textdomain wesnoth-my_first_campaign

[campaign]
    #wesnoth-My_First_Campaign
    id=my_first_campaign
    name= _ "My First Campaign"
    abbrev= _ "MFC"
    define=CAMPAIGN_MY_FIRST_CAMPAIGN
#need icon and image (take from core files, don't include external files for sake of simplicity)
    icon=
    image=
    first_scenario=my_first_scenario
    description= _ "This is my first campaign."
    difficulties=EASY
    difficulty_descriptions={MENU_IMG_TXT2 units/undead/shadow-s-attack-4.png  _"Easy"  _""}
[/campaign]

#ifdef CAMPAIGN_MY_FIRST_CAMPAIGN

[binary_path]
    path=data/add-ons/my_first_campaign
[/binary_path]

#{~add-ons/my_first_campaign/macros}
#{~add-ons/my_first_campaign/utils}

#{~add-ons/my_first_campaign/scenarios}
#endif
______________________________
AND HERE IS MY SCENARIO
______________________________

Code: Select all

#textdomain wesnoth-my_first_campaign
[scenario]
	id=My_First_Scenario
	next_scenario=null
	name= _ "My First Scenario."
	map_data= "{-add-ons/my_first_campaign/maps/my_first_map.map}"
	turns=50
	[side]
		side=1
		controller=human
		team_name="good"
		user_team_name= _ "My Team"
		id= _ "MyLeader"
		name= _ "RJ"
		type="Grand Marshal"
		unrenamable=yes
		canrecruit=yes
		recruit="Spearman, Cavalryman, Dragoon, Fencer, Duelist, Heavy Infantryman, Shock Trooper, Horseman, Knight, Lancer, Mage, Red Mage, White Mage, Bowman, Longbowman, Javelineer, Peasant, Pikeman, Swordsman, Sergeant, Lieutenant, Woodsman"
		gold=500
	[/side]
	[side]
		side=2
		controller=ai
		team_name="good"
		user_team_name= _ "Forgotten Warriors"
		id="AlliedLeader"
		name= _ "My Ally"
		type="Grand Marshal"
		unrenamable=yes
		canrecruit=yes
		recruit="Spearman, Cavalryman, Dragoon, Fencer, Duelist, Heavy Infantryman, Shock Trooper, Horseman, Knight, Lancer, Mage, Red Mage, White Mage, Bowman, Longbowman, Javelineer, Peasant, Pikeman, Swordsman, Sergeant, Lieutenant, Woodsman"
		gold=500
	[/side]
	[side]
		side=3
		controller=ai
		team_name="good"
		user_team_name= _ "Elven Alliance"
		id="ElvenLeader"
		name= _ "Cinque"
		type="Elvish High Lord"
		unrenamable=yes
		canrecruit=yes
		recruit="Wose, Elder Wose, Ancient Wose, Elvish Archer, Elvish Marksman, Elvish Ranger, Elvish Fighter, Elvish Captain, Elvish Hero, Elvish Scout, Elvish Rider, Elvish Shaman, Elvish Druid, Elvish Sorceress"
		gold=500
	[/side]
	[side]
		side=4
		controller=ai
		team_name="neutral"
		user_team_name= _ "Nagas"
		id="NagaLeader"
		name= _ "The Beast"
		type="Naga Myrmidon"
		unrenamable=yes
		canrecruit=yes
		recruit="Naga Fighter, Naga Warrior"
		gold=100
	[/side]
	[side]
		side=5
		controller=ai
		team_name="bad"
		user_team_name= _ "Memes and Trolls"
		id="TrollLeaderr"
		name= _ "Krog"
		type="Great Troll"
		unrenamable=yes
		canrecruit=yes
		recruit="Troll Whelp, Troll Hero, Troll Shaman, Troll, Troll Rocklobber"
		gold=700
	[/side]
	[side]
		side=6
		controller=ai
		team_name="bad"
		user_team_name= _ "Undead"
		id="UndeadLeader"
		name= _ "yonightmare"
		type="Ancient Lich"
		unrenamable=yes
		canrecruit=yes
		recruit="Skeleton, Skeleton Archer, Wlaking Corpse, Soulless, Deathblade, Revenant, Bone Shooter, Ghoul, Necrophage, Ghost, Wraith, Shadow, Chocobone"
		gold=400
	[/side]
	[side]
		side=7
		controller=ai
		team_name="bad"
		user_team_name= _ "Orcish Horde"
		id="OrcLeader"
		name= _ "Stoo P. Eyd"
		type="Orcish Sovereign"
		unrenamable=yes
		canrecruit=yes
		recruit="Orcish Archer, Orcish Crossbowman, Orcish Assassin, Orcish Grunt, Orcish Warrior, Orcish Nightblade"
		gold=700
	[/side]
	[side]
		side=8
		controller=Human
		team_name="neutrals"
		user_team_name= _ "Knalgan Authority"
		id="DrawfLeader"
		name= _ "Thor"
		type="Dwarvish Lord"
		unrenamable=yes
		canrecruit=yes
		recruit="Dwarvish Fighter, Dwarvish Steelclad, Dwarvish Guardsman, Dwarvish Stalwart, Dwarvish Runesmith, Dwarvish Runemaster, Dwarvish Scout, Dwarvish Patherfinder, Dwarvish Thunderer, Dwarvish Thunderguard, Dwarvish Ulfserker, Dwarvish Berserker"
		gold=999
	[/side]
	[side]
		side=9
		controller=ai
		team_name="Monsters"
		user_team_name= _ "Monsterz"
		id="MonsterLeader"
		name= _ "Delfador"
		type="Elder Mage"
		unrenamable=yes
		canrecruit=yes
		recruit=""
		gold=0
	[/side]
[/scenario]
_____________________________
Thank you soooo much for your help.
Last edited by Pentarctagon on May 5th, 2015, 12:06 am, edited 1 time in total.
Reason: Split from dead thread and added [code] tags

monochromatic
Posts: 1549
Joined: June 18th, 2009, 1:45 am

Re: Unkown Scenario

Post by monochromatic » May 5th, 2015, 12:42 am

In WML, # could denote either a comment or a preprocessor command. For example:

Code: Select all

# This is a comment.
# This is another comment.

#define THIS_IS_A_MACRO ID
[unit]
    id={ID}
    type=Spearman
    side=1
    x,y=1,1
[/unit]
#enddef

# This macro creates a side 1 Spearman at the coordinates (1,1).
{THIS_IS_A_MACRO Unit}
In your code above, the # before the file references (for ex. {-add-ons/my_first_campaign/scenarios}) causes the engine to read the line as a comment, thus not calling forth any scenarios, macros, or utilities.
The #ifdef should look something like this:

Code: Select all

#ifdef CAMPAIGN_MY_FIRST_CAMPAIGN

[binary_path]
   path=data/add-ons/my_first_campaign
[/binary_path]

{-add-ons/my_first_campaign/macros}
{-add-ons/my_first_campaign/utils}

{-add-ons/my_first_campaign/scenarios}
#endif

yonightmare
Posts: 12
Joined: May 4th, 2015, 11:38 pm

Re: "unknown scenario" error

Post by yonightmare » May 5th, 2015, 12:53 am

My intention was to comment those 3 out because I receive this error:
The following add-on had errors and could not be loaded:
C:/Users/Name/Documents/My Games/Wesnoth1.12/data/add-ons/my_first_campaign/_main.cfg

Please report this to the author or maintainer of this add-on.

Details:

Macro/file '-add-ons/my_first_campaign/scenarios' is missing
at ~add-ons\\my_first_campaign\\_main.cfg:30
_____________________________
However, in that path there is just one scenario there: the my_first_scenario.cfg.
The utils and macros folders are empty

monochromatic
Posts: 1549
Joined: June 18th, 2009, 1:45 am

Re: "unknown scenario" error

Post by monochromatic » May 5th, 2015, 1:04 am

Ah, found it.
yonightmare wrote:

Code: Select all

	first_scenario=my_first_scenario

Code: Select all

	id=My_First_Scenario
(i.e. the IDs are case-sensitive)

yonightmare
Posts: 12
Joined: May 4th, 2015, 11:38 pm

Re: "unknown scenario" error

Post by yonightmare » May 5th, 2015, 1:19 am

Yeah thanks I actually just found that before you sent that. Still, however, it did not help. I have been updating my code the whole time, so you may want to see my updated code. My main.cfg is so simple it doesn't make sense.
main.cfg:

Code: Select all

[textdomain]
	name="wesnoth-my_first_campaign"
	path="data/add-ons/my_first_campaign/translations"	
[/textdomain]

#textdomain wesnoth-my_first_campaign

[campaign]
	#wesnoth-My_First_Campaign
	id=my_first_campaign
	name= _ "My First Campaign"
	abbrev= _ "MFC"
	define=CAMPAIGN_MY_FIRST_CAMPAIGN
#need icon and image (take from core files, don't include external files for sake of simplicity)
	icon=
	image=
	first_scenario=my_first_scenario
	description= _ "This is my very first campaign. I hope you enjoy. Special alliance vs southern evil forces. Middle is neutral."
	difficulties=EASY
	difficulty_descriptions={MENU_IMG_TXT2 units/undead/shadow-s-attack-4.png _"Easy" _""}
[/campaign]

#ifdef CAMPAIGN_MY_FIRST_CAMPAIGN

[binary_path]
	path=data/add-ons/my_first_campaign
[/binary_path]


{-add-ons/my_first_campaign/scenarios/}
#endif

my_first_scenario.cfg:

Code: Select all

#textdomain wesnoth-my_first_campaign
[scenario]
	id=my_first_scenario
	next_scenario=null
	name= _ "My First Scenario."
	map_data= "{-add-ons/my_first_campaign/maps/my_first_map.map}"
	turns=50
	[side]
		side=1
		controller=human
		team_name="good"
		user_team_name= _ "My Team"
		id= _ "MyLeader"
		name= _ "RJ"
		type="Grand Marshal"
		unrenamable=yes
		canrecruit=yes
		recruit="Spearman, Cavalryman, Dragoon, Fencer, Duelist, Heavy Infantryman, Shock Trooper, Horseman, Knight, Lancer, Mage, Red Mage, White Mage, Bowman, Longbowman, Javelineer, Peasant, Pikeman, Swordsman, Sergeant, Lieutenant, Woodsman"
		gold=500
	[/side]
	[side]
		side=2
		controller=ai
		team_name="good"
		user_team_name= _ "Forgotten Warriors"
		id="AlliedLeader"
		name= _ "My Ally"
		type="Grand Marshal"
		unrenamable=yes
		canrecruit=yes
		recruit="Spearman, Cavalryman, Dragoon, Fencer, Duelist, Heavy Infantryman, Shock Trooper, Horseman, Knight, Lancer, Mage, Red Mage, White Mage, Bowman, Longbowman, Javelineer, Peasant, Pikeman, Swordsman, Sergeant, Lieutenant, Woodsman"
		gold=500
	[/side]
	[side]
		side=3
		controller=ai
		team_name="good"
		user_team_name= _ "Elven Alliance"
		id="ElvenLeader"
		name= _ "Cinque"
		type="Elvish High Lord"
		unrenamable=yes
		canrecruit=yes
		recruit="Wose, Elder Wose, Ancient Wose, Elvish Archer, Elvish Marksman, Elvish Ranger, Elvish Fighter, Elvish Captain, Elvish Hero, Elvish Scout, Elvish Rider, Elvish Shaman, Elvish Druid, Elvish Sorceress"
		gold=500
	[/side]
	[side]
		side=4
		controller=ai
		team_name="neutral"
		user_team_name= _ "Nagas"
		id="NagaLeader"
		name= _ "The Beast"
		type="Naga Myrmidon"
		unrenamable=yes
		canrecruit=yes
		recruit="Naga Fighter, Naga Warrior"
		gold=100
	[/side]
	[side]
		side=5
		controller=ai
		team_name="bad"
		user_team_name= _ "Memes and Trolls"
		id="TrollLeaderr"
		name= _ "Krog"
		type="Great Troll"
		unrenamable=yes
		canrecruit=yes
		recruit="Troll Whelp, Troll Hero, Troll Shaman, Troll, Troll Rocklobber"
		gold=700
	[/side]
	[side]
		side=6
		controller=ai
		team_name="bad"
		user_team_name= _ "Undead"
		id="UndeadLeader"
		name= _ "yonightmare"
		type="Ancient Lich"
		unrenamable=yes
		canrecruit=yes
		recruit="Skeleton, Skeleton Archer, Wlaking Corpse, Soulless, Deathblade, Revenant, Bone Shooter, Ghoul, Necrophage, Ghost, Wraith, Shadow, Chocobone"
		gold=400
	[/side]
	[side]
		side=7
		controller=ai
		team_name="bad"
		user_team_name= _ "Orcish Horde"
		id="OrcLeader"
		name= _ "Stoo P. Eyd"
		type="Orcish Sovereign"
		unrenamable=yes
		canrecruit=yes
		recruit="Orcish Archer, Orcish Crossbowman, Orcish Assassin, Orcish Grunt, Orcish Warrior, Orcish Nightblade"
		gold=700
	[/side]
	[side]
		side=8
		controller=Human
		team_name="neutrals"
		user_team_name= _ "Knalgan Authority"
		id="DrawfLeader"
		name= _ "Thor"
		type="Dwarvish Lord"
		unrenamable=yes
		canrecruit=yes
		recruit="Dwarvish Fighter, Dwarvish Steelclad, Dwarvish Guardsman, Dwarvish Stalwart, Dwarvish Runesmith, Dwarvish Runemaster, Dwarvish Scout, Dwarvish Patherfinder, Dwarvish Thunderer, Dwarvish Thunderguard, Dwarvish Ulfserker, Dwarvish Berserker"
		gold=999
	[/side]
	[side]
		side=9
		controller=ai
		team_name="Monsters"
		user_team_name= _ "Monsterz"
		id="MonsterLeader"
		name= _ "Delfador"
		type="Elder Mage"
		unrenamable=yes
		canrecruit=yes
		recruit=""
		gold=0
	[/side]
[/scenario]
By the way you don't understand how much I appreciate this you are such a great help!

monochromatic
Posts: 1549
Joined: June 18th, 2009, 1:45 am

Re: "unknown scenario" error

Post by monochromatic » May 5th, 2015, 1:30 am

Assuming the error is still the same, are you absolutely sure that the file my_first_scenario.cfg is in a folder called scenarios? Also is the parent folder for the entire campaign called my_first_campaign? Check for typographical errors. Upon a second glance through, the WML seems to be fine.

EDIT: Scratch that. I found the error upon closer inspection: {-add-ons/my_first_campaign/scenarios} should be {~add-ons/my_first_campaign/scenarios} (i.e. make sure all your file references have a tilde (~) instead of a hyphen as a prefix). Make sure you change the map file reference in the scenario config too!

yonightmare
Posts: 12
Joined: May 4th, 2015, 11:38 pm

Re: "unknown scenario" error

Post by yonightmare » May 5th, 2015, 1:41 am

Oh my gosh! It works. Thank you sooo much. You are a life saver. You are amazing. Now I can work on my campaign. :D I'm so happy. Thank you thank you thank you. A million commendments for you!

yonightmare
Posts: 12
Joined: May 4th, 2015, 11:38 pm

Re: "unknown scenario" error

Post by yonightmare » May 15th, 2015, 1:15 am

I have another strange mysterious error. In my program, it says the macro of CREATE_GUARD_1 cannot be found.
It is clearly defined here:
#Disregard the indentation from copying pasting

Code: Select all

#define CREATE_GUARD_1 id
	[unit]
    		id=Tracy
    		type=Great Mage
		name="Queen Tracy"
		gender= female
		canrecruit=yes
    		side=1
		upkeep = loyal
    		x,y=10,9
	[/unit]
	[unit]
    		id=Guard1
    		type=Halberdier
		max_moves=0
    		side=1
		upkeep = loyal
    		x,y=21,10
	[/unit]
	[unit]
		id=Guard2
    		type=Halberdier
		max_moves=0
    		side=1
		upkeep = loyal
    		x,y=19,11
	[/unit]
	[unit]
    		id=Guard3
    		type=Royal Guard
		max_moves=0
    		side=1
		upkeep = loyal
    		x,y=21,12
	[/unit]
	[unit]
		id=Guard4
    		type=Royal Guard
		max_moves=0
    		side=1
		upkeep = loyal
    		x,y=23,11
	[/unit]
	[unit]
		id=Lieutenant
		name="Flavian"
    		type=Paladin
    		side=1
		upkeep = loyal
##    		x,y=5,5
		x,y=20,96
	[/unit]
	#enddef
And I call it with:

Code: Select all

{CREATE_GUARD_1 Unit}
It used to work but now it doesn't for some reason. I am very confused with this. So please help if you have the time.
Here is my full code. It may be beneficial to see it:
Spoiler:

User avatar
Ravana
Forum Moderator
Posts: 2244
Joined: January 29th, 2012, 12:49 am
Location: Estonia
Contact:

Re: "unknown scenario" error

Post by Ravana » May 15th, 2015, 1:34 am

You have type="Dwarvish Sentinel without ending ".

Currently you do not use macro parameters there, and I suspect guard ids too.

You should be more specific about what your error message is.

I used wmlindent on it and fixed " as it messed up syntax highlighting.

Code: Select all

#textdomain wesnoth-my_first_campaign
[scenario]
    id=my_first_scenario
    next_scenario=null
    name= _ "My First Scenario."
    map_data= "{~add-ons/my_first_campaign/maps/Firstmap.map}"
    turns=-1
    [side]
        side=1
        controller=human
        ##      fog=yes
        ##      shroud=yes
        team_name="good"
        user_team_name= _ "My Team"
        id= "MyLeader"
        name= _ "King RJ"
        type="Grand Marshal"
        unrenamable=yes
        canrecruit=yes
        recruit="Spearman, Cavalryman, Dragoon, Fencer, Duelist, Heavy Infantryman, Shock Trooper, Horseman, Knight, Lancer, Mage, Red Mage, White Mage, Bowman, Longbowman, Javelineer, Peasant, Pikeman, Swordsman, Sergeant, Lieutenant, Woodsman"
        gold=500
        defeat_condition=no_units_left
        scroll_to_leader=no
        share_view=yes
        share_maps=yes
        income=10
    [/side]
    [side]
        side=2
        controller=ai
        fog=yes
        shroud=yes
        team_name="good"
        user_team_name= _ "Forgotten Warriors"
        id=ally
        name= _ "Crentle"
        type="Grand Marshal"
        unrenamable=yes
        canrecruit=yes
        recruit="Spearman, Cavalryman, Dragoon, Fencer, Duelist, Heavy Infantryman, Shock Trooper, Horseman, Knight, Lancer, Mage, Red Mage, White Mage, Bowman, Longbowman, Javelineer, Peasant, Pikeman, Swordsman, Sergeant, Lieutenant, Woodsman"
        gold=500
        defeat_condition=no_units_left
        share_view=yes
        share_maps=yes
    [/side]
    [side]
        side=3
        controller=ai
        fog=yes
        shroud=yes
        team_name="good"
        user_team_name= _ "Elven Alliance"
        id="ElvenLeader"
        name= _ "Cinque"
        type="Elvish High Lord"
        unrenamable=yes
        canrecruit=yes
        recruit="Wose, Elder Wose, Ancient Wose, Elvish Archer, Elvish Marksman, Elvish Ranger, Elvish Fighter, Elvish Captain, Elvish Hero, Elvish Scout, Elvish Rider, Elvish Shaman, Elvish Druid, Elvish Sorceress"
        gold=500
        defeat_condition=no_units_left
        hidden=yes
        share_view=no
        share_maps=no
    [/side]
    [side]
        side=4
        controller=ai
        fog=yes
        shroud=yes
        team_name="neutral"
        user_team_name= _ "Nagas"
        id="NagaLeader"
        name= _ "The Beast"
        type="Naga Myrmidon"
        unrenamable=yes
        canrecruit=yes
        recruit="Naga Fighter, Naga Warrior"
        gold=100
        defeat_condition=no_units_left
        hidden=yes
    [/side]
    [side]
        side=5
        controller=ai
        fog=yes
        shroud=yes
        team_name="bad"
        user_team_name= _ "Memes and Trolls"
        id="TrollLeaderr"
        name= _ "Krog"
        type="Great Troll"
        unrenamable=yes
        canrecruit=yes
        recruit="Troll Whelp, Troll Hero, Troll Shaman, Troll, Troll Rocklobber"
        gold=700
        defeat_condition=no_units_left
        hidden=yes
    [/side]
    [side]
        side=6
        controller=ai
        fog=yes
        shroud=yes
        team_name="bad"
        user_team_name= _ "Undead"
        id="UndeadLeader"
        name= _ "yonightmare"
        type="Ancient Lich"
        unrenamable=yes
        canrecruit=yes
        recruit="Skeleton, Skeleton Archer, Walking Corpse, Soulless, Deathblade, Revenant, Bone Shooter, Ghoul, Necrophage, Ghost, Wraith, Shadow, Chocobone"
        gold=400
        defeat_condition=no_units_left
        hidden=yes
    [/side]
    [side]
        side=7
        controller=ai
        fog=yes
        shroud=yes
        team_name="bad"
        user_team_name= _ "Orcish Horde"
        id="OrcLeader"
        name= _ "Stoo P. Eyd"
        type="Orcish Sovereign"
        unrenamable=yes
        canrecruit=yes
        recruit="Orcish Archer, Orcish Crossbowman, Orcish Assassin, Orcish Grunt, Orcish Warrior"
        gold=700
        defeat_condition=no_units_left
        hidden=yes
        [ai]
            aggression=.7
        [/ai]
    [/side]
    [side]
        side=8
        controller=ai
        fog=yes
        shroud=yes
        team_name="neutrals"
        user_team_name= _ "Knalgan Authority"
        id="DrawfLeader"
        name= _ "Thor"
        type="Dwarvish Arcanister"
        unrenamable=yes
        canrecruit=yes
        recruit="Dwarvish Fighter, Dwarvish Steelclad, Dwarvish Guardsman, Dwarvish Stalwart, Dwarvish Runesmith, Dwarvish Runemaster, Dwarvish Scout, Dwarvish Pathfinder, Dwarvish Thunderer, Dwarvish Thunderguard, Dwarvish Ulfserker, Dwarvish Berserker"
        gold=999
        defeat_condition=no_units_left
        hidden=yes
    [/side]
    [side]
        side=9
        controller=ai
        fog=yes
        shroud=yes
        team_name="Monsters"
        user_team_name= _ "Monsterz"
        id="MonsterLeader"
        name= _ "Delfador"
        type="Elder Mage"
        max_moves = 0
        unrenamable=yes
        canrecruit=yes
        recruit=""
        gold=0
        defeat_condition=never
        hidden=yes
        [ai]
            [goal]
                name=protect_unit
                [criteria]
                    side=9
                    canrecruit=yes
                [/criteria]
                protect_radius=8
                value=5
            [/goal]
        [/ai]
    [/side]
    [side]
        side=10
        controller = ai
        team_name="neutrals"
        user_team_name= _ "Knalgan Authority2"
        id=DwarfBodyGuard1a
        name= _ "Angerous"
        type="Dwarvish Dragonguard"
        unrenamable=yes
        canrecruit=yes
        recruit="Dwarvish Fighter, Dwarvish Steelclad, Dwarvish Guardsman, Dwarvish Stalwart, Dwarvish Runesmith, Dwarvish Runemaster, Dwarvish Scout, Dwarvish Pathfinder, Dwarvish Thunderer, Dwarvish Thunderguard, Dwarvish Ulfserker, Dwarvish Berserker"
        gold=500
        defeat_condition=no_units_left
        hidden=yes
        color = white
        [leader]
            id=DwarfBodyGuard1b
            name= _ "Angerous"
            type="Dwarvish Dragonguard"
            unrenamable=yes
            side=10
            upkeep=loyal
            x,y= 54,129
        [/leader]
    [/side]
    [side]
        side=11
        controller=ai
        team_name="neutrals"
        user_team_name= _ "Knalgan Authority3"
        id="DwarfBodyGuard2a"
        name= _ "Hepherours"
        type="Dwarvish Lord"
        unrenamable=yes
        canrecruit=yes
        recruit="Dwarvish Fighter, Dwarvish Steelclad, Dwarvish Guardsman, Dwarvish Stalwart, Dwarvish Runesmith, Dwarvish Runemaster, Dwarvish Scout, Dwarvish Pathfinder, Dwarvish Thunderer, Dwarvish Thunderguard, Dwarvish Ulfserker, Dwarvish Berserker"
        gold=500
        defeat_condition=no_units_left
        hidden=yes
        color = white
        [leader]
            id=DwarfBodyGuard2b
            name= _ "Hepherours"
            type="Dwarvish Lord"
            unrenamable=yes
            side=11
            upkeep=loyal
            x,y= 54,133
        [/leader]
    [/side]
    [side]
        side=12
        controller=ai
        team_name="neutrals"
        user_team_name= _ "Knalgan Authority4"
        id=DwarfGateGuard1a
        name= _ "Northern Gate Guard"
        type="Dwarvish Sentinel"
        unrenamable=yes
        canrecruit=yes
        recruit="Dwarvish Fighter, Dwarvish Steelclad, Dwarvish Guardsman, Dwarvish Stalwart, Dwarvish Runesmith, Dwarvish Runemaster, Dwarvish Scout, Dwarvish Pathfinder, Dwarvish Thunderer, Dwarvish Thunderguard, Dwarvish Ulfserker, Dwarvish Berserker"
        gold=500
        defeat_condition=no_units_left
        hidden=yes
        color = white
        [leader]
            id=DwarfGateGuard2a
            name= _ "Northern Gate Guard"
            type="Dwarvish Sentinel"
            unrenamable=yes
            side=11
            upkeep=loyal
            x,y= 37,122
        [/leader]
    [/side]
    [side]
        side=13
        controller=ai
        team_name="neutrals"
        user_team_name= _ "Knalgan Authority5"
        id=DwarfGateGuard1b
        name= _ "Eastern Gate Guard"
        type="Dwarvish Sentinel"
        unrenamable=yes
        canrecruit=yes
        recruit="Dwarvish Fighter, Dwarvish Steelclad, Dwarvish Guardsman, Dwarvish Stalwart, Dwarvish Runesmith, Dwarvish Runemaster, Dwarvish Scout, Dwarvish Pathfinder, Dwarvish Thunderer, Dwarvish Thunderguard, Dwarvish Ulfserker, Dwarvish Berserker"
        gold=999
        defeat_condition=no_units_left
        hidden=yes
        color = white
        [leader]
            id=DwarfGateGuard2b
            name= _ "Eastern Gate Guard"
            type="Dwarvish Sentinel"
            unrenamable=yes
            side=11
            upkeep=loyal
            x,y= 71,129
        [/leader]
#define CREATE_GUARD_1 id
    [unit]
        id=Tracy
        type=Great Mage
        name="Queen Tracy"
        gender= female
        canrecruit=yes
        side=1
        upkeep = loyal
        x,y=10,9
    [/unit]
    [unit]
        id=Guard1
        type=Halberdier
        max_moves=0
        side=1
        upkeep = loyal
        x,y=21,10
    [/unit]
    [unit]
        id=Guard2
        type=Halberdier
        max_moves=0
        side=1
        upkeep = loyal
        x,y=19,11
    [/unit]
    [unit]
        id=Guard3
        type=Royal Guard
        max_moves=0
        side=1
        upkeep = loyal
        x,y=21,12
    [/unit]
    [unit]
        id=Guard4
        type=Royal Guard
        max_moves=0
        side=1
        upkeep = loyal
        x,y=23,11
    [/unit]
    [unit]
        id=Lieutenant
        name="Flavian"
        type=Paladin
        side=1
        upkeep = loyal
        ##          x,y=5,5
        x,y=20,96
    [/unit]
    ## This macro creates 2 side 1 Halberdiers at the coordinates (21,10) and (20,11) as well as 2 Royal Guards at the coordinates, and the Lieutenant Flavian.
#enddef
#define CREATE_GUARD_2 ID
    [unit]
        id=Guarda1
        name="Gate Guard"
        type=Shock Trooper
        max_moves=0
        side=2
        upkeep = loyal
        x,y=128,45
    [/unit]
    [unit]
        id=Guarda2
        name="Gate Guard"
        type=Shock Trooper
        max_moves=0
        side=2
        upkeep = loyal
        x,y=133,46
    [/unit]
    [unit]
        id=Guarda3
        name="Lookout Guard"
        type=Spearman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=129,36
    [/unit]
    [unit]
        id=Guarda4
        name="Lookout Guard"
        type=Spearman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=131,36
    [/unit]
    [unit]
        id=Guarda5
        name="Lookout Guard"
        type=Pikeman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=136,37
    [/unit]
    [unit]
        id=Guarda6
        name="Lookout Guard"
        type=Swordsman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=135,37
    [/unit]
    [unit]
        id=Guarda7
        name="Lookout Guard"
        type=Swordsman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=126,36
    [/unit]
    [unit]
        id=Watchman
        name="Lookout Guard"
        type=Pikeman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=125,37
    [/unit]
    [unit]
        id=Guarda8
        name="Lookout Guard"
        type=Swordsman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=123,42
    [/unit]
    [unit]
        id=Guarda9
        name="Lookout Guard"
        type=Swordsman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=138,42
    [/unit]
    [unit]
        id=Guarda10
        name="Lookout Guard"
        type=Swordsman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=138,40
    [/unit]
    [unit]
        id=Guarda11
        name="Lookout Guard"
        type=Swordsman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=123,40
    [/unit]
    [unit]
        id=Guarda12
        name="Lookout Guard"
        type=Spearman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=138,38
    [/unit]
    [unit]
        id=Guarda13
        name="Lookout Guard"
        type=Pikeman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=123,44
    [/unit]
    [unit]
        id=Guarda14
        name="Lookout Guard"
        type=Swordsman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=124,44
    [/unit]
    [unit]
        id=Guarda15
        name="Lookout Guard"
        type=Pikeman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=138,44
    [/unit]
    [unit]
        id=Guarda16
        name="Lookout Guard"
        type=Pikeman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=137,45
    [/unit]
    [unit]
        id=Guarda17
        name="Lookout Guard"
        type=Javelineer
        max_moves=0
        side=2
        upkeep = loyal
        x,y=127,45
    [/unit]
    [unit]
        id=Guarda18
        name="Lookout Guard"
        type=Javelineer
        max_moves=0
        side=2
        upkeep = loyal
        x,y=134,45
    [/unit]
    [unit]
        id=Guarda19
        name="Lookout Guard"
        type=Royal Warrior
        max_moves=0
        side=2
        upkeep = loyal
        x,y=126,45
    [/unit]
    [unit]
        id=Guarda20
        name="Lookout Guard"
        type=Royal Warrior
        max_moves=0
        side=2
        upkeep = loyal
        x,y=135,46
    [/unit]
    [unit]
        id=Guarda21
        name="Lookout Guard"
        type=Spearman
        max_moves=0
        side=2
        upkeep = loyal
        x,y=123,38
    [/unit]
    # This macro creates guard units for Side 2
#enddef
#define CREATE_GUARD_3 ID
    [unit]
        id=ElfLead1
        name="Elvish Council Lord Gweddyn"
        type=Elvish Champion
        max_moves=0
        side=3
        upkeep = loyal
        canrecruit=yes
        x,y=184,4
    [/unit]
    [unit]
        id=ElfLead2
        name="Elvish Council Lady Naphena"
        type=Elvish Sylph
        max_moves=0
        side=3
        upkeep = loyal
        canrecruit=yes
        x,y=192,4
    [/unit]
    [unit]
        id=ElfLead3
        name="Elvish Council Lord Felnor"
        type=Elvish Marshal
        max_moves=0
        side=3
        upkeep = loyal
        canrecruit=yes
        x,y=188,6
    [/unit]
#enddef

#define CREATE_GUARD_5 ID
    [unit]
        id=TrollGuard1
        name="Troll Guard"
        type=Troll
        max_moves=0
        side=5
        upkeep = loyal
        x,y=181,200
    [/unit]
    [unit]
        id=TrollGuard2
        name="Troll Guard"
        type=Troll Rocklobber
        max_moves=0
        side=5
        upkeep = loyal
        x,y=181,198
    [/unit]
    [unit]
        id=TrollGuard3
        name="Troll Guard"
        type=Troll
        max_moves=0
        side=5
        upkeep = loyal
        x,y=181,196
    [/unit]
    [unit]
        id=TrollGuard4
        name="Troll Guard"
        type=Troll Rocklobber
        max_moves=0
        side=5
        upkeep = loyal
        x,y=181,194
    [/unit]
    [unit]
        id=TrollGuard5
        name="Troll Guard"
        type=Troll
        max_moves=0
        side=5
        upkeep = loyal
        x,y=183,193
    [/unit]
    [unit]
        id=TrollGuarda5
        name="Troll Guard"
        type=Troll
        max_moves=0
        side=5
        upkeep = loyal
        x,y=185,192
    [/unit]
    [unit]
        id=TrollGuard6
        name="Troll Guard"
        type=Troll Rocklobber
        max_moves=0
        side=5
        upkeep = loyal
        x,y=187,191
    [/unit]
    [unit]
        id=TrollGuard7
        name="Troll Guard"
        type=Troll
        max_moves=0
        side=5
        upkeep = loyal
        x,y=189,190
    [/unit]
    [unit]
        id=TrollGuard8
        name="Troll Guard"
        type=Troll Rocklobber
        max_moves=0
        side=5
        upkeep = loyal
        x,y=191,189
    [/unit]
    [unit]
        id=TrollGuard9
        name="Troll Guard"
        type=Troll
        max_moves=0
        side=5
        upkeep = loyal
        x,y=192,188
    [/unit]
    [unit]
        id=TrollGuard10
        name="Troll Guard"
        type=Troll Rocklobber
        max_moves=0
        side=5
        upkeep = loyal
        x,y=194,188
    [/unit]
    [unit]
        id=TrollGuard11
        name="Troll Guard"
        type=Troll
        max_moves=0
        side=5
        upkeep = loyal
        x,y=196,188
    [/unit]
    [unit]
        id=TrollGuard12
        name="Troll Guard"
        type=Troll Rocklobber
        max_moves=0
        side=5
        upkeep = loyal
        x,y=198,188
    [/unit]
#enddef

#define CREATE_GUARD_6 ID
    [unit]
        id=UndeadGuard1
        name="Undead Guard"
        type=Draug
        max_moves=0
        side=6
        upkeep = loyal
        x,y=113,195
    [/unit]
    [unit]
        id=UndeadGuard2
        name="Undead Guard"
        type=Draug
        max_moves=0
        side=6
        upkeep = loyal
        x,y=115,195
    [/unit]
    [unit]
        id=UndeadGuard3
        name="Undead Guard"
        type=Draug
        max_moves=0
        side=6
        upkeep = loyal
        x,y=113,193
    [/unit]
    [unit]
        id=UndeadGuard4
        name="Undead Guard"
        type=Draug
        max_moves=0
        side=6
        upkeep = loyal
        x,y=115,193
    [/unit]
    [unit]
        id=Corpse1
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=114,189
    [/unit]
    [unit]
        id=Corpse2
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=114,190
    [/unit]
    [unit]
        id=Corpse3
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=114,191
    [/unit]
    [unit]
        id=Corpse4
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=114,192
    [/unit]
    [unit]
        id=Corpse5
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=113,190
    [/unit]
    [unit]
        id=Corpse6
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=113,191
    [/unit]
    [unit]
        id=Corpse7
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=113,192
    [/unit]
    [unit]
        id=Corpse8
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=115,189
    [/unit]
    [unit]
        id=Corpse9
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=115,190
    [/unit]
    [unit]
        id=Corpse10
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=115,191
    [/unit]
    [unit]
        id=Corpse11
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=115,192
    [/unit]
    [unit]
        id=Corpse12
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=116,189
    [/unit]
    [unit]
        id=Corpse13
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=116,190
    [/unit]
    [unit]
        id=Corpse14
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=116,191
    [/unit]
    [unit]
        id=Corpse15
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=116,192
    [/unit]
    [unit]
        id=Corpse16
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=117,190
    [/unit]
    [unit]
        id=Corpse17
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=117,191
    [/unit]
    [unit]
        id=Corpse18
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=117,192
    [/unit]
    [unit]
        id=Corpse19
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=118,190
    [/unit]
    [unit]
        id=Corpse20
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=118,191
    [/unit]
    [unit]
        id=Corpse20
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=119,191
    [/unit]
    [unit]
        id=Corpse21
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=112,189
    [/unit]
    [unit]
        id=Corpse22
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=112,190
    [/unit]
    [unit]
        id=Corpse23
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=112,191
    [/unit]
    [unit]
        id=Corpse24
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=112,192
    [/unit]
    [unit]
        id=Corpse25
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=111,190
    [/unit]
    [unit]
        id=Corpse26
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=111,191
    [/unit]
    [unit]
        id=Corpse27
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=111,192
    [/unit]
    [unit]
        id=Corpse28
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=110,190
    [/unit]
    [unit]
        id=Corpse28
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=110,191
    [/unit]
    [unit]
        id=Corpse28
        name="Walking Dead"
        type=Walking Corpse
        side=6
        upkeep = loyal
        x,y=109,191
    [/unit]
#enddef
#define CREATE_GUARD_7 ID
    [unit]
        id=OrcGuard1
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=21,199
    [/unit]
    [unit]
        id=OrcGuard2
        name="Orcish Guard"
        type=Orcish Crossbowman
        side=7
        max_moves=0
        upkeep = loyal
        x,y=21,197
    [/unit]
    [unit]
        id=OrcGuard3
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=21,195
    [/unit]
    [unit]
        id=OrcGuard4
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=20,193
    [/unit]
    [unit]
        id=OrcGuard5
        name="Orcish Guard"
        type=Orcish Crossbowman
        side=7
        max_moves=0
        upkeep = loyal
        x,y=18,192
    [/unit]
    [unit]
        id=OrcGuard6
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=16,191
    [/unit]
    [unit]
        id=OrcGuard7
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=14,190
    [/unit]
    [unit]
        id=OrcGuard8
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=12,190
    [/unit]
    [unit]
        id=OrcGuard9
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=10,190
    [/unit]
    [unit]
        id=OrcGuard9
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=8,190
    [/unit]
    [unit]
        id=OrcGuard9
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=6,191
    [/unit]
    [unit]
        id=OrcGuard9
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=4,192
    [/unit]
    [unit]
        id=OrcGuard9
        name="Orcish Guard"
        type=Orcish Warrior
        side=7
        max_moves=0
        upkeep = loyal
        x,y=2,193
    [/unit]
#enddef
#define MOVE_AND_UNSHROUD X Y
    [move_unit]
        id=Lieutenant
        to_x, to_y=X,Y
        force_scroll=no
    [/move_unit]
    [redraw]
        remove_shroud=yes
        side=1
    [/redraw]
#enddef
#define FOG_SIDE Z
    [modify_side]
        ##      side=Z
        ##      fog=yes
    [/modify_side]

    [redraw]
        remove_shroud=yes
        side=Z
    [/redraw]
#enddef
    [/side]
#define BEGINNING CUTSCENE
    [event]
        name=start
        {CREATE_GUARD_1 unit}
        {CREATE_GUARD_2 Unit}
        {CREATE_GUARD_3 Unit}
        {CREATE_GUARD_5 Unit}
        {CREATE_GUARD_6 Unit}
        {CREATE_GUARD_7 Unit}
        [message]
            speaker=MyLeader
            message= _ "Men of the Prestigious. Be on guard, for I sense a great evil. I feel hordes of enemies marching towards us as we speak. "
        [/message]
        [message]
            speaker=MyLeader
            message= _ "Quickly, search the outside world and find whatever aid you can. We need allies, and we need them now. Lieutenant, fetch King Crentle of the Forgotten Warriors and ask for his help. "
        [/message]
        [message]
            speaker=Lieutenant
            message= _ "Understood, my Lord."
        [/message]
        {MOVE_AND_UNSHROUD 14 2}
        {MOVE_AND_UNSHROUD 17 9}
        {MOVE_AND_UNSHROUD 25 13}
        {MOVE_AND_UNSHROUD 31 16}
        {MOVE_AND_UNSHROUD 37 16}
        {MOVE_AND_UNSHROUD 50 17}
        {MOVE_AND_UNSHROUD 61 14}
        {MOVE_AND_UNSHROUD 71 19}
        {MOVE_AND_UNSHROUD 80 21}
        {MOVE_AND_UNSHROUD 93 21}
        {MOVE_AND_UNSHROUD 100 23}
        {MOVE_AND_UNSHROUD 109 28}
        {MOVE_AND_UNSHROUD 117 32}
        {MOVE_AND_UNSHROUD 125 36}
        [message]
            speaker=Watchman
            message= _ "Halt, who goes there? "
        [/message]
        [message]
            speaker=Lieutenant
            message= _ "I am Lieutenant Flavian, of The Prestigious. I speak on behalf of King RJ. I wish to speak with King Crentle"
        [/message]
        [message]
            speaker=Watchman
            message= _ "You may enter. He's in his castle"
        [/message]
        [move_unit]
            id = Lieutenant
            hexes = 5
            delay_shroud = no
            from_x, from_y = 125,36
            to_x, to_y = 131,39
            check_passability = yes
            force_scroll = yes
        [/move_unit]
        [message]
            speaker=Lieutenant
            message= _ "King Crentle. I came on behalf of King-"
        [/message]
        [message]
            speaker=ally
            message= _ "I anticipated your arrival. And yes, I am well aware of the threat. We will join you in war to our best ability, but- we have been defeated many times before. and are weak. Nonetheless, we will spare all of our resources."
        [/message]
        [message]
            speaker=Lieutenant
            message= _ "Thank you, King Crentle, I will inform King RJ."
        [/message]
        [move_unit]
            id = Lieutenant
            hexes = 20
            delay_shroud = no
            from_x, from_y = 131,39
            to_x, to_y = 5,5
            check_passability = yes
            force_scroll = yes
        [/move_unit]
        ##Add fog to side 1

        {FOG_SIDE 1}
        [message]
            speaker=Lieutenant
            message= _ "King RJ, I have great news. King Crentle has agreed to join us in the war."
        [/message]
        [message]
            speaker=MyLeader
            message= _ "This is good news indeed, Lieutenant, but a heavy fog just lifted. This must be some spell that could only have been created from some undead foe, for there hasn't been fog in Mascrotia for over 10 millenium."
        [/message]
        [move_unit]
            id = Lieutenant
            hexes = 5
            delay_shroud = no
            from_x, from_y = 5,5
            to_x, to_y = 20,97
            check_passability = yes
            force_scroll = yes
        [/move_unit]
        [objectives]
            [objective]
                description= _ "Finish the War between the Northern Alliance and the Undead."
                condition="win"
            [/objective]
            [objective]
                description= _ "Death of RJ"
                condition="lose"
            [/objective]
        [/objectives]
    [/event]
#enddef

    ##    {BEGINNING CUTSCENE}
    [event]
        name=start
        {CREATE_GUARD_1 Unit}
        {CREATE_GUARD_2 Unit}
        {CREATE_GUARD_3 Unit}
        {CREATE_GUARD_5 Unit}
        {CREATE_GUARD_6 Unit}
        {CREATE_GUARD_7 Unit}
    [/event]
    [event]
        name=moveto
        first_time_only="yes"
        [filter]
            side=1
            x,y=20,97
        [/filter]
        [message]
            speaker=DwarfGuard#
            message= _ "You there, stop! You're entering the land of the Knalgan Authority. Tell us, who do you think you are?"
        [/message]
        [message]
            speaker=unit
            message= _ "I am"+name+"from The Prestigious of King RJ. We do not seek war."
        [/message]
        [message]
            speaker=DwarfGuard#
            message= _ "Don't seek war, eh? Well then. I have a proposition for you: Being that you're on the lands of the Knalgan people, we would have no choice but to declare war on ya. However, because I'm feeling merciful, I will allow you to pay 200 gold in return for an alliance, being as I can pull strings. So what d'you say, human?"
        [/message]
        [message]
            speaker=narrator
            message= _ "Choose your path:"
            [option]
                message="<b><big>"+ _ "You little rats! The Prestigious surely does not put up for this kind of behavior. TO WAR!"+"</big></b>"
                [modify_side]
                    side = 8
                [/modify_side]
                [modify_side]
                    side = 10
                [/modify_side]
                [modify_side]
                    side = 11
                [/modify_side]
                [modify_side]
                    side = 12
                [/modify_side]
                [modify_side]
                    side = 13
                [/modify_side]
            [/option]
            [option]
                message="<b><big>"+ _ "Let's not be rash, now. I'm afraid at the moment we could only possibly afford but 100 gold pieces."+"</small></b>"
                [modify_side]
                    side = 8
                [/modify_side]
                [modify_side]
                    side = 10
                [/modify_side]
                [modify_side]
                    side = 11
                [/modify_side]
                [modify_side]
                    side = 12
                [/modify_side]
                [modify_side]
                    side = 13
                [/modify_side]
            [/option]
            [option]
                message="<b><big>"+ _ "Let's not be rash, now. I'm afraid at the moment we could only possibly afford but 50 gold pieces."+"</big></b>"
                [modify_side]
                    side = 8
                [/modify_side]
                [modify_side]
                    side = 10
                [/modify_side]
                [modify_side]
                    side = 11
                [/modify_side]
                [modify_side]
                    side = 12
                [/modify_side]
                [modify_side]
                    side = 13
                [/modify_side]
            [/option]
            [option]
                message="<b><big>"+ _ "Why of course. I'm sure King RJ would not mind but a few gold pieces from his treasury"+"</big></b>"
                [event]
                    [modify_side]
                        side = 8
                        team_name="good"
                    [/modify_side]
                    [modify_side]
                        side = 10
                        team_name="good"
                    [/modify_side]
                    [modify_side]
                        side = 11
                        team_name="good"
                    [/modify_side]
                    [modify_side]
                        side = 12
                        team_name="good"
                    [/modify_side]
                    [modify_side]
                        side = 13
                        team_name="good"
                    [/modify_side]
                [/event]
            [/option]
            image=wesnoth-icon.png
        [/message]
    [/event]
    [event]
        name="last breath"
        first_time_only=yes
        [filter]
            side=1
        [/filter]
        [filter_second]
            side=6
        [/filter_second]
        [message]
            speaker=second_unit
            message= _ "<span size='large'>Roar*</span>"
        [/message]
        [message]
            speaker=unit
            message= _ "In the name of the Northern Alliance, I shall be avenged"
        [/message]
    [/event]
    [event]
        name=die
        first_time_only=yes
        [filter]
            side=1
        [/filter]
        [filter_second]
            side=6
        [/filter_second]
        [message]
            speaker=MyLeader
            message= _ "You foul beasts. You don't know what you just did! This is WAR!"
        [/message]
    [/event]
    [event]
        name=die
        [filter]
            id=EnemyLeader
        [/filter]
        [message]
            speaker=second_unit
            message= _ "For the Northern Alliance!"
        [/message]
        [endlevel]
            result=victory
        [/endlevel]
    [/event]
[/scenario]

yonightmare
Posts: 12
Joined: May 4th, 2015, 11:38 pm

Re: "unknown scenario" error

Post by yonightmare » May 15th, 2015, 1:39 am

You have type="Dwarvish Sentinel without ending ".

Currently you do not use macro parameters there, and I suspect guard ids too.

I used wmlindent on it and fixed " as it messed up syntax highlighting.
That's amazing! I actually just narrowed it down to that section too after commenting it out from a bunch of troubleshooting. I don't know what wmlindent is but I assume its a type of program. Also, you said syntax highlighting. What would you suggest/what do you use for your text files?
Again, thanks so much I have been stuck on this for 2 days and appreciate it so much. I'll be a lot more careful. You have scripting powers, man.

User avatar
Ravana
Forum Moderator
Posts: 2244
Joined: January 29th, 2012, 12:49 am
Location: Estonia
Contact:

Re: "unknown scenario" error

Post by Ravana » May 15th, 2015, 1:43 am

wmlindent is part of the core tools. There is even graphical user interface for that at data/tools/GUI.pyw

For syntax highlighting I use notepad++ with http://forums.wesnoth.org/viewtopic.php?f=15&t=30411

User avatar
Elvish_Hunter
Forum Moderator
Posts: 1396
Joined: September 4th, 2009, 2:39 pm
Location: Lintanir Forest...

Re: "unknown scenario" error

Post by Elvish_Hunter » May 15th, 2015, 9:07 am

Also, there are a lot of other problems with your code:
  • You have this macro: #define CREATE_GUARD_3 ID, but its ID argument isn't used anywhere in the macro's code. And that seems to apply to all your CREATE_GUARD macros.
  • Despite what beetlenaut said, your [move_unit] tags are stil containing a bunch of unsupported keys (hexes, delay_shroud, form_x, from_y).
  • A small chunk of your code:

    Code: Select all

                [option]
                    message="<b><big>"+ _ "You little rats! The Prestigious surely does not put up for this kind of behavior. TO WAR!"+"</big></b>"
                    [modify_side]
                        side = 8
                    [/modify_side]
    While [option] supports a message key, any other wml command inside of it must be wrapped in a [command] tag. Also, [modify_side] with only the side key, while it may be syntactically correct, doesn't make any sense (how should side 8 be modified?).
  • You can't put an [event] tag directly inside of [option].
Seriously, don't try to make up your own WML. What WML supports is listed in our WML Reference, and if it isn't listed then it means that it doesn't work at all because it doesn't exist. I get that a beginner can do mistakes (heh... I still do a lot of them :P ), but assembling a bunch of random stuff and hope that they could work is another matter. WML (and any other programming language, for that matter) doesn't work in this way.
Current maintainer of these add-ons:
1.14: The Sojournings of Grog, A Rough Life, The White Troll (co-author), Wesnoth Lua Pack
1.12: Children of Dragons

yonightmare
Posts: 12
Joined: May 4th, 2015, 11:38 pm

Re: "unknown scenario" error

Post by yonightmare » May 17th, 2015, 4:46 am

@Elvish_Hunter
Thanks, with your help I made the part work and could continue into the next part. As for the creating my own WML, believe me, I'm not. The only reason I had that was because after searching countless youtube videos I found one with it included under the same tag. So for that reason, I believe it may have been included in an older version and was depreciated. Either that or the guy that I was watching was making it all up. But just to know, I'm a big Python guy so I know you can't just make script up. And by the way, I love the campaign your maintaining. I've played every single campaign and beaten them - all on my phone too. (I actually didn't know about the computer version until researching more about the app). You're doing a great job and you're a great help. Hopefully, in maybe a year or so (I hope) I will be able to be close to as good as you.

User avatar
Elvish_Hunter
Forum Moderator
Posts: 1396
Joined: September 4th, 2009, 2:39 pm
Location: Lintanir Forest...

Re: "unknown scenario" error

Post by Elvish_Hunter » May 17th, 2015, 9:31 am

yonightmare wrote:As for the creating my own WML, believe me, I'm not. The only reason I had that was because after searching countless youtube videos I found one with it included under the same tag.
Can you link that video?
yonightmare wrote:So for that reason, I believe it may have been included in an older version and was depreciated. Either that or the guy that I was watching was making it all up.
Probably the second, given that [option] always behaved like that, for as long as I can remember.
yonightmare wrote:But just to know, I'm a big Python guy
Then you may be interested in the fact that we have a bunch of WML maintenance tools written in Python (wmllint, wmlscope, wmlindent, their GUI interface called GUI.pyw, and trackplacer), which you can try to read and modify, if you wish :) I personally wrote the GUI.pyw interface, so let me know any suggestion that you may have about it.
yonightmare wrote:I love the campaign your maintaining. I've played every single campaign and beaten them - all on my phone too. (I actually didn't know about the computer version until researching more about the app). You're doing a great job and you're a great help. Hopefully, in maybe a year or so (I hope) I will be able to be close to as good as you.
Thank you, I really appreciate it :) .
Current maintainer of these add-ons:
1.14: The Sojournings of Grog, A Rough Life, The White Troll (co-author), Wesnoth Lua Pack
1.12: Children of Dragons

yonightmare
Posts: 12
Joined: May 4th, 2015, 11:38 pm

Re: "unknown scenario" error

Post by yonightmare » May 17th, 2015, 4:45 pm

After a while of searching through my history. I found it. It turns out that it was my mistake as you said. I confused [path] with [moveto], because originally I was using the path function and when I discovered the moveto I just changed the tag and not the variables inside of it. In case you were curious, this is where I found and used it from the wiki:

Code: Select all

[path]
	hexes = the total length of the path
		if the path is calculated to an impassable hex, or the move requires multiple turns
		and allow_multiple_turns is no, its value will be 0.
	from_x, from_y = location of the unit
	to_x, to_y = destination
	movement_cost = total movement cost required by unit to reach that hex
	required_turns = total turns required by unit to reach that hex
	[step]
		x, y = location of the step
		terrain = terrain of the step
		movement_cost = movement cost required by unit to reach that hex
		required_turns = turns required by unit to reach that hex
	[/step]
[/path]

Post Reply