Merge pull request #404 from mengxinzxz/PR-Branch

技能调整
This commit is contained in:
Spmario233 2023-09-27 16:36:40 +08:00 committed by GitHub
commit 070b963c7e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 121 additions and 59 deletions

View File

@ -2497,9 +2497,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
var cards=result.cards,targets=result.targets;
event.cards=cards;
var cardx=get.autoViewAs({name:'sha'},cards);
event.cardx=cardx;
player.useCard(cardx,cards,targets,false,'dcsaowei');
}
else event.finish();
'step 2'
if(player.getHistory('sourceDamage',function(evt){
return evt.card==event.cardx;
}).length&&cards.filterInD().length) player.gain(cards.filterInD(),'gain2');
},
},
//向朗
@ -3099,7 +3106,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 2'
var num=event.choices.length-Math.max(0,player.hp);
if(num>0){
player.chooseToDiscard(num,true,'he');
player.chooseToDiscard(true,'he');
}
},
ai:{
@ -10125,7 +10132,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcyongdi_info:'限定技。出牌阶段你可以选择一名男性角色若其体力上限最少其加1点体力上限体力值最少其回复1点体力手牌数最少其摸X张牌X为其体力上限且至多为5。',
liupi:'刘辟',
dcjuying:'踞营',
dcjuying_info:'出牌阶段结束时若你于此阶段内使用【杀】的次数未达到上限你可以选择任意项1.下回合使用【杀】的次数上限+12.本回合手牌上限+23.摸三张牌。若你选择的项数超过了你的体力值,你弃置X张牌X为你选择的项数减你的体力值。',
dcjuying_info:'出牌阶段结束时若你于此阶段内使用【杀】的次数未达到上限你可以选择任意项1.下回合使用【杀】的次数上限+12.本回合手牌上限+23.摸三张牌。若你选择的项数超过了你的体力值,你弃置一张牌。',
dc_huanghao:'新杀黄皓',
dc_huanghao_ab:'黄皓',
dcqinqing:'寝情',
@ -10162,7 +10169,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcaishou_tag:'隘',
dcaishou_info:'①结束阶段你可以摸X张牌称为“隘”X为你的体力上限。②准备阶段你弃置所有“隘”若你以此法弃置的牌数大于体力值且你的体力上限小于9你加1点体力上限。③当你于回合外失去最后一张“隘”后你减1点体力上限。',
dcsaowei:'扫围',
dcsaowei_info:'当一名其他角色使用【杀】结算结束后,若此牌的目标角色不包含你且均在你的攻击范围内,你可以将一张“隘”当做【杀】对所有目标角色使用。',
dcsaowei_info:'当一名其他角色使用【杀】结算结束后,若此牌的目标角色不包含你且均在你的攻击范围内,你可以将一张“隘”当做【杀】对所有目标角色使用。以此法转化的【杀】结算完毕后,若此【杀】造成过伤害,你获得此【杀】对应的实体牌。',
yuantanyuanxiyuanshang:'袁谭袁尚袁熙',
dcneifa:'内伐',
dcneifa_info:'出牌阶段开始时,你可以摸三张牌,然后弃置一张牌。若你弃置的牌类型为:基本牌,本阶段你不能使用锦囊牌,且【杀】的使用次数上限+X且可以额外指定一名目标锦囊牌本阶段你不能使用基本牌且使用普通锦囊牌选择目标时可以增加或减少一个目标X为你发动〖内伐〗弃牌后手牌中因〖内伐〗而不能使用的牌的数量且最多为5。你以此法选择的额外目标均无距离限制。',

View File

@ -228,6 +228,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(button.link[3]=='fire') return 2.95;
else if(button.link[3]=='fire') return 2.92;
else return 2.9;
case 'shan':return 1;
}
}
return 0;

View File

