武器強化
srpgstudio吧
全部回复
仅看楼主
level 5
48QERFG 楼主
已把除說明外改了[酷]
/*--------------------------------------------------------------------------
 武器強化
■概要
 戦闘準備画面、及び、拠点の店に強化屋を用意する事が出来るようになります。
 強化屋では強化可能な武器を強化する事ができます。
 ※武器にカスタムパラメータ{ powerUpWeapon:1 }をセットすると、その武器は強化が可能になります。
 一段階以上強化した武器は、ステータス画面及び店での売却時に
 武器名の色が「var PowerUpWeaponNameColor = 0xff80ff;」で設定した色で描画されます(デフォルトは紫っぽい色になっています)
【戦闘準備画面の場合】
 マップ情報のカスタムに{powerUpWeapon:XX}が指定されていた場合、上からXX番目の店が強化屋になります。
 XXは0~[店数-1]の範囲で設定します。0ならば一番上の店、1ならば上から2番目の店です
 また、ショップアイテムで登録した『強化屋として使う店にも、なんでもいいので一個販売品を登録』しておいてください。
 (一つも販売品が無い店は、SRPG STUDIO側で店として登録しないようになっているためです)
 ※1.122以降では販売品に在庫数を設定出来ますが、強化屋に登録した販売品に在庫は設定しないでください(動作保証出来ません)
2020年10月22日 05点10分 1
level 5
48QERFG 楼主
續:
【拠点の場合】
 拠点の店にカスタムパラメータ{powerUpWeapon:0}が指定されていた場合、その店は強化屋になります。
 『ゲーム時にショップを一覧形式で表示する』にチェックが入っている場合は販売品の登録が不要です。
 チェックが入っていない場合は、なんでもいいので一個販売品を登録』しておいてください。
 (一覧形式を使用する場合は条件を満たした店が(販売品0でも)全て登録されるのですが、
  一覧形式を使用していない場合、一つも販売品が無い店はSRPG STUDIO側で店として登録しないようになっているためです)
 ※1.122以降では販売品に在庫数を設定出来ますが、強化屋に登録した販売品に在庫は設定しないでください(動作保証出来ません)
  拠点でのカスタマイズ
   1.拠点でユニットの所持品も強化可能としたい
     →『var isPowerUpUnitItemInRest = false;』のfalseをtrueにしてください。
      trueにした場合、ストック内の強化可能品の後ろに、生存して仲間になっている自軍ユニットの所持品が追加されます。
      強化屋のリストに載るのは強化可能な武器のみで、強化不可能な武器や道具は載りません。
    (以下はisPowerUpUnitItemInRest = trueとした場合に有効になる設定です)
   2.ユニットの顔グラの透明度(アルファ値)を変えたい
     →『var RestPowerUpFaceAlpha = 128;』の数値部分を0-255の範囲で変えて下さい。
   3.ユニットの顔グラの位置を変えたい
     →『var RestPowerUpFaceDrawXhosei = 120;』『var RestPowerUpFaceDrawYhosei = 0;』の数値部分を変えて下さい。
   4.ユニットの顔グラ描画サイズ(幅、高さ)を変えたい
     →『var RestPowerUpFaceDstWidth = 96;』『var RestPowerUpFaceDstHeight = 24;』の数値部分を変えて下さい。
   5.顔グラ描画元のサイズ(幅、高さ)を変えたい
     →『var RestPowerUpFaceGettingWidth = 96;』『var RestPowerUpFaceGettingHeight = 24;』の数値部分を変えて下さい。
   6.顔グラ描画元の取得位置を変えたい
     →『var RestPowerUpFaceSrcXHosei = 0;』『var RestPowerUpFaceSrcYHosei = 22;』の数値部分を変えて下さい。
■強化の仕様
 1.本プラグインに書かれているデータをそのまま使う場合
   本プラグインの『設定(外部)』の部分に、強化可能な場合の武器データ(基本)があります。
   このデータを弄る事で、データをそのまま使う形の武器が作成できます(一般的な武器などに使って下さい)
2020年10月22日 05点10分 2
我想问一下大佬,这些插件都是哪里找的啊,我找死了都找不到,另外,感谢分享[花心]
2020年12月13日 14点12分
level 5
48QERFG 楼主
續:
    攻撃力の最大強化段階(WPU_AtkBoostTotal):最大で何段階まで強化できるかを示します(初期値は10段階までです)
                          10段階を超える場合、攻撃力の強化テーブルと攻撃力の強化費用を追加してください
    攻撃力の強化テーブル(WPU_AtkBoostPts) :強化による攻撃力の上昇値です。
                          初期のデータだと1段階目で+1、2段階目で+2されます(累積ではなく段階ごとに指定の数値となります)
    攻撃力の強化費用(WPU_AtkBoostCost)   :攻撃力強化にかかる費用です。
                          複数段階上昇させた場合は費用が累積されます(強化なし→2段階とすると、1段階目の費用と2段階目の費用の合計分のお金が要ります)
    命中の最大強化段階(WPU_HitBoostTotal) :最大で何段階まで強化できるかを示します(初期値は10段階までです)
                          10段階を超える場合、命中の強化テーブルと命中の強化費用を追加してください
    命中の強化テーブル(WPU_HitBoostPts)  :強化による命中の上昇値です。
                          初期のデータだと1段階目で+5、2段階目で+10されます(累積ではなく段階ごとに指定の数値となります)
    命中の強化費用(WPU_HitBoostCost)    :命中強化にかかる費用です。
                          複数段階上昇させた場合は費用が累積されます(強化なし→2段階とすると、1段階目の費用と2段階目の費用の合計分のお金が要ります)
    必殺の最大強化段階(WPU_CriBoostTotal) :最大で何段階まで強化できるかを示します(初期値は10段階までです)
                          10段階を超える場合、必殺の強化テーブルと必殺の強化費用を追加してください
    必殺の強化テーブル(WPU_CriBoostPts)  :強化による必殺の上昇値です。
                          初期のデータだと1段階目で
+3
、2段階目で+6されます(累積ではなく段階ごとに指定の数値となります)
    必殺の強化費用(WPU_CriBoostCost)    :必殺強化にかかる費用です。
                          複数段階上昇させた場合は費用が累積されます(強化なし→2段階とすると、1段階目の費用と2段階目の費用の合計分のお金が要ります)
2020年10月22日 05点10分 3
level 5
48QERFG 楼主
續:
 2.武器にカスタムパラメータを追加する場合
   武器に以下のカスタムパラメータをつけることで、『設定(外部)』のデータではなく武器独自のデータを使う事が出来ます。
    AtkBoostTotal:数値        :武器の攻撃力強化段階を独自設定します。
    AtkBoostPts:[数値1,数値2,…]   :攻撃力の強化テーブルを独自設定します。
    AtkBoostCost:[数値1,数値2,…]   :攻撃力の強化費用を独自設定します。
    HitBoostTotal:数値        :武器の命中強化段階を独自設定します。
    HitBoostPts:[数値1,数値2,…]   :命中の強化テーブルを独自設定します。
    HitBoostCost:[数値1,数値2,…]   :命中の強化費用を独自設定します。
    CriBoostTotal:数値        :武器の必殺強化段階を独自設定します。
    CriBoostPts:[数値1,数値2,…]   :必殺の強化テーブルを独自設定します。
    CriBoostCost:[数値1,数値2,…]   :必殺の強化費用を独自設定します。
 (例)攻撃力強化段階2、攻撃力強化テーブル+5,+10、攻撃力強化費用1000,2000というデータを設定する場合は以下のようになります
{
powerUpWeapon:1,
AtkBoostTotal:2,
AtkBoostPts:[5,10],
AtkBoostCost:[1000,2000]
}
 (例)命中強化段階1、命中強化テーブル+20、命中強化費用5000というデータを設定する場合は以下のようになります
{
powerUpWeapon:1,
HitBoostTotal:1,
HitBoostPts:[20],
HitBoostCost:[5000]
}
 (例)必殺強化段階3、必殺強化テーブル+10,+20,+30必殺強化費用100,200,500というデータを設定する場合は以下のようになります
{
powerUpWeapon:1,
CriBoostTotal:3,
CriBoostPts:[10,20,30],
CriBoostCost:[100,200,500]
}
 (例)上記の例全てを入れる場合は以下のようになります
{
powerUpWeapon:1,
AtkBoostTotal:2,
AtkBoostPts:[5,10],
AtkBoostCost:[1000,2000],
HitBoostTotal:1,
HitBoostPts:[20],
HitBoostCost:[5000],
CriBoostTotal:3,
CriBoostPts:[10,20,30],
CriBoostCost:[100,200,500]
}
 (例)一部だけカスタムパラメータを入れると、残りは『設定(外部)』のデータを使用します。
以下のように攻撃力強化段階2、命中強化段階1だけを設定すると、攻撃強化段階と命中強化段階以外は『設定(外部)』のデータを使用します
{
powerUpWeapon:1,
AtkBoostTotal:2,
HitBoostTotal:1,
}
■注意事項
  ・10段階を超える強化について
    現在はデータの配列を10段階までしか用意していないため、10段階を超える強化を行う場合は以下のデータ配列を必要な段階まで増やす必要があります
     攻撃力の強化テーブル(WPU_AtkBoostPts)
     攻撃力の強化費用(WPU_AtkBoostCost)
     命中の強化テーブル(WPU_HitBoostPts)
     命中の強化費用(WPU_HitBoostCost)
     必殺の強化テーブル(WPU_CriBoostPts)
     必殺の強化費用(WPU_CriBoostCost)
     強化段階表示用のインデックス(WPU_indexData)
  ・武器強化の店の名前について
    武器強化の店の名前については、他の店と異なる店名にしておいてください。
    (武器強化の店、普通の店ともに同じ名前(どちらもショップ、など)というのは避けて下さい)
    これはゲームレイアウト→コマンドレイアウトの戦闘準備で「ショップ」を表示させた場合、
    武器強化の店かどうかのチェック処理で店の名前を比較している為です。
修正内容
20/05/05 新規作成
20/05/05b 公式のsystem-interruption.jsを利用した中断処理で武器強化が反映されるようにした
20/06/13 ゲームレイアウト→コマンドレイアウトの戦闘準備で「ショップ」を表示させた場合武器強化の店に入るとエラーになるバグを修正
 拠点に配置した強化屋でユニットの所持品を強化可能にする設定を追加
20/06/13b 拠点の強化屋でユニット所持品を強化可能にした時、ストックに何もアイテムが無いと強化できなくなるバグを修正
20/06/19 纏め買い:拠点ショップとの併用対応
 キー操作時、強化可能な時は決定にカーソルが合っていなくてもzキー押下で確認画面に遷移するよう変更(操作の簡易化)
20/08/23 一度でも強化した武器名の色をステータス画面とショップで変更するようにしました(強化/未強化武器の見分けがつきやすくした)
2020年10月22日 05点10分 4
level 5
48QERFG 楼主
續:
■対応バージョン
 SRPG Studio Version:1.216
■規約
・利用はSRPG Studioを使ったゲームに限ります。
・商用・非商用問いません。フリーです。
・加工等、問題ありません。どんどん改造してください。
・クレジット明記無し OK
・再配布、転載 OK
・wiki掲載 OK
・SRPG Studio利用規約は遵守してください。
--------------------------------------------------------------------------*/
//-------------------------------------------------------
// 設定(外部)
//-------------------------------------------------------
// 攻撃力の最大強化段階
var WPU_AtkBoostTotal = 10;
// 攻撃力の強化テーブル
var WPU_AtkBoostPts = [ 1, 2, 4, 6, 9, 12, 16, 20, 25, 30];
// 攻撃力の強化費用
var WPU_AtkBoostCost = [ 50, 50, 100, 100, 150, 150, 200, 200, 250, 250];
// 命中の最大強化段階
var WPU_HitBoostTotal = 10;
// 命中の強化テーブル
var WPU_HitBoostPts = [ 1, 2, 3, 4, 5, 6, 7, 8, 10, 12];
// 命中の強化費用
var WPU_HitBoostCost = [ 25, 25, 25, 25, 25, 25, 25, 25, 50, 50];
// 必殺の最大強化段階
var WPU_CriBoostTotal = 10;
// 必殺の強化テーブル
var WPU_CriBoostPts = [ 1, 2, 3, 4, 6, 8, 11, 14, 17, 20];
// 必殺の強化費用
var WPU_CriBoostCost = [ 10, 10, 10, 10, 20, 20, 30, 30, 30, 30];
// 強化段階表示用のインデックス(10段階)
var WPU_indexData = [{x: 0, w:15}, {x: 15, w:15}, {x: 30, w:15}, {x: 45, w:15}, {x: 60, w:15},
{x: 75, w:15}, {x: 90, w:15}, {x:105, w:15}, {x:120, w:15}, {x:135, w:15}];
var WPU_PowerUpSettingHoseiX = 100; // 強化ウィンドウ表示補正X座標
var WPU_PowerUpSettingHoseiY = 0; // 強化ウィンドウ表示補正Y座標
var WPU_PowerUpQuestionHoseiX = 144; // 確認メッセージウィンドウ補正X座標
var WPU_PowerUpQuestionHoseiY = -70; // 確認メッセージウィンドウ補正Y座標
var WPU_PowerUpQuestionText = '這樣可以了嗎?'; // 強化後決定を選択した場合の確認メッセージ
var WPU_SelectText_PowerUp = '強化'; // 強化屋の強化コマンド名称
var WPU_ItemCanPowerUpTextHoseiX = 225; // 強化可能/強化不可の表示X補正
var WPU_Text_CanPowerUp = '強化可能'; // 強化可能時のテキスト
var WPU_Text_NotPowerUp = '強化不可'; // 強化不可時のテキスト
var WPU_SettingTextHoseiX = 0; // 強化時の説明文表示X座標補正
var WPU_SettingTextHoseiY = 0; // 強化時の説明文表示Y座標補正
var WPU_SettingText = '  ↓↑選擇強化項目 ←→選擇強化等級'; // 強化時の説明文
var WPU_SettingWeaponHoseiX = 0; // 武器の表示X座標補正
var WPU_SettingWeaponHoseiY = 30; // 武器の表示Y座標補正
var WPU_SettingCostHoseiX = 190; // 費用の表示X座標補正
var WPU_SettingCostHoseiY = 30; // 費用の表示Y座標補正
var WPU_SettingCostText = '費用'; // 費用の文字
2020年10月22日 05点10分 5
level 5
48QERFG 楼主
續:
var WPU_SettingGoldHoseiX = 230; // 金額の表示X座標補正
var WPU_SettingGoldHoseiY = 30+1; // 金額の表示Y座標補正
var WPU_SettingGoldText = StringTable.CurrencySign_Gold; // 費用のGの部分
var WPU_SettingOverGoldHoseiX = 100; // 所持金<費用の警告表示X座標補正
var WPU_SettingOverGoldHoseiY = 50; // 所持金<費用の警告表示Y座標補正
var WPU_SettingOverGoldText = '你的金錢不夠'; // 所持金<費用の警告
var WPU_SettingPowerUpValueHoseiX = 50; // 強化前の値→強化後の値の表示X座標補正
var WPU_SettingPowerUpValueFontID = 0; // 強化前の値→強化後の値の表示に使うフォントID
var WPU_SettingPowerUpStageHoseiX = 120; // 強化段階の■の表示X座標補正
var WPU_SettingPowerUpStageFontID = 0; // ■の表示に使うフォントID
var isPowerUpUnitItemInRest = false; // 拠点でユニットの所持品も強化可能か(false:所持品は強化不可 true:所持品強化可)
// 拠点でユニットの所持品を強化する際の顔画像に関する設定
var RestPowerUpFaceAlpha = 128; // 顔画像のアルファ値(0-255)
var RestPowerUpFaceDrawXhosei = 120; // 顔画像の表示X補正
var RestPowerUpFaceDrawYhosei = 0; // 顔画像の表示Y補正
var RestPowerUpFaceDstWidth = 96; // 描画先:顔画像の幅
var RestPowerUpFaceDstHeight = 24; // 描画先:顔画像の高さ
var RestPowerUpFaceGettingWidth = 96; // 描画元:顔画像から描画用に取得する幅
var RestPowerUpFaceGettingHeight = 24; // 描画元:顔画像から描画用に取得する高さ
var RestPowerUpFaceSrcXHosei = 0; // 描画元:顔画像の取得位置X補正
var RestPowerUpFaceSrcYHosei = 22; // 描画元:顔画像の取得位置Y補正
var PowerUpWeaponNameColor = 0xff80ff; // 強化済みの武器名の色
2020年10月22日 05点10分 6
level 5
48QERFG 楼主
續:注意此為七樓
(function() {
//-------------------------------------------------------
// 設定(内部)
//-------------------------------------------------------
//-------------------------------------------------------
// 以下プログラム
//-------------------------------------------------------
//-----------------------------------------------
// AbilityCalculatorクラス
//-----------------------------------------------
var alias01 = AbilityCalculator.getPower;
AbilityCalculator.getPower = function(unit, weapon) {
var power = alias01.call(this, unit, weapon);
// 従来の威力に強化分を加算
power += ItemPowerUpGetter.getNowAtk(weapon);
return power;
};
var alias02 = AbilityCalculator.getHit;
AbilityCalculator.getHit = function(unit, weapon) {
var hit = alias02.call(this, unit, weapon);
// 従来の命中に強化分を加算
hit += ItemPowerUpGetter.getNowAcc(weapon);
return hit;
};
var alias03 = AbilityCalculator.getCritical;
AbilityCalculator.getCritical = function(unit, weapon) {
var critical = alias03.call(this, unit, weapon);
// 従来の必殺率に強化分を加算
critical += ItemPowerUpGetter.getNowDeadly(weapon);
return critical;
};
2020年10月22日 05点10分 10
level 5
48QERFG 楼主
續:注意此為八樓
//-----------------------------------------------
// ItemSentenceクラス
//-----------------------------------------------
ItemSentence.AttackAndHit.drawItemSentence = function(x, y, item) {
var text;
text = root.queryCommand('attack_capacity');
ItemInfoRenderer.drawKeyword(x, y, text);
x += ItemInfoRenderer.getSpaceX();
// 攻撃力の数値をitem.getPow()からItemPowerUpGetter.getPow(item)に差し替え
NumberRenderer.drawRightNumber(x, y, ItemPowerUpGetter.getPow(item));
x += 42;
text = root.queryCommand('hit_capacity');
ItemInfoRenderer.drawKeyword(x, y, text);
x += ItemInfoRenderer.getSpaceX();
// 命中の数値をitem.getHit()からItemPowerUpGetter.getHit(item)に差し替え
NumberRenderer.drawRightNumber(x, y, ItemPowerUpGetter.getHit(item));
};
ItemSentence.CriticalAndRange.drawItemSentence = function(x, y, item) {
var text;
text = root.queryCommand('critical_capacity');
ItemInfoRenderer.drawKeyword(x, y, text);
x += ItemInfoRenderer.getSpaceX();
// 必殺の数値をitem.getCritical()からItemPowerUpGetter.getCritical(item)に差し替え
NumberRenderer.drawRightNumber(x, y, ItemPowerUpGetter.getCritical(item));
x += 42;
text = root.queryCommand('range_capacity');
ItemInfoRenderer.drawKeyword(x, y, text);
x += ItemInfoRenderer.getSpaceX();
this._drawRange(x, y, item);
}
//-----------------------------------------------
// LoadSaveScreenクラス
//-----------------------------------------------
var alias100 = LoadSaveScreen._getCustomObject;
LoadSaveScreen._getCustomObject= function() {
var obj = alias100.call(this);
// 武器強化の保存データを作成
obj.PowerUpWeaponDataObject_ = WeaponGrowthControl.createGrowthWeaponDataObject();
//root.log('_getCustomObject call '+(typeof obj.PowerUpWeaponDataObject_));
return obj;
}
// ロード
var alias101 = LoadSaveScreen._executeLoad
LoadSaveScreen._executeLoad= function() {
var object = this._scrollbar.getObject();
var powerUpWeaponDataObject_ = object.custom.PowerUpWeaponDataObject_;
// ロードファイルに独自データがあれば読み込む
if( typeof powerUpWeaponDataObject_ !== 'undefined' ) {
//root.log('growthWeaponDataObject_データあり');
// バックアップデータのロード
WeaponGrowthControl.updateGrowthWeaponDataObject(powerUpWeaponDataObject_);
// バックアップデータ読み込みのフラグセット
WeaponGrowthControl.setDataLoadFlag(true);
}
else {
root.log('customData データなし');
}
alias101.call(this);
}
//-----------------------------------------------
// TitleCommand.Interruptionクラス
//-----------------------------------------------
if( typeof TitleCommand.Interruption !== 'undefined' ) {
var alias125 = TitleCommand.Interruption.openCommand;
TitleCommand.Interruption.openCommand= function() {
var object = root.getLoadSaveManager().getInterruptionFileInfo();
var powerUpWeaponDataObject_ = object.custom.PowerUpWeaponDataObject_;
// 中断ファイルに独自データがあれば読み込む
if( typeof powerUpWeaponDataObject_ !== 'undefined' ) {
//root.log('中断データ growthWeaponDataObject_あり');
// バックアップデータのロード
WeaponGrowthControl.updateGrowthWeaponDataObject(powerUpWeaponDataObject_);
// バックアップデータ読み込みのフラグセット
WeaponGrowthControl.setDataLoadFlag(true);
}
alias125.call(this);
}
}
2020年10月22日 05点10分 11
level 5
48QERFG 楼主
續:注意此為九樓
//-----------------------------------------------
// MapCommand.Interruptionクラス
//-----------------------------------------------
if( typeof MapCommand.Interruption !== 'undefined' ) {
var alias150 = MapCommand.Interruption._getCustomObject;
MapCommand.Interruption._getCustomObject= function() {
var obj = alias150.call(this);
// 武器強化の保存データを作成
obj.PowerUpWeaponDataObject_ = WeaponGrowthControl.createGrowthWeaponDataObject();
//root.log('中断 _getCustomObject call '+(typeof obj.PowerUpWeaponDataObject_));
return obj;
}
}
//-----------------------------------------------
// serializeWeaponPowerUpArrayクラス
// 武器の強化度合いを以下の形式でオブジェクト化
//
// obj.id = ID(道具なら+ItemIdValue.BASE)
// obj.isWeapon = 武器かどうか(true:武器 false:道具)
// obj.AtkBoost = 強化された攻撃力
// obj.AtkCount = 攻撃力強化回数
// obj.HitBoost = 強化された命中
// obj.HitCount = 命中強化回数
// obj.CriBoost = 強化された必殺
// obj.CriCount = 必殺強化回数
//
//-----------------------------------------------
var serializeWeaponPowerUpArray = function(item) {
var obj = {};
obj.id = item.getId();
obj.isWeapon = item.isWeapon();
if( item.isWeapon() ) {
if( typeof item.custom.AtkBoost === 'number' ) {
obj.AtkBoost = item.custom.AtkBoost;
}
if( typeof item.custom.AtkCount === 'number' ) {
obj.AtkCount = item.custom.AtkCount;
}
if( typeof item.custom.HitBoost === 'number' ) {
obj.HitBoost = item.custom.HitBoost;
}
if( typeof item.custom.HitCount === 'number' ) {
obj.HitCount = item.custom.HitCount;
}
if( typeof item.custom.CriBoost === 'number' ) {
obj.CriBoost = item.custom.CriBoost;
}
if( typeof item.custom.CriCount === 'number' ) {
obj.CriCount = item.custom.CriCount;
}
}
else {
obj.id += ItemIdValue.BASE;
}
return obj;
}
//-----------------------------------------------
// serializeUnitWeaponPowerUpArrayクラス
//-----------------------------------------------
var serializeUnitWeaponPowerUpArray = function(unit) {
var i, item, obj;
var cnt = UnitItemControl.getPossessionItemCount(unit);
var arr = [];
for( i = 0;i < cnt;i++ ) {
item = UnitItemControl.getItem(unit, i);
obj = serializeWeaponPowerUpArray(item);
arr.push(obj);
//root.log(i+' objId:'+obj.id+' id:'+item.getId()+' p:'+obj.AtkBoost+' h:'+obj.HitBoost+' c:'+obj.CriBoost+' '+item.getName())
}
return arr;
}
//-----------------------------------------------
// serializeUnitWeaponクラス
//-----------------------------------------------
var serializeUnitWeapon = function(unit) {
var obj = {};
//root.log('serializeUnit:'+unit.getName());
obj._id = unit.getId(); // ID
obj._name = unit.getName(); // 名前
obj._unitType = unit.getUnitType(); // ユニットタイプ
obj._itemArray = serializeUnitWeaponPowerUpArray(unit); // 武器の成長度合い
// ユニットの強化武器データをバックアップ出来るようにデータ化
return obj;
}
2020年10月22日 05点10分 12
level 5
48QERFG 楼主
續:注意此為十樓
//-----------------------------------------------
// deserializeWeaponPowerUpArrayクラス
// 以下の形式で保存されていた武器の強化度合いを復帰
//
// obj.id = ID(道具なら+ItemIdValue.BASE)
// obj.isWeapon = 武器かどうか(true:武器 false:道具)
// obj.AtkBoost = 強化された攻撃力
// obj.AtkCount = 攻撃力強化回数
// obj.HitBoost = 強化された命中
// obj.HitCount = 命中強化回数
// obj.CriBoost = 強化された必殺
// obj.CriCount = 必殺強化回数
//
//-----------------------------------------------
var deserializeWeaponPowerUpArray = function(item, itemData) {
// データがなかったら何もせず終了
if( itemData == null ) {
root.log('武器強化.js itemData null');
return;
}
// アイテムがなかったら何もせず終了
if( item == null ) {
root.log('武器強化.js item null');
return;
}
// 保存データが道具の場合何もしない
if( itemData.isWeapon !== true ) {
return;
}
// 保存データとアイテムが違う場合は終了
// (※道具はID+ItemIdValue.BASEされてますが、チェックするのは武器だけなので単純比較してます)
if( itemData.id !== item.getId()) {
root.log('武器強化.js');
root.log('ID不一致 保存id:'+itemData.id+' 武器id:'+item.getId());
return;
}
// 攻撃力補正値をセット
if( typeof itemData.AtkBoost === 'number' ) {
item.custom.AtkBoost = itemData.AtkBoost;
}
// 攻撃力強化回数をセット
if( typeof itemData.AtkCount === 'number' ) {
item.custom.AtkCount = itemData.AtkCount;
}
// 命中補正値をセット
if( typeof itemData.HitBoost === 'number' ) {
item.custom.HitBoost = itemData.HitBoost;
}
// 命中強化回数をセット
if( typeof itemData.HitCount === 'number' ) {
item.custom.HitCount = itemData.HitCount;
}
// クリティカル補正値をセット
if( typeof itemData.CriBoost === 'number' ) {
item.custom.CriBoost = itemData.CriBoost;
}
// クリティカル強化回数をセット
if( typeof itemData.CriCount === 'number' ) {
item.custom.CriCount = itemData.CriCount;
}
}
//-----------------------------------------------
// deserializeUnitWeaponPowerUpArrayクラス
// 以下の形式で保存されていた武器の強化度合いを復帰
//
// obj.id = ID(道具なら+ItemIdValue.BASE)
// obj.isWeapon = 武器かどうか(true:武器 false:道具)
// obj.AtkBoost = 強化された攻撃力
// obj.AtkCount = 攻撃力強化回数
// obj.HitBoost = 強化された命中
// obj.HitCount = 命中強化回数
// obj.CriBoost = 強化された必殺
// obj.CriCount = 必殺強化回数
//
//-----------------------------------------------
var deserializeUnitWeaponPowerUpArray = function(unit, itemArray) {
var i, itemData, unitItem, cnt;
// データがなかったら何もせず終了
if( itemArray == null ) {
return;
}
// itemArrayにバックアップしていたアイテムを復帰
cnt = itemArray.length;
for( i = 0;i < cnt;i++ ) {
// ユニットが所持している品がない場合はスキップ
unitItem = UnitItemControl.getItem(unit, i);
if( unitItem == null ) {
root.log('武器強化.js');
root.log(unit.getName()+'の所持品なし:'+i);
continue;
}
itemData = itemArray[i];
//root.log('保存id:'+itemData.id+' 武器id:'+unitItem.getId()+' '+' p:'+itemData.AtkBoost+' h:'+itemData.HitBoost+' c:'+itemData.CriBoost+' '+unitItem.getName());
// 道具はスキップ
if( itemData.isWeapon !== true ) {
continue;
}
// 保存データと実際にユニットが所持している品が違う場合はスキップ
if( itemData.id !== unitItem.getId()) {
root.log('武器強化.js');
root.log(unit.getName()+'の所持品不一致:'+i);
root.log(itemData.id+':'+unitItem.getId()+' '+unitItem.getName());
continue;
}
// アイテムに武器の成長度合いを復帰
deserializeWeaponPowerUpArray(unitItem, itemData);
}
}
2020年10月22日 05点10分 13
level 5
48QERFG 楼主
續:注意此為十一樓
//-----------------------------------------------
// reCreateUnitByWeaponPowerUpクラス
//-----------------------------------------------
// 指定ユニットを取得
var reCreateUnitByWeaponPowerUp = function (unitObj, sceneType) {
var list, i, cnt;
var unit = null;
// ユニットタイプに応じたリストを取得
if( unitObj._unitType === UnitType.PLAYER ) {
list = PlayerList.getMainList();
}
else {
// 拠点の場合は敵、同盟ユニットは存在しえないのでnullを返す
if( sceneType === SceneType.REST ) {
//root.log('拠点なので未処理:'+unitObj._id+' '+unitObj._name);
return null;
}
// 拠点でなければリストを取得
if( unitObj._unitType === UnitType.ENEMY ) {
list = EnemyList.getMainList();
}
else {
list = AllyList.getMainList();
}
}
// リストの中に存在していればそいつを返す
cnt = list.getCount();
for(i = 0;i < cnt;i++) {
unit = list.getData(i);
if( unit.getId() === unitObj._id ) {
//root.log('リスト検出:'+unit.getId()+' '+unit.getName());
return unit;
}
}
// いなかった場合はnullを返す
root.log('武器強化.js');
root.log('存在しません ID:'+unitObj._id+' '+unitObj._name);
return null;
}
//-----------------------------------------------
// deserializeUnitWeaponクラス
//-----------------------------------------------
// ユニットに入れていた武器強化データの復帰
var deserializeUnitWeapon = function (unitObj, sceneType) {
var unit;
// データがなかったら何もせず終了
if( unitObj == null ) {
return null;
}
// 指定のユニットを取得
unit = reCreateUnitByWeaponPowerUp(unitObj, sceneType);
if( unit == null ) {
return null;
}
// ユニットの所持する武器情報を復帰
deserializeUnitWeaponPowerUpArray(unit, unitObj._itemArray); // アイテム
return unit;
}
//-----------------------------------------------
// WeaponGrowthControlクラス
//-----------------------------------------------
var WeaponGrowthControl = {
_isDataLoad : false, // データロードを行ったか
_unitArray : [], // ユニットごとのアイテムデータを保持
_stockArray : [], // ストックアイテムのデータを保持
// タイトルで「最初から」を選んだ場合はメンバ変数を初期化する
// ↑のメンバ変数が増減した場合はinitの中も修正してください
// (ソフトリセット後、「最初から」を選んで開始した時に中身を消す)
init: function() {
this._isDataLoad = false;
this._unitArray = [];
this._stockArray = [];
},
setDataLoadFlag: function(flag) {
this._isDataLoad = flag;
},
isDataLoadFlag: function() {
return this._isDataLoad;
},
// バックアップ用のデータを作成(セーブ時に呼び出す)
createGrowthWeaponDataObject: function() {
var customData = {};
customData._unitArray = this.makeUnitItemArray();
customData._stockArray = this.makeStockArray();
return customData;
},
// バックアップ用データのロード(ロード時に呼び出す)
updateGrowthWeaponDataObject: function(customData) {
this._unitArray = customData._unitArray;
this._stockArray = customData._stockArray;
},
// 復帰処理
restoreGrowthWeaponData: function() {
this.remakeUnitItemArray();
this.remakeStockArray();
},
// ユニット武器の成長劣化データデータ作成
makeUnitItemArray: function() {
var i, cnt, list, unit;
var arr = [];
// 自軍
list = PlayerList.getMainList();
cnt = list.getCount();
for( i = 0;i < cnt;i++ ) {
unit = list.getData(i);
arr.push( serializeUnitWeapon(unit) );
}
// 拠点でなければ敵と同盟のユニットデータを保存
if (root.getBaseScene() !== SceneType.REST) {
// 敵軍
list = EnemyList.getMainList();
cnt = list.getCount();
for( i = 0;i < cnt;i++ ) {
unit = list.getData(i);
arr.push( serializeUnitWeapon(unit) );
}
// 同盟軍
list = AllyList.getMainList();
cnt = list.getCount();
for( i = 0;i < cnt;i++ ) {
unit = list.getData(i);
arr.push( serializeUnitWeapon(unit) );
}
}
return arr;
},
// バックアップデータからユニット武器の成長劣化を復元
remakeUnitItemArray: function() {
var i, cnt;
var sceneType = root.getBaseScene();
//root.log('remakeUnitItemArray len:'+this._unitArray.length);
if( this._unitArray == null || this._unitArray.length === 0 ) {
return;
}
cnt = this._unitArray.length;
for( i = 0;i < cnt;i++ ) {
deserializeUnitWeapon(this._unitArray[i], sceneType);
}
},
// ストック内武器の成長劣化データ作成
makeStockArray: function() {
var i, item, obj;
var stockArr = StockItemControl.getStockItemArray();
var cnt = stockArr.length;
var arr = [];
//root.log('武器強化.js stock');
for( i = 0;i < cnt;i++ ) {
item = stockArr[i];
obj = serializeWeaponPowerUpArray(item);
arr.push(obj);
//root.log(i+' objId:'+obj.id+' id:'+item.getId()+' p:'+obj.AtkBoost+' h:'+obj.HitBoost+' c:'+obj.CriBoost+' '+item.getName())
}
return arr;
},
// バックアップデータからストック内武器の成長劣化を復元
remakeStockArray: function() {
var i, cnt;
var stockArr = StockItemControl.getStockItemArray();
//root.log('remakeStockArray len:'+this._stockArray.length);
if( this._stockArray == null || this._stockArray.length === 0 ) {
return;
}
cnt = this._stockArray.length;
for( i = 0;i < cnt;i++ ) {
deserializeWeaponPowerUpArray(stockArr[i], this._stockArray[i]);
//root.log('保存id:'+this._stockArray[i].id+' 武器id:'+stockArr[i].getId()+' '+' p:'+this._stockArray[i].AtkBoost+' h:'+this._stockArray[i].HitBoost+' c:'+this._stockArray[i].CriBoost+' '+stockArr[i].getName());
}
}
};
2020年10月22日 05点10分 14
level 5
48QERFG 楼主
續:注意此為十二樓
//-----------------------------------------------
// TitleCommandクラス
//-----------------------------------------------
// タイトルで「初めから」を選択した場合はWeaponGrowthControlクラスの中身を初期化
var alias200 = TitleCommand.NewGame._createSubObject;
TitleCommand.NewGame._createSubObject= function() {
alias200.call(this);
// root.log('WeaponGrowthControl 初期化');
// WeaponGrowthControlクラスの初期化
WeaponGrowthControl.init();
}
//-----------------------------------------------
// FreeAreaSceneクラス
//-----------------------------------------------
// フリーエリアでの処理
var alias300 = FreeAreaScene._completeSceneMemberData;
FreeAreaScene._completeSceneMemberData= function() {
if( WeaponGrowthControl.isDataLoadFlag() === true ) {
//root.log('FreeAreaSceneで復帰')
// 復帰処理
WeaponGrowthControl.restoreGrowthWeaponData();
// 復帰用に保持していたデータのクリア
WeaponGrowthControl.init();
}
// 従来処理
alias300.call(this);
}
//-----------------------------------------------
// RestSceneクラス
//-----------------------------------------------
// 拠点エリアでの処理
var alias400 = RestScene._completeSceneMemberData;
RestScene._completeSceneMemberData= function() {
if( WeaponGrowthControl.isDataLoadFlag() === true ) {
//root.log('RestSceneで復帰')
// 復帰処理
WeaponGrowthControl.restoreGrowthWeaponData();
// 復帰用に保持していたデータのクリア
WeaponGrowthControl.init();
}
// 従来処理
alias400.call(this);
}
//-----------------------------------------------
// BattleSetupSceneクラス
//-----------------------------------------------
// BattleSetupSceneでの処理
var alias450 = BattleSetupScene._completeSceneMemberData;
BattleSetupScene._completeSceneMemberData= function() {
if( WeaponGrowthControl.isDataLoadFlag() === true ) {
//root.log('BattleSetupSceneで復帰')
// 復帰処理
WeaponGrowthControl.restoreGrowthWeaponData();
// 復帰用に保持していたデータのクリア
WeaponGrowthControl.init();
}
// 従来処理
alias450.call(this);
}
//-----------------------------------------------
// MarshalCommandWindowクラス
//-----------------------------------------------
// ショップの追加処理(alias呼びして差し替える?)
var alias500 = MarshalCommandWindow._appendShop;
MarshalCommandWindow._appendShop= function(groupArray) {
alias500.call(this, groupArray);
var i, shopData;
var list = root.getCurrentSession().getCurrentMapInfo().getShopDataList();
var count = list.getCount();
var index = groupArray.length - count;
// 現在章のマップ情報のカスタムにpowerUpWeapon:nが指定されていた場合、n番目の店を武器強化にする(nは0~[店数-1]の範囲)
var powerUpWeapon = -1;
var mapinfo = root.getCurrentSession().getCurrentMapInfo();
if( typeof mapinfo.custom.powerUpWeapon === 'number' ){
powerUpWeapon = mapinfo.custom.powerUpWeapon;
}
for (i = count-1; i >= 0; i--) {
shopData = list.getData(i);
if (shopData.getShopItemArray().length > 0) {
if( i == powerUpWeapon ) {
// n番目の店を武器強化にする(nは0~[店数-1]の範囲)
groupArray.splice(index+i, 1);
groupArray.insertObject(MarshalCommand.PowerUpWeaponShop, index+i);
groupArray[index+i].setShopData(shopData);
break;
}
}
}
}
//-----------------------------------------------
// MarshalCommand.PowerUpWeaponShopクラス(派生)
//-----------------------------------------------
MarshalCommand.PowerUpWeaponShop = defineObject(MarshalCommand.Shop, // MarshalCommand.Shopクラスの派生
{
checkCommand: function() {
var screenParam = this._createScreenParam();
if (screenParam.unit === null) {
return false;
}
this._shopLayoutScreen = createObject(PowerUpWeaponShopLayoutScreen); // 強化屋のレイアウトクラス呼び出しに差し替え
this._shopLayoutScreen.setScreenInteropData(screenParam.shopLayout.getShopInteropData());
SceneManager.addScreen(this._shopLayoutScreen, screenParam);
return true;
}
}
);
2020年10月22日 05点10分 15
level 5
48QERFG 楼主
續:注意此為十三樓
//-----------------------------------------------
// ShopScreenLauncherクラス
//-----------------------------------------------
var alias600 = ShopScreenLauncher.openScreenLauncher;
ShopScreenLauncher.openScreenLauncher= function() {
var i, count, list, shopData, powerUpWeapon;
var scene = root.getBaseScene();
// 拠点の店にカスタムパラメータ{powerUpWeapon:0}があれば強化屋をセット
if( scene === SceneType.REST && typeof this._shopData.custom.powerUpWeapon === 'number' ) {
var screenParam = this._createScreenParam();
// isPowerUpUnitItemInRestがtrueでなければユニットの武器強化が出来ないPowerUpWeaponShopLayoutScreenをセット
if( isPowerUpUnitItemInRest !== true ) {
this._screen = createObject(PowerUpWeaponShopLayoutScreen);
}
// isPowerUpUnitItemInRestがtrueならユニットの武器強化が出来るRestPowerUpWeaponShopLayoutScreenをセット
else {
this._screen = createObject(RestPowerUpWeaponShopLayoutScreen);
}
this._screen.setScreenInteropData(screenParam.shopLayout.getShopInteropData());
SceneManager.addScreen(this._screen, screenParam);
return;
}
// 出撃前画面の店の場合、MapInfoにカスタムパラメータ{powerUpWeapon:XX}があれば強化屋をセット
else if( scene === SceneType.BATTLESETUP ) {
powerUpWeapon = root.getCurrentSession().getCurrentMapInfo().custom.powerUpWeapon;
if( typeof powerUpWeapon === 'number' ){
list = root.getCurrentSession().getCurrentMapInfo().getShopDataList();
count = list.getCount();
for (i = 0; i < count; i++) {
shopData = list.getData(i);
// 店の名前がマップ情報の店名と一致し、{powerUpWeapon:XX}の位置にある場合は強化屋をセット
if( shopData.getName() === this._shopData.getName() && i === powerUpWeapon ) {
var screenParam = this._createScreenParam();
// isPowerUpUnitItemInRestがtrueでなければユニットの武器強化が出来ないPowerUpWeaponShopLayoutScreenをセット
if( isPowerUpUnitItemInRest !== true ) {
this._screen = createObject(PowerUpWeaponShopLayoutScreen);
}
// isPowerUpUnitItemInRestがtrueならユニットの武器強化が出来るRestPowerUpWeaponShopLayoutScreenをセット
else {
this._screen = createObject(RestPowerUpWeaponShopLayoutScreen);
}
this._screen.setScreenInteropData(screenParam.shopLayout.getShopInteropData());
SceneManager.addScreen(this._screen, screenParam);
return;
}
}
}
}
alias600.call(this);
}
//-----------------------------------------------
// StockItemControlクラス
//-----------------------------------------------
StockItemControl.getMatchItem= function(targetItem) {
var i, item;
var count = this.getStockItemCount();
for (i = 0; i < count; i++) {
item = this.getStockItem(i);
// 完全に一致しているかのチェックとしてitem === targetItemを追加
// (これが無いと、同一種アイテムが複数ある時に動作が変になる)
if (ItemControl.compareItem(item, targetItem) && item === targetItem) {
return item;
}
}
return null;
}
//-------------------------------------
// ItemListScrollbarクラス
//-------------------------------------
var alias700 = ItemListScrollbar._getTextColor;
ItemListScrollbar._getTextColor= function(object, isSelect, index) {
var item = object;
// 身支度プラグイン用の対応処理
if( typeof item.getName === 'undefined' ) {
item = object.item;
}
// itemが武器道具であれば強化武器のチェックを行う(武器道具ならgetName()関数が存在する筈なのでそれを元に判定している)
if( typeof item.getName !== 'undefined' ) {
// 交換不能品ではなく、かつ、攻撃力、命中、必殺のいずれかを1段階以上強化した武器なら強化武器の色にする
if (this._isWarningItem(item) !== true && ItemPowerUpGetter.isPowUpMoreThanOnce(item) === true) {
return PowerUpWeaponNameColor;
}
}
return alias700.call(this, object, isSelect, index);
}
//-------------------------------------
// SellScrollbarクラス
//-------------------------------------
SellScrollbar.drawScrollContent= function(x, y, object, isSelect, index) {
var textui = this.getParentTextUI();
var color = this._getTextColor(object, isSelect, index);
var font = textui.getFont();
var item = object;
ItemRenderer.drawShopItem(x, y, item, color, font, Calculator.calculateSellPrice(item), 0);
}
SellScrollbar._getTextColor= function(object, isSelect, index) {
if (ItemPowerUpGetter.isPowUpMoreThanOnce(object) === true) {
return PowerUpWeaponNameColor;
}
var textui = this.getParentTextUI();
var color = textui.getColor();
return color;
}
//-------------------------------------
// DurabilityScrollbarクラス
//-------------------------------------
if( typeof DurabilityScrollbar !== 'undefined' ) {
var alias710 = DurabilityScrollbar._getTextColor;
DurabilityScrollbar._getTextColor= function(object, isSelect, index) {
if (this._isItemRepairable(object) && ItemPowerUpGetter.isPowUpMoreThanOnce(object)) {
return PowerUpWeaponNameColor;
}
return alias710.call(this, object, isSelect, index);
}
}
})();
2020年10月22日 05点10分 16
level 5
48QERFG 楼主
續:注意此為十四樓
//-------------------------------------------------------
// 以下プログラム(外部)
//-------------------------------------------------------
//-----------------------------------------------
// PowerUpWeaponShopLayoutScreenクラス(派生)
//-----------------------------------------------
ShopLayoutMode.POWERUP = 555; // 追加(強化)
ShopLayoutMode.POWERUPQUESTION = 556; // 追加(強化後の確認)
var PowerUpWeaponShopLayoutScreen = defineObject(ShopLayoutScreen, // ShopLayoutScreenの派生
{
_powerUpSettingWindow: null,
_WPU_questionWindow: null,
moveScreenCycle: function() {
var mode = this.getCycleMode();
var result = ShopLayoutScreen.moveScreenCycle.call(this)
// 強化処理
if (mode === ShopLayoutMode.POWERUP) {
result = this._movePowerUp();
}
// 強化後の確認処理
else if (mode === ShopLayoutMode.POWERUPQUESTION) {
result = this._movePowerUpQuestion();
}
return result;
},
drawScreenCycle: function() {
ShopLayoutScreen.drawScreenCycle.call(this);
var mode = this.getCycleMode();
var width = this._getTopWindowWidth();
var height = this._getTopWindowHeight();
var xBase = LayoutControl.getCenterX(-1, width);
var yBase = LayoutControl.getCenterY(-1, height);
// 強化、及び、強化後の確認では強化画面を表示
if (mode === ShopLayoutMode.POWERUP || mode === ShopLayoutMode.POWERUPQUESTION) {
yBase += this._keeperWindow.getWindowHeight();
this._powerUpSettingWindow.drawWindow(xBase+WPU_PowerUpSettingHoseiX, yBase+WPU_PowerUpSettingHoseiY);
}
// 強化後の確認では強化確認画面を表示
if (mode === ShopLayoutMode.POWERUPQUESTION) {
this._WPU_questionWindow.drawWindow(xBase+WPU_PowerUpQuestionHoseiX, yBase+WPU_PowerUpQuestionHoseiY);
}
},
getPowerUpPrice: function() {
return this._powerUpSettingWindow.getPowerUpPrice();
},
setPowerUp: function() {
this._powerUpSettingWindow.setPowerUp();
},
_prepareScreenMemberData: function(screenParam) {
ShopLayoutScreen._prepareScreenMemberData.call(this, screenParam);
this._buyItemWindow = createWindowObject(UnitItemListWindowForPowerUp, this);
this._buySellWindow = createWindowObject(PowerUpWeaponSellWindow, this);
this._activeSelectWindow = this._buySellWindow;
this._activeItemWindow = this._buyItemWindow;
this._createShopMessageTable(this._shopLayout);
this._powerUpSettingWindow = createWindowObject(PowerUpSettingWindow, this);
this._WPU_questionWindow = createWindowObject(QuestionWindow, this); // 強化後の確認用ウィンドウ
this._WPU_questionWindow.setQuestionMessage(WPU_PowerUpQuestionText);
},
_moveBuySellSelect: function() {
var result = this._buySellWindow.moveWindow();
if (result === BuySellSelectResult.BUY) {
//強化可能アイテムを所持していれば強化へ(内部的には購入処理)
if (this._buyItemWindow.getItemCount() > 0) {
this._startMessage(this._shopMessageTable.QuestionBuy, ShopLayoutMode.BUY);
}
else {
this._playOperationBlockSound();
}
}
else if (result === BuySellSelectResult.SELL) {
if (this._isStockSelectable()) {
// ユニットまたはストックの選択に進む
this._processMode(ShopLayoutMode.VISITORSELECT);
}
else {
if (this._buySellWindow.isPossessionItem()) {
this._startMessage(this._shopMessageTable.QuestionSell, ShopLayoutMode.SELL);
}
else {
this._startMessage(this._shopMessageTable.NoItemBring, ShopLayoutMode.BUYSELLSELECT);
}
}
}
else if (result === BuySellSelectResult.CANCEL) {
return MoveResult.END;
}
return MoveResult.CONTINUE;
},
_movePowerUp: function() {
var input = this._powerUpSettingWindow.moveWindow();
if (input === ScrollbarInput.SELECT) {
this._WPU_questionWindow.setQuestionActive(true);
this.changeCycleMode(ShopLayoutMode.POWERUPQUESTION);
}
else if (input === ScrollbarInput.CANCEL) {
this._startMessage(this._shopMessageTable.QuestionBuy, ShopLayoutMode.BUY);
}
return MoveResult.CONTINUE;
},
_movePowerUpQuestion: function() {
var ans, price;
var result = MoveResult.CONTINUE;
if (this._WPU_questionWindow.moveWindow() !== MoveResult.CONTINUE) {
ans = this._WPU_questionWindow.getQuestionAnswer();
if (ans === QuestionAnswer.YES) {
price = this.getPowerUpPrice() * -1;
this.setPowerUp();
// ゴールドを表示するウインドウの内容を変更する
this._currencyWindow.startPriceCount(price);
// 所持金の更新
this.setGold(this.getGold() + price);
this._isSale = true;
// 買ったときはアイテムを増やし、売ったときはアイテムを減らすから常に呼び出す
this._sellItemWindow.updateItemArea();
this._buyItemWindow.updateItemArea();
this._playSaleSound();
this._startMessage(this._shopMessageTable.QuestionBuy, ShopLayoutMode.BUY);
}
else {
this._WPU_questionWindow.setQuestionActive(false);
this.changeCycleMode(ShopLayoutMode.POWERUP);
}
}
return MoveResult.CONTINUE;
},
_moveBuy: function() {
var input = this._buyItemWindow.moveWindow();
var item;
// 決定時、強化するアイテムを設定して強化画面に遷移
if (input === ScrollbarInput.SELECT) {
item = this._activeItemWindow.getShopSelectItem();
this._powerUpSettingWindow.setPowerUpData(item);
this.changeCycleMode(ShopLayoutMode.POWERUP);
}
else if (input === ScrollbarInput.CANCEL) {
this._startMessage(this._shopMessageTable.OtherMessage, ShopLayoutMode.BUYSELLSELECT);
}
return MoveResult.CONTINUE;
},
_startSale: function(isBuy, isForceStock) {
var price = this._itemSale.startSale(isBuy, isForceStock, this._activeItemWindow.getShopSelectItem());
// ゴールドを表示するウインドウの内容を変更する
this._currencyWindow.startPriceCount(price);
this._isSale = true;
// 強化時は常に呼び出すようにしておく
this._sellItemWindow.updateItemArea();
this._buyItemWindow.updateItemArea();
this._playSaleSound();
},
_playOperationBlockSound: function() {
MediaControl.soundDirect('operationblock');
}
}
);
2020年10月22日 05点10分 17
level 5
48QERFG 楼主
續:注意此為十五樓
//-----------------------------------------------
// PowerUpWeaponSellWindowクラス(派生)
//-----------------------------------------------
var PowerUpWeaponSellWindow = defineObject(BuySellWindow, // BuySellWindowの派生
{
moveWindowContent: function() {
var input = this._scrollbar.moveInput();
var result = BuySellSelectResult.NONE;
if (input === ScrollbarInput.SELECT) {
if (this._scrollbar.getIndex() === 0) {
result = BuySellSelectResult.BUY;
}
else {
result = BuySellSelectResult.SELL;
}
}
else if (input === ScrollbarInput.CANCEL) {
result = BuySellSelectResult.CANCEL;
}
else {
result = BuySellSelectResult.NONE;
}
return result;
},
getSelectTextArray: function() {
var arr = [WPU_SelectText_PowerUp, StringTable.ShopLayout_SelectSell];
return arr;
}
}
);
//-----------------------------------------------
// UnitItemListWindowForPowerUpクラス(派生)
// 強化屋でユニットの所持品を並べて表示する部分(ここで指定したアイテムを強化ウィンドウへ引き渡す)
//-----------------------------------------------
var UnitItemListWindowForPowerUp = defineObject(SellItemWindow, // SellItemWindowの派生
{
moveWindowContent: function() {
var item;
var input = this._scrollbar.moveInput();
if (this._scrollbar.checkAndUpdateIndex()) {
this.getParentInstance().notifyInfoItem(this._scrollbar.getObject());
}
// 決定時は選択したアイテムが強化可能かチェック
if( input === ScrollbarInput.SELECT ) {
item = this._scrollbar.getObject();
// 選択したアイテムが強化可能なら決定音
if( ItemPowerUpGetter.isPowerUpWeapon(item) === true ) {
this._playSelectSound();
}
// 選択したアイテムが強化不可ならブブー音を鳴らし、ScrollbarInput.NONEを返す(決定処理に移行しないため)
else {
this._playOperationBlockSound();
input = ScrollbarInput.NONE;
}
}
return input;
},
getScrollbarObject: function() {
return UnitItemListScrollbarForPowerUp;
},
updateItemArea: function() {
var i, item, count;
var unit = this.getParentInstance().getVisitor();
if (this._unit === unit) {
this._scrollbar.saveScroll();
}
this._scrollbar.resetScrollData();
if (unit !== null) {
count = DataConfig.getMaxUnitItemCount();
for (i = 0; i < count; i++) {
item = UnitItemControl.getItem(unit, i);
if (item !== null) {
this._scrollbar.objectSet(item);
}
}
}
else {
count = StockItemControl.getStockItemCount();
for (i = 0; i < count; i++) {
item = StockItemControl.getStockItem(i);
if (item !== null) {
this._scrollbar.objectSet(item);
}
}
}
this._scrollbar.objectSetEnd();
this._scrollbar.resetAvailableData();
// 売却先を変更していなければ、前回のスクロール位置を維持する
if (this._unit === unit) {
this._scrollbar.restoreScroll();
}
this._unit = unit;
},
_playSelectSound: function() {
MediaControl.soundDirect('commandselect');
},
_playOperationBlockSound: function() {
MediaControl.soundDirect('operationblock');
}
}
);
2020年10月22日 05点10分 18
1 2 尾页