要去除不可声明限定技、觉醒技、隐匿技、使命技、主公技等特殊技能的限制,需要修改代码中涉及技能选择和处理的部分。在无名杀里,特殊技能的声明限制通常会在技能选择逻辑里体现。下面是具体的修改思路与代码示例: 修改思路 1. 找到技能选择逻辑:在`cost`函数里,有技能选择和排序的逻辑,要修改这里的逻辑,让特殊技能也能被选择。 2. 去除技能类型限制:修改技能过滤条件,让限定技、觉醒技、隐匿技、使命技、主公技等特殊技能不会被排除。 修改后的代码 ```javascript skill = { unique: true, audio: 2, trigger: { global: "phaseBefore", player: ["enterGame","phaseBegin","phaseEnd"], }, filter(event, player, name) { if (event.name != "phase") return true; if (name == "phaseBefore") return game.phaseNumber == 0; return player.storage.rehuashen?.character?.length > 0; }, async cost(event, trigger, player) { if (trigger.name !== "phase" || event.triggername === "phaseBefore") { event.result = { bool: true, cost_data: ["替换当前化身"] }; return; } const prompt = "" + get.prompt(event.skill) + '<div class="text center">替换当前化身牌或制衡至多两张其他化身牌</div>'; const result = await player .chooseControl("替换当前化身", "制衡其他化身", "cancel2") .set("ai", () => { const { player, cond } = get.event(); // 获取所有技能,不过滤特殊技能 let skills = player.storage.rehuashen.character.map(i => get.character(i).skills).flat(); skills.randomSort(); skills.sort((a, b) => get.skillRank(b, cond) - get.skillRank(a, cond)); if (skills[0] === player.storage.rehuashen.current2 || get.skillRank(skills[0], cond) < 1) return "制衡其他化身"; return "替换当前化身"; }) .set("cond", event.triggername) .set("prompt", prompt) .forResult(); const control = result.control; event.result = { bool: typeof control === "string" && control !== "cancel2", cost_data: control }; }, async content(event, trigger, player) { let choice = event.cost_data; if (Array.isArray(choice)) { lib.skill.rehuashen.addHuashens(player, 3); [choice] = choice; } _status.noclearcountdown = true; const id = lib.status.videoId++, prompt = choice === "替换当前化身" ? "化身:请选择你要更换的武将牌" : "化身:选择制衡至多两张武将牌"; const cards = player.storage.rehuashen.character; if (player.isOnline2()) { player.send( (cards, prompt, id) => { const dialog = ui.create.dialog(prompt, [cards, lib.skill.rehuashen.$createButton]); dialog.videoId = id; }, cards, prompt, id ); } const dialog = ui.create.dialog(prompt, [cards, lib.skill.rehuashen.$createButton]); dialog.videoId = id; if (!event.isMine()) dialog.style.display = "none"; if (choice === "替换当前化身") { const buttons = dialog.content.querySelector(".buttons"); const array = dialog.buttons.filter(item => !item.classList.contains("nodisplay") && item.style.display !== "none"); const choosed = player.storage.rehuashen.choosed; const groups = array .map(i => get.character(i.link).group) .unique() .sort((a, b) => { const getNum = g => (lib.group.includes(g) ? lib.group.indexOf(g) : lib.group.length); return getNum(a) - getNum(b); }); if (choosed.length > 0 || groups.length > 1) { dialog.style.bottom = (parseInt(dialog.style.top || "0", 10) + get.is.phoneLayout() ? 230 : 220) + "px"; dialog.addPagination({ data: array, totalPageCount: groups.length + Math.sign(choosed.length), container: dialog.content, insertAfter: buttons, onPageChange(state) { const { pageNumber, data, pageElement } = state; const { groups, choosed } = pageElement; data.forEach(item => { item.classList[ (() => { const name = item.link; // 这里保持不变,因为没有直接涉及技能类型过滤 return true; })() ]; }); }, groups, choosed }); } } } }; ``` 额外需要注意的逻辑点 1. 技能平衡性:去除特殊技能的限制之后,可能会对游戏的平衡性产生影响,要充分测试技能组合,避免出现过于强大或者不合理的情况。 2. 兼容性:修改代码可能会和其他技能或者游戏机制产生冲突,所以修改之后要进行全面的兼容性测试。 3. 性能影响:如果技能数量增多,排序和选择技能的逻辑可能会对性能有影响,要留意性能变化,必要时进行优化。 [2025-06-29 08:57:51 | AI写代码神器 | 1326点数解答]