diff --git a/character/onlyOL.js b/character/onlyOL.js index d6eafc99b..08191e917 100644 --- a/character/onlyOL.js +++ b/character/onlyOL.js @@ -28,11 +28,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){ audio:2, trigger:{global:'roundStart'}, filter(event,player){ - return player.countCards('h'); + return player.countCards('h',card=>{ + if(_status.connectMode) return true; + return get.name(card,player)!='sha'; + }); }, direct:true, async content(event,trigger,player){ - const {result:{bool,cards}}=await player.chooseCard(get.prompt2('olsbfumeng'),[1,Infinity]).set('ai',card=>{ + const {result:{bool,cards}}=await player.chooseCard(get.prompt2('olsbfumeng'),[1,Infinity],(card,player)=>{ + return get.name(card,player)!='sha'; + }).set('ai',card=>{ const player=get.event('player'); if(player.hasSkill('olsbfumeng')) return 7-get.value(card); return 4.5-get.value(card); @@ -131,7 +136,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){ charlotte:true, trigger:{global:'damageBegin3'}, filter(event,player){ - return event.card&&event.source&&event.card.storage&&event.card.storage.olsbguidao&&event.source==player; + if(!event.card||!event.card.storage||!event.card.storage.olsbguidao) return false; + if(!event.source||event.source!=player) return false; + const evt=event.getParent('useCard'); + return evt.player==player&&evt.targets.includes(event.player); }, forced:true, popup:false, diff --git a/character/tw.js b/character/tw.js index 226a042eb..9c50706ca 100644 --- a/character/tw.js +++ b/character/tw.js @@ -780,45 +780,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } target.disableEquip(disables); if(num) target.draw(num); - target.when('phaseDiscardEnd') - .then(()=>{ - if(!trigger.cards||!trigger.cards.length||!player.hasDisabledSlot()){ - event.finish(); - return; - } - const num=trigger.cards.length; - let list=[]; - for(let i=1;i<6;i++){ - if(player.hasDisabledSlot(i)){ - for(let j=0;jget.translation(i)); - player.chooseButton([ - '劫囚:请选择你要恢复的装备栏', - [transList,'tdnodes'], - ],num,true).set('ai',button=>['equip5','equip4','equip1','equip3','equip2'].indexOf(button.link)+2); - }) - .then(()=>{ - if(result.bool){ - let map={}; - for(let i of event.list){ - if(!map[get.translation(i)]) map[get.translation(i)]=i; - } - player.enableEquip(result.links.slice().map(i=>map[i])); - } - }); - target.when('phaseEnd') - .then(()=>{ - if(player.hasDisabledSlot()&&target.isIn()&&!target.hasSkill('twjieqiu_used')){ - target.popup('劫囚'); - target.addTempSkill('twjieqiu_used','roundStart'); - target.insertPhase(); - } - }).vars({target:player}); + target.addSkill('twjieqiu_buff'); + target.markAuto('twjieqiu_buff',[player]); + target.when('enableEquipEnd') + .filter((e,p)=>!p.hasDisabledSlot()) + .then(()=>player.removeSkill('twjieqiu_buff')); }, ai:{ order:7, @@ -828,7 +794,60 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, }, - subSkill:{used:{charlotte:true}}, + subSkill:{ + used:{charlotte:true}, + buff:{ + charlotte:true, + onremove:true, + trigger:{player:'phaseDiscardEnd'}, + filter(event,player){ + return player.hasDisabledSlot()&&event.cards&&event.cards.length; + }, + forced:true, + popup:false, + async content(event,trigger,player){ + const num=trigger.cards.length; + let list=[],map={}; + for(let i=1;i<6;i++){ + map[get.translation('equip'+i)]=('equip'+i); + if(player.hasDisabledSlot(i)){ + for(let j=0;jget.translation(i)); + const {result:{bool,links}}=await player.chooseButton([ + '劫囚:请选择你要恢复的装备栏', + [transList,'tdnodes'], + ],num,true).set('map',map) + .set('ai',button=>['equip5','equip4','equip1','equip3','equip2'].indexOf(get.event('map')[button.link])+2); + if(bool) player.enableEquip(links.slice().map(i=>map[i])); + }, + group:['twjieqiu_end'], + }, + end:{ + charlotte:true, + trigger:{player:'phaseEnd'}, + filter(event,player){ + return player.hasDisabledSlot()&&player.getStorage('twjieqiu_buff').some(target=>{ + return target.isIn()&&!target.hasSkill('twjieqiu_used'); + }); + }, + forced:true, + popup:false, + async content(event,trigger,player){ + const targets=player.getStorage('twjieqiu_buff').filter(target=>{ + return target.isIn()&&!target.hasSkill('twjieqiu_used'); + }).sortBySeat(); + for(const target of targets){ + target.popup('劫囚'); + target.addTempSkill('twjieqiu_used','roundStart'); + target.insertPhase(); + } + }, + }, + }, }, twenchou:{ audio:2, @@ -855,7 +874,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){ const {result:{bool,links}}=await player.chooseButton([ '恩仇:请选择'+get.translation(target)+'要恢复的装备栏', [transList,'tdnodes'], - ],true).set('ai',button=>1/(['equip5','equip4','equip1','equip3','equip2'].indexOf(button.link)+2)); + ],true).set('map',map) + .set('ai',button=>1/(['equip5','equip4','equip1','equip3','equip2'].indexOf(get.event('map')[button.link])+2)); if(bool) target.enableEquip(links.slice().map(i=>map[i])); }, ai:{ @@ -945,7 +965,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ locked:false, async content(event,trigger,player){ await player.draw(); - await player.addMark('twchue',1); + player.addMark('twchue',1); }, }, effect:{ @@ -15976,7 +15996,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ twchue_info:'①当你使用【杀】指定唯一目标时,你可以失去1点体力,为此牌额外指定Z个目标。②当你受到伤害或失去体力后,你摸一张牌并获得1个“勇”标记。③回合结束时,若你本回合发动过〖除恶②〗,则你可以失去Z个“勇”标记,视为使用一张伤害+1且可以额外指定Z个目标的【杀】。(Z为你的体力值)', xia_shitao:'石韬', twjieqiu:'劫囚', - twjieqiu_info:'出牌阶段限一次,你可以选择一名装备区没有废除栏的其他角色,废除其所有装备栏,然后其摸X张牌(X为其废除装备栏前的装备区牌数)。其下个弃牌阶段结束时,其恢复等同于其弃置牌数的装备栏;其下个回合结束时,若其仍有已废除的装备栏,则你执行一个额外回合(每轮限一次)。', + twjieqiu_info:'出牌阶段限一次,你可以选择一名装备区没有废除栏的其他角色,废除其所有装备栏,然后其摸X张牌(X为其废除装备栏前的装备区牌数),直到其恢复所有装备栏前:其弃牌阶段结束时,其恢复等同于其弃置牌数的装备栏;其回合结束时,若其仍有已废除的装备栏,则你执行一个额外回合(每轮限一次)。', twenchou:'恩仇', twenchou_info:'出牌阶段限一次,你可以观看一名存在废除装备栏的其他角色的手牌并获得其中一张牌,然后你恢复其一个装备栏。', xia_shie:'史阿', @@ -15984,7 +16004,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ twdengjianx:'剑法', twdengjian_info:'①其他角色的弃牌阶段结束时,你可以弃置一张牌并随机获得本回合所有造成伤害的牌对应的实体牌的其中一张与你本轮以此法获得的牌的颜色均不同的【杀】,称为“剑法”。②你使用“剑法”牌不计入次数限制。', twxinshou:'心授', - twxinshou_info:'当你于出牌阶段使用【杀】时,若此【杀】与你本回合使用的所有其他【杀】的颜色均不相同,则你可以选择执行以下一项本回合未执行过的项:⒈摸一张牌;⒉交给一名其他角色一张牌。若这两项本回合均已被选择过,则你可以令〖登剑①〗失效并令一名其他角色获得〖登剑〗,你的下个回合开始时,其失去〖登剑〗,若其这期间使用【杀】造成过伤害,则你结束〖登剑①〗的失效状态。', + twxinshou_info:'①当你于出牌阶段使用【杀】时,若此【杀】与你本回合使用的所有其他【杀】的颜色均不相同,则你可以选择执行以下一项本回合未执行过的项:⒈摸一张牌;⒉交给一名其他角色一张牌。②当你使用【杀】时,若〖心授①〗的两项本回合均已被你选择过,则你可以令〖登剑①〗失效并令一名其他角色获得〖登剑〗,你的下个回合开始时,其失去〖登剑〗,若其这期间使用【杀】造成过伤害,则你结束〖登剑①〗的失效状态。', xia_yuzhenzi:'玉真子', twhuajing:'化境', twhuajing_info:'①游戏开始时,你获得6个效果各不相同的无效果“武”标记。②一名拥有“武”标记的角色的攻击范围+X(X为其拥有的“武”标记数)。③出牌阶段限一次,你可以展示至多四张手牌,然后根据这些牌含有的花色数于本回合获得等量你拥有的“武”标记的效果。④拥有“武”标记效果的角色的武器牌失效(武器牌不提供攻击范围且武器技能失效)。',