查看: 909|回复: 2

[原创发布] 一点小功能:依据状态的强制行动

[复制链接]
梦石
0
星屑
220
在线时间
43 小时
注册时间
2025-10-23
回帖
7
发表于 2026-3-29 19:11:34 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
该插件最初是我为了解决使用Yep的Atb系统时使用无法行动类效果时出现的问题而想出的解决方法——我将行动强制变为空技能不就好了吗?
如你所见,会在行动时将拥有指定状态的对象最终输出技能强制修改为指定技能
假设有一技能92
我给某状态附加上<Force Skill: 92>
那么它就会将最后的行动输出结果强制变为92号技能

代码很简单,就是一个简单的检测+修改:
[pre lang="javascript"]
/*:
* @plugindesc 基于状态的强制行动
* @author X_R
* @help 对状态使用<Force Skill: X>(X为技能ID)使其在拥有状态时只能使用固定技能
* /

(function() {

function getForcedSkill(battler) {
    var states = battler.states();
    for (var i = 0; i < states.length; i++) {
        var state = states;
        if (state.meta["Force Skill"]) {
            return Number(state.meta["Force Skill"]);
        }
    }
    return null;
}

var _startAction = BattleManager.startAction;
BattleManager.startAction = function() {

    var subject = this._subject;

    if (subject) {

        var skillId = getForcedSkill(subject);

        if (skillId && !subject._forceLock) {

            subject._forceLock = true;

            var action = new Game_Action(subject);
            action.setSkill(skillId);

            // 目标(自己)
            action.setTarget(subject.index());

            subject._actions[0] = action;

            subject._forceLock = false;
        }
    }

    _startAction.call(this);
};


})();[/pre]
梦石
0
星屑
5483
在线时间
712 小时
注册时间
2022-11-26
回帖
296
发表于 2026-3-30 11:35:34 | 显示全部楼层
更好的方法是把状态持续做成时间值,再定义一个回合时间
回复

使用道具 举报

梦石
0
星屑
220
在线时间
43 小时
注册时间
2025-10-23
回帖
7
 楼主| 发表于 2026-3-30 20:20:29 | 显示全部楼层
余杭 发表于 2026-3-30 11:35
更好的方法是把状态持续做成时间值,再定义一个回合时间

确实,不过其实本人也是由于懒得微调具体回合数所以才直接用的这个方法搭配自动行动实现233.........
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部