ここでやること

  • 特定のユニット(情報)の一時的な保存(キーワード [store_unit],[store_unit],variable,scrll_to,delay)

Lulu の失踪

 Kerolyn 君のあまりの不甲斐なさに Lulu は失踪してしまいます。
 登場人物を消すのは、最初のシナリオで Cavezyn 司令官を退場させるときにやりました。
 次のようなものです。

        [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]

 今回も同じように [kill]~[/kill]を使えばいいじゃないかと思われるかもしれませんが、実はこれでは具合がわるいのです。
 なぜなら、[kill]~[/kill]で Lulu を消してしまうと呼び出せなくなってしまうのです。
 そんなわけで、「一時的にあるユニットには退場してもらうけど、あとで今と同じ状態のまま(タイプ、ヒットポイント、経験値等)再登場してもらうので、情報を保存しておいてね」とお願いする必要があります。

 そこで登場するのが、[store_unit]~[/store_unit] と [unstore_unit]~[/unstore_unit] です。
 なお、"store" というのはお店という意味ではなく、「保管する」とか「保存する」という意味です。
 [store_unit]~[/store_unit] で状態を保存して [unstore_unit]~[/unstore_unit] で呼び出すという感じです。

 ここで、[store_unit]~[/store_unit] と [unstore_unit]~[/unstore_unit] の中に variable というものが出てきます。 "variable" というのは、「変化するもの(変化できるもの)」というような意味です(なお、日本語では「変数」と言われていますが、数字とは限りません。)。
 今回は、Lulu に関する情報なので、 variable に "Lulu_store" という名前をつけます。
(注意:variable= の右側に使えるのはアルファベットと数字とアンダースコア「_ 」のみです。マイナス「-」やイコール「=」などを使うと不具合が発生します。)
 そして、Lulu に関する情報だよと教えるために、[filter]~[/filter] タグを使って Lulu を指定します。

こちらが例です。
(ゲームの初期)
        [store_unit]
            variable=Lulu_store  ← "Lulu_store" と名前をつける
            kill=yes               ←画面から消す
            [filter]
                id=Lulu      ← Lulu を指定
            [/filter]
        [/store_unit]

        [move_unit_fake]
            type=$Lulu_store.type
            x=39,38,37,36,35
            y=2,1,2,1,1
        [/move_unit_fake]

 おっと、"$Lulu_store.type" と見慣れないものが出てきました。
 先に "Lulu_store" という variable の中に Lulu の情報を保存しましたので、こうすることで、その情報を取り出すことができます。
 "$Lulu_store.type" とやると現在の Lulu のタイプ(エルフの呪術師とかエルフのドルイドとかエルフの魔術師とか)を教えてくれます。
 今回こうしたのは、ゲームをした人によって Lulu のタイプが違っているからです。すでにシルフにまでなっているのに、逃げていくとき昔の呪術師の姿だったりしては変ですからね(シンデレラなら許されるかもしれませんが。)。

 また、"$Lulu_store.hitpoints" とやると、現在の lulu のヒットポイントの高さを教えてくれます。
 これらを駆使すると、ユニットを状態異常にしたり、逆に全回復させたりなどいろいろできるようになります。

 そして数ターン後 Lulu は無事戻ってきます。
        [unstore_unit]
            variable=Lulu_store
            x=10
            y=2
        [/unstore_unit]
        [clear_variable]
            name=Lulu_store
        [/clear_variable]
        [scroll_to]
            x,y=15,5
        [/scroll_to]
        [delay]
            time=900
        [/delay]
 [clear_variable]〜[/clear_variable] というのは、これで挟まれた Lulu_store の内容を空っぽにするために行います。このように、明示的に空っぽにしないと、Lulu_store は以降のシナリオになっても保持されたままになっています(だから、このキャンペーンではやらなくてもいいのですが。)。
 シナリオがたくさんあって「変数」を多用するような場合は、まめに [clear_variable]〜[/clear_variable] をしておく方が、トラブル防止になります。
 [scroll_to]~[/scroll_to] というのは、ここで指定した座標にマップをスクロールするものです。
 また、[delay]~[/delay] というのは、ここで指定した時間だけ、ゲームの進行を止めるものです。数字は多分 100分の1秒単位です。
 こうしておくと、どこに Lulu が登場したかゲームしている人にわかりやすくなります。

ゲームの途中から援軍を登場させる

 先ほど、陣営の設定だけしておいたオーク軍のリーダーを登場させます。
 軍勢のリーダーの登場のさせ方は基本的に一般のユニットと同様です。
 それに加えて「リーダー=兵士の雇用可能」なので、それを示すために canrecruit=yes の1行を記述します。

    [event]
        name=turn 8
        略
         [unit]
            side=5
            type=Orcish Sovereign
            id=Lig-Ein
            name= _ "Lig-Ein"
            canrecruit=yes
            x,y=10,1
            find_vacant=no
        [/unit]
       略
    [/event]
 find_vacant=no というのは、登場予定のタイル(ここでは、10,1)に既に他のユニットがいる場合は、そのユニットを消して登場するという意味です(ここに Kerolyn 君がいたらえらいことになります。)。
 find_vacant=yes にすると、登場予定のタイルに他のユニットがいる場合は、近くの空いているユニットに登場します。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2012年03月04日 11:11