【コンパイル済み定義データ】


コンパイル済み定義データはYAML、またはJSONファイルで提供され、これはL:名をキー、対応するコンパイル済み定義データを値とするハッシュとして扱います。
このため、PHP・JavaScriptなどでも比較的扱いやすく、また後から独自の形式に変換することも容易です。
なお、YAML・JSONの仕様に従い、文字コードはUTF-8となっています。

以下はRuby による、コンパイル済み定義データファイルを扱う簡単なサンプルコードです。

require 'YAML'
 
filename = 'idefs.yml'# YAMLファイルへのパス名
Definitions = YAML.load(open(filename),'r'))
 
chipball_def = Definitions['チップボール'] #ハッシュからチップボールのL:定義データを取得

#チップボールの評価値を列挙表示
for key in chipball_def['評価']
  print  "#{key}:#{chipball_def['評価'][key]} "
end
print "\n"
 
#チップボールの特殊定義を一覧
for sp_def in chipball_def['特殊定義']
  puts sp_def['定義']
end
 
#チップボールの可能行為名を抽出
for action_name in chipball_def['特殊定義'].collect{|sp| sp['行為名'] }.delete('')
  puts action_name
end
 
 

【コンパイル済み定義データの構造】


 コンパイル済み定義データは、巨大な一つのハッシュです。ルートに1対多で対応する複数のL:定義と、一つのL:定義に1対多で対応する特殊定義を格納する、ハッシュによるツリー状の構造となっています。
 ここでは、それぞれを大まかに3層に分けて説明します。

