「class 構造体(クラスの設定)」の編集履歴(バックアップ)一覧に戻る

class 構造体(クラスの設定) - (2023/12/08 (金) 22:13:06) のソース

**&color(green){はじめに}
ユニットの設定は通常unit構造体で行いますが、非人材を設定するショートカットとしてclass構造体も直接指定出来ます。
同じ構造体名ではunit構造体の方が優先されますが、わざわざ被せるのはやめたほうが良いです。
unit構造体とclass構造体のデータはほぼ同じです。
このページに記述されていない要素はunit構造体でのみ使用できると考えても構いません。ほぼ漏れはないはずです。


**&color(green){samecall(同系クラス雇用)について}
全てのユニットは、条件を満たせば自分と同じ系列で、その根底となるクラスを雇用できる&color(red){samecall}という特性を持っています。
雇用する側のユニットが&color(red){samecall}を行えるかどうかは、以下の4つの条件で判断されます。
(以下の条件を一つでも満たさない時点で、そのユニットは&color(red){samecall}が行えない。)
(1)雇用するユニットに&color(blue){same_call=off}が設定されていない。
(2)雇用するユニットに&color(blue){fkey}が設定されている。(&color(blue){fkey}の値には根底となるクラスの構造体名を記述。)
(3)上の(2)で設定した基底のクラスに&color(blue){unique=on}が設定されていない。
(4)根底となるクラスに&color(blue){race}(種族)が設定されており、その種族が雇用するユニットの&color(blue){race}(種族)と一致する。

※COMがユニットを雇用する場合は、雇用される根底のクラスを、雇用するユニットと同じクラスに強制変換する(上位クラスを雇用する)。
ただし雇用する側のクラスが&color(blue){unique=on}を設定している場合は、根底のクラスを雇用する。


//**&color(green){samecall(同系クラス雇用)について}
//各ユニットは自分と同じ系列の基底クラスを標準雇用できます。これが&color(red){samecall}です。&color(red){samecall}の手順は以下の通りです。
//1、そのユニットが&color(blue){same_call=off}ならキャンセル。
//2、ユニットのクラスの基底クラスを呼び出す。&color(blue){fkey}が未記述ならキャンセル。
//3、基底クラスが&color(blue){unique=on}ならキャンセル。
//4、基底クラスの&color(blue){race}が記述されており、ユニットの&color(blue){race}と不一致ならキャンセル。
//5、プレイヤーならここで処理終了してsamecallユニットを雇用する。
//6、COMはsamecallユニットのクラスを自分と同じにする(上位クラスチェンジ)ただし自分のクラスが&color(blue){unique=on}ならそのまま雇用する。


**&color(green){経験値獲得の計算について}
経験値は敵を攻撃してダメージを与える毎に獲得されます。
計算方法は&color(blue){敵の所持値[hasexp×レベル]×ダメージ率[与えたダメージ÷敵の最大HP]}です。
ただしダメージ率は33%が上限となっており大ダメージを与えても変わりません。
一撃で倒すよりも手数の多い方が効率よく経験値を稼げます。

**&color(green){コンテンツ}
:name = (文字列)|
名前
:help = (文字列)|
概略
:fkey = (文字列)|
基底クラス。クラスの系列を決めます。fkey未記述のクラスは&color(red){samecall}出来ません。
:change = (文字列*数値)|
数値レベルになると文字列のクラスに転職。
:sex = (male/female/neuter)|
性別。省略時はneuter。
:race = (文字列)|
種族。&color(red){samecall}時にも参照されます。
:radius = (数値)|
ユニットの領域半径。省略時はサイズから自動算出されます(横幅の75%)
:radius_press = (1~100)|
context構造体でunit_battle_cram = onとするとユニット渋滞時に
(1~100)パーセントまでユニット半径が圧縮され大人数でもスムーズに動くようになります。
:w = (数値)|
ユニットの横サイズ。省略時は32。
:h = (数値)|
ユニットの縦サイズ。省略時は32。
:a = (数値)|
ユニットの透明度(0~255)。省略時は255(不透明)
:image = (文字列)|
ユニット画像。image.dat内のイメージ名を指定する。
:image2 = (文字列)|
女性の時に適用されるユニット画像。
:sub_image = (文字列)|
ユニット画像。image.dat内のイメージ名を指定する。
sub_image@@(level)@(scenario)と特殊なバリエーション指定をします。
:tkool = (on/off)|
RPGツクール規格のキャラチップを使えるようになります。詳細は別途説明します。
:face = (ファイル名)|
フェイス画像。faceフォルダの画像を指定する。
:scream = (ファイル)|
やられた時の悲鳴。soundフォルダのwavファイル(拡張子無し)を指定する。
:break = (スキル)|
やられた時に表示されるエフェクト。指定したスキルが発生します。
爆発をユニット中央に合わせる為にスキルには&color(blue){center=on}を記してください。スキルは強制的にfunc=missileと見なされます。

