谋鲁肃谋周瑜,隐藏张臶

This commit is contained in:
mengxinzxz 2023-12-15 11:02:08 +08:00
parent 27168bfc5f
commit 0d09dabc2a
4 changed files with 343 additions and 1 deletions

View File

@ -350,6 +350,7 @@ window.noname_character_rank={
'sb_zhugeliang',
'ol_jianyong',
'ol_sb_jiangwei',
'dc_sb_zhouyu',
],
am:[
'diy_caiwenji',
@ -642,6 +643,7 @@ window.noname_character_rank={
'dc_guansuo',
'dc_dongzhao',
'zhugeruoxue',
'dc_sb_lusu',
],
bp:[
'chess_diaochan',
@ -2076,6 +2078,7 @@ window.noname_character_rank={
'yj_zhoubuyi',
'ol_jianyong',
'ol_sb_jiangwei',
'dc_sb_zhouyu',
],
rare:[
'ol_caozhang',
@ -2543,6 +2546,7 @@ window.noname_character_rank={
'yue_zhoufei',
'ol_dingshangwan',
'ol_liwan',
'dc_sb_lusu',
],
junk:[
'sunshao',

View File

@ -4,7 +4,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'xianding',
connect:true,
character:{
zhangjian:['male','qun',105,['dc_zj_a','dc_zj_b']],
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']],
zhugeruoxue:['female','wei',3,['dcqiongying','dcnuanhui']],
caoyi:['female','wei',4,['dcmiyi','dcyinjun']],
malingli:['female','shu',3,['dclima','dcxiaoyin','dchuahuo']],
@ -103,9 +105,309 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp2_qifu:['dc_guansuo','xin_baosanniang','dc_zhaoxiang'],
sp2_gaoshan:['wanglang','liuhui','zhangjian'],
sp2_wumiao:['wu_zhugeliang','wu_luxun'],
sp2_mouding:['dc_sb_lusu','dc_sb_zhouyu'],
}
},
skill:{
//周瑜
//无 双 万 军 取 首
dcsbronghuo:{
audio:2,
trigger:{player:'useCard'},
filter:function(event,player){
return (event.card.name=='sha'&&game.hasNature(event.card,'fire'))||event.card.name=='huogong';
},
forced:true,
content:function(){
trigger.baseDamage=game.countGroup();
},
ai:{threaten:3.5},
},
dcsbyingmou:{
mark:true,
marktext:'☯',
zhuanhuanji:true,
intro:{
content:function(storage){
if(!storage) return '每回合限一次,当你使用牌指定第一个目标后,你可以选择一名目标角色,你将手牌数摸至与其相同,然后视为对其使用一张【火攻】。'
return '每回合限一次,当你使用牌指定第一个目标后,你可以选择一名目标角色,令一名手牌数为全场最大的角色对其使用手牌中所有的【杀】和伤害类锦囊牌,然后该角色将手牌数弃至与你相同。';
},
},
audio:2,
trigger:{player:'useCardToPlayered'},
filter:function(event,player){
return event.isFirstTarget;
},
usable:1,
direct:true,
content:function*(event,map){
var result,player=map.player,targets=map.trigger.targets;
var storage=player.storage.dcsbyingmou;
if(storage){
result=yield player.chooseCardTarget({
prompt:get.prompt('dcsbyingmou'),
prompt2:'选择一名目标角色,令一名手牌数为全场最大的角色对其使用手牌中所有的【杀】和伤害类锦囊牌,然后该角色将手牌数弃至与你相同',
filterTarget:function(card,player,target){
if(!ui.selected.targets.length) return _status.event.targets.includes(target);
return target.isMaxHandcard();
},
selectTarget:2,
complexSelect:true,
complexTarget:true,
multitarget:true,
targetprompt:['目标角色','使用角色'],
filterCard:()=>false,
selectCard:-1,
ai2:function(target){
var player=_status.event.player;
var getNum=function(player,target,source){
return player.getCards('h',card=>{
if(get.name(card)!='sha'&&(get.type(card)!='trick'||!get.tag(card,'damage'))) return false;
return player.canUse(card,target,false);
}).reduce((sum,card)=>sum+get.effect(target,card,player,source),0);
};
if(!ui.selected.targets.length){
var targets=game.filterPlayer(target=>target.isMaxHandcard());
targets.sort((a,b)=>getNum(b,target,player)-getNum(a,target,player));
return getNum(targets[0],target,player);
}
return getNum(target,ui.selected.targets[0],player);
},
}).set('targets',targets);
}
else result=yield player.chooseTarget(get.prompt('dcsbyingmou'),'选择一名目标角色,将手牌数摸至与其相同,然后视为对其使用一张【火攻】',(card,player,target)=>_status.event.targets.includes(target)).set('ai',target=>{
var player=_status.event.player;
return Math.max(0,target.countCards('h')-player.countCards('h'))*2+get.effect(target,{name:'huogong'},player,player);
}).set('targets',targets);
if(result.bool){
var targets=result.targets;
var target=result.targets[0];
if(storage){
player.logSkill('dcsbyingmou',target,false);
player.line2(targets);
player.changeZhuanhuanji('dcsbyingmou');
var source=result.targets[1];
while(source.countCards('h',card=>{
if(get.name(card)!='sha'&&(get.type(card)!='trick'||!get.tag(card,'damage'))) return false;
return source.canUse(card,target,false);
})){
source.useCard(source.getCards('h',card=>{
if(get.name(card)!='sha'&&(get.type(card)!='trick'||!get.tag(card,'damage'))) return false;
return source.canUse(card,target,false);
}).randomGet(),target,false);
}
player.when('dcsbyingmouEnd').then(()=>{
if(player.countCards('h')>target.countCards('h')) player.chooseToDiscard(player.countCards('h')-target.countCards('h'),'h',true);
}).vars({target:source});
}
else{
player.logSkill('dcsbyingmou',target);
player.changeZhuanhuanji('dcsbyingmou');
if(player.countCards('h')<target.countCards('h')) player.drawTo(target.countCards('h'));
if(player.canUse({name:'huogong'},target,false)) player.useCard({name:'huogong'},target,false);
}
}
else player.storage.counttrigger.dcsbyingmou--;
},
},
//鲁肃
dcsbmingshi:{
audio:2,
trigger:{player:'phaseDrawBegin2'},
filter:function(event,player){
return !event.numFixed;
},
frequent:true,
content:function(){
trigger.num+=2;
player.when('phaseDrawEnd').filter((evt,player)=>evt==trigger&&player.countCards('h')).then(()=>{
var str='明势:请展示三张牌并令一名其他角色选择获得其中的一张牌';
if(player.countCards('h')<=3) str='明势:展示手牌并令一名其他角色选择获得其中的一张牌';
player.chooseCardTarget({
prompt:str,
filterTarget:lib.filter.notMe,
filterCard:true,
selectCard:function(){
var player=_status.event.player;
if(player.countCards('h')<=3) return -1;
return 3;
},
position:'h',
forced:true,
ai1:function(card){
return -get.value(card);
},
ai2:function(target){
var player=_status.event.player;
if(player.hasSkill('dcsbmengmou')&&!get.is.blocked('dcsbmengmou',player)&&player.storage.dcsbmengmou&&get.attitude(player,target)<0) return get.effect(target,{name:'losehp'},player,player);
return get.attitude(player,target);
},
});
}).then(()=>{
if(result.bool){
var target=result.targets[0];
event.target=target;
var cards=result.cards;
player.showCards(cards,get.translation(player)+'发动了【明势】');
target.chooseButton(['明势:请获得其中一张牌',cards],true).set('filterButton',button=>{
return lib.filter.canBeGained(button.link,_status.event.source,_status.event.player);
}).set('ai',button=>get.value(button.link)).set('source',player);
}
else event.finish();
}).then(()=>{
if(result.bool){
var card=result.links[0];
if(lib.filter.canBeGained(card,player,target)) target.gain(card,player,'giveAuto');
else game.log('但',card,'不能被',player,'获得!');
}
});
},
},
dcsbmengmou:{
mark:true,
marktext:'☯',
zhuanhuanji:true,
intro:{
content:function(storage){
if(!storage) return '每回合限一次当你得到其他角色的牌后你可以令该角色使用至多X张【杀】且其每以此法造成1点伤害其回复1点体力。X为你的体力值'
return '每回合限一次其他角色得到你的牌后你可令该角色打出至多X张【杀】然后其失去Y点体力。X为你的体力值Y为X-其打出【杀】数)';
},
},
audio:2,
trigger:{global:['gainAfter','loseAsyncAfter']},
filter:function(event,player){
if(!player.getHp()) return false;
if(event.name=='loseAsync'&&event.type!='gain') return false;
var storage=player.storage.dcsbmengmou;
var cards;
if(storage){
if(player.hasSkill('dcsbmengmou_true')) return false;
cards=event.getl(player).cards2;
return game.hasPlayer(function(current){
if(current==player) return false;
var cardsx=event.getg(current);
return cardsx.some(i=>cards.includes(i));
});
}
else cards=event.getg(player);
if(player.hasSkill('dcsbmengmou_false')) return false;
return game.hasPlayer(function(current){
if(current==player) return false;
var cardsx=event.getl(current).cards2;
return cards.some(i=>cardsx.includes(i));
});
},
direct:true,
content:function*(event,map){
var player=map.player,trigger=map.trigger;
var storage=player.storage.dcsbmengmou;
player.addTempSkill('dcsbmengmou_effect','dcsbmengmouAfter');
var targets,cards,num=player.getHp();
if(storage){
cards=trigger.getl(player).cards2;
targets=game.filterPlayer(function(current){
if(current==player) return false;
var cardsx=trigger.getg(current);
return cardsx.some(i=>cards.includes(i));
});
}
else{
cards=trigger.getg(player);
targets=game.filterPlayer(function(current){
if(current==player) return false;
var cardsx=trigger.getl(current).cards2;
return cards.some(i=>cardsx.includes(i));
});
}
var check_true=function(player,target){
if(get.attitude(player,target)>0){
if(target.countCards('hs',card=>{
if(get.name(card)!='sha') return false;
return target.hasValueTarget(card);
})) return 4;
return 0.5;
}
if(get.attitude(player,target)<0){
if(!target.countCards('hs',card=>{
if(get.name(card)!='sha') return false;
return target.hasValueTarget(card);
})){
if(target.countCards('hs',card=>{
if(get.name(card)!='sha') return false;
return target.hasUseTarget(card);
})) return -3;
return -1;
}
return 0;
}
return 0;
};
var check_false=function(player,target){
if(get.attitude(player,target)<0) return get.effect(target,{name:'losehp'},player,player);
return 0;
};
var result,target;
if(targets.length==1){
target=targets[0];
var str;
if(storage) str='令'+get.translation(target)+'打出至多'+get.cnNumber(num)+'张【杀】然后其失去Y点体力。Y为'+num+'-其打出【杀】数)';
else str='令'+get.translation(target)+'使用至多'+get.cnNumber(num)+'张【杀】其每以此法造成1点伤害其回复1点体力';
result=yield player.chooseBool(get.prompt('dcsbmengmou',target),str).set('choice',(storage?check_true(player,target):check_false(player,target))>0);
}
else{
result=yield player.chooseTarget(get.prompt('dcsbmengmou'),lib.skill.dcsbmengmou.intro.content(storage),(card,player,target)=>_status.event.targets.includes(target)).set('ai',target=>{
return _status.event.check(_status.event.player,target);
}).set('targets',targets).set('check',storage?check_true:check_false).set('ainmate',false);
}
if(result.bool){
if(!target) target=result.targets[0];
player.logSkill('dcsbmengmou',target);
player.addTempSkill('dcsbmengmou_'+(storage||false));
player.changeZhuanhuanji('dcsbmengmou');
while(num>0){
num--;
var result2;
if(storage){
result2=yield target.chooseToRespond((card,player)=>{
return get.name(card)=='sha';
}).set('ai',card=>{
return 1+Math.random();
}).set('prompt','盟谋:是否打出一张【杀】?').set('prompt2','当前进度:'+(3-num)+'/3');
}
else result2=yield target.chooseToUse(card=>{
if(!lib.filter.cardEnabled(card,_status.event.player,_status.event)) return false;
return get.name(card)=='sha';
}).set('prompt','盟谋:是否使用一张【杀】?').set('prompt2','当前进度:'+(3-num)+'/3');
if(!result2.bool){
if(storage){
target.popup('杯具');
target.loseHp(num+1);
}
break;
}
}
}
},
subSkill:{
effect:{
charlotte:true,
trigger:{global:'damageSource'},
filter:function(event,player){
if(event.getParent().type!='card') return false;
if(event.source.isHealthy()||event.card.name!='sha') return false;
return event.getParent(4).name=='dcsbmengmou'&&event.getParent(4).player==player;
},
forced:true,
popup:false,
firstDo:true,
content:function(){
trigger.source.recover(trigger.num);
},
},
true:{charlotte:true},
false:{charlotte:false},
},
},
//张臶
dc_zj_a:{
audio:2,
@ -12895,6 +13197,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dczhangcai:function(player){
return '当你使用或打出'+(player.hasSkill('dczhangcai_all')?'':'点数为8的')+'牌时你可以摸X张牌X为你手牌区里'+(player.hasSkill('dczhangcai_all')?'与此牌点数相同':'点数为8')+'的牌数且至少为1。';
},
dcsbmengmou:function(player){
var storage=player.storage.dcsbmengmou;
var str='转换技,每回合每项各限一次:';
if(!storage) str+='<span class="bluetext">';
str+='阴当你得到其他角色的牌后你可以令该角色使用至多X张【杀】且其每以此法造成1点伤害其回复1点体力';
if(!storage) str+='</span>';
if(storage) str+='<span class="bluetext">';
str+='阳其他角色得到你的牌后你可令该角色打出至多X张【杀】然后其失去Y点体力。';
if(storage) str+='</span>';
str+='X为你的体力值Y为X-其打出【杀】数)';
return str;
},
dcsbyingmou:function(player){
var storage=player.storage.dcsbyingmou;
var str='转换技,每回合限一次,当你使用牌指定第一个目标后,你可以选择一名目标角色:';
if(!storage) str+='<span class="bluetext">';
str+='阴,你将手牌数摸至与其相同,然后视为对其使用一张【火攻】;';
if(!storage) str+='</span>';
if(storage) str+='<span class="bluetext">';
str+='阳,令一名手牌数为全场最大的角色对其使用手牌中所有的【杀】和伤害类锦囊牌,然后该角色将手牌数弃至与你相同。';
if(storage) str+='</span>';
return str;
},
},
characterReplace:{
wenyang:['wenyang','db_wenyang','diy_wenyang'],
@ -13406,6 +13731,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dc_zj_a_info:'锁定技。当你受到牌造成的伤害时,若此牌有点数,则你将此伤害值改为此牌点数,否则你防止此伤害。',
dc_zj_b:'技能',
dc_zj_b_info:'结束阶段,你可以弃置所有牌并令一名其他角色获得〖技能〗直到你的下个回合开始。',
dc_sb_lusu:'新杀谋鲁肃',
dc_sb_lusu_prefix:'新杀谋',
dcsbmingshi:'明势',
dcsbmingshi_info:'摸牌阶段,你可以多摸两张牌,然后令展示三张牌并令一名其他角色选择获得其中的一张牌。',
dcsbmengmou:'盟谋',
dcsbmengmou_info:'转换技每回合每项各限一次当你得到其他角色的牌后你可以令该角色使用至多X张【杀】且其每以此法造成1点伤害其回复1点体力其他角色得到你的牌后你可令该角色打出至多X张【杀】然后其失去Y点体力。X为你的体力值Y为X-其打出【杀】数)',
dc_sb_zhouyu:'新杀谋周瑜',
dc_sb_zhouyu_prefix:'新杀谋',
dcsbronghuo:'熔火',
dcsbronghuo_info:'锁定技,当你使用火【杀】或【火攻】时,此牌伤害基值改为场上势力数。',
dcsbyingmou:'英谋',
dcsbyingmou_info:'转换技,每回合限一次,当你使用牌指定第一个目标后,你可以选择一名目标角色:阴,你将手牌数摸至与其相同,然后视为对其使用一张【火攻】;阳,令一名手牌数为全场最大的角色对其使用手牌中所有的【杀】和伤害类锦囊牌,然后该角色将手牌数弃至与你相同。',
sp2_yinyu:'隐山之玉',
sp2_huben:'百战虎贲',
@ -13421,6 +13758,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp2_wumiao:'武庙',
sp2_gaoshan:'高山仰止',
sp2_qifu:'祈福',
sp2_mouding:'谋定天下',
},
};
});

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB