Re: 現在制作中の戦闘システムについて
Posted: 2024年12月22日(日) 01:12
こんな感じです
コード: 全て選択
// 最後に行動したアクターを取得
const battlerId = $gameTemp.lastActionData(2);
const battler = $gameActors.actor(battlerId);
// メモ欄を参照して追加スキルを持つ防具の配列を取得
const armors = battler.armors().filter(armor => armor.meta.hasOwnProperty("追加スキル"));
// ↑を追加スキルの配列に変換
const additionalActions = armors.map(armor => {
const action = new Game_Action(battler, true);
action.setSkill(Number(armor.meta["追加スキル"]));
action.setTarget(battler._lastTargetIndex);
return action;
}
)
// アクションリストに追加スキルをマージ
if (additionalActions.length > 0) {
for (let i = 0; i < battler._actions.length; i += additionalActions.length + 1) {
battler._actions.splice(i + 1, 0, ...additionalActions);
}
console.log(battler._actions);
BattleManager.forceAction(battler);
this.setWaitMode("action");
}
コード: 全て選択
const battler = $gameActors.actor($gameVariables.value(1));
// メモ欄を参照して追加スキルを持つ防具の配列を取得
const armors = battler.armors().filter(armor => armor.meta.hasOwnProperty("追加スキル"));
// ↑を追加スキルの配列に変換
const additionalActions = armors.map(armor => {
const action = new Game_Action(battler, true);
action.setSkill(Number(armor.meta["追加スキル"]));
action.setTarget(battler._lastTargetIndex);
return action;
}
)
// アクションリストに追加スキルをマージ
if (additionalActions.length > 0) {
for (let i = 0; i < battler._actions.length; i += additionalActions.length + 1) {
battler._actions.splice(i + 1, 0, ...additionalActions);
}
console.log(battler.actorId(), battler._actions);
BattleManager.forceAction(battler);
this.setWaitMode("action");
}
コード: 全て選択
const slotId = 2; //0から始まる装備スロット番号
const tag = '追加スキル'; //メモの名前
const battler = $gameActors.actor($gameVariables.value(1));
const equips = battler && battler.equips();
const armor = equips && equips[slotId];
const skillId = armor && Number(armor.meta[tag]);
if (skillId) {
battler.forceAction(skillId, -2);
BattleManager.forceAction(battler);
this.setWaitMode('action');
}