ページ 11

トゲ床の被ダメする対象のアクターについて

Posted: 2021年5月22日(土) 01:12
by ネクロノ蜜柑
こんばんわ。いつもお世話になっております。

下記のイベントを作成してトゲ床を作成しました。(シロップ様仕様を参考にしました)
先頭のアクターには、しっかり被ダメするのですが、パーティーで隊列歩行する場合は後列のアクターには被ダメしません。トゲ床の被ダメを後列のアクターまで対象する方法はございますか?トゲが当たったアクターのみダメージをくらうイメージとなります。よろしくお願い致します_(._.)_

Re: トゲ床の被ダメする対象のアクターについて

Posted: 2021年5月22日(土) 05:41
by 名無し蛙
どうもこんにちは。
移動ルートの設定で起動判定を持たせる発想は悪くないんですけど_triggerは弄るべきではないと思います。

コード: 全て選択

if (($gamePlayer.followers()._data.concat($gamePlayer)).some(c => this.pos(c.x, c.y))) this.start();
とりあえずこれでプレイヤ及びフォロワーが自分のイベントに重なったらイベント起動、になります。
流石に枠が狭すぎるので判定だけに留めておきます。
次いでイベント側のスクリプトで

コード: 全て選択

const event = this.character(0);
const characters =$gamePlayer.followers()._data.concat($gamePlayer);
const actors = characters.filter(c => event.pos(c.x, c.y)).map(c => 'actor' in c ? c.actor() : $gameParty.leader());
actors.forEach(actor => {
    actor.gainHp(-100);
    AudioManager.playSe({ name: 'Slash5', volume: 90, pitch: 100 });
});
これでダメージとついでにSEを鳴らす基本処理になる、と思います。
もう少しスマートに書けそうな気がしますけど今思い浮かぶのはこんな感じですね。

Re: トゲ床の被ダメする対象のアクターについて

Posted: 2021年5月22日(土) 13:30
by ネクロノ蜜柑
名無し蛙 さんが書きました:どうもこんにちは。
移動ルートの設定で起動判定を持たせる発想は悪くないんですけど_triggerは弄るべきではないと思います。

コード: 全て選択

if (($gamePlayer.followers()._data.concat($gamePlayer)).some(c => this.pos(c.x, c.y))) this.start();
とりあえずこれでプレイヤ及びフォロワーが自分のイベントに重なったらイベント起動、になります。
流石に枠が狭すぎるので判定だけに留めておきます。
次いでイベント側のスクリプトで

コード: 全て選択

const event = this.character(0);
const characters =$gamePlayer.followers()._data.concat($gamePlayer);
const actors = characters.filter(c => event.pos(c.x, c.y)).map(c => 'actor' in c ? c.actor() : $gameParty.leader());
actors.forEach(actor => {
    actor.gainHp(-100);
    AudioManager.playSe({ name: 'Slash5', volume: 90, pitch: 100 });
});
これでダメージとついでにSEを鳴らす基本処理になる、と思います。
もう少しスマートに書けそうな気がしますけど今思い浮かぶのはこんな感じですね。

名無し蛙様

ご対応ありがとうございます。名無し蛙さんの仰る通りにイベントを組んだら後列のメンバーにも被ダメしました!ありがとうございます_(._.)_

ただ、トゲ床で被ダメ中に移動した時に、後列のアクターが居ない場合に下記のエラーが表示されます。このエラーを回避する方法はございますでしょうか?お手数をおかけしますが、ご確認のほどよろしくお願い致します。

Re: トゲ床の被ダメする対象のアクターについて

Posted: 2021年5月22日(土) 17:22
by 名無し蛙
そういえばパーティ人数が3人以下の時
透明なフォロワーを引き連れる仕様である事を失念していました。

コード: 全て選択

if (($gamePlayer.followers()._data.filter(f => !!f.actor()).concat($gamePlayer)).some(c => this.pos(c.x, c.y))) this.start();

コード: 全て選択

const event = this.character(0);
const characters =$gamePlayer.followers()._data.filter(f => !!f.actor()).concat($gamePlayer);
const actors = characters.filter(c => event.pos(c.x, c.y)).map(c => 'actor' in c ? c.actor() : $gameParty.leader());
actors.forEach(actor => {
    actor.gainHp(-100);
    AudioManager.playSe({ name: 'Slash5', volume: 90, pitch: 100 });
});
あとthis._trigger = -1で従来のイベントトリガーを取り消す方法ですが悪くないですね。
デフォルト値が0なので不整合が発生する可能性があるかと思ったんですが
既存のコマンドでは代替手段が無いようですし使用しても問題無いと思います。

Re: トゲ床の被ダメする対象のアクターについて

Posted: 2021年5月22日(土) 23:38
by ネクロノ蜜柑
名無し蛙 さんが書きました:そういえばパーティ人数が3人以下の時
透明なフォロワーを引き連れる仕様である事を失念していました。

コード: 全て選択

if (($gamePlayer.followers()._data.filter(f => !!f.actor()).concat($gamePlayer)).some(c => this.pos(c.x, c.y))) this.start();

コード: 全て選択

const event = this.character(0);
const characters =$gamePlayer.followers()._data.filter(f => !!f.actor()).concat($gamePlayer);
const actors = characters.filter(c => event.pos(c.x, c.y)).map(c => 'actor' in c ? c.actor() : $gameParty.leader());
actors.forEach(actor => {
    actor.gainHp(-100);
    AudioManager.playSe({ name: 'Slash5', volume: 90, pitch: 100 });
});
あとthis._trigger = -1で従来のイベントトリガーを取り消す方法ですが悪くないですね。
デフォルト値が0なので不整合が発生する可能性があるかと思ったんですが
既存のコマンドでは代替手段が無いようですし使用しても問題無いと思います。

名無し蛙様

ご対応ありがとうございます_(._.)_
トゲが飛び出す時に被ダメはするのですが、トゲが出てる状態で被ダメさせる事に苦戦しましたが、名無し蛙さんの仰るthis._trigger = -1と組み合わせる事で出来ました!ありがとうございます!助かりました!!