「拡張母艦」の編集履歴(バックアップ)一覧に戻る

拡張母艦 - (2010/12/11 (土) 16:04:03) のソース

*拡張母艦 ver1.5
-[[Download>http://www16.atwiki.jp/inclurithm?cmd=upload&act=open&pageid=75&file=%E6%8B%A1%E5%BC%B5%E6%AF%8D%E8%89%A6_ver1.5.zip]]


**機能

ユニットが拡張母艦能力を持つユニットに隣接したとき、その拡張母艦にユニットを格納できる。拡張母艦から出撃することができる。
拡張母艦にユニットが格納されているとき、HPやENなどが回復する。詳細はオプションの項目を参照。

デフォルトで拡張母艦能力、ユニット用特殊能力「母艦」を持つユニットは格納できない。ただし、オプションで格納可能にすることができる。
ユニット用特殊能力「格納不可」を持つユニットは格納できない。

母艦から出撃した直後のユニットをクリックすると「出撃キャンセル」コマンドが現れ、選択することで母艦に戻ることができる。
「出撃キャンセル」コマンドは出撃したユニットとは別のユニットをクリックしたり、ターンが経過すると無効となる。


**シナリオへの導入

+Libフォルダの中身(拡張母艦.eve 拡張母艦フォルダ)をシナリオのLibフォルダにコピー
+シナリオ中でインクルード(<Lib\拡張母艦.eve>)
+拡張母艦能力を持つユニットをCreateコマンドで作成した直後に「拡張母艦登録 対象ユニットID」を記述
※参考までに:テスト用イベントファイルである「拡張母艦テスト.eve」に実際的な記述がされている


**更新履歴
-2010/12/5 : version1.5
--拡張母艦能力の解説を自動生成するようにした
--ユニット用特殊能力「格納不可」(拡張母艦のオプション「格納不可」とは別物)に対応
--拡張母艦オプションに「母艦HP」「母艦EN」を追加
--&font(#ff0000){※破壊的変更}
---一部の拡張母艦オプションの引数「倍率」(例:「HP*倍率」の「倍率」)を「数値」と名称を改め、固定値指定と%指定をできるようにした。以前までの記述だと固定値と判定されるので、そのままだと挙動が変わる点に注意

-2010/12/5 : version1.4
資金が足りない場合は回復しないようにした
「出撃キャンセル」の判定を厳しくした

-2010/12/5 : version1.3
拡張母艦登録のコマンドを「拡張母艦出撃」から「拡張母艦登録」に変更
ユニットを格納したままクリアした場合を失念していたので修正
必要な変数をGlobal指定するのを忘れていたのを修正

-2010/12/5 : version1.2
格納先の拡張母艦を選択できるようにした
オプションに「コスト」を追加した
出撃キャンセルをできるようにした

-2010/12/4 : version1.1
行動済みユニットが格納できてしまうのを修正
これに合わせて「行動済格納可」オプションを追加


**「拡張母艦」能力について
-書式
#blockquote(){拡張母艦[=別名 [オプション]]}
-オプション(順不同)
|BGCOLOR(#006699):COLOR(#fff):&b(){オプション}|BGCOLOR(#006699):COLOR(#fff):&b(){説明}|BGCOLOR(#006699):COLOR(#fff):&b(){サンプル}|BGCOLOR(#006699):COLOR(#fff):&b(){サンプルの効果}|
|>|>|>|BGCOLOR(#006699):COLOR(#fff):&b(){格納されたユニットに関するオプション}|
|HP*&i(){数値}|毎ターン、ユニットのHPが&i(){数値}に応じて回復する。デフォルトで50%|HP*1000|毎ターンHPが1000回復(固定値)|
|~|~|HP*30%|毎ターンHPが最大HPの30%回復|
|EN*&i(){数値}|毎ターン、ユニットのENが&i(){数値}に応じて回復する。デフォルトで50%|EN*30%|毎ターンENが最大ENの30%回復|
|弾数*&i(){数値}|毎ターン、各武器の弾数が&i(){数値}に応じて回復する。デフォルトで100%|弾数*5|毎ターン弾数が5回復|
|アビリティ*&i(){数値}|毎ターン、各アビリティの使用回数が&i(){数値}に応じて回復する。デフォルトで100%|アビリティ*5|毎ターンアビリティ使用回数が5回復|
|>|>|>|BGCOLOR(#006699):COLOR(#fff):&b(){拡張母艦能力所有ユニットに関するオプション:指定した値だけ&sizex(5){減少}する点に注意}|
|母艦HP*&i(){数値}|毎ターン、拡張母艦ユニットのHPが(格納しているユニットの数と&i(){数値}に応じて減少する。デフォルトで0%|母艦HP*1000|毎ターンHPが(格納しているユニット数 * 1000)減少(固定値)|
|~|~|母艦HP*5%|毎ターンHPが(格納しているユニット数 * 最大HPの5%)減少|
|母艦EN*&i(){数値}|毎ターン、ユニットのENが&i(){数値}に応じて回復する。デフォルトで50%|EN*30%|毎ターンENが最大ENの30%回復|
|コスト*&i(){数値}|毎ターン、格納しているユニットの数と&i(){数値}に応じて資金が減る。資金がコストを下回るとき、ユニットのHPやEN、弾数、アビリティは回復しない。デフォルトで0|コスト*1000|毎ターン、(格納しているユニット数 * 1000)だけ資金が減る|
|~|~|コスト*1%|毎ターン、(格納しているユニット数 * 所持している資金の1%)だけ資金が減る|
|>|>|>|BGCOLOR(#006699):COLOR(#fff):&b(){格納条件に関するオプション}|
|格納数*&i(){格納数}|&i(){格納数}だけユニットを格納できる。-1で無制限。デフォルトで-1|格納数*10|10機だけユニットを格納できる|
|ユニットクラス*&i(){ユニットクラス}|指定した&i(){ユニットクラス}だけ格納できる。デフォルトで無制限|ユニットクラス*MS|ユニットクラス「MS」のみ格納可能|
|ユニット*&i(){ユニット名称}|指定した&i(){ユニット名称}のユニットだけ格納できる。デフォルトで無制限|ユニット*ザク(指揮官用)|ユニット「ザク(指揮官用)」のみ格納可能|
|XL|格納できるユニットの指定。デフォルトですべてのサイズが格納できる。XL~SSのいずれかのサイズが指定されたら、指定されたものだけ搭載可能|XL|XLサイズのユニットのみ格納可能|
|LL|~|XL LL M S|XL、LL、M、Sサイズのユニットのみ格納可能|
|L|~|>||
|M|~|~|~|
|S|~|~|~|
|SS|~|~|~|
|母艦格納可|母艦、拡張母艦のいずれかの能力を持つユニットも格納できるようになる。デフォルトで無効|母艦格納可||
|行動済格納可|行動済みのユニットも格納可能になる。デフォルトで無効|行動済格納可||
|格納不可|ユニットを一切格納できなくなる。デフォルトで無効。シナリオ上から切り替えることを想定|格納不可||

-「数値」引数
--「数値」はすべて半角数字記号で記述すること
--「数値」には負数、小数も指定可能
--「数値」に小数を指定すると回復(減少)値が小数になることがあるが、その場合は小数点以下は切り上げされる


**拡張コマンド

-ユニットの操作
--拡張母艦登録 コマンド
--拡張母艦を持つユニットを登録し、処理を有効にする
--Lib\拡張母艦\拡張母艦.eve
#codehighlight(VB){拡張母艦登録 UnitID}
UnitIDには、登録したい拡張母艦ユニットのユニットIDを指定する。


--拡張母艦格納 コマンド
--指定したユニットを指定した拡張母艦に格納する
--Lib\拡張母艦\interface.eve
#codehighlight(VB){拡張母艦格納 UnitID MotherShipID name}
UnitIDには、格納したいユニットのユニットIDを指定する。
MotherShipIDには拡張母艦ユニットのユニットIDを指定する。
nameには拡張母艦能力の別名を指定する。別名を指定していない場合は「拡張母艦」を指定する。
このコマンドが実行されるときには、格納できるかどうかのチェックを行い、格納できないなら何もしない。その場合、返り値として0が返る。


--拡張母艦格納2 コマンド
--指定したユニットを指定した拡張母艦に格納する
--Lib\拡張母艦\interface.eve
#codehighlight(VB){拡張母艦格納2 UnitID MotherShipID index}
UnitIDには、格納したいユニットのユニットIDを指定する。
MotherShipIDには拡張母艦ユニットのユニットIDを指定する。
indexには拡張母艦ユニットが持つ何番目の拡張母艦能力にユニットを格納するかを指定する。拡張母艦ユニットが1つしか拡張母艦能力を持たない場合、「1」を指定する
このコマンドが実行されるときには、格納できるかどうかのチェックを行い、格納できないなら何もしない。その場合、返り値として0が返る。


--拡張母艦出撃 コマンド
--指定したユニットをマップ上に配置する
--Lib\拡張母艦\interface.eve
#codehighlight(VB){拡張母艦出撃 UnitID x y [option]}
UnitIDには出撃させたいユニットのユニットIDを指定する。
x, yには出撃先の座標を指定する。
optionには「アニメ非表示」「非同期」が指定できる。省略可能。




-拡張母艦オプションの操作
--拡張母艦設定 コマンド
--指定したオプションの値を操作する
--Lib\拡張母艦\interface.eve
#codehighlight(VB){拡張母艦設定 拡張母艦ユニットID 拡張母艦能力名 オプション [値]}
「拡張母艦ユニットID」には格納不可状態を操作したいユニットのIDを指定。
「拡張母艦能力名」には、別名を指定したときはその別名を、指定しなかったときは「拡張母艦」を指定。空文字("")を指定した場合は、ユニットが持つすべての拡張母艦能力が対象となる。
「オプション」には「HP」や「XL」などのオプション名を指定。
「値」には、「HP」のような値を指定するものなら任意の値を、「XL」のような値を取らないものなら「1」か「0」で有効無効を切り替える。
このコマンドが呼び出されたとき、自動で解説文は再生成される。


-拡張母艦能力のDisableとEnable
--拡張母艦格納不可 コマンド
--指定したユニットの拡張母艦能力の「格納不可」オプションを操作するコマンド
--Lib\拡張母艦\interface.eve
#codehighlight(VB){拡張母艦格納不可 拡張母艦ユニットID 拡張母艦能力名 フラグ}
「拡張母艦ユニットID」には格納不可状態を操作したいユニットのIDを指定。
「拡張母艦能力名」には、別名を指定したときはその別名を、指定しなかったときは「拡張母艦」を指定。空文字("")を指定した場合は、ユニットが持つすべての拡張母艦能力が対象となる。
「フラグ」には、格納不可にするなら「1」を、格納不可を解除するなら「0」を指定。

--拡張母艦_Disable コマンド
--指定したユニットの拡張母艦能力をDisableする(「格納不可」を設定する)コマンド
--Lib\拡張母艦\interface.eve
#codehighlight(VB){拡張母艦_Disable 拡張母艦ユニットID [拡張母艦能力名]}
「拡張母艦ユニットID」には格納不可状態を操作したいユニットのIDを指定。
「拡張母艦能力名」には、別名を指定したときはその別名を、指定しなかったときは「拡張母艦」を指定。空文字("")を指定した場合は、ユニットが持つすべての拡張母艦能力が対象となる。省略した場合は空文字を指定したとみなす。

--拡張母艦_Enable コマンド
--指定したユニットの拡張母艦能力をEnableする(「格納不可」を無効にする)コマンド
--Lib\拡張母艦\interface.eve
#codehighlight(VB){拡張母艦_Enable 拡張母艦ユニットID [拡張母艦能力名]}
「拡張母艦ユニットID」には格納不可状態を操作したいユニットのIDを指定。
「拡張母艦能力名」には、別名を指定したときはその別名を、指定しなかったときは「拡張母艦」を指定。空文字("")を指定した場合は、ユニットが持つすべての拡張母艦能力が対象となる。省略した場合は空文字を指定したとみなす。




**インクルードの改造について

-変数
--Lib\拡張母艦\プロローグイベント.eve
このインクルードでは、配列変数「拡張母艦」に主に必要なデータを記憶している。
この変数に対するGlobal指定は「プロローグイベント.eve」のプロローグイベント内で自動で行なっている。
何かしらの理由でこれを行いたくない場合は、「プロローグイベント.eve」を修正すること。
Global指定しないことにより、シナリオ毎に拡張母艦ユニットを変数に登録しなおす(「拡張母艦出撃 対象ユニットID」相当の処理をする)必要がある。


-シナリオクリア時の処理
--Lib\拡張母艦\エピローグイベント.eve
シナリオクリア時には自動で「エピローグイベント.eve」で定義されているサブルーチン「拡張母艦_格納ユニット解放」が呼ばれ、拡張母艦に格納されているユニットを配列変数「拡張母艦」から削除する。
手動でこれを行いたい場合は、以下のような記述で呼び出す。ただし、解放されたユニットはMAPから撤退したままである。
#codehighlight(VB){Call "拡張母艦_格納ユニット解放"}


-拡張母艦能力解説文の自動生成
--Lib\拡張母艦\解説.eve
サブルーチン「拡張母艦_解説生成」で、変数「拡張母艦[ 拡張母艦ユニットID, 拡張母艦能力別名 ]」という配列変数に、「拡張母艦ユニットID」が指すユニットが持つ「拡張母艦能力別名」という別名の拡張母艦能力の解説文を生成している。
必要に応じて修正。


-拡張母艦に格納されているユニットの取得
--Lib\拡張母艦\foreach.eve
「foreach.eve」によって、格納されているユニットIDなどの情報を指定したサブルーチンにコールバックする機能を提供している。
拡張母艦に格納されているユニットを取得したい時に利用する。
手動でユニットを走査したいときは「foreach.eve」を参照のこと。
#codehighlight(VB){
コールバックサブルーチン:
	# 格納されているユニットのユニットID
	Local _UnitID = Args(1)
	# ユニットを格納している拡張母艦ユニットのユニットID
	Local _MotherShipID = Args(2)
	# 拡張母艦ユニットが拡張母艦能力を複数もつ場合、何番目の拡張母艦能力にユニットが格納されているかを指す変数
	Local _abl_idx = Args(3)
	# 配列変数「拡張母艦」内での_UnitIDの位置を示す変数
	Local _unit_idx = Args(4)

	# 参考:
	# 拡張母艦[_MotherShipID, _abl_idx, "格納", _unit_idx] と _UnitID は等しい
Return
ターン 2 "味方":
	# 文字列として渡すことに注意
	Call "拡張母艦_foreach" "コールバックサブルーチン"
Exit}


-出撃時の移動範囲
--Lib\拡張母艦\出撃範囲.eve
拡張母艦から出撃するときの移動範囲は、「Lib\拡張母艦\出撃範囲.eve」で定義される、「拡張母艦_出撃範囲獲得」サブルーチンで決定する。
このサブルーチン内で、移動先の座標(X,Y)を「拡張母艦_出撃範囲[X,Y] = 1」とすることで移動可能となる。
「拡張母艦_出撃範囲獲得」サブルーチンを修正することで出撃時の移動範囲を調整できる。


-出撃時のアニメ設定
--Lib\拡張母艦\ユニット出撃アニメ.eve
このファイル内で、EscapeされていたユニットのMAPへの再配置、出撃先座標までのアニメの表示を定義している。
該当部分を弄ることで変更可能。


-出撃後のユニットの状態
--Lib\拡張母艦\ユニット出撃.eve
このファイルの109行目にて、出撃したユニットを行動済みにしている。
該当部分を弄ることで変更可能。
目安箱バナー