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)}###
从牌堆中将一张牌作为“侠义”置于武将牌上${player!=trigger.player&&player.countCards('h')?',然后将所有手牌交给其':''}
`,[list,'vcard']]; - player.chooseButton(dialog).set('ai',function(button){ + var result=yield player.chooseButton(dialog).set('ai',function(button){ var trigger=_status.event.getTrigger(); var player=_status.event.player,name=button.link[2]; - if(get.attitude(player,trigger.player)<=0) return 0; if(!get.cardPile2(card=>card.name==name)) return 0; var value=get.value({name:name}); if(['tao','jiu','caochuan','wuxie'].includes(name)&&get.event().getRand()>0.4) return value*2; return value; }); - 'step 1' if(result.bool){ var name=result.links[0][2],nature=result.links[0][3]; var cardx={name:name,nature:nature}; @@ -582,16 +574,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){ var card=get.cardPile2(card=>get.name(card,false)==name&&get.nature(card,false)==nature); if(card) player.addToExpansion([card],'gain2').gaintag.add('twshenyi'); else{ - player.chat('无牌可得?!'); - game.log('但是牌堆中已经没有','#y'+get.translation(name),'了!'); + var card=get.cardPile2(card=>get.type2(card)==get.type2(name)); + if(card) player.addToExpansion([card],'gain2').gaintag.add('twshenyi'); + else player.chat('无牌可得?!'); } if(trigger.player!=player&&player.countCards('h')){ game.delayex(); var skill='twshenyi_'+player.playerid; game.broadcastAll(lib.skill.twshenyi.createGainTag,skill,player.name); game.addVideo('skill',player,['twshenyi',[skill,player.name]]); - player.give(player.getCards('h'),trigger.player).gaintag.add(skill); - player.addSkill('twshenyi_draw'); + var result2=yield player.chooseCard('伸义:是否将任意张牌交给'+get.translation(trigger.player)+'?',[1,player.countCards('h')]).set('ai',card=>{ + if(!_status.event.goon) return 0; + return 7-get.value(card); + }).set('goon',get.attitude(player,trigger.player)>0); + if(result2.bool){ + player.give(result2.cards,trigger.player).gaintag.add(skill); + player.addSkill('twshenyi_draw'); + } } } else player.storage.counttrigger.twshenyi--; @@ -701,18 +700,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ init:{ audio:'twxinghan', trigger:{ - player:['loseEnd','dying','die','dyingAfter'], + player:['loseEnd','dying','phaseBefore','phaseAfter','dyingAfter','die'], global:['equipEnd','addJudgeEnd','gainEnd','loseAsyncEnd','addToExpansionEnd'], }, filter:function(event,player){ - return (player.getExpansions('twshenyi').length&&event.name!='die'&&(!player.countCards('h')||player.isDying()))^player.hasSkill('twxinghan_in'); + return (player.getExpansions('twshenyi').length&&event.name!='die'&&(_status.currentPhase!=player||player.isDying()))^player.hasSkill('twxinghan_in'); }, forced:true, firstDo:true, silent:true, forceDie:true, content:function(){ - if(player.getExpansions('twshenyi').length&&trigger.name!='die'&&(!player.countCards('h')||player.isDying())){ + if(player.getExpansions('twshenyi').length&&trigger.name!='die'&&(_status.currentPhase!=player||player.isDying())){ var cards=player.getExpansions('twshenyi'); var cardsx=cards.map(card=>{ var cardx=ui.create.card(); @@ -15234,18 +15233,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){ twdanlie_info:'①出牌阶段限一次。你可以与至多三名其他角色共同拼点。若你赢,你对没赢的角色依次造成1点伤害;若你没赢,你失去1点体力。②你的拼点牌点数+X(X为你已损失的体力值)。', xia_zhangwei:'张葳', twhuzhong:'护众', - twhuzhong_info:'当你于出牌阶段使用无属性【杀】指定唯一目标角色时,你可以选择一项:①弃置一张手牌,然后你可以为此牌额外选择一个目标;②令其弃置一张手牌,此牌结算完毕后,若此牌造成过伤害,则你摸一张牌且本阶段可以额外使用一张【杀】,否则其对你造成1点伤害。', + twhuzhong_info:'当你于出牌阶段使用无属性【杀】指定唯一目标角色时,你可以选择一项:①为此牌额外选择一个目标;②弃置其一张手牌,此牌结算完毕后,若此牌造成过伤害,则你摸一张牌且本阶段可以额外使用一张【杀】。', twfenwang:'焚亡', - twfenwang_info:'①当你受到属性伤害时,你须弃置一张牌或令此伤害+1。②当你对其他角色造成非属性伤害时,若你的手牌数大于其,则此伤害+1。', + twfenwang_info:'锁定技。①当你受到属性伤害时,你须弃置一张牌或令此伤害+1。②当你对其他角色造成非属性伤害时,若你的手牌数大于其,则此伤害+1。', xia_xiahousone:'夏侯子萼', twchengxi:'承袭', twchengxi_info:'出牌阶段每名角色限一次,你可以摸一张牌并与一名其他角色拼点。若你赢,你使用的下一张基本牌或非延时锦囊牌结算完毕后,你视为对原目标使用一张无次数限制的同名牌;若你没赢,其视为对你使用一张无距离限制的【杀】。', xia_liubei:'侠刘备', xia_liubei_prefix:'侠', twshenyi:'伸义', - twshenyi_info:'每回合限一次。当你或你攻击范围内的一名角色于一回合内首次受到伤害后,你可以声明一种基本牌或锦囊牌(每种牌名限一次),然后从牌堆中将一张同名牌称为“侠义”置于武将牌上。若受伤角色不为你,则你将所有手牌交给其,且当其失去一张你以此法交给其的牌后,你摸一张牌。', + twshenyi_info:'每回合限一次,当你或你攻击范围内的一名角色于一回合内首次受到伤害后,你可以声明一种基本牌或锦囊牌(每种牌名限一次),然后从牌堆中将一张同名牌(若没有同名牌则改为同类型的牌)称为“侠义”置于武将牌上。若受伤角色不为你,则你可以将任意张手牌交给其,且当其失去一张你以此法交给其的牌后,你摸一张牌。', twxinghan:'兴汉', - twxinghan_info:'①当你没有手牌时或你处于濒死状态时,你可以如手牌般使用或打出“侠义”牌。②准备阶段,若“侠义”牌数大于存活角色数,则你可以依次使用其中所有可以使用的牌。然后你获得如下效果:回合结束时,你弃置所有手牌并失去X点体力(X为你的体力值-1且X至少为1)。', + twxinghan_info:'①你的回合外或你处于濒死状态时,你可以如手牌般使用或打出“侠义”牌。②准备阶段,若“侠义”牌数大于存活角色数,则你可以依次使用其中所有可以使用的牌。然后你获得如下效果:回合结束时,你弃置所有手牌并失去X点体力(X为你的体力值-1且X至少为1)。', tw_mobile:'海外服·稀有专属', tw_yunchouzhi:'运筹帷幄·智', diff --git a/character/xianding.js b/character/xianding.js index bdd931254..a740e68e8 100644 --- a/character/xianding.js +++ b/character/xianding.js @@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ name:'xianding', connect:true, character:{ + caoxian:['female','wei',3,['dclingxi','dczhifou']], dc_sb_zhouyu:['male','wu',4,['dcsbronghuo','dcsbyingmou']], dc_sb_lusu:['male','wu',3,['dcsbmingshi','dcsbmengmou']], zhangjian:['male','qun',105,['dc_zj_a','dc_zj_b'],['unseen']], @@ -96,7 +97,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ sp2_bizhe:['dc_luotong','dc_wangchang','chengbing','dc_yangbiao','ruanji'], sp2_huangjia:['caomao','liubian','dc_liuyu','quanhuijie','dingshangwan','yuanji','xielingyu','sunyu','ganfurenmifuren','dc_ganfuren','dc_mifuren','dc_shixie'], sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'], - sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen','zhugeruoxue'], + sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen','zhugeruoxue','caoxian'], sp2_yinyu:['zhouyi','luyi','sunlingluan','caoyi'], sp2_wangzhe:['dc_daxiaoqiao','dc_sp_machao'], sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao','tianshangyi','malingli'], @@ -109,6 +110,173 @@ game.import('character',function(lib,game,ui,get,ai,_status){ } }, skill:{ + //曹宪 + dclingxi:{ + audio:2, + trigger:{player:['phaseUseBegin','phaseUseEnd']}, + filter:function(event,player){ + return player.countCards('he')&&player.maxHp>0; + }, + direct:true, + content:function*(event,map){ + var player=map.player,num=player.maxHp; + var result=yield player.chooseCard(get.prompt('dclingxi'),'将至多'+get.cnNumber(num)+'张牌称为“翼”置于武将牌上','he',[1,num]).set('ai',card=>{ + var player=_status.event.player; + if(player.countCards('hs',card=>player.hasValueTarget(card))&&player.countCards('hs',card=>player.hasValueTarget(card)&&!ui.selected.cards.includes(card))<=2) return 0; + return 6-get.value(card)+(player.getExpansions('dclingxi').some(cardx=>get.suit(card,false)==get.suit(cardx,false))?1:3); + }).set('complexCard',true); + if(result.bool){ + player.logSkill('dclingxi'); + player.addToExpansion(result.cards,player,'give').gaintag.add('dclingxi'); + } + }, + marktext:'翼', + intro:{ + content:'expansion', + markcount:'expansion', + }, + onremove:function(player,skill){ + var cards=player.getExpansions(skill); + if(cards.length) player.loseToDiscardpile(cards); + }, + group:'dclingxi_effect', + subSkill:{ + effect:{ + audio:'dclingxi', + trigger:{ + player:'loseAfter', + global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter'], + }, + filter:function(event,player){ + var num=2*player.getExpansions('dclingxi').reduce((list,card)=>list.add(get.suit(card,false)),[]).length; + num-=player.countCards('h'); + if(!num) return false; + if(event.name=='lose'&&event.getlx!==false){ + for(var i in event.gaintag_map){ + if(event.gaintag_map[i].includes('dclingxi')) return true; + } + return false; + } + return game.getGlobalHistory('cardMove',function(evt){ + if(evt.name!='lose'||event!=evt.getParent()) return false; + for(var i in evt.gaintag_map){ + if(evt.gaintag_map[i].includes('dclingxi')) return evt.player==player; + } + return false; + }).length; + }, + forced:true, + locked:false, + content:function(){ + var num=2*player.getExpansions('dclingxi').reduce((list,card)=>list.add(get.suit(card,false)),[]).length; + num-=player.countCards('h'); + if(num>0) player.draw(num); + else player.chooseToDiscard('h',-num,true); + }, + }, + }, + }, + dczhifou:{ + audio:2, + trigger:{player:'useCardAfter'}, + filter:function(event,player){ + var num=Math.max(player.getHistory('useSkill',evt=>evt.skill=='dczhifou').length,1); + return player.getExpansions('dclingxi').length>=num; + }, + direct:true, + content:function*(event,map){ + var player=map.player,cards=player.getExpansions('dclingxi'); + var num=Math.max(player.getHistory('useSkill',evt=>evt.skill=='dczhifou').length,1); + var result=yield player.chooseButton(['###'+get.prompt('dczhifou')+'###移去至少'+get.cnNumber(num)+'张武将牌上的“翼”',cards],[num,cards.length]).set('ai',button=>{ + var player=_status.event.player; + if(2*player.getExpansions('dclingxi').filter(card=>!ui.selected.buttons.some(but=>but.link==card)).reduce((list,card)=>list.add(get.suit(card,false)),[]).length-player.countCards('h')<=0) return 0; + if(player.getExpansions('dclingxi').filter(card=>!ui.selected.buttons.some(but=>get.suit(but.link,false)==get.suit(card,false)))) return 3; + return 1; + }).set('num',num); + if(result.bool){ + player.logSkill('dczhifou'); + player.loseToDiscardpile(result.links); + var list=[],choiceList=[ + '将一张牌称为“翼”置于'+get.translation(player)+'的武将牌上', + '弃置两张牌', + '失去1点体力', + ]; + if(!player.hasSkill('dczhifou_0')&&game.hasPlayer(target=>target.countCards('he'))) list.push('置入“翼”'); + else choiceList[0]=''+choiceList[0]+''; + if(!player.hasSkill('dczhifou_1')&&game.hasPlayer(target=>{ + return target==player?target.countDiscardableCards(target,'he'):target.countCards('he'); + })) list.push('弃置卡牌'); + else choiceList[1]=''+choiceList[1]+''; + if(!player.hasSkill('dczhifou_2')) list.push('失去体力'); + else choiceList[2]=''+choiceList[2]+''; + if(!list.length) return; + var str=''; + for(var i of list){ + str+=i; + str+='、'; + } + str=str.slice(0,-1); + var result2=yield player.chooseTarget('知否:令一名角色执行以下一项',str,(card,player,target)=>{ + if(!player.hasSkill('dczhifou_2')) return true; + if(!player.hasSkill('dczhifou_0')&&target.countCards('he')) return true; + return target==player?target.countDiscardableCards(target,'he'):target.countCards('he'); + },true).set('ai',target=>{ + var player=_status.event.player,list=[]; + if(!player.hasSkill('dczhifou_0')) list.push(get.effect(target,{name:'guohe_copy2'},target,player)/2); + if(!player.hasSkill('dczhifou_1')) list.push(get.effect(target,{name:'guohe_copy2'},target,player)); + if(!player.hasSkill('dczhifou_2')) list.push(get.effect(target,{name:'losehp'},player,player)); + return list.sort((a,b)=>b-a)[0]; + }); + if(result2.bool){ + var target=result2.targets[0]; + player.line(target); + list=list.filter(control=>{ + if(control=='失去体力') return true; + if(control=='置入“翼”'&&target.countCards('he')) return true; + return target.countDiscardableCards(target,'he'); + }); + var result3; + if(!list.length){ + game.log(target,'没有可执行项'); + return; + } + else if(list.length==1) result3={control:list[0]}; + else result3=yield target.chooseControl(list).set('prompt','知否:请选择一项').set('choiceList',choiceList).set('ai',()=>{ + var player=_status.event.player; + var getNum=function(control){ + return [ + get.effect(player,{name:'guohe_copy2'},player,player)/2, + get.effect(player,{name:'guohe_copy2'},player,player), + get.effect(player,{name:'losehp'},player,player), + ][['置入“翼”','弃置卡牌','失去体力'].indexOf(control)]; + }; + var controls=_status.event.controls.slice(); + return controls.sort((a,b)=>getNum(b)-getNum(a))[0]; + }); + switch(result3.control){ + case '置入“翼”': + player.addTempSkill('dczhifou_0'); + var result4=yield target.chooseCard('he',choiceList[0],true); + if(result4.bool) player.addToExpansion(result4.cards,target,'give').gaintag.add('dclingxi'); + break; + case '弃置卡牌': + player.addTempSkill('dczhifou_1'); + target.chooseToDiscard('he',2,true); + break; + case '失去体力': + player.addTempSkill('dczhifou_2'); + target.loseHp(); + break; + } + } + } + }, + subSkill:{ + '0':{charlotte:true}, + '1':{charlotte:true}, + '2':{charlotte:true}, + }, + }, //周瑜 //无 双 万 军 取 首 dcsbronghuo:{ @@ -13078,6 +13246,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){ }, }, characterIntro:{ + caoxian:'曹宪(生卒年不详),女,沛国谯县(今安徽省亳州市)人。东汉末年历史人物,汉献帝刘协嫔妃,魏武帝曹操女儿。建安十八年,嫁给汉献帝刘协,受封为贵人。黄初元年(220年),兄弟曹丕称帝后,汉献帝成为山阳公,不知所终。', zhangjian:'张臶(136年-240年),字子明,钜鹿人。汉末三国时期隐士、音乐家,精通谶纬之学。张臶生活的年代从东汉一直到曹魏齐王时期,受到朝廷多次征召,一直回避,不愿做官。他活了一百零五岁,是三国时期有可靠记载的最长寿的人之一。', puyuan:'蒲元是三国时蜀汉杰出的工匠。为诸葛亮造刀三千口,并且制作木牛流马。后来姜维为他写过两部传记《蒲元传》《蒲元别传》。', guanlu:"管辂(209年-256年),字公明,平原(今山东德州平原县)人。三国时期曹魏术士。年八九岁,便喜仰观星辰。成人后,精通《周易》,善于卜筮、相术,习鸟语,相传每言辄中,出神入化。体性宽大,常以德报怨。正元初,为少府丞。北宋时被追封为平原子。管辂是历史上著名的术士,被后世奉为卜卦观相的祖师。", @@ -13746,6 +13915,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){ dcsbronghuo_info:'锁定技,当你使用火【杀】或【火攻】时,此牌伤害基值改为场上势力数。', dcsbyingmou:'英谋', dcsbyingmou_info:'转换技,每回合限一次,当你使用牌指定第一个目标后,你可以选择一名目标角色:阴,你将手牌数摸至与其相同(至多摸五张),然后视为对其使用一张【火攻】;阳,令一名手牌数为全场最大的角色对其使用手牌中所有的【杀】和伤害类锦囊牌(若其没有可使用的牌则将手牌数弃至与你相同)。', + caoxian:'曹宪', + dclingxi:'灵犀', + dclingxi_info:'出牌阶段开始和结束时,你可以将至多X张牌称为“翼”置于你的武将牌上(X为你的体力上限)。当你失去武将牌上的“翼”时,你将手牌数调整至Y张(Y为你武将牌上的“翼”所含有的花色数的两倍)。', + dczhifou:'知否', + dczhifou_info:'当你使用牌结算完毕后,你可以移去至少X张武将牌上的“翼”(X为本回合此前发动此技能的次数,且X至少为1),然后令一名角色选择执行以下一项:①将一张牌称为“翼”置于你的武将牌上;②弃置两张牌;③失去1点体力。', sp2_yinyu:'隐山之玉', sp2_huben:'百战虎贲', diff --git a/image/character/caoxian.jpg b/image/character/caoxian.jpg new file mode 100644 index 000000000..dcce237de Binary files /dev/null and b/image/character/caoxian.jpg differ diff --git a/image/character/dc_sunce.jpg b/image/character/dc_sunce.jpg new file mode 100644 index 000000000..6d662132d Binary files /dev/null and b/image/character/dc_sunce.jpg differ