WSN形式 > コモン

コモン(編集中)


 「コモン」とは、WSN4以降で実装された「数値」「文字列」「真偽値(TRUE/FALSE)」として万能に扱えるバリアント型の変数です。CardWirthの概念で言えば、「ステップ値の名前(状態名)に何でも入る、計算も可能なステップ」と表現するのが近いかもしれません。なおXMLや内部的にはValiantと表記されていますが、CardWirthでは「バリアント」という言葉が既に使われているため、Pyではこの独自変数および関連コンテントを「コモン」(汎用的な変数)と呼びます。




コモンの使い方

 ステップやフラグと同じく、CWXEditorの状態変数欄から追加することができます。

 数値・文字列値・真偽値のどれかを選んで、値を指定しましょう。
 たとえば、計算がしたければ数値、メッセージに表示するテキストなら文字列を選びます。
 後述の型変換で後から別のデータ型に変えることもできます。

コモンの関連コンテント

 コモンはステップやフラグとは完全に独立しており、以下の3つのコンテントを使って操作します。

  • コモン分岐……式の結果の真偽値によって、分岐を行う。
  • コモン設定……式の結果をコモン(またはフラグやステップ)に代入。
  • コモン判定……フラグ判定コンテントのように、式の結果の真偽値によって後続のイベントの有無を切り替える。


演算子

 上記のコンテントの内では、簡単な計算式を導入できます。
演算子には以下のものがあります。

基本的な演算子
  • A + B …… 足し算(加算)。左右の値を足し合わせる。1 + 2の結果は3になります。
  • A - B …… 引き算(減算)。左の値から右の値を引く。42 - 1の結果は41になります。
  • A * B …… 掛け算(乗算)。左右の値を掛ける。9 * 9の結果は81になります。
  • A / B …… 割り算(除算)。左の値を右の値で割る。3 / 2の結果は1.5になります。
  • A % B …… 割り算(剰余)。左の値を右の値で割った時の余りを求める。10 % 4の結果は2になります。
  • A ~ B …… 連結。左右の文字列を連結する。もし左右の値が文字列でなければ、文字列に変換してから連結する。"Step - " ~ 99の結果は"Step - 99"になります。

比較演算子
  • A = B …… 一致。左右の値が同じであれば、結果はTRUEになる。そうでなければFALSEになる。
  • A <> B …… 不一致。=の逆。左右の値が同じでなければ、結果はTRUEになる。=と<>は、文字列同士の比較にも使えます。
  • A <= B …… 以下。Aの値がB以下であれば、結果はTRUE。逆にBより大きければFALSE。
  • A >= B …… 以上。Aの値がB以上であれば、結果はTRUE。Bより小さければFALSE。
  • A < B …… 未満。Aの値がBより小さければ、結果はTRUE。B以上であればFALSE。
  • A > B …… 超過。Aの値がBより大きければ、結果はTRUE。B以下であればFALSE。

論理演算子
  • A and B …… 論理積。AとBが両方ともTRUEの時だけ結果がTRUEになる。片方でもFALSEであれば、結果はFALSEです。
  • A or B …… 論理和。AとBのどちらか1つでもTRUEであれば結果はTRUEになる。両方FALSEの時に限り、結果はFALSEです。

単項演算子
  • not A …… 真偽値反転(否定)。Aの値がTRUEであれば結果はFALSEに、FALSEであればTRUEになる。
  • - A …… 符号反転。数値のプラス・マイナスを反転する。-42と書くと、結果はマイナス42になります。--42は、マイナス42がさらに反転してプラス42になります。



コモン関数

 演算子だけでは、シナリオ内で常に変化していくパラメータ(他の変数や、キャラクター名、所持称号など)を式の中でソースとして利用することができません。これらを代わりに検索・取得し、または演算しやすい形に加工してくれるのが関数となります。Wsn.4では、以下の関数を使用することができます。


文字列操作

返り値 解説
LEN(文字列) 数値 文字列の長さ(文字数)を返す。
LEN("対象文字列")の結果は5。
FIND(検索文字列, 対象文字列[, 検索開始位置]) 数値 対象文字列内に検索文字列があった場合は位置(1~)を返す。
見つからなかった場合は0を返す。
検索開始位置は省略可能。
2以降の値を指定した場合は、2文字目以降から検索を開始することができる。
FIND("文字", "対象文字列")の結果は3。
LEFT(文字列, 長さ(文字数)) 文字列 文字列の左側を返す。
LEFT("対象文字列", 2)の結果は、左側2文字の"対象"。
RIGHT(文字列, 長さ(文字数)) 文字列 文字列の右側を返す。
RIGHT("対象文字列", 3)の結果は、右側3文字の"文字列"。
MID(文字列, 位置(1~)[, 長さ(文字数)]) 文字列 文字列の中間部分を返す。
MID("対象文字列", 3, 2)の結果は、3文字目から2文字で、"文字"。
長さを省略した場合は、指定位置より右側を返す。
MID("対象文字列", 3)の結果は"文字列"。

数値操作

