トラマナ
覚えたのでつくるかー
トヘロスのとき同様、覚えたのでつくることにしました。トヘロスのときは、どこを歩いていても残歩数はどんどん減らしていいので、ゲーム側で持っている累計歩数を使えばよかったんですが、トラマナの場合は「ダメージ床の上にいるときは残歩数を減らさない」という仕様が必要なのでこのテは使えませんでした。なので、歩くごとに処理する部分もスクリプトで書いています。
1歩ごとの処理はここ
const _Game_Party_onPlayerWalk = Game_Party.prototype.onPlayerWalk;
Game_Party.prototype.onPlayerWalk = function() {
if (!$gamePlayer.isOnDamageFloor()
&& $gameSwitches.value(params.switchId)) {
let leftSteps = $gameVariables.value(params.varId);
leftSteps--;
$gameVariables.setValue(params.varId, leftSteps);
if (leftSteps == 0) {
$gameSwitches.setValue(params.switchId, false);
}
}
_Game_Party_onPlayerWalk.call(this);
};
Game_Party.onPlayerWalk の処理の直前に割り込んで、ダメージ床の上にいなければ残歩数を減らして、0になったらトラマナ有効スイッチを切るということをしています。
ダメージをキャンセルしてるのはここ
const _Game_Actor_basicFloorDamage = Game_Actor.prototype.basicFloorDamage;
Game_Actor.prototype.basicFloorDamage = function() {
if ($gameSwitches.value(params.switchId)) {
return 0;
}
for (const equip of this.equips()) {
if (equip && equip.meta && equip.meta.disableFloorDamage == 1) {
return 0;
}
}
return _Game_Actor_basicFloorDamage.call(this);
};
ダメージの基本値を算出する処理の直前に割り込んで、トラマナ有効スイッチがONなら0を返す、あるいはそのキャラが指定のメタタグが書いてある装備品を使ってたら0を返す、という処理をしています。
ちょっと試した感じトラマナっぽい動きをしてるのでこれでいっかなーという感じです。
ダウンロードはこちら
CSVN_disableFloorDamage.js
※右クリックでDL。