Skip to content

Conversation

@WayneFerdon
Copy link
Contributor

@WayneFerdon WayneFerdon commented Aug 21, 2025

  1. 增加初始闲置竞技场配置非空检测
  2. 修正其他技能的OC判断及选择范围判断,修正条件判断中iscd的值与Readme中示例不相符的问题 (修复技能可释放判断及其他技能技能排序无效问题 #154 未进行冲突处理直接覆盖了,因此按照其中实际有效的内容重新修改了)

@Qiyue0515
Copy link

最近转法发现一个问题:
// 先处理特殊的 “先给全体上buff”
let skillPack = ['We', 'Im'];
这里改成先上weaken再上Imperil会比较好,这样血线的压力会小一点

@WayneFerdon
Copy link
Contributor Author

最近转法发现一个问题: // 先处理特殊的 “先给全体上buff” let skillPack = ['We', 'Im']; 这里改成先上weaken再上Imperil会比较好,这样血线的压力会小一点

@Qiyue0515 现在这个应该就是先we再im的啊

@DreamSeeker08
Copy link

最近转法发现一个问题: // 先处理特殊的 “先给全体上buff” let skillPack = ['We', 'Im']; 这里改成先上weaken再上Imperil会比较好,这样血线的压力会小一点

你好,能分享一个法系的设置给我导入吗?
我不太会弄,更新到最新的v2.90.22.20还是不会释放陷危、虚弱等debuf

@Kotone-Hikaru
Copy link

法师好像不能正确的释放im 只会释放weaken 在给每个怪都上完weaken之后就卡在这里了

@WayneFerdon
Copy link
Contributor Author

@DreamSeeker08 @SakuyaSaki 之前的debuff逻辑有条件判断时可能会有点问题,分支新上传了一版(2.90.22.22),可以测试看下还有没有问题

@Kotone-Hikaru
Copy link

@WayneFerdon 2.90.22.22 imp正确释放了 但是全部上好imp之后不会自动释放攻击,但是鼠标移动到对应的怪上后才会攻击 且有的时候只会用普通攻击 不会释放t123法术

@WayneFerdon
Copy link
Contributor Author

WayneFerdon commented Oct 23, 2025

@WayneFerdon 2.90.22.22 imp正确释放了 但是全部上好imp之后不会自动释放攻击,但是鼠标移动到对应的怪上后才会攻击 且有的时候只会用普通攻击 不会释放t123法术

@SakuyaSaki
我这里测试是正常的,普通和高级的都能够释放,不确定是什么原因
不过推测可能是战斗中途启用新脚本,导致ability数据未初始化,战斗中读取技能范围数据出错,这个节点刚好是点击完技能还没选目标(在算范围),如果有mb等脚本的话刚好移上去就选中了?
新的版本(2.90.22.23)增加了非空检测,可以再看下

@Kotone-Hikaru
Copy link

@WayneFerdon 确实是因为中途才开启脚本导致的 如果在一开始就开启然后再进入战斗的话就能正常释放t123
不过这个 自动闲置竞技场好像有点问题 还是说逻辑改变了

@Kotone-Hikaru
Copy link

AR好像是ok 的但是GF不行 不知道为什么

@WayneFerdon
Copy link
Contributor Author

AR好像是ok 的但是GF不行 不知道为什么

@SakuyaSaki 有bug,修复了(2.90.22.24)

@Kotone-Hikaru
Copy link

Kotone-Hikaru commented Oct 23, 2025

发现现在的全部上debuff好像逻辑和之前的相比 不一样 之前会优先释放258这3个位子然后再释放没有释放到的
现在是按照优先级来释放的 大部分时候是乱序 会导致有的时候会多1t 理论上来说假如敌人是8个的话 第一次释放 2 5 7 这样应该是最好的 (有机会补到6号位没有上到debuff的情况)其他的按照258释放 一遍然后补漏掉的 比较好

@WayneFerdon
Copy link
Contributor Author

@SakuyaSaki
给全体放debuff的两个各加了选项,可以选是按照位置还是权重释放
按位置还是用权重的逻辑,但是统一权重为-1而非按状态计算,保留结合用死亡、已有debuff等的特殊权重进行排除
本来想直接改了,但是We给高权重的先放有时也能降低自己受到的伤害,所以各自处理了(

@Kotone-Hikaru
Copy link

@WayneFerdon 感谢 现在自动gf 已经正常工作了 但是debuff顺序释放好像还是没生效 现在还是按照权重来释放的

@WayneFerdon
Copy link
Contributor Author

@WayneFerdon 感谢 现在自动gf 已经正常工作了 但是debuff顺序释放好像还是没生效 现在还是按照权重来释放的

@SakuyaSaki 应该修复了(2.90.22.26)
漏了选初始目标也要按顺序了(

@Kotone-Hikaru
Copy link

@WayneFerdon 观察了一下 现在的释放 第一次 释放目标1 会给 123上(可能是机制?给第一位上会顺延到后面) 第二次就会释放4 但是这个时候只会给45上debuff 这样3的位置会被重复上debuff 浪费了一个轮次 感觉还是应该改为给2 5 8位置轮流释放

@Kotone-Hikaru
Copy link

function getRangeCenterID(target, range = undefined, isWeaponAttack = false, excludeCondition = undefined, forceUseIndex = undefined) {
    // 静态计数器
    if (typeof getRangeCenterID.callCount === 'undefined') getRangeCenterID.callCount = 0;
    getRangeCenterID.callCount++;

    // --- 固定顺序目标 ---
    const fixedIndices = [1, 4, 7]; // 数组索引
    let msTemp = JSON.parse(JSON.stringify(g('battle').monsterStatus));
    msTemp.sort(objArrSort('order'));

    if (getRangeCenterID.callCount <= fixedIndices.length) {
        // 尝试获取固定目标,如果越界或死亡就跳过
        for (let i = getRangeCenterID.callCount - 1; i < fixedIndices.length; i++) {
            const idx = fixedIndices[i];
            if (idx >= 0 && idx < msTemp.length && !msTemp[idx].isDead) {
                return getMonsterID(msTemp[idx].order);
            }
        }
        // 如果固定顺序没有可用目标,回归正常逻辑
    }

    // ---------------- 原本逻辑 ----------------
    if (!range) return getMonsterID(target);

    const centralExtraWeight = -1 * Math.log10(1 + (isWeaponAttack ? ((g('option').centralExtraRatio / 100) ?? 0) : 0));
    let order = target.order;
    let newOrder = order;

    let unreachableWeight = g('option').unreachableWeight;
    let minRank = Infinity;

    for (let i = order - range; i <= order + range; i++) {
        if (i < 0 || i >= msTemp.length || msTemp[i].isDead) continue;

        let rank = 0;
        for (let j = i - range; j <= i + range; j++) {
            let cew = (j === i) ? centralExtraWeight : 0;
            let mon = msTemp[j];

            if (j < 0 || j >= msTemp.length || mon.isDead || (excludeCondition && excludeCondition(mon))) {
                rank += unreachableWeight - cew;
                continue;
            }

            rank += cew;
            rank += forceUseIndex ? -1 : mon.finWeight;
        }

        if (rank < minRank) {
            minRank = rank;
            newOrder = i;
        }
    }

    return getMonsterID(newOrder);
}

让GPT写了一下 我试了一下这样是ok的 可以正确的释放到正确的258的位置()

@WayneFerdon
Copy link
Contributor Author

WayneFerdon commented Jan 15, 2026

@OozoraAhiru
Should be fixed in 2.90.146+

@JKU533 2.90.146应该修复了,是传入的id==10时的问题,因为id是1~9和0表示第10个怪物,id为10应该查找#mkey_0而不是#mkey_10
刚好刚才我打个遭遇战满编10个怪物就触发了(

@OozoraAhiru
Copy link

I found another bug today. When SP gets too high, it sometimes goes over 100% and then percentage suddenly drops to a single digit. For example, during AR200 I had 520 SP, but it was only showing 9%. This bug prevents spirit mode from triggering automatically. I have to manually activate it to burn through SP and bring it back below 100%.

@WayneFerdon
Copy link
Contributor Author

I found another bug today. When SP gets too high, it sometimes goes over 100% and then percentage suddenly drops to a single digit. For example, during AR200 I had 520 SP, but it was only showing 9%. This bug prevents spirit mode from triggering automatically. I have to manually activate it to burn through SP and bring it back below 100%.

@OozoraAhiru
Player Status Conditions, spirit mode trigger and Percentage UI Display are calculated in different places (with same or similar logic), so the display itself should not causing the trigger bug. If the trigger still not working right, then something else might went wrong too (but still, they're coded similar, so it might still be a common one).
Which Vital Bar Style are you using? Standard or Utilitarian? Not sure if both of them are with this bug. Meanwhile is the bar/oc bar from the origin page UI itself displays right? Both calculations are depends on the origin display.

@OozoraAhiru
Copy link

....Which Vital Bar Style are you using? Standard or Utilitarian?
Vital Bar Style: Standard
The UI is showing correct red bar length. Only the percentage number went wrong

@WayneFerdon
Copy link
Contributor Author

....Which Vital Bar Style are you using? Standard or Utilitarian?
Vital Bar Style: Standard
The UI is showing correct red bar length. Only the percentage number went wrong

@OozoraAhiru
I've tested for a while, yet nothing seems went wrong.
Try disable other script (if exist) to check if it's a script conflict issue.
Meanwhile try update 2.90.150, which fixes some potential bugs (might to do with the trigger bug but unlikely and should not causing the dispay error)

@JKU533
Copy link

JKU533 commented Jan 20, 2026

Spreading Poison
Poison courses through the target's veins. This causes a damage-over-time effect, and reduces its evade chance.
这个双持的T2的buff会让脚本卡主

@WayneFerdon
Copy link
Contributor Author

Spreading Poison Poison courses through the target's veins. This causes a damage-over-time effect, and reduces its evade chance. 这个双持的T2的buff会让脚本卡主

@JKU533
我这边暂时没发现是哪里卡住了,可以看下有什么报错吗
不过攻击规则那边确实缺了这个的权重,2.90.151先顺便加上了(这个少了只是会log打印提示一下,不会报错卡住)

@JKU533
Copy link

JKU533 commented Jan 20, 2026

TypeError: Cannot read properties of null (reading '1')
控制台没信息 只有标签页这个
这里会卡主 需要清除这个buff才会继续运行
cythe You uses Crushing Strike in the general direction of a shadow, missing you completely.
cythe You gains the effect Spreading Poison.
cythe You was hit for 35619 Void damage
You use Backstab.
——————
TypeError: s.finWeight.toPrecision is not a function

You evade the attack from Iasink.
Your spike shield hits Why for 50 points of fire damage.
Why glances you; you partially parry the attack, and take 120 points of Crushing damage.
You parry the attack from DaSon.
DaSon gains the effect Spreading Poison.
DaSon was hit for 91499 Void damage
You use Backstab.

————
怪身上的buff最低限是 盲目跟流动的毒

@WayneFerdon
Copy link
Contributor Author

WayneFerdon commented Jan 20, 2026

TypeError: Cannot read properties of null (reading '1') 控制台没信息 只有标签页这个 这里会卡主 需要清除这个buff才会继续运行 cythe You uses Crushing Strike in the general direction of a shadow, missing you completely. cythe You gains the effect Spreading Poison. cythe You was hit for 35619 Void damage You use Backstab. —————— TypeError: s.finWeight.toPrecision is not a function

You evade the attack from Iasink. Your spike shield hits Why for 50 points of fire damage. Why glances you; you partially parry the attack, and take 120 points of Crushing damage. You parry the attack from DaSon. DaSon gains the effect Spreading Poison. DaSon was hit for 91499 Void damage You use Backstab.

———— 怪身上的buff最低限是 盲目跟流动的毒

@JKU533
前面那个报错可能是log显示权重buff未支持时,要获取未支持的buff相关信息但是获取到了null的问题,因此加了支持就好了(虽然说正常不应该获取到null,但反正也是要加支持的,因此问题不大就不排查了)
后面这个可能和之前的还不一样,可能是2.90.152改默认值读写改出问题了,2.90.153修复了相关的一些问题,应该有修复到,另外还有问题的话试一下重新应用一下设置(应用完记得检查一下有没有一些配置丢失了)

@JKU533
Copy link

JKU533 commented Jan 20, 2026

153版本好像还多出了不少bug...会一直咏唱imp或穿心耗尽我魔力...
点了T2 T3的时候会导致标题栏TypeError: s.finWeight.toPrecision is not a function 不点其他技能的话能继续运作
152 153版本 都会有导致TypeError: s.finWeight.toPrecision is not a function卡主的时候...特定不了条件 很频繁出现...应该是默认值的问题 我退回151也会报这个 然而应用一下就没问题了

@WayneFerdon
Copy link
Contributor Author

153版本好像还多出了不少bug...会一直咏唱imp或穿心耗尽我魔力... 点了T2 T3的时候会导致标题栏TypeError: s.finWeight.toPrecision is not a function 不点其他技能的话能继续运作 152 153版本 都会有导致TypeError: s.finWeight.toPrecision is not a function卡主的时候...特定不了条件 很频繁出现...应该是默认值的问题 我退回151也会报这个 然而应用一下就没问题了

@JKU533
我试了下直接升150~153(一次性升或分步,但都不点应用设置)貌似都不会报错或一咏唱,大概是因为152的时候点过应用设置导致了上述问题?

  • 152会有将数字存储成了字符串的问题(例如默认值是0的存成了"0"
  • 而又因为有权重参数之前没有填(例如151新增的buff权重参数),152点了应用后存了错误的默认值值类型(字符串),计算权重之类的时候一直算到权重是0或字符串(如"0"+"0"...加成了"00...")
  • 而显示权重的方法中涉及到将数字类型的权重转为对应有效数字的字符串,但因为实际值类型错误找不到方法所以报错了

至于一直咏唱可能是类似的原因,所以在153重新应用修正了配置数据之后就也正常了

那么大概至少只要不升级152直接升级153是没有问题的(

@JKU533
Copy link

JKU533 commented Jan 21, 2026

我现在是从151升153 点击应用会一直在咏唱细胞活化... 在回合内更新的R63/90
回合中 降到150 刷新页面不应用 恢复正常
150升153 不应用 正常 应用后一直咏唱细胞活化 buff里的设置 我只点了两个Re,AF Re是没条默认阈值释放的 应该是这个的默认值影响 Re的阈值改成10就能正常释放其他技能了 只要Re阈值填0就会一直释放

你 获得了状态 引导.
你 获得了状态 细胞活化.
你 咏唱了 细胞活化.
状态 生命饮剂 已失效❗.
魔力饮剂 恢复了你 30 魔力.
生命饮剂 恢复了你 513 生命.
细胞活化 恢复了你 2056 生命.
你的 刺盾反弹了 Shoe 600 疾风伤害.
Shoe 暴击了 你 for 1535 打击伤害.
你 获得了状态 细胞活化.
你 咏唱了 细胞活化.
你闪避了 Android 的攻击
你闪避了 Mika 1086 的攻击
你 获得了状态 细胞活化.
你 咏唱了 细胞活化.

@WayneFerdon
Copy link
Contributor Author

我现在是从151升153 点击应用会一直在咏唱细胞活化... 在回合内更新的R63/90 回合中 降到150 刷新页面不应用 恢复正常 150升153 不应用 正常 应用后一直咏唱细胞活化 buff里的设置 我只点了两个Re,AF Re是没条默认阈值释放的 应该是这个的默认值影响 Re的阈值改成10就能正常释放其他技能了 只要Re阈值填0就会一直释放

你 获得了状态 引导. 你 获得了状态 细胞活化. 你 咏唱了 细胞活化. 状态 生命饮剂 已失效❗. 魔力饮剂 恢复了你 30 魔力. 生命饮剂 恢复了你 513 生命. 细胞活化 恢复了你 2056 生命. 你的 刺盾反弹了 Shoe 600 疾风伤害. Shoe 暴击了 你 for 1535 打击伤害. 你 获得了状态 细胞活化. 你 咏唱了 细胞活化. 你闪避了 Android 的攻击 你闪避了 Mika 1086 的攻击 你 获得了状态 细胞活化. 你 咏唱了 细胞活化.

@JKU533 应该是默认值读取还是有问题,导致权重计算虽然不报错但是算出来的结果是错的
154修复了应该好了(吧)

@JKU533
Copy link

JKU533 commented Jan 21, 2026

@JKU533 应该是默认值读取还是有问题,导致权重计算虽然不报错但是算出来的结果是错的 154修复了应该好了(吧)

应该是没问题了 双持T3 T2 也没卡主了 检查了几个配置还原也没丢失

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants