/*----成長期待値スクリプト---作:1-239-------------- ステータスが基準値+補正幅の範囲内に収まるようになります ちな基準値の計算は以下 初期値 + (成長率 * レベルアップ回数 / 100 ){小数点切り捨て} 例) HP初期値26 HP成長40% 補正±3 初期LV1 のキャラの場合 LV1 26 + (40 * 0 / 100 ) = 26 LV2   26 (26~29) LV3   26 (26~29) LV4 26 + (40 * 3 / 100 ) = 27 (26~30) LV5   27 (26~30) LV6 26 + (40 * 5 / 100 ) = 28 (26~31) LV7   28 (26~31) LV8   28 (26~31) LV9 26 + (40 * 8 / 100 ) = 29 (26~32) L10   29 (26~32) L11 26 + (40 * 10/ 100 ) = 30 (27~33) ←この時点でHPが1回も伸びていない場合 絶対にHPが1上昇する 100%以上の成長率にはたぶん対応していないと思う というかこのスクリプト自体 低成長率じゃないとあまり意味ないし 【使い方】 ユニットのCPに以下のように入力 { FirstPoint_0:26,(HP初期値) FirstPoint_1:5,(力初期値) FirstPoint_2:0,(魔初期値) FirstPoint_3:4,(技初期値) FirstPoint_4:7,(速初期値) FirstPoint_5:12,(幸初期値) FirstPoint_6:5,(守初期値) FirstPoint_7:3,(防初期値) firstlv:1,(初期レベル) Correction:2(補正値) } ・参考 ベルサガwikiとMilele氏の固定成長スクリプト 7/28 高 1/16 1050 -------------------------------------------*/ ExperienceControl._createGrowthArray = function (unit) { var i, n; var count = ParamGroup.getParameterCount(); var growthArray = []; var weapon = ItemControl.getEquippedWeapon(unit); for (i = 0; i < count; i++) { // 成長値を求める n = ParamGroup.getGrowthBonus(unit, i) + ParamGroup.getUnitTotalGrowthBonus(unit, i, weapon); //root.log('成長値:' + n); // 実際に上昇する値を設定・iとunitの因数を追加 if (i >= 8) { growthArray[i] = 0; } else { growthArray[i] = this._getGrowthValue(n, unit, i); } } //root.log('==============='); return growthArray; }; ExperienceControl._getGrowthValue = function (n, unit, index) { var value, FP, FL, CF, MinCorrection, MaxCorrection; var isMunus = false; if (n < 0) { n *= -1; isMunus = true; } value = Math.floor(n / 100); value2 = Math.floor(n % 100); //初期値を求める eval("FP = unit.custom.FirstPoint_" + index + ";"); if (typeof FP !== 'number') { FP = 0; } //レベルアップ回数を求める FL = unit.custom.firstlv; if (typeof FL !== 'number') { FL = unit.getLv() - 1; } else { FL = unit.getLv() - unit.custom.firstlv; } CF = 1;//;unit.custom.Correction; if (typeof CF !== 'number') { CF = 1; } MinCorrection = FP + (n * FL / 100); MaxCorrection = MinCorrection + CF; //root.log(unit.getClass().getMaxParameter(index) + ' ' + MaxCorrection) MaxCorrection = Math.min(DataConfig.getMaxParameter(index), MaxCorrection); MinCorrection -= CF; if (n === 0) { MinCorrection = FP; MaxCorrection = FP; } //root.log('期待値_'+FP+'+('+n+'*'+FL+'/100)=[ '+MinCorrection+' ~ '+MaxCorrection); //期待値以下の場合強制成長 var NP = unit.getParamValue(index) - MinCorrection; if (NP < 0) { value++; } else { //期待値以上で無い場合、成長判定を行う NP = MaxCorrection - unit.getParamValue(index) - 1; if (NP >= 0) { if (Probability.getProbability(value2)) { value = 1; } } else { // root.log('limit'); } } if (isMunus) { value *= -1; } return value; };