L:定義の集合(ハッシュ)
 |
 ├’北国人’
 | ├’名称’=> ’北国人’
 | ├’種別’=> ’人’
 | ├’評価’=> {'体格'=>1,'筋力'=>0,'耐久力'=>-1,'外見'=>1,'敏捷'=>0,'器用'=>0,'感覚'=>0,'知識'=>1,'幸運'=>0}
 | └’特殊定義’
 |   ├(1番目)
 |   | ├’定義’=> ’*北国人の人カテゴリ = ,,,基本人アイドレス。’
 |   | ├’特殊種別’=> ’カテゴリ’
 |   | ├’カテゴリ種別’=> ’人’
 |   | └’カテゴリ’=> ’基本人アイドレス。’
 |   ├(2番目)
 |   | ├’定義’=> ’*北国人の生産 = ,,,(生産フェイズごとに)食料+1万t、生物資源-1万t。’
 |   | ├’特殊種別’=> ’生産’
 |   | ├’生産’=> ’(生産フェイズごとに)食料+1万t、生物資源-1万t。’
 |   | └’コスト’=> {'食料' => 1 , '生物資源' => -1}
 |   └(3番目)
 |     ├’定義’=> ’*北国人のイベント時食料消費 = ,,,(一般行為判定を伴うイベントに参加するごとに)食料-1万t。’
 |     ├’特殊種別’=> ’イベント時消費’
 |     ├’コスト’=> {'食料' => -1}
 |     └’消費単位’=> ’一般行為判定を伴うイベントに参加するごとに'
 ├’南国人’
 (略)



  • 1レベル目: L:定義の集合 (ハッシュ)
 キー:値
 L:名(’L:○○○ = {...}’ のうち、○○○として記述される部分) : 対応するコンパイル済みL:定義一つ。(ハッシュ)

  • 2レベル目: L:定義 (ハッシュ)
 キー:値
 ’L:名’:’L:○○ = {’で示されるL:の名称(文字列)。
 ’種別’:’t:名称’の右辺のうち、末尾の丸括弧内の文字列。
 ’名称’:’t:名称’の右辺のうち、種別を除いた物 (L:名とは同一とは限らない)(文字列)。
 ’評価’:’t:評価’の右辺を示すハッシュ。キーは能力値名('体格'、'筋力'等)、値は対応する評価値(整数)。
 ’要点’:’t:要点’の右辺を示す文字列。
 ’周辺環境’:’t:周辺環境’ の右辺を示す文字列。
 ’→次のアイドレス':’t:→次のアイドレス' の右辺を示す、文字列を要素とする一次元配列。
 ’特殊定義’:’t:特殊’の右辺で示される特殊定義。ハッシュを要素とする一次元配列。
 ’原文’ : L:定義の原文。文字列。

  • 3レベル目: 特殊定義 (ハッシュ)
(共通項目)
 '定義' : 特殊の原文
 ’行為名’: 特殊に定義される行為名。右辺の先頭。未定義の場合は空文字列。
 ’兵科種別’ : 特殊に定義される兵科種別。’歩兵’とある場合は歩兵時のみ、’乗り物’とある場合はI=D等登場時にのみ使用可能。制限なしの場合は空文字列。
 ’発動条件’ : 使用・不使用を任意に選べる場合は’任意発動’、強制の場合は空文字列。
 '特殊種別':特殊の分類名。分類名によって、以下に続く独自項目が含まれる。

(独自項目)
  • 「カテゴリ」
 L:が示すオブジェクトがどんなカテゴリに属するかを表します。
(例:「  *南国人の人カテゴリ = ,,,基本人アイドレス。」)
 独自項目キー : 値
 ’カテゴリ種別’ : 左辺に現れるカテゴリ名(例では「人」)。文字列。
 ’カテゴリ’: 右辺に現れるカテゴリ名(例では「基本人アイドレス。」)。文字列。

  • 「パイロット資格」
 L:が示すオブジェクト(通常は職業)がパイロットとして搭乗できる乗り物の種別を示します。
(例:「  *パイロットのパイロット資格 = ,,,搭乗可能({I=D,航空機,宇宙艦船})。」 )
 独自項目キー : 値
 ’パイロット資格’ : 所有するパイロット資格(例ではI=D、航空機、宇宙艦船)。文字列を要素とする配列。

  • 「コパイロット資格」
 L:が示すオブジェクト(通常は職業)がコパイロットとして搭乗できる乗り物の種別を示します。
(例:「  *船乗りのコパイロット資格 = ,,,搭乗可能({艦船,宇宙艦船,冒険艦})。」 )
 独自項目キー : 値
 ’コパイロット資格’ : 所有するパイロット資格(例ではI=D、航空機、宇宙艦船)。文字列を要素とする配列。’すべて’の場合もある。

  • 「着用資格」
 L:が示すオブジェクト(通常は職業)が着用できるウォードレスの種別を示します。
(例:「  *ウォードレスダンサーの着用資格 = ,,,着用可能(ウォードレス)。」
 独自項目キー : 値
 ’着用資格’: 所有するウォードレスの着用資格(例ではウォードレス)。文字列を要素とする配列。(ウォードレス、甲殻ウォードレス等)

  • 「使用制限」
 L:が示すオブジェクト(通常は他者に対する補正の定義)を使用するための前提条件を示します。
(例:「  *ストーリーテラーの助言の使用制限 = ,,,助言を受けた次の判定の時に使用することができる。」
 独自項目キー : 値
 ’使用制限’: このオブジェクトの使用となる前提条件(例では「助言を受けた次の判定の時に使用することができる。」)。文字列。

  • 「位置づけ」
 L:が示すオブジェクトの位置づけを示します。通常、この「位置づけ」は他の特殊を適用する際の条件として利用されます。
(例:「  *猫妖精の位置づけ = ,,,猫系。」)
 独自項目キー : 値
 ’位置づけ’: このオブジェクトの位置づけ(例では「猫系。」)。文字列。

  • 「初期AR修正」
 L:が示すオブジェクトにかかる、初期AR修正を示します。
(例1:「  *エンジェリックフェザーワルツの初期AR修正 = ,,,(地上、空中での)AR-5。」
 例2:「  *アヴァターラハの初期AR修正 = ,,,騎乗する人騎兵1機、AR+5。 」)
 独自項目キー : 値
 ’AR’:初期ARにかかる修正値(例1では-5、例2では5)。整数。
 ’対象’:初期ARがかかる対象(例1は省略で空文字列、例2では「騎乗する人騎兵1」)。文字列。
 ’修正使用条件’:初期AR修正が適用されるための前提条件(例1では「地上、空中での」、例2では省略で空文字列)。文字列。
 ’付記’:末尾に付加される補足説明(例では省略で空文字列)。文字列。

  • 「みなし職業」
 L:が示すオブジェクト(通常はACEか職業)が持つみなし職業。
(例:「  *ロジャーのみなし職業 = ,,,{<世界忍者>,<スーパーサラリーマン>,<世界移動存在>}。」
 独自項目キー : 値
 ’みなし職業’:みなし職業(例では「世界忍者」「スーパーサラリーマン」「世界移動存在」)。文字列を要素とする配列。

  • 「行為」
 L:が示すオブジェクトが持つ、補正を持たない行為。
(例1:「  *やわらか舞踏子のオペレート行為 = オペレート行為,歩兵,条件発動,なし。」
 例2:「  *ドラッガーの予知夢行為 = 予知夢行為,,条件発動,燃料-1万t。」
 例3:「  *砲兵の超長距離戦闘行為 = 超長距離戦闘行為,,条件発動,超遠距離戦闘、評価13。使用制限(砲兵10人セット)。
」)
 独自項目キー : 値
 ’コスト’:この行為を行う際に必要なコスト(例1・例3では空のハッシュ。例2では{'燃料' => -1})。ハッシュ
 ’付記’:この行為に関する補足説明(例1・例2では空文字列。例3では「使用制限(砲兵10人セット)。」)。文字列。
 ’評価名’:この行為に独自で定義された評価値の名前(例1・2では空文字列。例3では「超遠距離戦闘」)。文字列。
 ’評価’:この行為に独自で定義された評価値(例1・2ではNULL値、例3では13)。整数ないしNULL値。

  • 「補正」
 L:が示すオブジェクトが持つ、ある判定に対する評価への補正。
(例1:「  *サイボーグの筋力・耐久力補正 = ,歩兵,任意発動,{筋力,耐久力}、評価+2、燃料-3万t。」
 例2:「  *名パイロットの搭乗戦闘補正 = ,,,({I=D,RB,航空機}に搭乗して戦闘する場合での)全判定、評価+1。
」)
 独自項目キー : 値
 ’補正使用条件’:補正を使用する際の前提となる条件(例1は省略で空文字列、例2では「{I=D,RB,航空機}に搭乗して戦闘する場合での」)。文字列。
 ’補正対象’:補正となる能力値ないし判定種別(例1では「筋力」「耐久力」、例2では「全判定」)。文字列を要素とする配列。
 ’補正’:補正対象に加算される値(例1では2、例2では1)。整数。
 ’コスト’:この特殊を使う際に必要なコスト(例1では燃料-3万t、例2では空のハッシュ)。ハッシュ。
 ’付記’:末尾に付加される補足説明(例1・2では省略で空文字列)。

  • 「行為補正」
 L:が示すオブジェクトが持つ、ある行為に対する評価への補正。独自項目は「補正」に同じ。
 特記:通常は必ず「行為名」項目を持つが、行為への補正を持つが、その特殊自身は可能行為を追加しない場合(高機能ハンドヘルドによる情報戦闘行為への補正など)は、「行為補正」であっても「行為名」を持たない。

  • 「アタックランク」
 L:が示すオブジェクトが持つアタックランク。AR10以外である場合に記述される。
(例:「  *ユウタのアタックランク = ,,,AR15。(兄竜に搭乗しているため)。」)
 独自項目キー : 値
 ’AR’:アタックランク(例では15)。整数。
 付記:補足説明(例では「(兄竜に搭乗しているため)。」)。文字列。

  • 「イベント時消費」
 L:が示すオブジェクトを編成する際に必要なコスト。I=Dの場合、通常は燃料と資源の2個分の特殊として含まれる。
(例1:「  *アメショーのイベント時燃料消費 = ,,,(戦闘イベント参加時)燃料-2万t。」)
 例2「  *ドッグバック(通常型)のイベント時燃料消費 = ,,,(1航路につき)燃料-1万t。燃料の代わりにマイル5を使ってもよい。」
 独自項目キー : 値
 ’コスト’ : コスト(例1では{’燃料’ => 2}、例2では{'燃料' => -1})。ハッシュ
 ’消費単位’ :コストを消費する単位(例1では「(戦闘イベント参加時)。」、例2では「(1航路につき)」)。文字列。
 ’付記’:補足説明(例1では省略で空文字列。例2では「燃料の代わりにマイル5を使ってもよい。」)。文字列。

  • 「必要パイロット数」
 L:が示すオブジェクト(通常は乗り物)に必要なパイロット数
(例1:「  *ドッグバック(通常型)の必要パイロット数 = ,,,パイロット1名。」
 例2:「  *アウィナイトの必要パイロット数 = ,,,パイロット0名。最大1人まで搭乗可能。#猫士のみでも可」)
 独自項目キー : 値
 ’人数’:必要とするパイロット数(例では1、例2では0)。整数。
 ’付記’:補足説明(例1では省略で空文字列、例2では「最大1人まで搭乗可能。#猫士のみでも可」

  • 「必要コパイロット数」
 L:が示すオブジェクト(通常は乗り物)に必要なパイロット数
(例:「  *サイバミーズの必要コパイロット数 = ,,,コパイロット2名。」
 独自項目キー : 値
 ’人数’:必要とするコパイロット数(例では2)。整数。

  • 「騎乗者数」
 L:が示すオブジェクト(通常は騎跨装備)に必要な騎乗者数。
(例:「  *ピケ・サイドカーの騎乗者数 = ,,,騎乗者1名。」
 独自項目キー : 値
 ’人数’:必要とする騎乗者数(例では1)。整数。

  • 「搭乗資格」
 L:が示すオブジェクトの稼動に必要なパイロットに必要な搭乗資格。職業アイドレス側における「パイロット資格」・「コパイロット資格」がこれと一致していなければならない。
(例1:「  *アメショーの搭乗資格 = ,,,搭乗可能({I=D,戦車})。」)
 独自項目キー : 値
 ’搭乗資格’:必要とする搭乗資格(例では「搭乗可能({I=D,戦車})。」)。文字列。

  • 「航路数」
 L:が示すオブジェクト(通常は乗り物)が持つ航路数の説明。
(例:「  *ドッグバック(通常型)の航路数 = ,,,1ターンに1航路の往復移動(地上-地上)、航路変更不可。」)
 独自項目キー : 値
 ’航路数’:保持する航路数(例では「1ターンに1航路の往復移動(地上-地上)、航路変更不可。」)。文字列。
#航路数の表記はさまざまな形式や前提条件が存在するため、現状、コンパイラとして特に数値としては取り扱っていない。


  • 「人機数」
 L:が示すオブジェクトの人機数。
(例:「  *想来丸の人機数 = ,,,10人機。」)
 独自項目キー : 値
 ’人機数’:人機数(例では10)。整数。

  • 「生産」
 L:が生成するリソース。
(例1:「  *北国人の生産 = ,,,(生産フェイズごとに)食料+1万t、生物資源-1万t。」
 例2:「  *農業プラントの食糧生産 = ,,,(生産フェイズごとに)食料+20万t。」)
 独自項目キー : 値
 ’生産’ :’,,,’を除く右辺文字列(例1では「(生産フェイズごとに)食料+1万t、生物資源-1万t。」、例2では「(生産フェイズごとに)食料+20万t。」)。文字列。
 ’コスト’:生産時のリソース変動(例1では{'食料' => 1 , '生物資源'=> -1}、例2では{'食料'=> 20})。ハッシュ。

  • 「着用箇所」
 L:が示すオブジェクト(通常はアイテム)の着用箇所を示す。
(例:「  *リリカルソードの着用箇所 = ,,,片手持ちとして着用するもの。」)
 独自項目キー : 値
 着用箇所:着用箇所についての説明(例では「片手持ちとして着用するもの。)。文字列。

  • 「輸送力」
 L:が示すオブジェクトが持つ輸送力。
(例:  *T-STSの輸送力 = ,,,{30人/機,10万t}の輸送力を持つ。」)
 独自項目キー : 値
 ’輸送力’:輸送力(例では「{30人/機,10万t}の輸送力を持つ。」)。文字列。

  • 「出仕」
 Lが示す職業・職業4アイドレスが出仕できる組織を示す。
(例:  *侍女の出仕 = ,,,出仕可能({尚書省,帝國参謀団})。」)
 独自項目キー : 値
 ’出仕’:出仕先(例では「出仕可能({尚書省,帝國参謀団})」)。文字列

  • 「移動時AR消費軽減」
 L:が示すオブジェクトが持つ、移動時AR消費軽減能力を示す。
(例:「  *犬の移動時AR消費軽減 = ,,条件発動,移動、AR-1。」
 独自項目キー : 値
 ’AR消費軽減’:AR消費軽減(例では-1)。整数。

  • 「基本オプション」
 L:が示すオブジェクトに追加搭載できるオプション装備を示す。
(例:「  *決戦号の基本オプション装備1 = ,,,基本オプションとして<L:決戦号の対空ミサイル>8個を装備できる。」)
 独自項目キー : 値
 ’オプション名称’:オプション名称(例では「決戦号の対空ミサイル」)。文字列。
 '最大装備数':オプションを装備できる最大数(例では8)。整数。
 ’付記’:補足説明。(例では空文字列)

  • 「人員輸送」
 L:が示すオブジェクト(通常は騎跨装備)に騎乗者の他に乗せられる人数を示す。
(例:「  *犬の神様の人員輸送 = ,,,輸送可能(歩兵2名)。」)
 独自項目キー : 値
 ’人数’:輸送可能な人数(例では2)。整数。