:price = (数値)|
雇用費。
:cost = (数値)|
ターン毎の維持費。勢力資金から減額されます。負の値にすると逆に増えて「財政力」となります。
:hasexp = (数値)|
自分を攻撃した敵の獲得経験値を決める基準値。これにレベルを掛けます。
:friend = (文字列, 文字列, ‥)|
省略時は同種族・同クラスのみとなる。部下に出来る種族とクラスを列挙する。
:friend_ex = (文字列, 数値, 文字列, ‥)|
部下に出来る種族とクラスを&color(blue){数値の前の文字列+数値の後の文字列から}ランダムで数値分列挙する。
:merce = (文字列, 文字列, ‥)|
このユニットから開いた雇用ウィンドウに追加されるユニットを列挙する。部下に出来るか否かの設定はfriendの方で行います。
power構造体での設定と同じく、同名クラスを複数記述するとCOM勢力に所属した場合の雇用確率を調整できる。(samecallが有効な場合そちらが優先)
&color(blue){例:merce = soldier*5, bowman, monk*4 とするとソルジャー50%、ボウマン10%、モンク40%の確率で雇用する。}
&color(red){ただし1回の補充で雇用されるクラスは基本的に全員一緒で、「soldier*3,bowman*2」でもソルジャー3人、ボウマン2人といったように振り分けられるわけではないことに注意。}
:same_friend = (on/off)|
省略時はon。offにすると同種族同クラスの雇用が出来なくなる(friendで別途指定してれば可能)
:same_call = (on/off)|
省略時はon。offにすると&color(red){samecall}が出来なくなる。
:samecall_baseup = (on/off)|
省略時はoff。onだと&color(red){samecall}された際にscenario構造体のbase_level分レベルが底上げされる。
:same_sex = (on/off)|
省略時はoff。onだと&color(red){samecall}したユニットの性別と同じになる。
:unique = (on/off)|
省略時はoff。onだとユニーククラスになる。&color(red){samecall}による上位クラスチェンジの対象となりません。
:member = (文字列, 文字列*数値, ‥)|
開始時の部下ユニット

:level = (数値)|
:hp = (数値)|
:mp = (数値)|
:attack = (数値)|
:defense = (数値)|
:magic = (数値)|
:magdef = (数値)|
:speed = (数値)|
:dext = (数値)|
:move = (数値)|
:hprec = (数値)|
:mprec = (数値)|
基本能力値
:summon_max = (数値)|
召喚可能数。省略時はcontext構造体の&color(blue){unit_summon_min}になる。
:summon_level = (百分率の数値)|
50とすると召喚ユニットのレベルは術者の50%になる。省略時はcontext構造体の&color(blue){unit_summon_level}になる。
:heal_max = (百分率)|
回復残量。一度の戦闘でヒールで回復できる限界HP量。
:attack_max = (百分率)|
:defense_max = (百分率)|
:magic_max = (百分率)|
:magdef_max = (百分率)|
:speed_max = (百分率)|
:dext_max = (百分率)|
:move_max = (百分率)|
:hprec_max = (百分率)|
:mprec_max = (百分率)|
能力UP魔法による限界値を元値との比率で設定します。150%とすると元値の1.5倍が限界値となります。
省略すると100%となり(元値と限界値が同じ)強化されません。

:skill = (文字列, 文字列, ‥)|
スキルリストの末尾にスキルを追加する。
:skill2 = (数値, 文字列, 文字列, ‥)|
数値の数だけ(絶対値に換算)列挙された文字列からランダムでスキルリストの末尾に付加する。
数値にマイナス符号を付けると先頭に付加される。
&color(red){注意:skill2はunit構造体とclass構造体で機能が異なります。}
:delskill = (文字列, 文字列, ‥)|
スキルリストから削除する。learnで習得するスキルは削除対象外です。
:learn = (数値, 文字列, ‥)|
数値のレベルでスキルを習得。
数値にマイナス符号を付けるとスキルリストの前方に並ぶ。
&color(red){注意:learnのレベル達成で取得したスキルはchangeClassやchangeRaceなどの変更があると消えてしまうので、スキルが消えて困る場合はレベルを振り直す必要がある。}
&color(red){この時、setlevelを使うとステータスしか反映されず、しかも新しいクラスでの能力値で再計算されてしまい、想定外のステータスになりがちなので注意。}
&color(red){ステータスを気にしないなら、setlevelのあとレベルをaddlevelで-1,+1。ステータスも正常化させたいなら、面倒だけど基底クラスにチェンジさせた後、whileとaddleverで1づつ上げるといい}
:learn = 数値1, 文字列1, 数値2, 文字列2)|
数値1のレベルで文字列1のスキルを習得。数値2のレベルで文字列1のスキルが消えて、文字列2のスキルを習得。
:learn = (数値1, 文字列1, 数値2, 文字列1, 文字列2)|
文字列1のスキルを消さない場合は再度習得させる書式にする。
:delskill2 = (文字列, 文字列, ‥)|
learnで習得したスキルリストから削除するものを列挙する。
:leader_skill = (文字列, 文字列, ‥)|
:leader_skill = (文字列*数値), (文字列*数値), ‥|
リーダースキルの設定。
数値(絶対値に換算します)を指定するとそのレベル以上のメンバーにだけ付与される。
数値にマイナス符号を付けるとスキルリストの前方に挿入される。
:assist_skill = (文字列, 文字列, ‥)|
:assist_skill = (文字列*数値), (文字列*数値), ‥|
アシストスキルの設定。自分のリーダーに付与されます。