返り値 解説
DICE(個数, 面数) 数値 任意面数のダイスを振って結果の値を返す。
DICE(2, 6)の結果は、2個の6面ダイスを振った結果、すなわち2~12のどれか。
MAX(数値 1 ...) 数値 引数の中で最大の数値を返す。引数はいくつでも指定可能。
MAX(1, 23, 4, 5)の結果は23。
MIN(数値 1 ...) 数値 引数の中で最小の数値を返す。引数はいくつでも指定可能。
MIN(12, 3, 4, 5)の結果は3。

型変換

返り値 解説
STR(任意の値) 文字列 任意の値を文字列に変換する。
STR(999.9)の結果は"999.9"、STR(TRUE)の結果は"TRUE"。
VALUE(文字列または数値) 数値 文字列を数値に変換する。
数値を引数にした場合は、そのまま返す。VALUE("999.9")の結果は数値の999.9。
INT(文字列または数値) 数値 文字列または数値を整数に変換する。小数点以下の値は切り捨て。
INT("999.9")の結果は、.9部分が切り捨てられて数値の999。


状態変数

返り値 解説
VAR(コモン名) 任意の値 コモンの値を返す。
@"コモン名"の別の書き方で、VAR("コモンA")と@"コモンA"は同じ結果になる。
FLAGVALUE(フラグ名) 真偽値 フラグの値(真偽値)を返す。
FLAGVALUE("フラグA")の結果は、フラグAの値がTRUEであればTRUE、FALSEであればFALSE。
FLAGTEXT(フラグ名[, フラグ値]) 文字列 フラグの値のテキストを返す。
2つめの引数を省略した場合は、フラグの現在値のテキストを返す。
このテキストはメッセージ等で%フラグ名%として参照した時の表示内容と同じになる。
STEPVALUE(ステップ名) 数値 ステップの値(数値)を返す。
STEPVALUE("ステップA")の結果は、ステップAの値が0であれば0、5であれば5。
STEPTEXT(ステップ名[, ステップ値]) 文字列 ステップの値のテキストを返す。
2つめの引数を省略した場合は、ステップの現在値のテキストを返す。
このテキストはメッセージ等で$ステップ名$として参照した時の表示内容と同じ。
STEPMAX(ステップ名) 数値 ステップの最大値を返す。
STEPMAX("ステップA")の結果は、ステップAが10段階のステップ(値=0~9)であれば9。



カード情報

返り値 解説
SELECTED() 数値 選択メンバの番号を1以上の数値で返す。
選択メンバがいない場合は0。引数はなし。
CASTTYPE(キャラクター番号) 数値 キャラクターのタイプを返す(1=プレイヤー, 2=エネミー, 3=同行キャスト)。
該当者がいない場合は0を返す。
CASTTYPE(SELECTED())の結果は、選択メンバがプレイヤーキャラクターの時は1、エネミーカードの時は2、同行キャストの時は3。
CASTNAME(キャラクター番号) 文字列 キャラクターの名前を返す。
該当者がいない場合は空文字列を返す。
CASTNAME(SELECTED())の結果は、選択中のメンバの名前。

称号情報

返り値 解説
FINDCOUPON(キャラクター番号, 検索文字列[, 検索開始位置]) 数値 キャラクターの所持するクーポンを検索し、クーポン番号を返す。
見つからなかった場合は0を返す。
COUPONTEXT(キャラクター番号, クーポン番号) 文字列 キャラクターの所持するクーポンの名前を返す。
見つからなかった場合は空文字列を返す。
FINDGOSSIP(検索文字列[, 検索開始位置]) 数値 ゴシップを検索し、ゴシップ番号を返す。
見つからなかった場合は0を返す。
GOSSIPTEXT(ゴシップ番号) 文字列 ゴシップの名前を返す。
見つからなかった場合は空文字列を返す。

検索の特殊文字
FINDCOUPONとFINDGOSSIPの検索文字列には特殊文字が使用できます。

  • * …… 任意の文字列にマッチする。つまりFINDCOUPON(SELECTED(), "母:*")という式で、選択中のメンバが持っている「母:<任意の名前>」というクーポンを見つけ出すことができます。
  • ? …… 任意の1文字にマッチする。つまりFINDGOSSIP("?ブリン退治")という式で、「ゴブリン退治」「バブリン退治」「ダブリン退治」といったゴシップを見つけ出すことができます。
  • [<任意の文字> ...] …… [と]の間にある文字のどれかにマッチする。"[ABC]"はA・B・Cのどれかにマッチします。
  • [!<任意の文字 ...] …… [!と]の間にある文字のどれでもない文字にマッチする。[!ABC]はA・B・Cにはマッチしませんが、D・E・Fといったその他の文字にはマッチします。

特殊文字を普通の文字のように検索したい場合は、[[]のように[]で囲います。

その他

返り値 解説
IF(真偽値, TRUEの結果, FALSEの結果) 任意の値 最初の引数がTRUEであれば2つめの引数を、FALSEであれば3つめの引数を返す。IF(@"コモンA" = 42, "The Answer", -1)の結果は、コモンAの値が42であれば文字列"The Answer"、42でなければ数値-1。
PARTYNAME() 文字列 操作中のパーティ名を返す。引数はなし。
最終更新:2020年10月22日 08:21