diff --git a/audio/die/caoxian.mp3 b/audio/die/caoxian.mp3
new file mode 100644
index 000000000..7d4282344
Binary files /dev/null and b/audio/die/caoxian.mp3 differ
diff --git a/audio/die/caoyi.mp3 b/audio/die/caoyi.mp3
new file mode 100644
index 000000000..83ced1038
Binary files /dev/null and b/audio/die/caoyi.mp3 differ
diff --git a/audio/die/dc_sb_lusu.mp3 b/audio/die/dc_sb_lusu.mp3
new file mode 100644
index 000000000..058e64197
Binary files /dev/null and b/audio/die/dc_sb_lusu.mp3 differ
diff --git a/audio/die/dc_sb_zhouyu.mp3 b/audio/die/dc_sb_zhouyu.mp3
new file mode 100644
index 000000000..1f69f6ac0
Binary files /dev/null and b/audio/die/dc_sb_zhouyu.mp3 differ
diff --git a/audio/die/dc_sunchen.mp3 b/audio/die/dc_sunchen.mp3
new file mode 100644
index 000000000..1f6f530d1
Binary files /dev/null and b/audio/die/dc_sunchen.mp3 differ
diff --git a/audio/die/sb_guanyu.mp3 b/audio/die/sb_guanyu.mp3
new file mode 100644
index 000000000..b4fda6a52
Binary files /dev/null and b/audio/die/sb_guanyu.mp3 differ
diff --git a/audio/die/xiahoumao.mp3 b/audio/die/xiahoumao.mp3
new file mode 100644
index 000000000..cd9283fe2
Binary files /dev/null and b/audio/die/xiahoumao.mp3 differ
diff --git a/audio/skill/cuguo1.mp3 b/audio/skill/cuguo1.mp3
new file mode 100644
index 000000000..4892e6b0b
Binary files /dev/null and b/audio/skill/cuguo1.mp3 differ
diff --git a/audio/skill/cuguo2.mp3 b/audio/skill/cuguo2.mp3
new file mode 100644
index 000000000..6d1d27cd9
Binary files /dev/null and b/audio/skill/cuguo2.mp3 differ
diff --git a/audio/skill/dclingxi1.mp3 b/audio/skill/dclingxi1.mp3
new file mode 100644
index 000000000..e86b55489
Binary files /dev/null and b/audio/skill/dclingxi1.mp3 differ
diff --git a/audio/skill/dclingxi2.mp3 b/audio/skill/dclingxi2.mp3
new file mode 100644
index 000000000..289b9b78a
Binary files /dev/null and b/audio/skill/dclingxi2.mp3 differ
diff --git a/audio/skill/dcmiyi1.mp3 b/audio/skill/dcmiyi1.mp3
new file mode 100644
index 000000000..20c89c44a
Binary files /dev/null and b/audio/skill/dcmiyi1.mp3 differ
diff --git a/audio/skill/dcmiyi2.mp3 b/audio/skill/dcmiyi2.mp3
new file mode 100644
index 000000000..9434dbda7
Binary files /dev/null and b/audio/skill/dcmiyi2.mp3 differ
diff --git a/audio/skill/dcsbmengmou1.mp3 b/audio/skill/dcsbmengmou1.mp3
new file mode 100644
index 000000000..d548d3e0b
Binary files /dev/null and b/audio/skill/dcsbmengmou1.mp3 differ
diff --git a/audio/skill/dcsbmengmou2.mp3 b/audio/skill/dcsbmengmou2.mp3
new file mode 100644
index 000000000..d5288680b
Binary files /dev/null and b/audio/skill/dcsbmengmou2.mp3 differ
diff --git a/audio/skill/dcsbmingshi.mp3 b/audio/skill/dcsbmingshi.mp3
new file mode 100644
index 000000000..4ead13183
Binary files /dev/null and b/audio/skill/dcsbmingshi.mp3 differ
diff --git a/audio/skill/dcsbmingshi1.mp3 b/audio/skill/dcsbmingshi1.mp3
new file mode 100644
index 000000000..b1c22032b
Binary files /dev/null and b/audio/skill/dcsbmingshi1.mp3 differ
diff --git a/audio/skill/dcsbronghuo1.mp3 b/audio/skill/dcsbronghuo1.mp3
new file mode 100644
index 000000000..f6442009f
Binary files /dev/null and b/audio/skill/dcsbronghuo1.mp3 differ
diff --git a/audio/skill/dcsbronghuo2.mp3 b/audio/skill/dcsbronghuo2.mp3
new file mode 100644
index 000000000..d1624d4ed
Binary files /dev/null and b/audio/skill/dcsbronghuo2.mp3 differ
diff --git a/audio/skill/dcsbyingmou.mp3 b/audio/skill/dcsbyingmou.mp3
new file mode 100644
index 000000000..71830a215
Binary files /dev/null and b/audio/skill/dcsbyingmou.mp3 differ
diff --git a/audio/skill/dcsbyingmou1.mp3 b/audio/skill/dcsbyingmou1.mp3
new file mode 100644
index 000000000..361ab2c4a
Binary files /dev/null and b/audio/skill/dcsbyingmou1.mp3 differ
diff --git a/audio/skill/dcyinjun1.mp3 b/audio/skill/dcyinjun1.mp3
new file mode 100644
index 000000000..34af9521a
Binary files /dev/null and b/audio/skill/dcyinjun1.mp3 differ
diff --git a/audio/skill/dcyinjun2.mp3 b/audio/skill/dcyinjun2.mp3
new file mode 100644
index 000000000..4c3efd64d
Binary files /dev/null and b/audio/skill/dcyinjun2.mp3 differ
diff --git a/audio/skill/dczhifou1.mp3 b/audio/skill/dczhifou1.mp3
new file mode 100644
index 000000000..fbfe0cfa4
Binary files /dev/null and b/audio/skill/dczhifou1.mp3 differ
diff --git a/audio/skill/dczhifou2.mp3 b/audio/skill/dczhifou2.mp3
new file mode 100644
index 000000000..f3e6d3b1d
Binary files /dev/null and b/audio/skill/dczhifou2.mp3 differ
diff --git a/audio/skill/dczigu1.mp3 b/audio/skill/dczigu1.mp3
new file mode 100644
index 000000000..e9ee01303
Binary files /dev/null and b/audio/skill/dczigu1.mp3 differ
diff --git a/audio/skill/dczigu2.mp3 b/audio/skill/dczigu2.mp3
new file mode 100644
index 000000000..aa87853ca
Binary files /dev/null and b/audio/skill/dczigu2.mp3 differ
diff --git a/audio/skill/dczuowei1.mp3 b/audio/skill/dczuowei1.mp3
new file mode 100644
index 000000000..d362dc0bd
Binary files /dev/null and b/audio/skill/dczuowei1.mp3 differ
diff --git a/audio/skill/dczuowei2.mp3 b/audio/skill/dczuowei2.mp3
new file mode 100644
index 000000000..adc0bc4e0
Binary files /dev/null and b/audio/skill/dczuowei2.mp3 differ
diff --git a/audio/skill/sbwusheng1.mp3 b/audio/skill/sbwusheng1.mp3
new file mode 100644
index 000000000..e5477900d
Binary files /dev/null and b/audio/skill/sbwusheng1.mp3 differ
diff --git a/audio/skill/sbwusheng2.mp3 b/audio/skill/sbwusheng2.mp3
new file mode 100644
index 000000000..77f0b75b0
Binary files /dev/null and b/audio/skill/sbwusheng2.mp3 differ
diff --git a/audio/skill/sbwusheng3.mp3 b/audio/skill/sbwusheng3.mp3
new file mode 100644
index 000000000..bffedffae
Binary files /dev/null and b/audio/skill/sbwusheng3.mp3 differ
diff --git a/audio/skill/sbyijue1.mp3 b/audio/skill/sbyijue1.mp3
new file mode 100644
index 000000000..178382def
Binary files /dev/null and b/audio/skill/sbyijue1.mp3 differ
diff --git a/audio/skill/sbyijue2.mp3 b/audio/skill/sbyijue2.mp3
new file mode 100644
index 000000000..4e63a5a91
Binary files /dev/null and b/audio/skill/sbyijue2.mp3 differ
diff --git a/audio/skill/tongwei1.mp3 b/audio/skill/tongwei1.mp3
new file mode 100644
index 000000000..631aef59b
Binary files /dev/null and b/audio/skill/tongwei1.mp3 differ
diff --git a/audio/skill/tongwei2.mp3 b/audio/skill/tongwei2.mp3
new file mode 100644
index 000000000..8d15c2b51
Binary files /dev/null and b/audio/skill/tongwei2.mp3 differ
diff --git a/character/collab.js b/character/collab.js
index d6da39b60..dba01d185 100644
--- a/character/collab.js
+++ b/character/collab.js
@@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'collab',
connect:true,
character:{
+ dc_sunce:['male','wu',4,['dcshuangbi']],
nezha:['male','qun',2,['dcsantou','dcfaqi']],
dc_caocao:['male','wei',4,['dcjianxiong']],
dc_liubei:['male','shu',4,['dcrende']],
@@ -34,10 +35,89 @@ game.import('character',function(lib,game,ui,get,ai,_status){
collab_tongque:["sp_fuwan","sp_fuhuanghou","sp_jiben","old_lingju",'sp_mushun'],
collab_duanwu:['sunwukong','longwang','taoshen'],
collab_decade:['libai','xiaoyuehankehan','zhutiexiong','wu_zhutiexiong'],
- collab_remake:['dc_caocao','dc_liubei','dc_sunquan','nezha'],
+ collab_remake:['dc_caocao','dc_liubei','dc_sunquan','nezha','dc_sunce'],
},
},
skill:{
+ //孙策
+ //双壁=100%技能周瑜+100%原画孙策
+ dcshuangbi:{
+ audio:2,
+ enable:'phaseUse',
+ usable:1,
+ content:function*(event,map){
+ var player=map.player,num=game.countPlayer();
+ var result=yield player.chooseControl().set('choiceList',[
+ '摸'+get.cnNumber(num)+'张牌,本回合手牌上限+'+parseFloat(num),
+ '弃置至多'+get.cnNumber(num)+'张牌,随机对其他角色造成等量火焰伤害',
+ '视为使用'+get.cnNumber(num)+'张火【杀】或【火攻】',
+ ]).set('ai',()=>{
+ var player=_status.event.player,card={name:'sha',nature:'fire'};
+ if(!game.hasPlayer(target=>player.canUse(card,target)&&get.effect(target,card,player,player)>0)) return 0;
+ return 2;
+ });
+ player.flashAvatar('dcshuangbi',['re_zhouyu','shen_zhouyu','dc_sb_zhouyu'][result.index]);
+ switch(result.index){
+ case 0:
+ player.draw(num);
+ player.addTempSkill('dcshuangbi_effect');
+ player.addMark('dcshuangbi_effect',num,false);
+ break;
+ case 1:
+ var result2=yield player.chooseToDiscard('双壁:弃置至多'+get.cnNumber(num)+'张牌,随机对其他角色造成等量火焰伤害',[1,num],'he').set('ai',card=>1/(get.value(card)||0.5));
+ if(result2.bool){
+ var map={},sum=result2.cards.length;
+ var targets=game.filterPlayer(target=>target!=player);
+ if(targets.length){
+ while(sum){
+ sum--;
+ var target=targets.randomGet();
+ player.line(target);
+ target.damage(1,'fire');
+ game.delayx();
+ }
+ }
+ }
+ break;
+ case 2:
+ while(num&&game.hasPlayer(target=>player.canUse({name:'sha',nature:'fire'},target)||player.canUse({name:'huogong'},target))){
+ num--;
+ var list=[];
+ if(game.hasPlayer(target=>player.canUse({name:'sha',nature:'fire'},target))) list.push(['基本','','sha','fire']);
+ if(game.hasPlayer(target=>player.canUse({name:'huogong'},target))) list.push(['锦囊','','huogong']);
+ var result2=yield player.chooseButton([
+ '双壁:请选择你要使用的牌',
+ [list,'vcard']],
+ true).set('ai',button=>button.link[2]=='sha'?1:0);
+ if(result2.bool){
+ var card={
+ name:result2.links[0][2],
+ nature:result2.links[0][3],
+ };
+ yield player.chooseUseTarget(true,card,false);
+ }
+ else break;
+ }
+ break;
+ }
+ },
+ ai:{
+ order:9,
+ result:{player:1},
+ },
+ subSkill:{
+ effect:{
+ charlotte:true,
+ onremove:true,
+ intro:{content:'手牌上限+#'},
+ mod:{
+ maxHandcard:function(player,num){
+ return num+player.countMark('dcshuangbi_effect');
+ },
+ },
+ },
+ },
+ },
//哪吒
dcsantou:{
audio:2,
@@ -1763,6 +1843,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcsantou_info:'锁定技。①当你受到伤害时,防止之,然后若以下有条件成立,你失去1点体力:1.你于本回合此前以此法防止过该伤害来源的伤害,且你的体力值不小于3;2.本次伤害为属性伤害,且你的体力值为2;3.本次伤害的渠道为红色的牌,且你的体力值为1。②游戏开始时,若你的体力上限小于3,你将体力上限加至3并将体力回复至3。',
dcfaqi:'法器',
dcfaqi_info:'当你于出牌阶段使用装备牌结算结束后,你视为使用一张本回合未以此法使用过的普通锦囊牌。',
+ dc_sunce:'经典孙策',
+ dc_sunce_prefix:'经典',
+ dcshuangbi:'双壁',
+ dcshuangbi_info:'出牌阶段限一次,你可以选择一项:①摸X张牌,本回合手牌上限+X;②弃置至多X张牌,随机对其他角色造成等量火焰伤害;③视为使用X张火【杀】或【火攻】。(X为场上存活角色数)',
collab_olympic:'OL·伦敦奥运会',
collab_tongque:'OL·铜雀台',
diff --git a/character/rank.js b/character/rank.js
index 5389604ef..3d1a646ad 100644
--- a/character/rank.js
+++ b/character/rank.js
@@ -126,6 +126,8 @@ window.noname_character_rank={
'jsrg_pangtong',
'star_caoren',
'clan_xunyou',
+ 'caoxian',
+ 'sb_guanyu',
],
a:[
'diy_zaozhirenjun',
@@ -1810,6 +1812,7 @@ window.noname_character_rank={
'shichangshi',
'dc_guansuo',
'dc_xujing',
+ 'caoxian',
],
epic:[
'ol_pengyang',
diff --git a/character/sb.js b/character/sb.js
index 00052d5ee..6b709e2ba 100644
--- a/character/sb.js
+++ b/character/sb.js
@@ -5,6 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sb',
connect:true,
character:{
+ sb_guanyu:['male','shu',4,['sbwusheng','sbyijue']],
sb_huangyueying:['female','shu',3,['sbjizhi','sbqicai']],
sb_sp_zhugeliang:['male','shu',3,['sbhuoji','sbkanpo']],
sb_zhugeliang:['male','shu',3,['sbguanxing','sbkongcheng']],
@@ -54,6 +55,182 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
+ //关羽
+ //矢
+ sbwusheng:{
+ audio:3,
+ trigger:{player:'phaseUseBegin'},
+ filter:function(event,player){
+ return game.hasPlayer(target=>target!=player&&!target.isZhu2());
+ },
+ direct:true,
+ content:function*(event,map){
+ var player=map.player;
+ var result=yield player.chooseTarget(get.prompt('sbwusheng'),'选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用五张【杀】后不能对其使用【杀】',(card,player,target)=>{
+ return target!=player&&!target.isZhu2();
+ }).set('ai',target=>{
+ var player=_status.event.player;
+ return get.effect(target,{name:'sha'},player,player);
+ });
+ if(result.bool){
+ var target=result.targets[0];
+ player.logSkill('sbwusheng',target);
+ player.addTempSkill('sbwusheng_effect',{player:'phaseUseAfter'});
+ player.storage.sbwusheng_effect[target.playerid]=0;
+ }
+ },
+ group:'sbwusheng_wusheng',
+ subSkill:{
+ wusheng:{
+ audio:'sbwusheng',
+ enable:['chooseToUse','chooseToRespond'],
+ hiddenCard:function(player,name){
+ return name=='sha'&&player.countCards('hs');
+ },
+ filter:function(event,player){
+ return event.filterCard({name:'sha'},player,event)||lib.inpile_nature.some(nature=>event.filterCard({name:'sha',nature:nature},player,event));
+ },
+ chooseButton:{
+ dialog:function(event,player){
+ var list=[];
+ if(event.filterCard({name:'sha'},player,event)) list.push(['基本','','sha']);
+ for(var j of lib.inpile_nature){
+ if(event.filterCard({name:'sha',nature:j},player,event)) list.push(['基本','','sha',j]);
+ }
+ var dialog=ui.create.dialog('武圣',[list,'vcard'],'hidden');
+ dialog.direct=true;
+ return dialog;
+ },
+ check:function(button){
+ var player=_status.event.player;
+ var card={name:button.link[2],nature:button.link[3]};
+ if(_status.event.getParent().type=='phase'&&game.hasPlayer(function(current){
+ return player.canUse(card,current)&&get.effect(current,card,player,player)>0;
+ })){
+ switch (button.link[2]){
+ case 'sha':
+ if(button.link[3]=='fire') return 2.95;
+ else if(button.link[3]=='thunder'||button.link[3]=='ice') return 2.92;
+ else return 2.9;
+ }
+ }
+ return 1+Math.random();
+ },
+ backup:function(links,player){
+ return {
+ audio:'sbwusheng',
+ filterCard:true,
+ check:function(card){
+ return 6-get.value(card);
+ },
+ viewAs:{name:links[0][2],nature:links[0][3]},
+ position:'hs',
+ popname:true,
+ }
+ },
+ prompt:function(links,player){
+ return '将一张牌当作'+get.translation(links[0][3]||'')+'【'+get.translation(links[0][2])+'】'+(_status.event.name=='chooseToUse'?'使用':'打出');
+ },
+ },
+ ai:{
+ respondSha:true,
+ fireAttack:true,
+ skillTagFilter:function(player,tag){
+ if(!player.countCards('hs')) return false;
+ },
+ order:function(item,player){
+ if(player&&_status.event.type=='phase'){
+ var max=0;
+ if(lib.inpile_nature.some(i=>player.getUseValue({name:'sha',nature:i})>0)){
+ var temp=get.order({name:'sha'});
+ if(temp>max) max=temp;
+ }
+ if(max>0) max+=0.3;
+ return max;
+ }
+ return 4;
+ },
+ result:{player:1},
+ },
+ },
+ effect:{
+ charlotte:true,
+ onremove:true,
+ init:function(player){
+ if(!player.storage.sbwusheng_effect) player.storage.sbwusheng_effect={};
+ },
+ mod:{
+ targetInRange:function(card,player,target){
+ if(card.name=='sha'&&typeof player.storage.sbwusheng_effect[target.playerid]=='number') return true;
+ },
+ cardUsableTarget:function(card,player,target){
+ if(card.name=='sha'&&typeof player.storage.sbwusheng_effect[target.playerid]=='number') return true;
+ },
+ playerEnabled:function(card,player,target){
+ if(card.name!='sha'||typeof player.storage.sbwusheng_effect[target.playerid]!='number') return;
+ if(player.storage.sbwusheng_effect[target.playerid]>=5) return false;
+ },
+ },
+ audio:'sbwusheng',
+ trigger:{player:['useCardToPlayered','useCardAfter']},
+ filter:function(event,player){
+ if(event.card.name!='sha') return false;
+ if(event.name=='useCard') return event.targets.some(target=>typeof player.storage.sbwusheng_effect[target.playerid]=='number');
+ return typeof player.storage.sbwusheng_effect[event.target.playerid]=='number';
+ },
+ direct:true,
+ content:function(){
+ if(trigger.name=='useCard'){
+ var targets=trigger.targets.filter(target=>typeof player.storage.sbwusheng_effect[target.playerid]=='number');
+ targets.forEach(target=>player.storage.sbwusheng_effect[target.playerid]++);
+ }
+ else{
+ player.logSkill('sbwusheng_effect',trigger.target);
+ player.draw();
+ }
+ },
+ },
+ },
+ ai:{threaten:114514},
+ },
+ sbyijue:{
+ audio:2,
+ trigger:{source:'damageBegin3'},
+ filter:function(event,player){
+ return event.num>=event.player.hp&&!player.getHistory('useSkill',evt=>evt.skill=='sbyijue'&&evt.targets[0]==event.player).length;
+ },
+ forced:true,
+ logTarget:'player',
+ content:function(){
+ trigger.cancel();
+ player.addTempSkill('sbyijue_effect');
+ player.markAuto('sbyijue_effect',[trigger.player]);
+ },
+ subSkill:{
+ effect:{
+ charlotte:true,
+ onremove:true,
+ audio:'sbyijue',
+ trigger:{player:'useCardToPlayered'},
+ filter:function(event,player){
+ return player.getStorage('sbyijue_effect').includes(event.target);
+ },
+ forced:true,
+ logTarget:'target',
+ content:function(){
+ trigger.getParent().excluded.add(trigger.target);
+ },
+ ai:{
+ effect:{
+ player:function(card,player,target){
+ if(player.getStorage('sbyijue_effect').includes(target)) return 'zeroplayertarget';
+ },
+ },
+ },
+ intro:{content:'本回合放$一马'},
+ },
+ },
+ },
//黄月英
sbqicai:{
mod:{
@@ -5780,6 +5957,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbqicai_info:'①出牌阶段限一次。你可以将手牌中或弃牌堆中的一张防具牌置于一名其他角色的防具栏,然后其获得如下效果:当其得到普通锦囊牌后,其将此牌交给你(限三张)。②你使用锦囊牌无距离限制。',
sbjizhi:'集智',
sbjizhi_info:'锁定技,当你使用一张普通锦囊牌时,你摸一张牌,且此牌本回合不计入你的手牌上限。',
+ sb_guanyu:'谋关羽',
+ sb_guanyu_prefix:'谋',
+ sbwusheng:'武圣',
+ sbwusheng_wusheng_backup:'武圣',
+ sbwusheng_info:'你可以将一张手牌当作任意【杀】使用或打出。出牌阶段开始时,你可以选择一名非主公的其他角色,本阶段对其使用【杀】无距离和次数限制,使用【杀】指定其为目标后摸一张牌,对其使用五张【杀】后不能对其使用【杀】。',
+ sbyijue:'义绝',
+ sbyijue_info:'锁定技,每名角色每局游戏限一次,当你对一名角色造成大于等于其体力值的伤害时,你防止此伤害,且本回合你使用牌指定其为目标后,取消之。',
sb_zhi:'谋攻篇·知',
sb_shi:'谋攻篇·识',
diff --git a/character/sp.js b/character/sp.js
index 72cfeddcf..a2742a478 100755
--- a/character/sp.js
+++ b/character/sp.js
@@ -9,9 +9,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan','quhuang','zhanghua','wangguan','sunhong','caoxi'],
sp_tianzhu:['zhangyan','niujin','hejin','hansui',"wutugu","yanbaihu","shamoke","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna",'ol_wenqin'],
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu',"daxiaoqiao","jin_guohuai"],
- sp_shaowei:['lvboshe',"simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','zhangzhi','lushi'],
+ sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','zhangzhi','lushi'],
sp_huben:['duanjiong','ol_mengda',"caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian','ol_huban','haopu','ol_qianzhao'],
- sp_liesi:['mizhu','weizi','ol_liuba','zhangshiping'],
+ sp_liesi:['lvboshe','mizhu','weizi','ol_liuba','zhangshiping'],
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
sp_qifu:['ol_feiyi',"caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
sp_wanglang:['ol_wanglang','ol_puyuan','ol_zhouqun'],
@@ -222,7 +222,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xiahouxuan:'夏侯玄(209年~254年),字泰初(《三国志》等作太初),沛国谯县(今安徽省亳州市)人。三国时期曹魏大臣、思想家、文学家,征南大将军夏侯尚之子,大将军曹爽的表弟。夏侯玄少年有名望,仪表出众,时人称为“朗朗如日月之入怀”。魏文帝黄初六年(225年),袭封昌陵乡侯。魏明帝时,历任散骑黄门侍郎、羽林监。少帝曹芳继位后,拜散骑常侍、中护军,保卫皇宫。后任征西将军,任内与曹爽策划骆谷之役,大失人心。高平陵政变后,被夺去兵权,改任大鸿胪、太常卿。嘉平六年(254年),中书令李丰与外戚张缉密谋杀死大将军司马师,改以夏侯玄执政。事泄被杀,夷灭三族,夏侯玄死时年仅四十六岁。著有文集三卷,如今已佚。政治上,提出了“审官择人”、“除重官”、“改服制”等制度,被太傅司马懿评价“皆大善”。博学多识,才华出众,精通玄学,成为“四聪”之一,与何晏等人开创了魏晋玄学的先河,是早期的玄学领袖人物。',
dengzhong:'邓忠(不详-264年),三国时期曹魏名将邓艾之子。景元五年(264年),钟会谋反事败,士兵哗变,钟会被杀,邓艾部将想追还邓艾父子,但卫瓘却派田续追邓艾,于绵竹西相遇,将邓艾和邓忠等人杀死。直至泰始九年(273年)才恢复名节。',
wangyan:'王衍(256年~311年),字夷甫,琅邪郡临沂县(今山东省临沂市)人。西晋末年重臣,玄学清谈领袖,曹魏幽州刺史王雄之孙、平北将军王乂之子、司徒王戎堂弟。王衍出身琅琊王氏。外表清明俊秀,风姿安详文雅,笃好老庄学说,颇有时名。步入仕途后,历任黄门侍郎、中领军、尚书令、尚书仆射等职。光熙元年(307年),升任司空。次年,又任司徒。王衍位高权重,却不思为国,为保全自己,还让弟弟王澄、族弟王敦分任荆州、青州刺史,遭时人鄙夷。王弥进攻洛阳时,王衍率军抵抗。其后转任太尉兼尚书令,又兼领太傅军司。永嘉五年(311年),东海王司马越去世,王衍奉其灵柩返回东海,途中为羯人石勒所俘获。王衍在与石勒交谈时,仍推脱责任,并劝其称帝,石勒大怒,将其与西晋旧臣一同活埋,时年五十六岁。王衍工书法,尤擅行书,《宣和书谱》有其作品《尊夫人帖》。',
- caoxiancaohua:'此处为「曹宪」的相关介绍。关于「曹华」的部分请参考原本的介绍。
曹宪(生卒年不详),女,沛国谯县(今安徽省亳州市)人。东汉末年历史人物,汉献帝刘协嫔妃,魏武帝曹操女儿。建安十八年,嫁给汉献帝刘协,受封为贵人。黄初元年(220年),兄弟曹丕称帝后,汉献帝成为山阳公,不知所终。',
+ caoxiancaohua:'请分别查询参考「曹宪」和「曹华」的部武将介绍。',
zhaoyǎn:'赵俨(171~245年),字伯然,颍川阳翟(今河南禹州市)。东汉末年颍川“四大名士”之一,三国时期魏国名臣。熟读经史,精明强干。建安二年,投靠大将军曹操之后,起家朗陵县令,历任司空府掾、司空主薄、都督护军、扶风太守等职。魏文帝曹丕继位后,历任魏国侍中、驸马都尉、河东太守、典农中郎将、度支尚书,封宜土亭侯。魏明帝曹睿时期,历任大司农、骠骑将军、大司空等职。正始六年,去世,时年七十五,谥号为穆。',
ruiji:'芮姬,芮玄之女,太子孙登妃,黄武五年卒。',
weizi:'卫兹(?-190年),字子许,(《三国演义》中其名为卫弘,当为误记),陈留襄邑(今河南睢县)人。曾举孝廉,先后被车骑将军何苗、司徒杨赐等召辟。中平六年(189年)十二月,曹操在陈留己吾募兵,而卫兹以家财资助曹操,使曹操顺利募得五千士兵。此后,卫兹与曹操共同讨伐董卓。初平元年(190年),卫兹在跟随曹操讨伐董卓途中,于荥阳汴水遭遇董卓军徐荣,力战终日,失利身亡。',
diff --git a/character/tw.js b/character/tw.js
index 94501ee07..a7afa3dac 100644
--- a/character/tw.js
+++ b/character/tw.js
@@ -355,7 +355,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{player:'useCardToPlayer'},
filter:function(event,player){
- return event.card.name=='sha'&&!game.hasNature(event.card,'linked')&&event.targets.length==1&&player.isPhaseUsing()&&((player.countCards('h')&&game.hasPlayer(target=>!event.targets.includes(target)&&player.canUse(event.card,target)))||event.target.countCards('h')>0);
+ return event.card.name=='sha'&&!game.hasNature(event.card,'linked')&&event.targets.length==1&&player.isPhaseUsing()&&(game.hasPlayer(target=>!event.targets.includes(target)&&player.canUse(event.card,target))||event.target.countCards('h')>0);
},
direct:true,
content:function(){
@@ -365,11 +365,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var list=['cancel2'];
var choiceList=[
'弃置一张手牌,令此【杀】可以额外指定一个目标',
- '令其弃置一张手牌,若此【杀】造成伤害,则你摸一张牌且本阶段可以额外使用一张【杀】;若此【杀】未造成伤害,你受到其对你造成的1点伤害',
+ '弃置其一张手牌,若此【杀】造成伤害,则你摸一张牌且本阶段可以额外使用一张【杀】',
];
if(target.countCards('h')) list.unshift('其弃置');
else choiceList[1]=''+choiceList[1]+'';
- if(player.countCards('h')&&game.hasPlayer(targetx=>!trigger.targets.includes(targetx)&&player.canUse(trigger.card,targetx))) list.unshift('你弃置');
+ if(game.hasPlayer(targetx=>!trigger.targets.includes(targetx)&&player.canUse(trigger.card,targetx))) list.unshift('你弃置');
else choiceList[0]=''+choiceList[0]+'';
player.chooseControl(list).set('choiceList',choiceList).set('ai',()=>{
var controls=_status.event.controls;
@@ -401,22 +401,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.control!='cancel2'){
player.logSkill('twhuzhong',target);
if(result.control=='其弃置'){
- target.chooseToDiscard('h',true);
+ player.discardPlayerCard(target,'h',true);
player.when('useCardAfter').filter(evt=>evt==trigger.getParent()).then(()=>{
if(player.getHistory('sourceDamage',evt=>evt.card==trigger.card).length){
player.draw();
player.addTempSkill('twhuzhong_sha','phaseUseAfter');
player.addMark('twhuzhong_sha',1,false);
}
- else{
- target.line(player);
- player.damage(1,target);
- }
- }).vars({target:target});
+ });
event.finish();
}
else{
- player.chooseToDiscard('h',true);
player.chooseTarget('请选择'+get.translation(trigger.card)+'的额外目标',function(card,player,target){
var trigger=_status.event.getTrigger();
return !trigger.targets.includes(target)&&player.canUse(trigger.card,target);
@@ -457,7 +452,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return event.hasNature();
},
forced:true,
- locked:false,
content:function(){
'step 0'
if(event.triggername=='damageBegin2'){
@@ -556,22 +550,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
usable:1,
direct:true,
- content:function(){
- 'step 0'
+ content:function*(event,map){
+ var player=map.player,trigger=map.trigger;
var list=get.inpileVCardList(info=>{
return ['basic','trick','delay'].includes(info[0])&&!player.getStorage('twshenyi').includes(info[2]);
});
var dialog=[`###${get.prompt('twshenyi',trigger.player)}###