:consti = (文字列*数値, 文字列*数値, ‥)|
属性への耐性度の設定。
&color(blue){0 即死、1 激弱、2-3 弱い、4 微弱、5 普通、6 微強、7-8 強い、9 超強、10 無敵}
:movetype = (文字列)|
移動タイプ。
:brave = on*数値(0~100)|
設定すると遠距離型でもたまに接近戦を挑むようになります。数値が高いほど接近しやすいです。
:line = (front/back)|
前衛、後衛の設定。省略時は先頭スキルに応じた位置になる。
:satellite = (on/off)|
:satellite = (数値)|
onにするとリーダー、又は召喚した術者を追尾します。数値を指定するとその距離ドットまで近づきます。
デフォルトではradius ✕ 2 + 32です。
:beast_unit = (on/off)|
onにするとビーストになる。プレイヤー操作を制限します。自分とリーダーの双方がビーストなら操作不能となる。
:no_knock = (on/off)|
省略時はoff。onだと1000000が設定される。(実質的にノックバック無効)
:no_knock = (数値)|
skill構造体のknock_power(ノックバック能力)と組み合わせて使います。
ノックバック時に「乱数(0~knock_power)>= no_knock」の判定が行われ、真ならノックバックされます。
:no_cover = (on/off)|
省略時はoff。onにすると味方遮蔽の対象にならない。
このユニットが前方にいても射撃できる。
:view_unit = (on/off)|
onにすると召喚精霊でも視界ユニットになる。
:element_lost = (on/off)|
省略時はon。offにすると召喚術者が死亡しても消滅しない。

:attack_range = (数値)|
接近開始半径の設定。省略時はcontext構造体のunit_attack_rangeの数値になります。
:escape_range = (数値)|
後退開始半径の設定。省略時はcontext構造体のunit_escape_rangeの数値になります。
:escape_run = (数値)|
後退距離の設定。省略時はcontext構造体のunit_escape_runの数値になります。
:hand_range = (数値)|
剣攻撃が届く距離ドットです。省略時はcontext構造体のunit_hand_range(デフォ値は16)になります。
大きくするとより遠くの敵を剣攻撃できますが、移動時に敵に引っかかりやすくなります。
:wake_range = (数値)|
1以上を設定すると最初はスリープ状態で自分の半径(数値)ドット内に敵が来たら動き出すようになります。
:view_range = (数値)|
視界範囲。省略時はcontext構造体のunit_view_rangeになる。
:cavalry_range = (数値)|
1以上を設定するとそのユニットは騎兵用の行動ルーチンを使用します。基本的に自分の半径(数値)ドットだけ敵に対し距離をとる様になり、以下の判定を満たす場合のみ、敵に突撃を行います。
1、敵軍の前衛:後衛の比率が、1:2 より下 →敵前衛が減少したので「突撃」
2、敵軍の前衛:後衛の比率が、3:1 より上 →敵前衛が迫ってるので「突撃」
3、自分の近くに敵の後衛ユニットがいる →突撃の好機なので「突撃」
4、自軍の騎兵比率が50%以上 →自軍が騎兵メインの軍団なので「突撃」
5、味方が優勢な時 →勝機と見なして「突撃」

