「関数(イベントの設定2)」の編集履歴(バックアップ)一覧に戻る

関数(イベントの設定2) - (2023/05/06 (土) 14:07:57) のソース

**&color(green){概要}
scenario構造体の&color(blue){world}で指定された&bold(){event構造体}はターン進行時と戦闘終了時に読み込まれます。
&color(blue){fight}で指定された&bold(){event構造体}は戦闘開始時に読み込まれます。
&color(blue){politics}で指定された&bold(){event構造体}は内政ユニットの雇用時に読み込まれます。
それぞれの中の条件分岐で&bold(){event構造体}を呼び出してイベントを発生させてください。

**&color(green){文字変数と数値変数について}
:&color(blue){文字変数}|
1個~複数の「文字列」を代入する変数です。ここでの文字列は主にpower、spot、unit, class構造体の名前(識別子)を指します。
決められた関数の引数欄でのみ使えます。
文字変数はセーブされませんので一時的なデータとして用います。
:&color(magenta){数値変数}|
「数値」を代入する変数です。
if文の条件式内と決められた関数の引数欄で使えます。
数値変数はセーブされますので各種のゲームフラグとして使えます。

**&color(green){関数一覧}
青色の引数には&color(blue){文字変数}が使えます(先頭に&color(blue){@}を付けると文字変数と見なされます)
紫色の引数には&color(magenta){数値変数}が使えます(数値変数はそのままにしてください)

:setLeague(&color(blue){勢力A}, &color(blue){勢力B}, &color(magenta){数値})|
同盟します。
数値は同盟期限のターン数です。&color(red){-1}にすると無期限同盟となります。
:setLeague(複数の勢力が代入された文字変数, &color(magenta){数値})|
変数に代入されてる全勢力が互いに同盟します。
:resetLeague(&color(blue){勢力A}, &color(blue){勢力B})|
同盟を破棄します。
:resetLeague(複数の勢力が代入された文字変数)|
変数に代入されてる全勢力が互いに同盟を破棄します。

:setTruce(&color(blue){勢力A}, &color(blue){勢力B}, &color(magenta){数値})|
CPU勢力の思考を制限する関数です。プレイヤー勢力の行動は制限しません。
勢力Aによる勢力Bへの攻撃を数値ターンの間だけ禁止します。&color(red){-1}にすると無期限禁止となります。
なおこの関数は片方向指定なので勢力Bは勢力Aを攻撃します。
双方で攻撃禁止にする場合はsetTruce(勢力B, 勢力A, 数値)を同時指定します。
:setTruce(複数の勢力が代入された文字変数, &color(magenta){数値})|
変数に代入されてる全勢力が互いに攻撃禁止します。
:resetTruce(&color(blue){勢力A}, &color(blue){勢力B})|
攻撃禁止を解除します。この関数も片方向指定です。
:resetTruce(複数の勢力が代入された文字変数)|
変数に代入されてる全勢力が互いに攻撃禁止を解除します。

:setDiplo(&color(blue){勢力A}, &color(blue){勢力B}, &color(magenta){数値})|
勢力同士の友好値を数値にします。
:addDiplo(&color(blue){勢力A}, &color(blue){勢力B}, &color(magenta){数値})|
勢力同士の友好値を増減します。
友好値は(0~100)の範囲です。加算結果が範囲外なら自動的に0か100になります。
:setDiplo(複数の勢力が代入された文字変数, &color(magenta){数値})|
変数に代入されてる全勢力が互いに数値の友好度になります。
:addDiplo(複数の勢力が代入された文字変数, &color(magenta){数値})|
変数に代入されてる全勢力が互いに友好値を増減させます。

:setEnemyPower(&color(blue){勢力A}, &color(blue){勢力B}, &color(magenta){数値})|
勢力Aの共通敵(=敵対勢力)に勢力Bを設定します。数値は残りターン数です。
第1引数については文字列配列変数を使用可能です。第2引数については配列は使えません。
:resetEnemyPower(&color(blue){勢力A}, &color(blue){勢力B})|
勢力Aの共通敵(=敵対勢力)設定から勢力Bを削除します。
:resetEnemyPower(&color(blue){勢力A})|
勢力Aの共通敵(=敵対勢力)設定を全消去します。
:setArbeit(&color(blue){勢力}, &color(blue){ユニット}, &color(magenta){数値})|
ユニットと勢力を数値ターン傭兵契約にします。
数値を&color(blue){-1}にすると引数勢力との傭兵契約を解除します。
第1引数は文字列配列変数指定可能です。

:addPower(&color(blue){勢力})|
指定した勢力を出現させます。
power構造体のmemberに列挙されてるspotが領地となりますが、すでに中立で無い領地は無視されます。
memberが未設定でも領地ゼロの勢力として新規登場できます。
この後にaddSpot関数で領地を追加し、addUnit関数で家臣を追加し、必要ならchangeMaster関数でマスターを設定してください。
:erasePower(&color(blue){勢力})|
指定した勢力を滅亡させます。
:addSpot(&color(blue){領地})|
指定した領地を新たに出現させます。すでに在る場合は無効です。
:addSpot(&color(blue){領地}, &color(blue){勢力})|
指定した領地を勢力に追加します。
領地が在る場合はそれを、無い場合は新たに出現させます。
:removeSpot(&color(blue){領地})|
指定した領地を中立に戻します。
:addUnit(&color(blue){ユニット}, &color(blue){勢力/領地/ユニット})|
ユニットを指定した勢力、領地、リーダーユニットの配下に移動させます。
未登場ユニットなら新規に出現させます。移動先がユニットの時は陪臣になります。
勢力に追加するとマスターの本拠地に出現します。本拠地が一杯の時は他の領地に出現します。
なおユニットが非人材なら兵士の追加として繰り返し追加できます。
:addUnit(&color(blue){ユニット}, &color(blue){領地}, roam)|
第三引数にroamと記すとその領地に放浪人材として登場します。
すでに登場してるユニットなら放浪地の移動になります。
:eraseUnit(&color(blue){ユニット})|
人材ユニットを消します(死亡と同じ状態にする)
勢力の属すリーダーなら最初の部下が新たにリーダーとなり他の部下を率います。
放浪ユニットなら部下は独自に放浪します。なおマスターは消去できません。
:eraseUnitTroop(&color(blue){ユニット})|
人材ユニットを部隊ごと全部消します。
:roamUnit(&color(blue){ユニット})|
:roamUnit(&color(blue){ユニット}, &color(blue){領地})|
ユニットを指定した領地にて放浪させます。マスターは無効です。
:roamUnit2(&color(blue){ユニット})|
:roamUnit2(&color(blue){ユニット}, &color(blue){領地})|
詳細は不明です。
:eraseUnit2(&color(blue){勢力/領地}, &color(blue){ユニット}, &color(blue){ユニット}, ‥)|
勢力/領地から列挙したユニットを全て消去します。
一般ユニットを消去したい時はこの関数を使ってください。
&font(#f00){※使用注意}
領地の部隊選択ウィンドウを開いたままで、領地内にいるユニットを消去すると、画面上に残ったユニットに対するマウス操作で不正終了を起こす恐れがあります。
防止策は今のところ、プレイヤーに操作を指示する以外に存在しません。&footnote(一旦別の領地に移動させ、ターン終わりに消去するよう予約すれば、ひとまずマウスクリックでの不正終了は防止できますが、ドラッグ移動でのそれは防げません。)
:changePlayer(&color(blue){ユニット})|
プレイヤーユニットを引数のユニットに変更します。
:changePlayer()|
引数無しだとプレイヤー無しの観戦モードになります。
:changeMaster(&color(blue){ユニット})|
指定ユニットを&bold(){現在所属してる}勢力のマスターにします。
#region
&color(red){以下の二つの引数形式はチェック機能をつけた蛇足的なものです。}
:changeMaster(&color(blue){勢力}, &color(blue){ユニット})|
指定勢力のマスターを指定ユニットにします。
指定ユニットが指定勢力に所属してないなら無効です。
:changeMaster(&color(blue){ユニットA}, &color(blue){ユニットB})|
マスターをユニットAからユニットBに変更します。
ユニットAがマスターでないなら無効です。
ユニットAとユニットBが同じ勢力所属でなかったら無効です。
:changeMaster(&color(blue){ユニットA}, &color(blue){ユニットB}, flag)|
第三引数を&bold(){flag}にすると旗画像をユニットBのunit構造体のflagにします。
#endregion
:unionPower(&color(blue){勢力A}, &color(blue){勢力B})|
勢力Aに勢力Bが併合されます。
:changePowerFlag(&color(blue){勢力}, &color(blue){文字列})|
勢力の旗を変更します。文字列はflagフォルダのbmpファイル(拡張子無し)です。
:changePowerName(&color(blue){勢力}, &color(blue){文字列})|
勢力名を変更します。文字列は直接の勢力名ではなくデータ名です。
>workspace {
>  name2 = レオーム朝ルートガルト
>}
としてworld構造体の中で下の様にします。
>changePowerName(p1, name2)
:changePowerFix(&color(blue){勢力}, (on/off/home/hold))|
COM勢力の思考に影響します。
|off|普通に侵攻する|
|on|他国に侵攻しない|
|home|&color(blue){home}データに列挙された領地のみ侵攻する|
|hold|領内の部隊を動かさず、他国にも侵攻しない|
|warlike|兵力差に関係なく常に攻め込む|
|freeze|ターン行動を完全スルーする|
:setPowerHome(&color(blue){勢力}) |
勢力のHomeを空にします。
第1引数に文字列変数は使用可能ですが配列は無視されます。
:setPowerHome(&color(blue){勢力}, &color(blue){領地}) |
勢力のHomeを空にした後、指定した領地を設定します。
第1引数に文字列変数は使用可能ですが配列は無視されます。
第2引数に文字列配列変数は使用可能です。
:setTraining(&color(blue){勢力}, &color(magenta){百分数値})|
勢力の訓練限界値の人材平均レベルパーセンテージを設定します。
:addTraining(&color(blue){勢力}, &color(magenta){百分数値})|
勢力の訓練限界値の人材平均レベルパーセンテージを加算します。
:setTrainingUp(&color(blue){勢力}, &color(magenta){数値})|
勢力の訓練上昇値(1ターンの訓練でレベルアップする数量)を設定します。
:addTrainingUp(&color(blue){勢力}, &color(magenta){数値})|
勢力の訓練上昇値(1ターンの訓練でレベルアップする数量)を加算します。
勢力の訓練上昇値の初期値は0で、0だと標準上昇値1が適用される仕様になってます。
addTrainingUpはその0に対してプラスすることになり、初めてaddする時は、その前に標準上昇値をsetする必要があります 
:addBaseLevel (&color(blue){勢力}, &color(magenta){数値})|
勢力の底上げレベルを増減します。
第1引数は文字列配列を使用可能です。
:setBaseLevel (&color(blue){勢力}, &color(magenta){数値})|
勢力の底上げレベルを設定します。
なお「scenario構造体のbase_level + power構造体のbase_level」が勢力の初期底上げレベルになります。
第1引数は文字列配列を使用可能です。

:addPowerMerce2(&color(blue){勢力}, &color(blue){ユニット}, &color(blue){ユニット}, ‥)|
勢力に標準雇用ユニットを追加します。
:erasePowerMerce(&color(blue){勢力})|
勢力の標準雇用ユニットを全消去します。
:addPowerStaff2(&color(blue){勢力}, &color(blue){クラス/種族}, &color(blue){クラス/種族}, ‥)|
勢力のリーダー可能ユニットを追加します。
:erasePowerStaff(&color(blue){勢力})|
勢力のリーダー可能ユニットを全消去します。
>:addPowerMerce(&color(blue){勢力}, &color(blue){ユニット}, &color(blue){ユニット}, ‥)|
>こちらはマスター関連のデフォルト雇用情報がリセットされるので非推奨となりました。
>:addPowerStaff(&color(blue){勢力}, &color(blue){クラス/種族}, &color(blue){クラス/種族}, ‥)|
>こちらはマスター関連のデフォルトリーダースタッフ情報がリセットされるので非推奨となりました。

:setGain(&color(blue){領地}, &color(magenta){数値})|
領地の経済値を指定数値にします。
:setCastle(&color(blue){領地}, &color(magenta){数値})|
領地の城壁値を指定数値にします。
:setCapa(&color(blue){領地}, &color(magenta){数値})|
領地の駐留数を指定数値にします。
:addGain(&color(blue){領地}, &color(magenta){数値})|
領地の経済値を増減します。
:addCastle(&color(blue){領地}, &color(magenta){数値})|
領地の城壁値を増減します。
:addCapa(&color(blue){領地}, &color(magenta){数値})|
領地の駐留数を増減します(上限24)。
第1引数については文字列配列変数を使用可能です。
:changeMap(&color(blue){領地}, &color(blue){mapファイル名})|
領地の戦闘マップのファイルを変更します。mapフォルダのmapファイル(拡張子無し)を指定します。
第1引数については文字列配列変数を使用可能です。
:changeCastle(&color(blue){領地}, 数値)|
領地の攻城戦モードを変更します。
|0|spot構造体ののcastle_battleに従う|
|1|攻城戦モード|
|2|攻城戦モードでない|
:changeSpotImage(&color(blue){領地}, &color(blue){イメージ名})|
ワールドマップの領地画像を変更します。image.dat内のイメージ名を指定します。
:changeDungeon(&color(blue){領地}, &color(blue){ダンジョン構造体の識別子})|
指定領地のダンジョンを変更します。
ダンジョン名を空文(@)にすると消去できます。
:setDungeonFloor(ダンジョン構造体の識別子, &color(magenta){数値})|
指定ダンジョンのクリア階数を指定します。

:setMoney(&color(blue){勢力/ユニット}, &color(magenta){数値})|
勢力、又はユニットの資金を指定数値にします。
:addMoney(&color(blue){勢力/ユニット}, &color(magenta){数値})|
勢力、又はユニットの資金を増やします。負の値だと減額されます。
:addLoyal(&color(blue){ユニット}, &color(magenta){数値})|
ユニットの忠誠度を増減します。
0以下にはなりませんので&color(green){addLoyal(-1000) → addLoyal(数値)}とすると任意の数値に設定できます。
:addMerits(&color(blue){ユニット}, &color(magenta){数値})|
ユニットの戦功値を増減します。0以下にはなりません。
:addTrust(&color(blue){ユニット}, &color(magenta){数値})|
ユニットの信用度を増減します。0以下にはなりません。
:setDone(&color(blue){ユニット}, (on/off))|
onでユニットを行動済みにします。offでユニットを未行動にします。

:changeClass(&color(blue){ユニット}, &color(blue){クラス名)}|
ユニットをクラスチェンジします。他のクラスを継承したクラスに変更する際はその基底クラスから順に変更するべきです。
:changeRace(&color(blue){ユニット}, &color(blue){種族名})|
ユニットの種族を変更します。
:addLevel(&color(blue){ユニット}, &color(magenta){数値})|
ユニットのレベルを数値分上げます。
:setLevel(&color(blue){ユニット}, &color(magenta){数値})|
ユニットのレベルを指定の数値にします。能力値のみ変化し所持スキルなどは変わりません。
:addStatus(&color(blue){ユニット}, &color(blue){文字列}, &color(magenta){数値})|
ユニットのステータスを上げます。
文字列は、hp, mp, attack, defense, magic, magdef, dext, speed, move, hprec, mprec, のどれかです。
:setStatus(&color(blue){ユニット}, &color(blue){文字列}, &color(magenta){数値})|
ユニットのステータスを指定数値にします。
:addSkill(&color(blue){ユニット}, &color(blue){スキル}, &color(blue){スキル}, ‥)|
ユニットのスキルリストの末尾にスキルを追加します。
:addSkill2(&color(blue){ユニット}, &color(blue){スキル}, &color(blue){スキル}, ‥)|
ユニットのスキルリストの先頭にスキルを追加します。
:eraseSkill(&color(blue){ユニット})|
ユニットの所持スキルを全部消去します。
:eraseSkill(&color(blue){ユニット}, &color(blue){スキル}, &color(blue){スキル}, ‥)|
ユニットから列挙されたスキルを消去します。
:removeSkill(&color(blue){ユニット}, &color(blue){スキル})|
戦闘シーンでユニットの引数スキルを消去します。
:addFriend(&color(blue){ユニット},  &color(blue){(race/class/unit)},  &color(blue){(race/class/unit)}, ‥)|
ユニットのfriendデータに追加できます。
:eraseFriend(&color(blue){ユニット})|
ユニットのfriendデータを全削除します。
:eraseFriend(&color(blue){ユニット}, &color(blue){(race/class/unit)} ,  &color(blue){(race/class/unit)}, ‥)|
指定したユニットのfriendデータを削除します。

:entryItem(&color(blue){アイテムスキル})|
アイテムウィンドウの商品欄にアイテムスキルを登録します。
scenario構造体で「item_limit = on」(販売アイテム個数制限オン)としている場合1個だけ追加されます。
この場合、何度も同じ関数を実行するか、複数のアイテムスキルが要素として入った文字列配列変数を引数とすることで複数個のアイテムスキルを登録できます。
:exitItem(&color(blue){アイテムスキル})|
アイテムウィンドウの商品欄からアイテムスキルを消去します。
:addItem(&color(blue){アイテムスキル})|
アイテムストックにアイテムスキルを追加します。
:eraseItem(&color(blue){アイテムスキル})|
アイテムストックから指定したアイテムスキルを一つ消去します。
:equipItem (&color(blue){ユニット}, &color(blue){アイテム名})|
:equipItem (&color(blue){ユニット}, &color(blue){アイテム名}, on)|
ユニットにアイテム(skill構造体名)を装備させます。
通常はスキル後尾に、onでスキル先頭に追加されます。
(削除はeraseSkill()で行う)

.