diff --git a/extension.js b/extension.js index ac4d52d..b509258 100644 --- a/extension.js +++ b/extension.js @@ -5,7 +5,7 @@ import initShuYingMenu from "./menu.js"; export const type = "extension"; export let shuYing = new Object(); -const shuYingLocalVersion = "2.0.0.8"; +const shuYingLocalVersion = "2.0.0.9"; shuYing.name = "术樱包"; shuYing.editable = false; diff --git a/pve/audio/dead/天书乱斗/hanba_boss_shuying.mp3 b/pve/audio/dead/天书乱斗/hanba_boss_shuying.mp3 new file mode 100644 index 0000000..10f114c Binary files /dev/null and b/pve/audio/dead/天书乱斗/hanba_boss_shuying.mp3 differ diff --git a/pve/audio/skill/天书乱斗/dishi_shuying.mp3 b/pve/audio/skill/天书乱斗/dishi_shuying1.mp3 similarity index 100% rename from pve/audio/skill/天书乱斗/dishi_shuying.mp3 rename to pve/audio/skill/天书乱斗/dishi_shuying1.mp3 diff --git a/pve/audio/skill/天书乱斗/fenshi_shuying1.mp3 b/pve/audio/skill/天书乱斗/fenshi_shuying1.mp3 new file mode 100644 index 0000000..5045f50 Binary files /dev/null and b/pve/audio/skill/天书乱斗/fenshi_shuying1.mp3 differ diff --git a/pve/audio/skill/天书乱斗/fenshi_shuying2.mp3 b/pve/audio/skill/天书乱斗/fenshi_shuying2.mp3 new file mode 100644 index 0000000..bf8ce50 Binary files /dev/null and b/pve/audio/skill/天书乱斗/fenshi_shuying2.mp3 differ diff --git a/pve/audio/skill/天书乱斗/jiutian_shuying.mp3 b/pve/audio/skill/天书乱斗/jiutian_shuying1.mp3 similarity index 100% rename from pve/audio/skill/天书乱斗/jiutian_shuying.mp3 rename to pve/audio/skill/天书乱斗/jiutian_shuying1.mp3 diff --git a/pve/audio/skill/天书乱斗/xinji_shuying1.mp3 b/pve/audio/skill/天书乱斗/xinji_shuying1.mp3 new file mode 100644 index 0000000..0763365 Binary files /dev/null and b/pve/audio/skill/天书乱斗/xinji_shuying1.mp3 differ diff --git a/pve/audio/skill/天书乱斗/xinji_shuying2.mp3 b/pve/audio/skill/天书乱斗/xinji_shuying2.mp3 new file mode 100644 index 0000000..09be567 Binary files /dev/null and b/pve/audio/skill/天书乱斗/xinji_shuying2.mp3 differ diff --git a/pve/audio/skill/天书乱斗/xuanlie_shuying.mp3 b/pve/audio/skill/天书乱斗/xuanlie_shuying1.mp3 similarity index 100% rename from pve/audio/skill/天书乱斗/xuanlie_shuying.mp3 rename to pve/audio/skill/天书乱斗/xuanlie_shuying1.mp3 diff --git a/pve/audio/skill/天书乱斗/zhiri_shuying1.mp3 b/pve/audio/skill/天书乱斗/zhiri_shuying1.mp3 new file mode 100644 index 0000000..ab9c1df Binary files /dev/null and b/pve/audio/skill/天书乱斗/zhiri_shuying1.mp3 differ diff --git a/pve/audio/skill/天书乱斗/zhiri_shuying2.mp3 b/pve/audio/skill/天书乱斗/zhiri_shuying2.mp3 new file mode 100644 index 0000000..89a7d95 Binary files /dev/null and b/pve/audio/skill/天书乱斗/zhiri_shuying2.mp3 differ diff --git a/pve/boss/character.js b/pve/boss/character.js index 9c50019..3348230 100644 --- a/pve/boss/character.js +++ b/pve/boss/character.js @@ -211,6 +211,16 @@ const characters = { img: "extension/术樱包/pve/images/天书乱斗/xuannv_boss_shuying.png", dieAudios: ["ext:术樱包/pve/audio/dead/天书乱斗/xuannv_boss_shuying.mp3"] }, + hanba_boss_shuying: { + sex: "female", + group: "shen", + hp: 4, + skills: ["xinji_shuying", "zhiri_shuying", "fenshi_shuying"], + isHiddenBoss: true, + isBossAllowed: true, + img: "extension/术樱包/pve/images/天书乱斗/hanba_boss_shuying.png", + dieAudios: ["ext:术樱包/pve/audio/dead/天书乱斗/hanba_boss_shuying.mp3"] + }, }; diff --git a/pve/boss/dynamicTranslate.js b/pve/boss/dynamicTranslate.js index 2df76fb..0e41471 100644 --- a/pve/boss/dynamicTranslate.js +++ b/pve/boss/dynamicTranslate.js @@ -167,8 +167,8 @@ const dynamicTranslates = { //玄女 xuanlie_shuying(player, skill) { - let num = 2; - if (getTianshuDifficulty() == "normal") num = 1; + const difficulty = getTianshuDifficulty(); + const num = difficulty == "normal" ? 1 : 2; return `锁定技,回合结束时,对所有本回合你获得过其牌的敌方角色依次造成${num}点伤害。`; }, @@ -181,7 +181,25 @@ const dynamicTranslates = { : "若这些牌包含4种花色,这些角色再额外失去1点体力。"; return `锁定技,准备阶段,你获得所有敌方角色各${num}张手牌。若你以此法获得的牌包含2种颜色,则对所有你以此法获得其牌的敌方角色造成1点伤害。${extra}`; - } + }, + + xinji_shuying(player, skill) { + const difficulty = getTianshuDifficulty(); + const num = difficulty == "nightmare" ? 2 : 1; + + return `锁定技,当友方于回合外因弃置而失去手牌时,你对当前角色造成${num}点伤害。` + }, + zhiri_shuying(player, skill) { + let num = 1; + const difficulty = getTianshuDifficulty(); + if (difficulty == "hard") { + num = 2; + } else if (difficulty == "nightmare") { + num = 3; + } + + return `锁定技,当敌方角色使用红色锦囊牌指定目标后,你摸${num}张牌。` + }, }; export default dynamicTranslates; diff --git a/pve/boss/skill.js b/pve/boss/skill.js index 944e815..390b95f 100644 --- a/pve/boss/skill.js +++ b/pve/boss/skill.js @@ -1517,7 +1517,7 @@ const skills = { }, async content(event, trigger, player) { const result = await player - .judge(card => get.color(card) == "black" ? 2 : 1) + .judge(card => get.color(card) == "black" ? 2 : -1) .set("judge2", result => result.bool) .forResult(); @@ -2015,6 +2015,104 @@ const skills = { threaten: 1.6, }, }, + + //旱魃 + xinji_shuying: { + mode: ["boss"], + audio: "ext:术樱包/pve/audio/skill/天书乱斗:2", + trigger: { global: "loseAfter" }, + forced: true, + locked: true, + filter(event, player) { + return ( + _status.currentPhase && + _status.currentPhase.isIn() && + event.player?.isIn() && + event.player != _status.currentPhase && + !player.getEnemies(null, false).includes(event.player) && + event.type == "discard" && + event.cards2?.some(card => get.position(card, true) == "d" && event.hs?.includes(card)) + ); + }, + async content(event, trigger, player) { + const difficulty = getTianshuDifficulty(); + const num = difficulty == "nightmare" ? 2 : 1; + const target = _status.currentPhase; + player.line(target); + await target.damage(num, player); + }, + ai: { + threaten: 1.6, + }, + }, + zhiri_shuying: { + mode: ["boss"], + audio: "ext:术樱包/pve/audio/skill/天书乱斗:2", + trigger: { global: "useCardToPlayered" }, + forced: true, + locked: true, + filter(event, player) { + return ( + event.isFirstTarget && + event.player?.isIn() && + player.getEnemies(null, false).includes(event.player) && + get.type2(event.card) == "trick" && + get.color(event.card) == "red" + ); + }, + async content(event, trigger, player) { + let num = 1; + const difficulty = getTianshuDifficulty(); + if (difficulty == "hard") { + num = 2; + } else if (difficulty == "nightmare") { + num = 3; + } + + await player.draw(num); + }, + ai: { + threaten: 1.4, + }, + }, + fenshi_shuying: { + mode: ["boss"], + audio: "ext:术樱包/pve/audio/skill/天书乱斗:2", + trigger: { player: "phaseZhunbeiBegin" }, + forced: true, + locked: true, + filter(event, player) { + const num = player.countCards("h") - player.hp; + if (num < 0) return true; + if (num > 0) return player.getEnemies(null, false).some(target => target.isIn()); + return false; + }, + async content(event, trigger, player) { + const num = player.countCards("h") - player.hp; + + if (num < 0) { + await player.draw(-num); + return; + } + + const enemies = player.getEnemies(null, false).filter(target => target.isIn()); + const map = new Map(); + + for (let i = 0; i < num && enemies.length; i++) { + const target = enemies.randomGet(); + map.set(target, (map.get(target) || 0) + 1); + } + + for (const [target, damage] of map) { + if (!target.isIn()) continue; + player.line(target); + await target.damage(damage, player); + } + }, + ai: { + threaten: 2, + }, + }, }; export default skills; diff --git a/pve/boss/translate.js b/pve/boss/translate.js index 8e9cb62..8d5af0e 100644 --- a/pve/boss/translate.js +++ b/pve/boss/translate.js @@ -139,6 +139,15 @@ const translates = { jiutian_shuying_info: "锁定技,准备阶段,你获得所有敌方角色各1张手牌。若你以此法获得的牌包含2种颜色,则对所有你以此法获得其牌的敌方角色造成1点伤害。", dishi_shuying: "帝师", dishi_shuying_info: "当你使用【杀】或普通锦囊牌指定目标时,如果目标数为1,可以增加一个目标;如果目标数大于1,你可以减少一个目标。", + + hanba_boss_shuying: "旱魃", + xinji_shuying: "心悸", + xinji_shuying_info: "锁定技,当友方于回合外因弃置而失去手牌时,你对当前角色造成1点伤害。", + zhiri_shuying: "炙日", + zhiri_shuying_info: "锁定技,当敌方角色使用红色锦囊牌指定目标后,你摸1张牌。", + fenshi_shuying: "焚世", + fenshi_shuying_info: "锁定技,准备阶段,若你的手牌数小于体力值,则将手牌摸至于体力值相等;若你的手牌数大于体力值,则你对敌方角色造成共计X点伤害,点数随机分配(X为手牌数减体力值)。", + }; export default translates; diff --git a/tianshu/config.js b/tianshu/config.js index e473275..d523d7b 100644 --- a/tianshu/config.js +++ b/tianshu/config.js @@ -1,9 +1,9 @@ const bossList = { - stage1: ["riyeyoushen_boss_shuying", "wuma_boss_shuying"], - //stage1: ["chenlong_boss_shuying", "weiyang_boss_shuying", "shenhou_boss_shuying", "xvgou_boss_shuying"], + //stage1: ["riyeyoushen_boss_shuying", "dongzhuo_boss_shuying"], + stage1: ["chenlong_boss_shuying", "weiyang_boss_shuying", "shenhou_boss_shuying", "xvgou_boss_shuying"], stage2: ["heibaiwuchang_boss_shuying", "yvsai_boss_shuying", "huangfeng_boss_shuying", "riyeyoushen_boss_shuying"], - stage3: ["caocao_boss_shuying", "simayi_boss_shuying", "lvbu_boss_shuying"], - stage4: ["shuishengonggong_boss_shuying", "shaohao_boss_shuying", "xuannv_boss_shuying"], + stage3: ["caocao_boss_shuying", "simayi_boss_shuying", "lvbu_boss_shuying", "dongzhuo_boss_shuying"], + stage4: ["shuishengonggong_boss_shuying", "shaohao_boss_shuying", "xuannv_boss_shuying", "hanba_boss_shuying"], }; const virtualIdolList = ["vtb_xiaotao", "vtb_xiaosha", "vtb_xiaoshan", "vtb_xiaole", "vtb_xiaojiu"]; @@ -178,6 +178,17 @@ const bossDifficulty = { skills: ["zhanjia_shuying"], }, }, + dongzhuo_boss_shuying: { + ...bossDifficultyTemplates.qingqingzijin, + hard: { + ...bossDifficultyTemplates.qingqingzijin.hard, + skills: ["qubu_shuying"], + }, + nightmare: { + ...bossDifficultyTemplates.qingqingzijin.nightmare, + skills: ["qubu_shuying"], + }, + }, shuishengonggong_boss_shuying: { ...bossDifficultyTemplates.tianshuluandou, @@ -190,12 +201,9 @@ const bossDifficulty = { skill: ["shuishen_shuying"], }, }, - shaohao_boss_shuying: { - ...bossDifficultyTemplates.tianshuluandou, - }, - xuannv_boss_shuying: { - ...bossDifficultyTemplates.tianshuluandou, - }, + shaohao_boss_shuying: { ...bossDifficultyTemplates.tianshuluandou, }, + xuannv_boss_shuying: { ...bossDifficultyTemplates.tianshuluandou, }, + hanba_boss_shuying: { ...bossDifficultyTemplates.tianshuluandou, }, baiqi_boss_shuying: {}, diff --git a/update.txt b/update.txt new file mode 100644 index 0000000..c72a535 --- /dev/null +++ b/update.txt @@ -0,0 +1,17 @@ +"-----< 20260731 改动 >-----", +"新增可以自定义虚拟偶像随机助战池功能", +"现在过关奖励提供的技能池会过滤武将牌上的技能", +"-----< 20260731 修复 >-----", +"修复BOSS死亡尸体不会消失的BUG", +"修正过关后BOSS的初始手牌不再是摸牌事件", +"适配部分技能需要依赖BOSS的起始手牌", +"适配部分技能需要选择已经死亡的BOSS为目标时,提供一个按钮来列出已死亡的BOSS列表", +"-----< 20260722 改动 >-----", +"新增BOSS:玄女!", +"不用担心困难,虚拟偶像前来援助!", +"新增BOSS选项开启,现在可以在扩展选项中开启新增1位BOSS来提高难度!", +"-----< 20260722 修复 >-----", +"修复当过关奖励执行完毕轮数和下轮角色异常的BUG", +"修复了一个BUG,该BUG会导致进入下关时BOSS的初始牌会被技能检索", +"修复黄蜂技能【冥虫】无法正常发动的BUG", +"修正司马懿AI向其友方发动【反馈】【狼顾】的问题", \ No newline at end of file