BuildingScenariosSamples

From The Battle for Wesnoth Wiki
Revision as of 16:29, 21 January 2006 by GrabberBot (talk | contribs) (automated change of forum links)

This page contains basic examples of WML. For more examples, you can look at the data of Wesnoth using a text editor.

to flash the screen red for a moment, we might go,

 [colour_adjust]
 red=200
 [/colour_adjust]
 [delay]
 time=20
 [/delay]
 [colour_adjust]
 red=0
 [/colour_adjust]

A unit remarking what a tough fight it was when they kill an Ogre:

 [event]
 name=die
   [filter]
   type=Ogre
   [/filter]
   [message]
   id=tough_fight_ogre
   speaker=second_unit
   message= _ "Whew! That was a tough fight!"
   [/message]
 [/event]

Konrad remarks that he is scared at the start of a scenario: (Note the difference between the speaker= and the description= attributes in the two examples).

 [event]
 name=start
   [message]
   id=konrad_scared
   description=Konrad
   message= _ "I feel uneasy about this place"
   [/message]
 [/event]

A selection of which way they should go at the end of a scenario:

 [event]
 name=victory
   [message]
   id=which_way
   speaker=narrator
   message= _ "Which way do you wish to go?"
     [option]
     id=go_north
     message= _ "North"
       [command]
         [endlevel]
         result=victory
         next_scenario="Northern Advance"
         [/endlevel]
       [/command]
     [/option]
     [option]
     id=go_south
     message= _ "South"
       [command]
         [endlevel]
         result=victory
         next_scenario="Southern Citadel"
         [/endlevel]
       [/command]
     [/option]
   [/message]
 [/event]

Suppose you want to make it so that if a certain character, we will call him Fred the Peasant, survives in a certain scenario, he will leave, but return in a later scenario. We can do this in the first scenario:

 [event]
   name=victory
   [if]
     [have_unit]
     description=Fred
     [/have_unit]
     [then]
       [message]
       description=Fred
       message= _ "I must go now, friends, but will return later!"
       [/message]
       [kill]
       description=Fred
       [/kill]
       [set_variable]
       name=fred_is_alive
       value=yes
       [/set_variable]
     [/then]
    [/if]
 [/event]

This makes it so that if Fred is alive, he says something, then is removed from the game, and the variable 'fred_is_alive' is set to yes.

In a later scenario, we can use the following code:

 [event]
   name=turn 7
   [if]
     [variable]
     name=fred_is_alive
     equals=yes
     [/variable]
     [then]
       [unit]
       type=Peasant
       description=Fred
       side=1
       x=8
       y=1
       [/unit]
       [message]
       description=Fred
       message= _ "I have returned to aid you friends!"
       [/message]
     [/then]
     [else]
       [message]
       description=Konrad
       message= _ "I wish Fred were still alive. He would know what to do!"
       [/message]
     [/else]
   [/if]
 [/event]

If the variable 'fred_is_alive' equals 'yes' then this will create a unit, Fred, a Peasant, at (8,1), and he will give a greeting message. Otherwise, Konrad will lament Fred being dead.

Suppose the player has just come across some undead, you might like to find if the player has a unit that would truly hate the undead, and if so, and get it to say something:

 [role]
 role=undead_hater
 type=Mage of Light,Paladin,White Mage
 [/role]
 [message]
 role=undead_hater
 message= _ "The foul hordes of the undead approach, this battle will surely be tough!"
 [/message]


 [teleport]
   [filter]
      name=Garcimore
   [/filter]
   x=10
   y=20
 [/teleport]

See Also