[[レギュレーション]]
#contents
**目的 [#h9fa9036]
[[WW2空戦レギュ]]においての重武装機の非現実的な弾幕射撃を防ぐため、 一度の空戦での使用弾薬数に制限を設ける。
**制限法 [#t801c8cc]
制限の方法は以下のとおり
--2.2tクラスは500ポイント、Jetは1200ポイントの弾薬ポイントをもって戦闘を開始する
--1.1tクラスは機体重量によって搭載できる弾薬の数が変動する具体的には1.3tから+100kgで+20P&br;&br;
(機体重量 -1300) /100 *20 +350
で計算し出てきた値を小数点以下四捨五入し弾薬ポイントとすること、機体重量に_SPLIT _BYE できるものの重量は含まない。(エンジンは含む)&br;
--上記計算で350ポイント以下になった場合は350ポイントとし425P以上となった場合は425ポイントとする
--弾を一発発射するごとにOption値によって定められた弾薬コストを弾薬ポイントから減ずる。
--弾薬ポイントが0以下になった機体は射撃不能とし、着陸・撤退する。(注:0以下なので、最後の1発はどんな弾薬コストの弾でも撃てることになる)
--複数種類のOptionのArmを有する機体においては、その弾薬数の内訳は離陸前に決定する必要はなく、戦況に応じて自由に打ち分けてよい。
--Option50K以上のARMは追加レギュで特に記述がない限り使用禁止とする。
***弾薬コスト [#hefd12d7]
-50k未満
--禁止
-50K〜100k未満
--2
-100K以上
--12
***補給について [#hefd12d7]
--弾薬が不足した機体は着陸して補給することができる。弾薬は1Fにつき0.5pt補給されるので、1.1t級で700F強 2.2t級で1000Fあれば残弾0の状態から完全補給可能である。
--なお、着陸の定義は コアの地上高度が2m以下 かつ _VZの絶対値が1.5以下 である
--Jet機は搭載弾薬が多く、補給に異常な時間がかかるため、補給速度をレシプロ機の2倍とする。
**導入の手引 [#h907a6da]
***Script編 [#dc7067f0]
以下のコードで弾薬ポイントをカウントできます
if _E(ARMのチップ番号) = 0 { 弾薬ポイント - 弾薬コスト }
あらかじめ、機体に合わせた弾薬ポイントの変数(350、500、1200のいずれか)を用意しておき、ARM一枚ごとにこのコードを書いていってください。
***Lua編 [#xade98ca]
以下の関数により弾薬ポイントをカウントできます。~
この切り取り線内をLuaにコピペすると、どんなモデルでも自動的カウントします。~
残ポイントの表示とか弾切れ時の発射ロックとかは各自実装してください。 ~
#codeprettify{{
LimitAmmo = 0 --自機の持つ残り弾薬ポイント。残弾表示やフラグに使ってください。
LimitAmmoMax = 0;
isJetPlaneLimitAmmo = false--ジェット機ならtrueに汁
isLimitAmmoInitialized = false;--内部的な初期化フラグ。いじったらだめーよw
Cost100k = 12 --100k(Option=100000)以上のARMの弾薬コスト
Cost50k = 2 --50k以上100k未満の弾薬コスト
ListChipType = {} --ARMのチップ番号を格納
ArmCostList = {} --発見されたArmのコストを順に収納
function LimitAmmoRegulation()
--初期設定
if not isLimitAmmoInitialized then
--重量に応じて弾薬ポイントを決定
if isJetPlaneLimitAmmo then
LimitAmmo = 1200
else
if _WEIGHT() >= 1100 and _WEIGHT() < 2200 then
LimitAmmo = (_WEIGHT() -1300) /100 *20 +350
elseif _WEIGHT() >= 2200 then
LimitAmmo = 500
end
end
LimitAmmoMax= LimitAmmo
local chipNum = _CHIPS() - 1
for i = 1, chipNum do
--ARMチェック
if _TYPE(i) == 10 then
--50kの場合、100kの場合でそれぞれ弾薬コストを格納
if _OPTION(i) == 50000 then
table.insert(ListChipType, i)
table.insert(ArmCostList, Cost50k)
elseif _OPTION(i) >= 100000 then
table.insert(ListChipType, i)
table.insert(ArmCostList, Cost100k)
end
end
end
isLimitAmmoInitialized = true
elseif _TICKS() > 150 then
--発射カウント
local n = table.getn(ListChipType)
for i = 1, n do
--発射判定
if _E(ListChipType[i]) == 0 and _TOP(ListChipType[i]) == 0 then
LimitAmmo = LimitAmmo - ArmCostList[i] --弾薬ポイントから弾薬コストを減算
end
end
local h = _H(0);
local speed = _VZ(0);
if (0 < h and h < 2) and math.abs(speed) < 1.5 then
if isJetPlaneLimitAmmo then
LimitAmmo = LimitAmmo + 1;
else
LimitAmmo = LimitAmmo + 0.5;
end
if LimitAmmo > LimitAmmoMax then LimitAmmo = LimitAmmoMax; end
end
end
end
}}
**更新履歴 [#w7e92c34]
-Ver0.35
--1.1t二重反転の弾薬計算方法を削除し統合
-Ver0.34
--2.2t機の弾薬ポイントを600に変更、表記を微修正
-Ver0.34
--1.1t機の弾薬ポイントを重量計算式に変更
-Ver0.33
--2.2tに関する記述を復元
--なぜかバルチについての記述が書いてあったため削除
-Ver0.32
--2.2tに関する記述を中途半端に削除
-Ver0.31
--Jetの補給速度改善
-Ver0.3
--補給ルールを導入
-Ver0.21
--1.1tクラスの制限コストを変更
--Op50K以外ARMの禁止
-Ver0.2
--Verを位上げすると同時に案→レギュに変更。
--体裁変更
-Ver0.14
--100K以上のコストが再び12に変更
--Luaコードに50K以下のArm発射時に弾薬を0にする機能追加
-Ver0.13
--Luaコードのバグ修正
-Ver0.12
--Luaコードのバグ修正
-Ver0.11
--100K以上のコストを15に変更。
--LuaのJet機指定方法に変更
--Luaコードのバグ修正
-Ver0.1
--1.6Mを100K以上枠に統合
--ポン付けよう見本Lua追加