diff --git a/audio/die/tw_wenchou.mp3 b/audio/die/tw_wenchou.mp3 new file mode 100644 index 000000000..9a3a30ddc Binary files /dev/null and b/audio/die/tw_wenchou.mp3 differ diff --git a/audio/die/tw_yanliang.mp3 b/audio/die/tw_yanliang.mp3 new file mode 100644 index 000000000..97a355584 Binary files /dev/null and b/audio/die/tw_yanliang.mp3 differ diff --git a/audio/die/tw_yuantan.mp3 b/audio/die/tw_yuantan.mp3 new file mode 100644 index 000000000..5946ed144 Binary files /dev/null and b/audio/die/tw_yuantan.mp3 differ diff --git a/audio/skill/twbaizu1.mp3 b/audio/skill/twbaizu1.mp3 new file mode 100644 index 000000000..66b76d5fd Binary files /dev/null and b/audio/skill/twbaizu1.mp3 differ diff --git a/audio/skill/twbaizu2.mp3 b/audio/skill/twbaizu2.mp3 new file mode 100644 index 000000000..a4743e777 Binary files /dev/null and b/audio/skill/twbaizu2.mp3 differ diff --git a/audio/skill/twduwang1.mp3 b/audio/skill/twduwang1.mp3 new file mode 100644 index 000000000..bf4c8173a Binary files /dev/null and b/audio/skill/twduwang1.mp3 differ diff --git a/audio/skill/twduwang2.mp3 b/audio/skill/twduwang2.mp3 new file mode 100644 index 000000000..8b9860e63 Binary files /dev/null and b/audio/skill/twduwang2.mp3 differ diff --git a/audio/skill/twjuexing1.mp3 b/audio/skill/twjuexing1.mp3 new file mode 100644 index 000000000..2d8ded5df Binary files /dev/null and b/audio/skill/twjuexing1.mp3 differ diff --git a/audio/skill/twjuexing2.mp3 b/audio/skill/twjuexing2.mp3 new file mode 100644 index 000000000..5ccaa619f Binary files /dev/null and b/audio/skill/twjuexing2.mp3 differ diff --git a/audio/skill/twqiaosi1.mp3 b/audio/skill/twqiaosi1.mp3 new file mode 100644 index 000000000..2ff639aea Binary files /dev/null and b/audio/skill/twqiaosi1.mp3 differ diff --git a/audio/skill/twqiaosi2.mp3 b/audio/skill/twqiaosi2.mp3 new file mode 100644 index 000000000..63375b5ad Binary files /dev/null and b/audio/skill/twqiaosi2.mp3 differ diff --git a/audio/skill/twxiayong1.mp3 b/audio/skill/twxiayong1.mp3 new file mode 100644 index 000000000..1bd635ea2 Binary files /dev/null and b/audio/skill/twxiayong1.mp3 differ diff --git a/audio/skill/twxiayong2.mp3 b/audio/skill/twxiayong2.mp3 new file mode 100644 index 000000000..1cd33b543 Binary files /dev/null and b/audio/skill/twxiayong2.mp3 differ diff --git a/audio/skill/twxiayong_tw_yanliang1.mp3 b/audio/skill/twxiayong_tw_yanliang1.mp3 new file mode 100644 index 000000000..b79596b1a Binary files /dev/null and b/audio/skill/twxiayong_tw_yanliang1.mp3 differ diff --git a/audio/skill/twxiayong_tw_yanliang2.mp3 b/audio/skill/twxiayong_tw_yanliang2.mp3 new file mode 100644 index 000000000..f7d92a941 Binary files /dev/null and b/audio/skill/twxiayong_tw_yanliang2.mp3 differ diff --git a/audio/skill/twylyanshi1.mp3 b/audio/skill/twylyanshi1.mp3 new file mode 100644 index 000000000..02c82e988 Binary files /dev/null and b/audio/skill/twylyanshi1.mp3 differ diff --git a/audio/skill/twylyanshi2.mp3 b/audio/skill/twylyanshi2.mp3 new file mode 100644 index 000000000..37bd5f7a7 Binary files /dev/null and b/audio/skill/twylyanshi2.mp3 differ diff --git a/character/sp.js b/character/sp.js index 853f12aab..3d0db4bec 100755 --- a/character/sp.js +++ b/character/sp.js @@ -3038,6 +3038,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ olcangxin:{ audio:2, trigger:{player:'damageBegin4'}, + filter(event,player){ + return game.getGlobalHistory('everything',evt=>{ + return evt.name=='damage'&&evt.player==player; + },event).indexOf(event)==0; + }, checkx:function(event,player){ var target=event.source; return get.damageEffect(player,target,target)<=0; @@ -3046,17 +3051,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){ content:function(){ 'step 0' var cards=get.bottomCards(3,true); - player.chooseButton(['###藏心:请选择要弃置的牌###若以此法弃置了红桃牌,则防止此伤害',cards],[1,cards.length],true).set('ai',function(button){ + player.chooseButton(['###藏心:请选择要弃置的牌###若以此法弃置了红桃牌,则减少弃置红桃牌数的伤害',cards],[1,cards.length],true).set('ai',function(button){ if(!_status.event.bool&&get.suit(button.link,false)=='heart') return 0; if(get.suit(button.link,false)!='heart') return 1; - if(!ui.selected.buttons.some(but=>get.suit(but.link,false)=='heart')) return 1; + const num=get.event().getTrigger().num; + if(num>ui.selected.buttons.filter(but=>get.suit(but.link,false)=='heart').length) return 1; return 0; }).set('bool',lib.skill.olcangxin.checkx(trigger,player)); 'step 1' if(result.bool){ player.$throw(result.links,1000); game.cardsDiscard(result.links); - if(result.links.some(card=>get.suit(card,false)=='heart')) trigger.cancel(); + const num=result.links.filter(card=>get.suit(card,false)=='heart').length; + if(num) trigger.num-=Math.min(trigger.num,num); } else event.finish(); 'step 2' @@ -27676,7 +27683,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ ol_luyusheng:'OL陆郁生', ol_luyusheng_prefix:'OL', olcangxin:'藏心', - olcangxin_info:'锁定技。①当你受到伤害时,你观看牌堆底的三张牌并弃置其中任意张牌,若你以此法弃置了红桃牌,则防止此伤害。②摸牌阶段开始时,你展示牌堆底的三张牌,然后摸X张牌(X为其中红桃牌的数量)。', + olcangxin_info:'锁定技。①当你每回合第一次受到伤害时,你观看牌堆底的三张牌并弃置其中任意张牌,然后此伤害-X。②摸牌阶段开始时,你展示牌堆底的三张牌,然后摸X张牌(X为其中红桃牌的数量)。', olrunwei:'润微', olrunwei_info:'其他角色的弃牌阶段开始时,若其已受伤,则你可以选择一项:①令其弃置一张牌,其本回合手牌上限+1;②令其摸一张牌,其本回合手牌上限-1。', caoxi:'曹羲', diff --git a/character/tw.js b/character/tw.js index 2d96a986c..33583336d 100644 --- a/character/tw.js +++ b/character/tw.js @@ -693,32 +693,47 @@ game.import('character',function(lib,game,ui,get,ai,_status){ twxiayong:{ audio:2, audioname:['tw_yanliang'], - trigger:{global:'damageBegin1'}, - filter(event,player){ - if(event.getParent().type!='card'||event.card.name!='juedou'||!event.player.isIn()) return false; - const evt=game.getGlobalHistory('useCard',evt=>evt.card==event.card)[0]; - if(evt&&evt.targets&&(event.player!=player||player.countCards('h'))){ - if(evt.player==player){ - return evt.targets.includes(event.player)&&event.player!=player; - } - return evt.targets.includes(player)&&evt.player!=player; - } - return false; - }, - forced:true, - logTarget:'player', - async content(event,trigger,player){ - if(trigger.player===player){ - const cards=player.getCards('h',card=>{ - return lib.filter.cardDiscardable(card,player,'twxiayong'); - }); - if(cards.length>0) player.discard(cards.randomGet()); - } - else{ - trigger.increase('num'); - } + locked:true, + group:'twxiayong_effect', + subSkill:{ + effect:{ + trigger:{global:'damageBegin1'}, + filter(event,player){ + if(event.getParent().type!='card'||event.card.name!='juedou'||!event.player.isIn()) return false; + const evt=game.getGlobalHistory('useCard',evt=>evt.card==event.card)[0]; + if(evt&&evt.targets&&(event.player!=player||player.countCards('h'))){ + if(evt.player==player){ + return evt.targets.includes(event.player)&&event.player!=player; + } + return evt.targets.includes(player)&&evt.player!=player; + } + return false; + }, + forced:true, + popup:false, + async content(event,trigger,player){ + player.logSkill('twxiayong'+(trigger.player===player?'1':'2'),trigger.player); + if(trigger.player===player){ + const cards=player.getCards('h',card=>{ + return lib.filter.cardDiscardable(card,player,'twxiayong'); + }); + if(cards.length>0) player.discard(cards.randomGet()); + } + else{ + trigger.increase('num'); + } + }, + }, }, }, + twxiayong1:{ + audio:true, + audioname:['tw_yanliang'], + sourceSkill:'twxiayong', + }, + twxiayong2:{ + inherit:'twxiayong1', + }, //袁谭 twqiaosi:{ audio:2,