:level_max = (数値)|
ユニットの最大レベル値です。省略するとcontext構造体のunit_level_maxになります(デフォ値は100)
:multi = (数値1, 文字列1, 数値2, 文字列2, 文字列3, ‥)|
レベルアップ時の能力値の上昇率。基本能力値×(数値)%ずつ上昇する。
&color(blue){multi = 15, hp, 10, attack, defense, 5, magic, magdef}
とすると、hpは初期値の15%、attackとdefenseは10%、magicとmagdefは5%上昇する。
:exp = (数値)|
:exp_mul = (数値)|
レベルUPの為の必要経験値の設定。
exp = 100, exp_mul = 120 の場合は、
&color(blue){[100], [100+(100×1.20)], [100+(220×1.20)], [100+(364×1.20)], [100+(536×1.20)], ‥}
のように各レベルUPの必要経験値が増加していきます。
:exp_max = (数値)|
必要経験値の増加幅の限界設定。省略時は0。0だと無制限になる。
:hpUp = (数値)|
:mpUp = (数値)|
:attackUp = (数値)|
:defenseUp = (数値)|
:magicUp = (数値)|
:magdefUp = (数値)|
:speedUp = (数値)|
:dextUp = (数値)|
:moveUp = (数値)|
:hprecUp = (数値)|
:mprecUp = (数値)|
レベルアップ時の能力上昇値。&color(blue){multi}の指定より優先されます。
:hpMax = (数値)|
:mpMax = (数値)|
:attackMax = (数値)|
:defenseMax = (数値)|
:magicMax = (数値)|
:magdefMax = (数値)|
:speedMax = (数値)|
:dextMax = (数値)|
:moveMax = (数値)|
:hprecMax = (数値)|
:mprecMax = (数値)|
レベルアップ時の能力限界値。これ以上は増えません。

:free_move = (数値)|
0以外にすると敵に近づこうとせずウロウロするようになります。
attack_range内に敵が入ったら接近します。
数値を小さくすると狭い範囲で動きます。大きくすると広い範囲で動きます。
1の位の数値(0~9)は小刻みでウロウロする頻度です。0だと小刻み、9だとその反対です。
狭い範囲のウロウロなら300以下で(例:free_move = 301)
広い範囲なら800以上で1の位の数値を大きくしてください(例:free_move = 1009)
:lost_corpse = (数値)|
死体エフェクトの設定。
省略時は0。0は左右に押し潰されていく標準タイプ。
1以上にすると下に沈むタイプになる。100で1フレーム毎に1ドット沈む。50だと0.5ドット。
負の値にすると消えるタイプになる。数値は1フレーム毎にアルファ値から引かれる数。
:dead_event = (event構造体の名前)|
このユニットがやられた時に指定のevent構造体が実行されます。
ボスがやられた時の台詞イベントなどで使ってください。
自動的に文字変数&color(blue){dead_event_a}に攻撃者の識別子が代入されます
同じく&color(blue){dead_event_d}に死亡者の識別子が代入されます。
:add_vassal = (on/off/roam)|
宝箱でユニットとして取得された時の挙動を設定します。
|off|所属勢力に追加されます。放浪中なら何も得られません(デフォルト)|
|on|自分の部下になります。メンバーがいっぱいなら何も得られません|
|roam|勢力所属時は勢力に、放浪中は自分の部下に加わります|
:item = (skill構造体の名前)|
初期装備のアイテムです。

:picture = (ファイル名)|
立ち絵画像。pictureフォルダの画像を指定する。
#region
:picture_detail = (on/off)|
|on|列伝ウィンドウの上に立ち絵が出る|
|on1|全画面列伝になる|
|on2|ステータスウィンドウの横に立ち絵が出ない|
|on3|全身像列伝になる|
:picture_menu = (数値)|
指定すると戦略シーンのマスター立ち絵が表示されます。
0だと勢力ウィンドウの底辺に、50だと中間に、100だと上辺に表示されます。
:picture_floor = (文字列/数値)|
|top|立ち絵の底辺が会話ウィンドウの上辺になる|
|msg|同上|
|bottom|立ち絵の底辺が会話ウィンドウの底辺になる|
|base|立ち絵の底辺が画面の底辺になる|
数値にすると会話ウィンドウの上辺+(会話ウィンドウの高さ×数値×0.01)が立ち絵の底辺になります。
:picture_shift = (数値)|
立ち絵を横に数値ドットずらします。正の値で右に負の値で左に。
:picture_shift_up = (数値)|
立ち絵を上方向に数値ドットずらします。全身像列伝で立ち絵の位置調整に使う。
:picture_center = (0~100)|
省略時は&color(blue){context構造体}に準ずる。画面高さの百分比率を軸にして立ち絵が表示されます。
context構造体のpicture_centerが50だと立ち絵は丁度画面中央に表示されます。
:picture_back = (画像ファイル)|
全身像列伝の背景画像になります。imageフォルダの画像を指定します。
画像は自動的に右側が暗くなるグラデーションが掛かります。
#endregion(立ち絵指定の詳細データ)

:politics = (on/fix/erase/unique)|
[[内政について]]を参照してください。
:value = (数値)|
加算される戦闘力。
:force_voice = (on/off)|
詳細不明。
:no_training = (on/off)|
onにすると訓練されなくなる。
:handle = (on/off)|
[[関数(戦闘シーン)]]を参照してください。
:red = (on/off)|
詳細不明。

**&color(#F54738){よく間違われる要素}
:yabo|
:kosen|
:enable|
:enable_max|
どちらもunit構造体に限られます。
.