@ -1072,6 +1072,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
do var card=cards.shift();
while(get.name(card)!='sha'&&(!event.fight||get.type2(card)!='trick')&&cards.length);
if(get.name(card)!='sha'&&(!event.fight||get.type2(card)!='trick')) return;
player.showCards([card],get.translation(player)+'发动了【直取】');
player.chooseUseTarget(card,true,false,'nodistance').set('filterTarget',function(card,player,target){
var evt=_status.event;
if(_status.event.name=='chooseTarget') evt=evt.getParent();

View File

@ -2177,7 +2177,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//张瑾云
dchuizhi:{
audio:2,
trigger:{player:'phaseDrawEnd'},
trigger:{player:'phaseZhunbeiBegin'},
direct:true,
content:function(){
'step 0'
@ -9237,17 +9237,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
miaoxian:{
hiddenCard:function(player,name){
return get.type(name)=='trick'&&!player.getStorage('miaoxian2').contains(name)&&player.countCards('h',{color:'black'})==1;
return get.type(name)=='trick'&&!player.hasSkill('miaoxian2')&&player.countCards('h',{color:'black'})==1;
},
enable:'chooseToUse',
filter:function(event,player){
if(player.hasSkill('miaoxian2')) return false;
var cards=player.getCards('h',{color:'black'});
if(cards.length!=1) return false;
var mod2=game.checkMod(cards[0],player,'unchanged','cardEnabled2',player);
if(mod2===false) return false;
var storage=player.getStorage('miaoxian2');
for(var i of lib.inpile){
if(!storage.contains(i)&&get.type(i)=='trick'&&event.filterCard({
if(get.type(i)=='trick'&&event.filterCard({
name:i,
cards:cards,
},player,event)) return true;
@ -9257,10 +9257,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chooseButton:{
dialog:function(event,player){
var cards=player.getCards('h',{color:'black'});
var storage=player.getStorage('miaoxian2');
var list=[];
for(var i of lib.inpile){
if(!storage.contains(i)&&get.type(i)=='trick'&&event.filterCard({
if(get.type(i)=='trick'&&event.filterCard({
name:i,
cards:cards,
},player,event)){
@ -9284,8 +9283,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:links[0][2],
},
onuse:function(links,player){
if(!player.storage.miaoxian2) player.storage.miaoxian2=[];
player.storage.miaoxian2.add(links.card.name);
player.addTempSkill('miaoxian2');
},
}
@ -9323,7 +9320,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
miaoxian2:{onremove:true},
miaoxian2:{
charlotte:true,
},
//樊玉凤
bazhan:{
audio:2,
@ -11813,7 +11812,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xingzuo2:'兴作',
xingzuo_info:'出牌阶段开始时你可观看牌堆底的三张牌并用任意张手牌替换其中等量的牌。若如此做结束阶段你可令一名有手牌的角色用所有手牌替换牌堆底的三张牌。若其因此法失去的牌多于三张则你失去1点体力。',
miaoxian:'妙弦',
miaoxian_info:'若你的手牌中仅有一张黑色牌,你可将此牌当作任意一张普通锦囊牌使用(每种牌名每回合限一次);若你的手牌中仅有一张红色牌,你使用此牌时摸一张牌。',
miaoxian_info:'若你的手牌中仅有一张黑色牌,你可将此牌当作任意一张普通锦囊牌使用(每回合限一次);若你的手牌中仅有一张红色牌,你使用此牌时摸一张牌。',
yangwan:'杨婉',
youyan:'诱言',
youyan_info:'出牌阶段/弃牌阶段各限一次。当有牌进入弃牌堆后,若其中有你不因使用或打出而失去的牌,你可以从牌堆中获得你本次失去的牌中没有的花色的牌各一张。',
@ -12076,7 +12075,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcwencan_info:'出牌阶段限一次。你可以选择至多两名体力值不同且均与你的体力值不同的角色这些角色依次选择一项1.弃置两张花色不同的牌2.本回合你对其使用牌无次数限制。',
zhangjinyun:'张瑾云',
dchuizhi:'蕙质',
dchuizhi_info:'摸牌阶段结束时,你可以选择是否弃置任意张手牌,然后将手牌摸至与全场手牌数最多的角色相同(至少摸一张,至多摸五张)。',
dchuizhi_info:'准备阶段,你可以选择是否弃置任意张手牌,然后将手牌摸至与全场手牌数最多的角色相同(至少摸一张,至多摸五张)。',
dcjijiao:'继椒',
dcjijiao_info:'限定技。出牌阶段,你可以令一名角色获得所有弃牌堆中你于本局游戏内使用或弃置过的普通锦囊牌,且这些牌不能被【无懈可击】响应。一名角色的回合结束后,若本回合牌堆洗过牌或有角色死亡,你重置〖继椒〗。',
duanqiaoxiao:'段巧笑',

View File

@ -2042,59 +2042,117 @@ game.import('character',function(lib,game,ui,get,ai,_status){
source:'damageSource',
},
filter:function(event,player){
return player.storage.xinyaoming.length<3;
return game.hasPlayer(function(target){
return ['摸牌','弃牌','制衡'].some(function(control){
var storage=player.getStorage('xinyaoming_kanon');
if(storage.contains(control)) return false;
if(control=='摸牌'&&target!=player) return true;
if(control=='弃牌'&&target!=player&&target.countCards('h')) return true;
if(control=='制衡') return true;
return false;
});
});
},
direct:true,
init:function(player){
player.storage.xinyaoming=[];
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('xinyaoming'),function(card,player,target){
var s=player.storage.xinyaoming;
var pe=player.countCards('h');
var te=target.countCards('h');
if(s.contains('大于')&&pe>te) return false;
if((s.contains('等于')||target.countCards('he')==0)&&pe==te) return false;
if(s.contains('小于')&&pe<te) return false;
return true;
}).ai=function(target){
var player=_status.event.player;
return -get.sgn(target.countCards('h')-player.countCards('h'))*get.attitude(player,target);
var func=function(){
game.countPlayer(function(target){
var list=['摸牌','弃牌','制衡'].filter(function(control){
var storage=player.getStorage('xinyaoming_kanon');
if(storage.contains(control)) return false;
if(control=='摸牌'&&target!=player) return true;
if(control=='弃牌'&&target!=player&&target.countCards('h')) return true;
if(control=='制衡') return true;
return false;
}),str='';
for(var i of list) str+=(i+'<br>');
str=str.slice(0,-4);
target.prompt(str);
});
};
if(event.player==game.me) func();
else if(event.isOnline()) player.send(func);
player.chooseTarget(get.prompt2('xinyaoming'),function(card,player,target){
var storage=player.getStorage('xinyaoming_kanon');
if(!storage.contains('制衡')) return true;
if(target==player) return false;
return !storage.contains('摸牌')||target.countCards('h');
}).set('ai',function(target){
var player=_status.event.player;
var storage=player.getStorage('xinyaoming_kanon');
if(get.attitude(player,target)>0&&!storage.contains('摸牌')&&target!=player) return get.effect(target,{name:'wuzhong'},player,player)/2;
if(get.attitude(player,target)<0&&!storage.contains('弃牌')&&target!=player&&target.countCards('h')) return get.effect(target,{name:'guohe_copy2'},player,player);
if(get.attitude(player,target)>0&&!storage.contains('制衡')) return get.effect(target,{name:'kaihua'},player,player);
return 0;
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('xinyaoming',target);
var ph=player.countCards('h');
var th=target.countCards('h');
if(ph>th){
player.storage.xinyaoming.push('大于');
target.draw();
event.finish();
}
else if(ph==th){
player.storage.xinyaoming.push('等于');
target.chooseToDiscard('he','弃置一到两张牌,然后摸等量的牌',true,[1,2]).ai=lib.skill.zhiheng.check;
}
var controls=['摸牌','弃牌','制衡'].filter(function(control){
var storage=player.getStorage('xinyaoming_kanon');
if(storage.contains(control)) return false;
if(control=='摸牌'&&target!=player) return true;
if(control=='弃牌'&&target!=player&&target.countCards('h')) return true;
if(control=='制衡') return true;
return false;
});
if(controls.length==1) event._result={control:controls[0]};
else{
player.storage.xinyaoming.push('小于');
player.discardPlayerCard(target,'h',true);
event.finish();
var str=get.translation(target);
var choiceList=[
'令'+str+'摸一张牌',
'弃置'+str+'一张手牌',
'令'+str+'弃置至多两张牌,然后其摸等量的牌',
];
var list=['摸牌','弃牌','制衡'];
for(var i=0;i<3;i++){
if(!controls.contains(list[i])){
choiceList[i]='<span style="opacity:0.5">'+choiceList[i]+'</span>';
}
}
player.chooseControl(controls).set('choiceList',choiceList).set('ai',function(){
var player=_status.event.player;
var target=_status.event.target;
var controls=_status.event.controls.slice();
controls.sort(function(a,b){
return [
get.effect(target,{name:'wuzhong'},player,player)/2,
get.effect(target,{name:'guohe_copy2'},player,player),
get.effect(target,{name:'kaihua'},player,player),
][['摸牌','弃牌','制衡'].indexOf(b)-['摸牌','弃牌','制衡'].indexOf(a)];
});
return controls[0];
}).set('target',target);
}
}
else event.finish();
'step 2'
if(result.bool) target.draw(result.cards.length);
player.addTempSkill('xinyaoming_kanon');
player.markAuto('xinyaoming_kanon',[result.control]);
switch(result.control){
case '摸牌':
target.draw();
break;
case '弃牌':
player.discardPlayerCard(target,'h',true);
break;
case '制衡':
target.chooseToDiscard([1,2],'he','邀名:弃置至多两张牌,然后摸等量的牌',true).set('ai',card=>lib.skill.zhiheng.check(card));
break;
}
if(result.control!='制衡') event.finish();
'step 3'
if(result.bool){
target.draw(result.cards.length);
}
},
group:'xinyaoming_kanon',
subSkill:{
kanon:{
trigger:{global:'phaseAfter'},
silent:true,
sub:true,
content:function(){lib.skill.xinyaoming.init(player)}
charlotte:true,
onremove:true,
},
},
},
@ -8399,6 +8457,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(button.link[3]=='fire') return 2.95;
else if(button.link[3]=='fire') return 2.92;
else return 2.9;
case 'shan':return 1;
}
}
return 0;
@ -13869,7 +13928,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yaoming:'邀名',
yaoming_info:'每回合限一次当你造成或受到伤害后你可以选择一项1. 弃置手牌数大于你的一名角色的一张手牌2. 令手牌数小于你的一名角色摸一张牌',
xinyaoming:'邀名',
xinyaoming_info:'每回合每个选项限一次当你造成或受到伤害后你可以选择一项1. 弃置手牌数大于你的一名角色的一张手牌2. 令手牌数小于你的一名角色摸一张牌3.令手牌数等于你的角色弃置至多两张牌,然后摸等量的牌。',
xinyaoming_info:'每回合每个选项限一次当你造成或受到伤害后你可以选择一项1. 弃置一名其他角色的一张手牌2. 令一名其他角色摸一张牌3.令一名角色弃置至多两张牌,然后摸等量的牌。',
anguo:'安国',
anguo_info:'出牌阶段限一次,你可以选择一名其他角色装备区里的一张牌,令其获得此牌。然后若该角色攻击范围内的角色数因此减少,则你摸一张牌。',
yanzhu:'宴诛',

View File

@ -1396,19 +1396,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
olxibing:{
audio:2,
trigger:{
player:'damageEnd',
source:'damageSource',
},
trigger:{player:'damageEnd'},
filter:function(event,player){
return event.player&&event.source&&event.player!=event.source&&
event.player.isAlive()&&event.source.isAlive()&&
(event.player.countCards('he')>0||event.source.countCards('he')>0);
return event.player&&event.source&&event.player!=event.source&&event.player.isAlive()&&event.source.isAlive()&&(event.player.countCards('he')>0||event.source.countCards('he')>0);
},
direct:true,
content:function(){
'step 0'
var target=(player==trigger.player?trigger.source:trigger.player);
var target=trigger.source;
event.target=target;
player.chooseTarget(get.prompt('olxibing'),'弃置自己或'+get.translation(target)+'的两张牌,然后手牌数较少的角色摸两张牌且不能对你使用牌直到回合结束',function(card,player,target){
if(target!=player&&target!=_status.event.target) return false;
@ -3728,7 +3723,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caozhao_backup:'草诏',
caozhao_info:'出牌阶段限一次你可展示一张手牌并声明一种未以此法声明过的基本牌或普通锦囊牌令一名体力不大于你的其他角色选择一项令此牌视为你声明的牌或其失去1点体力。然后若此牌声明成功然后你可将其交给一名其他角色。',
olxibing:'息兵',
olxibing_info:'当你受到其他角色造成的伤害后/对其他角色造成伤害后,你可弃置你或该角色两张牌,然后你们中手牌少的角色摸两张牌,以此法摸牌的角色不能使用牌指定你为目标直到回合结束。',
olxibing_info:'当你受到其他角色造成的伤害后,你可弃置你或该角色两张牌,然后你们中手牌少的角色摸两张牌,以此法摸牌的角色不能使用牌指定你为目标直到回合结束。',
recaiwang:'才望',
recaiwang_info:'①当你使用或打出牌响应其他角色使用的牌或其他角色使用或打出牌响应你使用的牌后若这两张牌颜色相同则你可以弃置对方的一张牌。②若你的手牌数为1则你可以将该手牌当做【闪】使用或打出。③若你的装备区牌数为1则你可以将该装备当做【无懈可击】使用或打出。④若你的判定区牌数为1则你可以将该延时锦囊牌当做【杀】使用或打出。',
recaiwang_hand:'才望',