From 5c35a0c3348179d4ef1f2b5bd6ea688224777e58 Mon Sep 17 00:00:00 2001 From: Miao_Spring <539943419@qq.com> Date: Sun, 21 Jul 2024 10:21:09 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=8A=80=E8=83=BD=E3=80=90?= =?UTF-8?q?=E7=AC=AF=E5=87=B0=E5=87=A4=E3=80=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- extension.js | 206 +++++++++++++++++++++++++++++++++++++++------------ miaoTool.js | 17 ++++- 2 files changed, 173 insertions(+), 50 deletions(-) diff --git a/extension.js b/extension.js index d4f13e2..72df1a6 100644 --- a/extension.js +++ b/extension.js @@ -73,7 +73,7 @@ game.import("extension", function (lib, game, ui, get, ai, _status) { zioy_sanjijie: ["male", "qun", "3/3/3", ["zioy_fouzhiyu", "zioy_ningguxi"], []], zioy_yuze: ["none", "wei", "2", ["zioy_juhun"], []], zioy_luosa: ["male", "wu", "4", ["zioy_minchao", "zioy_kuangyong"]], - zioy_gold: ["male", "qun", "5", ["zioy_shihunzhuo","zioy_nuhuangfeng","zioy_duwenlei"]] + zioy_gold: ["male", "qun", 5, ["zioy_shihunzhuo","zioy_nuhuangfeng","zioy_duwenlei"]] }, translate: { "zioy_xixuegui": "弗拉基米尔", @@ -8374,7 +8374,7 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; global: "phaseBegin" }, filter: () => true, - forced: true, + direct: true, init: player => (player.storage.zioy_que2 = true), content: function () { player.storage.zioy_que2 = true; @@ -9011,36 +9011,6 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; } }, autoSubSkill:{ - damageBegin1:{ - trigger:{ - player:'damageBegin1', - source:'damageBegin1' - }, - filter:()=>{ - return false - return true - }, - direct:true, - content:async function(event,trigger,player){ - trigger.num *= 2 - }, - priority:-539943419 - }, - damageBegin3:{ - trigger:{ - player:'damageBegin3', - source:'damageBegin3' - }, - filter:(event,player)=>{ - return false - return event.num < 2 - }, - direct:true, - content:async function(event,trigger,player){ - trigger.num = 2 - }, - priority:-539943419 - }, damageEnd:{ trigger:{ player:'damageEnd', @@ -9118,8 +9088,6 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; filter:_=>true, async content(_,__,player){ player.storage.zioy_shihunzhuo_she_gainHistory = {} - console.log( - player.storage.zioy_shihunzhuo_she_gainHistory) } }, phaseBegin:{ @@ -9192,25 +9160,33 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; autoTranslate: { "name": "笯凰凤", "info": `回合结束阶段:
- 若你未处于【灵降】状态且场上存在未拥有“恒”的其他角色,你须选择一名未拥有“恒”的其他角色,你令其获得“恒”并根据你选择的角色进入【灵降】状态。
- 若你未处于【灵降】状态且场上所有角色均已拥有“恒”,你进入【常灭】状态并进行3个额外的回合。
+ 若你未处于【灵降】且未进入过【常灭】状态且场上存在未拥有“恒”的其他角色,你须选择一名未拥有“恒”的其他角色,你令其获得“恒”并根据你选择的角色进入【灵降】状态。
+ 若你未处于【灵降】且未进入过【常灭】状态且场上所有角色均已拥有“恒”,你进入【常灭】状态并进行3个额外的回合。

【灵降】状态具有以下特性:
- ①进入【灵降】状态时,记录你当前的体力,体力上限,区域内的牌。然后将你区域内的所有牌移出游戏。将你的武将牌替换为你进入【灵降】状态时选择的角色的武将牌。 - 将你的体力,体力上限调整为与该角色游戏开始时相等。你获得其所有技能并摸4张牌。
+ ①进入【灵降】状态时,记录你当前的体力,体力上限,区域内的牌。然后将你区域内的所有牌移出游戏。将你的武将牌替换为你进入【灵降】状态时选择的角色的武将牌。将你的体力,体力上限调整为与该角色游戏开始时相等。你获得其所有技能并摸4张牌。
②【灵降】状态下你即将进入濒死状态时,取消之,改为退出【灵降】状态。
- ③退出【灵降】状态时,你失去你区域内的所有牌,失去你于【灵降】状态期间获得的所有技能,将武将牌替换为进入【灵降】状态前的武将牌。将你当前的体力,体力上限 - 调整为于进入【灵降】状态前相等。然后将进入【灵降】前区域内的牌移入相应位置。
` + ③退出【灵降】状态时,你失去你区域内的所有牌,失去你于【灵降】状态期间获得的所有技能,将武将牌替换为进入【灵降】状态前的武将牌。将你当前的体力,体力上限调整为于进入【灵降】状态前相等。然后将进入【灵降】前区域内的牌移入相应位置。
+
【常灭】状态具有以下特性:
+ ①进入【常灭】状态时,所有其他角色立即获得“空”与“舍”。
+ ②你的回合开始阶段,你将你的体力与体力上限修改为9,并将你的手牌补至X(X为你“嗜”的数量)。
+ ③你使用牌没有距离限制。拥有“空”或“舍”的其他角色无法响应你使用的牌。
+ ④你即将造成/受到的伤害*2且结算时至少为2。
+ ⑤你造成伤害时,若受伤角色拥有“恒”,你令其失去之,然后你获得1枚“神罪”。
+ ⑥你杀死一名角色时,你获得3枚“神罪”。
+ ⑦其他角色的回合开始阶段,你失去所有体力。` }, init:function(player){ player.storage.zioy_nuhuangfeng_status = null }, - direct:true, + forced:true, trigger:{ player:'phaseEnd' }, filter(event,player){ return player.storage.zioy_nuhuangfeng_status === null }, + skillAnimation: true, + animationColor: "thunder", async content(_e,_t,player){ const noneHasHeng = game.players.reduce((f,v)=>{return f && v.hasSkill('zioy_shihunzhuo_heng')},true) if(!noneHasHeng){ @@ -9254,6 +9230,7 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; _mt.player.setName(player,`降·${target.node.name.innerHTML}`, 'zioy_gold') player.changeGroup(target.group) player.storage.zioy_nuhuangfeng_status = 'lingjiang' + player.update() // 退出灵降 player.exitLingjiang = ()=>{ player.discard(player.getCards('hej')) @@ -9280,17 +9257,29 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; _mt.player.changeAvatar(player, 'zioy_gold', 'zioy_gold') _mt.player.setName(player,`${storage.name}`, 'zioy_gold') player.storage.zioy_nuhuangfeng_status = null + player.update() } }else{ - + player.storage.zioy_nuhuangfeng_status = 'changmie' + for(let i = 0;i < 3;i++){ + player.insertPhase(); + } + game.players.forEach(current=>{ + if(!current.hasSkill('zioy_shihunzhuo_kong')){ + current.addSkill('zioy_shihunzhuo_kong') + } + if(!current.hasSkill('zioy_shihunzhuo_she')){ + current.addSkill('zioy_shihunzhuo_she') + } + }) } }, autoSubSkill:{ lin_dyingBefore:{ trigger:{ - player:'dyingBefore' + player:['dyingBefore','dieBefore'] }, - direct:true, + forced:true, _priority:5399439705821, filter(_e,player){ return player.storage.zioy_nuhuangfeng_status === 'lingjiang' @@ -9298,15 +9287,140 @@ if(get.type(card)=='basic' && get.type(card)=='trick') flag= true; async content(_e,_t,player){ player.exitLingjiang() } + }, + chang_phaseBegin:{ + trigger:{ + player:'phaseBegin' + }, + filter(event,player){ + return player.storage.zioy_nuhuangfeng_status === 'changmie' + }, + forced:true, + async content(_e,_t,player){ + player.hp = 9 + player.maxHp = 9 + player.update() + const drawTo = player.countMark('zioy_shihunzhuo_shi') + if(player.countCards('h') < drawTo){ + player.draw(drawTo - player.countCards('h')) + } + }, + _priority:170058 + }, + chang_directHit:{ + trigger:{ + player:"useCardToPlayered", + }, + forced:true, + filter(event,player){ + if(event.player === player){ + return false + } + if(player.storage.zioy_nuhuangfeng_status === 'changmie'){ + return false + } + return event.player.hasSkill('zioy_shihunzhuo_kong') || event.player.hasSkill('zioy_shihunzhuo_she') + }, + _priority:170058, + async function (_e,trigger,player){ + game.log(player,'令',trigger.card,'不能被',trigger.target,'响应'); + trigger.directHit.push(trigger.target); + } + }, + chang_damageBegin1:{ + trigger:{ + player:'damageBegin1', + source:'damageBegin1' + }, + filter(event,player){ + return player.storage.zioy_nuhuangfeng_status === 'changmie' + }, + direct:true, + content:async function(event,trigger,player){ + trigger.num *= 2 + }, + priority:-539943419 + }, + chang_damageBegin3:{ + trigger:{ + player:'damageBegin3', + source:'damageBegin3' + }, + filter:(event,player)=>{ + return player.storage.zioy_nuhuangfeng_status === 'changmie' && event.num < 2 + }, + direct:true, + content:async function(event,trigger,player){ + trigger.num = 2 + }, + priority:-539943419 + }, + chang_damageBeginSource:{ + trigger:{ + source:'damageEnd' + }, + forced:true, + filter(event,player){ + return player.storage.zioy_nuhuangfeng_status === 'changmie' && event.player.hasSkill('zioy_shihunzhuo_heng') + }, + async content(_e,trigger,player){ + trigger.player.removeSkill('zioy_shihunzhuo_heng') + player.addMark('zioy_nuhuangfeng_shenzui') + }, + priority:-151654684 + }, + chang_dieAfterSource:{ + trigger:{ + source:'dieAfter' + }, + forced:true, + filter(_e,player){ + return player.storage.zioy_nuhuangfeng_status === 'changmie' + }, + async content(_e,trigger,player){ + player.addMark('zioy_nuhuangfeng_shenzui', 3) + }, + priority:-151654684 + }, + chang_phaseBegin_other:{ + trigger:{ + global:"phaseBegin", + }, + forced:true, + filter:function(event,player){ + return event.player!=player && player.storage.zioy_nuhuangfeng_status === 'changmie'; + }, + async content(_,__,player){ + player.loseHp(player.hp) + }, + priority:-151654684 } - } + }, + subSkill:{ + shenzui:{ + mark:false, + marktext:'神罪', + intro:{ + name:'神罪', + mark(_,__,player){ + return player.countMark('zioy_nuhuangfeng_shenzui') >= 5 ? + '神明反叛':'伪神无赦' + } + } + } + }, + mod:{ + targetInRange(card,player,target){ + if(player.storage.zioy_nuhuangfeng_status === 'changmie') return true; + }, + }, }, zioy_duwenlei:{ autoTranslate: { "name": "独抆泪", "info": `你即将死亡时,若你满足:
1.你当前体力大于0
- 2.你于【常灭】状态下杀死至少3名其他角色
+ 2.你的“神罪”标记数量不小于5
其中任意条,则终止死亡,你失去【常灭】状态并获得〖规神舞〗。
若均不满足,你令一名死亡角色复活并回复所有体力,获得你所有牌。` }, diff --git a/miaoTool.js b/miaoTool.js index a657121..d278108 100644 --- a/miaoTool.js +++ b/miaoTool.js @@ -24,10 +24,6 @@ export function skillFactory(skill) { export default (lib, game, ui, get, ai, _status) => { return { - isAsyncFunction(func) { - return func.constructor.name === "AsyncFunction"; - }, - watch: function (obj, key, callback) {}, game: {}, /** * Description 角色相关操作 @@ -90,6 +86,19 @@ export default (lib, game, ui, get, ai, _status) => { return (...args) => { console.log(count++, ...args); }; + }, + /** + * Description 类似python的sleep,配合await使用,使async函数暂停。 + * @param {number} timeout 暂停时间 + * @returns {null} + */ + async sleep(timeout) { + await new Promise(r => setTimeout(r, timeout)); + return; + }, + + isAsyncFunction(func) { + return func.constructor.name === "AsyncFunction"; } } };