これから普通っぽいシナリオを作りますが、最初のシナリオは、せっかく "Invasion the Orcs" を作りましたので、これを増強していきましょう。
 なお、次のシナリオは洞窟探検にしようと思います。Battle for Wesnoth のキャンペーンを作る場合には、シナリオごとに変化をつけるのがコツらしいので。

導入部の画像

 まず戦い前の導入部ですが、文字だけで背景が真っ黒なのはちょっと寂しいですね。
 ここに画像を張り付けます。
 導入部は、[story]~[/story] の受け持ちなので、ここに画像を指定しましょう。
    [story]
        [part]
            background=/story/landscape-castle.jpg
            story= _ "数十年前、エルフの土地に北方のオークが侵入してきたのち、エルフたちは辺境の地を警備するための砦を作った。"
        [/part]
        [part]
            background=/story/landscape-castle.jpg
            story= _ "ここ Halsyon もそのような砦のひとつだった。"
        [/part]
        [part]
            background=/story/landscape-castle.jpg
            story= _ "しかし、余りにも辺境すぎたので、一度もオークに襲撃されたことがなく、落ちこぼれ兵士の吹き溜まりと化していた。"
        [/part]
   [/story]
 "Battle for Wesnoth" 本体から城の画像を持ってきて張ってみました( Windows だと C:\Program Files\Battle for Wesnoth <version>\data\core\images\story\landscape-castle.jpg )。

別に戦わない登場人物

 ゲーム中に会話だけして戦闘もせずに消えていくチョイ役がよく登場しますので、それもやってみましょう。
 Kerolyn の上官の Cavezyn を冒頭登場させ少し会話をさせてみましょう。
 prestart と名付けたイベントの中になりますね。

Cavezyn の登場と位置の指定

    [event]
        name=start
        {NAMED_LOYAL_UNIT 1 "Elvish Lord" 7 18 "Cavezyn" (_ "Cavezyn")} 
    [/event]
 { ~ } 内は、名前のあるユニット 第1陣営側 タイプ 居場所の座標(x,y) コンピュータ用の名前(=id) ()内は表示用の名前(=name)です。

Cavezyn と Kerolyn 会話

 これは、すでにやった Kerolyn などの会話とほとんど同じです。
        [message]
            speaker=Cavezyn
            message= _ "では、私は出かけるが、あとは頼んだぞ。"
        [/message]
        [message]
            speaker=Kerolyn
            message= _ "はい! Cavezyn 司令官殿。この Kerolyn にお任せください!"
        [/message]
        [message]
            speaker=Cavezyn
            message= _ "お前はいつも言葉は威勢がいいが頼りにならんからな・・・まあ、オーク共が来るわけもないからいいか。"
        [/message]
        [message]
            speaker=Cavezyn
            message= _ "Lulu よ。私がいない間 Kerolyn が怠けないようによく見張っていてくれ。"
        [/message]
        [message]
            speaker=Lulu
            message= _ "はい。わかっております。司令官殿。"
        [/message]
        [message]
            speaker=Kerolyn
            message= _ "(やれやれ、司令官がいない間羽を伸ばせると思ったのに・・・)"
        [/message]

Cavezyn の退場

 これで Cavezyn は出張しますので、退場させましょう。

 まず、マップの端(座標 1,18 のへクス)まで移動させます。
        [move_unit]
            id="Cavezyn"
            to_x=1
            to_y=18
        [/move_unit]
そのユニットにとっての目的地への最短ルートを通って移動します。

 なお、
        [move_unit]
            id="Cavezyn"
            to_x=11,14,16
            to_y=14,13,13
        [/move_unit]
のように、to_x、to_y を複数指定することで、経由地を指定することができます。このとき、必ず to_x、to_y を同じ数にします。

 マップの端まで移動したら、ユニットを消します。なお、[kill] を行うとそのユニットは復活できませんので、注意してください(ユニットのデータを保存する方法は、第3章で解説します。)。
        [kill]
            id=Cavezyn
        [/kill]

 先に [kill] してから、ダミーのユニット画像だけをを移動させる方法もあります。
        [kill]
            id=Cavezyn
        [/kill]
        [move_unit_fake]
            type="Elvish Lord"
            x=7,1
            y=18,18
        [/move_unit_fake]
 [move_unit_fake] を使うときには、最低でも「出発地」、「終点」の2箇所を指定する必要があります。

