Merge pull request #758 from mengxinzxz/PR-Branch

技能调整+部分新武将
This commit is contained in:
Spmario233 2024-01-02 23:04:23 +08:00 committed by GitHub
commit 92d59fd895
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
44 changed files with 476 additions and 32 deletions

BIN
audio/die/caoxian.mp3 Normal file

Binary file not shown.

BIN
audio/die/caoyi.mp3 Normal file

Binary file not shown.

BIN
audio/die/dc_sb_lusu.mp3 Normal file

Binary file not shown.

BIN
audio/die/dc_sb_zhouyu.mp3 Normal file

Binary file not shown.

BIN
audio/die/dc_sunchen.mp3 Normal file

Binary file not shown.

BIN
audio/die/sb_guanyu.mp3 Normal file

Binary file not shown.

BIN
audio/die/xiahoumao.mp3 Normal file

Binary file not shown.

BIN
audio/skill/cuguo1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/cuguo2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dclingxi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dclingxi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcmiyi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcmiyi2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dcsbmingshi.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dcsbyingmou.mp3 Normal file

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dcyinjun1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcyinjun2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczhifou1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczhifou2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczigu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczigu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczuowei1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczuowei2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbwusheng1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbwusheng2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbwusheng3.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbyijue1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbyijue2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/tongwei1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/tongwei2.mp3 Normal file

Binary file not shown.

View File

@ -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.你于本回合此前以此法防止过该伤害来源的伤害且你的体力值不小于32.本次伤害为属性伤害且你的体力值为23.本次伤害的渠道为红色的牌且你的体力值为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·铜雀台',

View File

@ -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',

View File

@ -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:'谋攻篇·识',

View File

@ -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:'此处为「曹宪」的相关介绍。关于「曹华」的部分请参考原本的介绍。<br>曹宪生卒年不详沛国谯县今安徽省亳州市人。东汉末年历史人物汉献帝刘协嫔妃魏武帝曹操女儿。建安十八年嫁给汉献帝刘协受封为贵人。黄初元年220年兄弟曹丕称帝后汉献帝成为山阳公不知所终。',
caoxiancaohua:'请分别查询参考「曹宪」和「曹华」的部武将介绍。',
zhaoyǎn:'赵俨171~245年字伯然颍川阳翟今河南禹州市。东汉末年颍川“四大名士”之一三国时期魏国名臣。熟读经史精明强干。建安二年投靠大将军曹操之后起家朗陵县令历任司空府掾、司空主薄、都督护军、扶风太守等职。魏文帝曹丕继位后历任魏国侍中、驸马都尉、河东太守、典农中郎将、度支尚书封宜土亭侯。魏明帝曹睿时期历任大司农、骠骑将军、大司空等职。正始六年去世时年七十五谥号为穆。',
ruiji:'芮姬,芮玄之女,太子孙登妃,黄武五年卒。',
weizi:'卫兹(?-190年字子许《三国演义》中其名为卫弘当为误记陈留襄邑今河南睢县人。曾举孝廉先后被车骑将军何苗、司徒杨赐等召辟。中平六年189年十二月曹操在陈留己吾募兵而卫兹以家财资助曹操使曹操顺利募得五千士兵。此后卫兹与曹操共同讨伐董卓。初平元年190年卫兹在跟随曹操讨伐董卓途中于荥阳汴水遭遇董卓军徐荣力战终日失利身亡。',

View File

@ -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]='<span style="opacity:0.5">'+choiceList[1]+'</span>';
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]='<span style="opacity:0.5">'+choiceList[0]+'</span>';
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)}###<div class="text center">从牌堆中将一张牌作为“侠义”置于武将牌上${player!=trigger.player&&player.countCards('h')?',然后将所有手牌交给其':''}</div>`,[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,18 +574,25 @@ 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);
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--;
},
video:(player,info)=>lib.skill.twshenyi.createGainTag(info[0],info[1]),
@ -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点体力。②你的拼点牌点数+XX为你已损失的体力值。',
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:'运筹帷幄·智',

View File

@ -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]='<span style="opacity:0.5">'+choiceList[0]+'</span>';
if(!player.hasSkill('dczhifou_1')&&game.hasPlayer(target=>{
return target==player?target.countDiscardableCards(target,'he'):target.countCards('he');
})) list.push('弃置卡牌');
else choiceList[1]='<span style="opacity:0.5">'+choiceList[1]+'</span>';
if(!player.hasSkill('dczhifou_2')) list.push('失去体力');
else choiceList[2]='<span style="opacity:0.5">'+choiceList[2]+'</span>';
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:'百战虎贲',

BIN
image/character/caoxian.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB