遅延ダメージ

解除された瞬間にダメージを与えるステートを作ります。

※2017/04/18 条件指定にミスがあり、フリーズする可能性がある不具合を修正


作り方

ターン経過によるステート解除の処理を行っているのは、
singleton-statecontrolのStateControl.decreaseTurnです。
ここを特定のカスパラを持っているステートの解除時に別のステートを付与するように変更します。

StateControl.decreaseTurn = function(list) {
	var i, j, count, count2, unit, arr, list2, turn, turnState;
	var next_state = null;
	var list3 = root.getBaseData().getStateList();
	
	count = list.getCount();
	for (i = 0; i < count; i++) {
		arr = [];
		unit = list.getData(i);
		list2 = unit.getTurnStateList();
		count2 = list2.getCount();
		for (j = 0; j < count2; j++) {
			turnState = list2.getData(j);
			turn = turnState.getTurn();
			if (turn <= 0) {
				continue;
			}
			
			// ターンを1つ減少させ、新たに設定する
			turn--;
			turnState.setTurn(turn);
			if (turn <= 0) {
				// ステートを後で解除するために配列へ保存する
				arr.push(turnState.getState());
			}
		}
		
		count2 = arr.length;
		for (j = 0; j < count2; j++) {
			if (typeof arr[j].custom.next_state === 'number'){
				next_state = list3.getDataFromId(arr[j].custom.next_state);
			}
			this.arrangeState(unit, arr[j], IncreaseType.DECREASE);
			if (next_state !== null){
				this.arrangeState(unit, next_state, IncreaseType.INCREASE);
				next_state = null;
			}
		}
	}
};

  • そのターンで解除されるステートのカスタムパラメータに{next_state:(ステートのID)}があれば、
    解除された直後にそのステートを付与します

このプラグインを導入した状態で以下のマップ共通イベントを作ります。
  • 自動開始イベント(前)
  • 条件:「ユニット」
    フィルター:全軍指定
    データ条件:上記で設定されたnext_stateで設定されたステート

  • イベントコマンド
    • イベントの全体処理:ダメージを与える
      フィルター:全軍指定
      有効相手:上記で設定されたnext_stateで設定されたステート
      ダメージ量はお好みで
    • イベントの全体処理:ステート付加
      上記で設定されたnext_stateで設定されたステートを解除
      他は上のイベントコマンドのコピペでOK
    • イベントの状態変更でこのイベントの実行済み解除

これで完成です。
もう少し凝りたい人はダメージを与える前に全体処理で有効相手に対してアニメの再生を行うと良いでしょう。

他の使い方

  • 効果をHP回復に差し替えて遅延回復ステートに。
  • 何かしらのイベントのトリガーに。




最終更新:2018年08月09日 03:52