start 部分のまとめ

 シナリオの start 部分だけ抜粋すると次のようになります。
     [event]
         name=start
         {NAMED_LOYAL_UNIT 1 "Elvish Lord" 7 18 "Cavezyn" (_ "Cavezyn")} 

        [message]
            speaker=Cavezyn
            message= _ "では、私は出かけるが、あとは頼んだぞ。"
        [/message]
        [message]
            speaker=Kerolyn
            message= _ "はい! Cavezyn 司令官殿。この Kerolyn にお任せください!"
        [/message]
        [message]
            speaker=Cavezyn
            message= _ "お前はいつも言葉は威勢がいいが頼りにならんからな・・・まあ、オーク共が来るわけもないからいいか。"
        [/message]
        [message]
            speaker=Cavezyn
            message= _ "Lulu よ。私がいない間 Kerolyn が怠けないようによく見張っていてくれ。"
        [/message]
        [message]
            speaker=Lulu
            message= _ "はい。わかっております。司令官殿。"
        [/message]
        [message]
            speaker=Kerolyn
            message= _ "(やれやれ、司令官がいない間羽を伸ばせると思ったのに・・・)"
        [/message]

        [kill]
            id=Cavezyn
        [/kill]

        [move_unit_fake]
            type="Elvish Lord"
            x=7,6,5,4,3,2,1
            y=18,17,17,17,18,17,18
        [/move_unit_fake]

        [message]
            speaker=Kerolyn
            message= _ "オーク共、いつでもかかってこい!この Kerolyn 様が相手をしてやるぞ!"
        [/message]
        [message]
            speaker=Lulu
            message= _ "て、鼻毛抜きながらいうことじゃないでしょ!Kerolyn たら、司令官が出かけているからってだらけすぎよ!本当にオークが襲ってきたらどうするの?"
        [/message]
        [message]
            speaker=Kerilyn
            message= _ "げっ、 Lulu いつのまに来てたんだ?とにかく、そんなこと言ったって、こんなド田舎にオークが出るはずが・・・"
        [/message]
        [message]
            speaker=Gustor-Teng
            message= _ "グルルル。Gustor-Teng 様が来ちゃいましたよ〜♪"
        [/message]
        [message]
            speaker=Kerolyn
            message= _ "ウソでしょ!? Lulu、どうしよう?"
        [/message]
        [message]
            speaker=Lulu
            message= _ "「どうしよう?」って、闘ってここを守らなきゃ。"
        [/message]
        [message]
            speaker=Kerolyn
            message= _ "闘うって誰が?"
        [/message]
        [message]
            speaker=Lulu
            message= _ "もちろんあなたよ!!司令官が留守の間は、「一応」副官のあなたに任されているんでしょ!?"
        [/message]
        [message]
            speaker=Kerolyn
            message= _ "でも、俺実戦経験全然ないし・・・"
        [/message]
        [message]
            speaker=Gustor-Teng
            message= _ "あのお、お取り込み中恐縮ですが、そろそろ襲ってもよいでしょうか?"
        [/message]
    [/event]

次のシナリオの指定

 これは、next_scenario=null となっているところを次のシナリオに変えるだけです。
nextscenario=2_Seaching_in_the_Cave

難易度に応じた設定

 ターン数や所持金などが難易度に応じて変わるようにしてみましょう。
 ターン数は turns=12 となっているところを、{TURNS 18 15 12} というように変えます。
 数字は、易しい→普通→難しいの順のターン数です。

 所持金等の設定は、[side]~[/side] の中に書きます。
    [side]
        side=1
        略
        {GOLD 120 100 80}
        {INCOME 4 2 0}
    [/side]
 INCOME は初期設定 2gold に追加しての金額ですので注意してください(この場合「易しい」だとターンごとに 6gold の収入となります。)。

最初から支配している村

 元々エルフの領地なので、最初からいくつかの村を支配下においておきます。これも、[side]~[/side] の中に書きます。
    [side]
        side=1
        略
        [village]
            x=3
            y=18
        [/village]
         [village]
            x=13
            y=13
        [/village]
    [/side]

ボーナス

 自軍の勝利イベントの [endlevel]~[/endlevel]に記載します。
 持ち越し率は、初期設定で持ち金と早期終了ボーナスの 40% を次のゲームに持ち越すことになっていますが、奮発して 60% にしてみましょう。
    [event]
        name=die
        略
        [endlevel]
            result=victory
            bonus=yes
            {NEW_GOLD_CARRYOVER 60}
        [/endlevel]
    [/event]

タグ:

+ タグ編集
  • タグ:
最終更新:2017年06月04日 14:17