commit
76b29d2e7f
|
@ -797,7 +797,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
onremove:true,
|
||||
audio:'twjiaohua',
|
||||
enable:'phaseUse',
|
||||
usable:3,
|
||||
usable:2,
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
return ui.create.dialog('###教化###选择一种牌的类型,令一名角色从牌堆获得此类型的一张牌');
|
||||
|
@ -1069,18 +1069,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{global:'phaseJieshuBegin'},
|
||||
filter:function(event,player){
|
||||
if(!game.hasPlayer(target=>target.countCards('e',card=>get.subtype(card)!='equip5')<3||target.isLinked()||target.isTurnedOver()||target.isDamaged())) return false;
|
||||
return player.getHistory('damage').length;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt2('mbquesong'),(card,player,target)=>{
|
||||
return target.countCards('e',card=>get.subtype(card)!='equip5')<3||target.isLinked()||target.isTurnedOver()||target.isDamaged();
|
||||
}).set('ai',target=>{
|
||||
player.chooseTarget(get.prompt2('mbquesong')).set('ai',target=>{
|
||||
var player=_status.event.player;
|
||||
if(get.attitude(player,target)<=0) return 0;
|
||||
var len=Math.max(1,3-target.countCards('e',card=>get.subtype(card)!='equip5')),hp=target.getHp();
|
||||
var len=lib.skill.mbquesong.getNum(target),hp=target.getHp();
|
||||
return len+target.isTurnedOver()*2+1.5*Math.min(4,target.getDamagedHp())/(hp+1);
|
||||
});
|
||||
'step 1'
|
||||
|
@ -1088,7 +1085,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('mbquesong',target);
|
||||
var len=Math.max(1,3-target.countCards('e',card=>get.subtype(card)!='equip5'));
|
||||
var len=lib.skill.mbquesong.getNum(target);
|
||||
if(target.isHealthy()) event._result={index:0};
|
||||
else{
|
||||
target.chooseControl().set('choiceList',[
|
||||
|
@ -1107,12 +1104,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target.recover();
|
||||
event.finish();
|
||||
}
|
||||
else target.draw(Math.max(1,3-target.countCards('e',card=>get.subtype(card)!='equip5')));
|
||||
else target.draw(lib.skill.mbquesong.getNum(target));
|
||||
'step 3'
|
||||
target.link(false);
|
||||
'step 4'
|
||||
target.turnOver(false);
|
||||
},
|
||||
getNum:function(player){
|
||||
return Math.max(1,4+player.countCards('e'));
|
||||
},
|
||||
ai:{
|
||||
expose:0.2,
|
||||
maixie:true,
|
||||
|
@ -15601,7 +15601,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mbhuiyao:'慧夭',
|
||||
mbhuiyao_info:'出牌阶段限一次。你可以受到1点无来源伤害,然后你选择一名其他角色,令其视为对另一名角色造成过1点伤害。',
|
||||
mbquesong:'雀颂',
|
||||
mbquesong_info:'一名角色的结束阶段,若你于本回合受到过伤害,你可以令一名角色选择一项:1.摸X张牌并复原武将牌(X为3-其装备区非宝物牌牌数,且X至少为1);2.回复1点体力。',
|
||||
mbquesong_info:'一名角色的结束阶段,若你于本回合受到过伤害,你可以令一名角色选择一项:1.摸X张牌并复原武将牌(X为4+其装备区牌数,且X至少为1);2.回复1点体力。',
|
||||
xin_yuanshao:'手杀界袁绍',
|
||||
xin_yuanshao_prefix:'手杀界',
|
||||
re_baosanniang:'手杀鲍三娘',
|
||||
|
@ -15645,7 +15645,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
liwei:'李遗',
|
||||
jiaohua:'教化',
|
||||
jiaohua_backup:'教化',
|
||||
jiaohua_info:'出牌阶段限三次,你可以选择一个未被〖教化〗记录过的牌的类型,令一名角色从牌堆中获得一张此类型的牌,然后记录此类型,若基本、锦囊、装备均已被你发动〖教化〗记录,则你清空〖教化〗记录。',
|
||||
jiaohua_info:'出牌阶段限两次,你可以选择一个未被〖教化〗记录过的牌的类型,令一名角色从牌堆中获得一张此类型的牌,然后记录此类型,若基本、锦囊、装备均已被你发动〖教化〗记录,则你清空〖教化〗记录。',
|
||||
laimin:'来敏',
|
||||
laishou:'来寿',
|
||||
laishou_info:'锁定技。①当你受到伤害值大于等于你的体力值的伤害时,若你的体力上限小于9,你防止此伤害并增加等量体力上限。②准备阶段,若你的体力上限不小于9,你死亡。',
|
||||
|
|
|
@ -6527,7 +6527,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhouchu:['jin_zhouchu','zhouchu','tw_zhouchu'],
|
||||
liuzhang:['liuzhang','tw_liuzhang'],
|
||||
chenzhen:['sp_chenzhen','tw_chenzhen'],
|
||||
feiyi:['feiyi','tw_feiyi'],
|
||||
feiyi:['ol_feiyi','feiyi','tw_feiyi'],
|
||||
wangling:['wangling','tw_wangling'],
|
||||
qiaogong:['qiaogong','tw_qiaogong'],
|
||||
sp_chendong:['sp_chendong','tw_chendong','chendong'],
|
||||
|
@ -6611,7 +6611,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
spwanwei_info:'每轮累计限一次。①出牌阶段,你可选择一名其他角色。②当有其他角色处于濒死状态时。你可令该角色回复X+1点体力(至少回复至1),然后你失去X点体力。(X为你的体力值)',
|
||||
spyuejian:'约俭',
|
||||
spyuejian_info:'锁定技,你的手牌上限基数等于你的体力上限。当你处于濒死状态时,你可弃置两张牌,然后回复1点体力。',
|
||||
feiyi:'费祎',
|
||||
feiyi:'手杀费祎',
|
||||
feiyi_prefix:'手杀',
|
||||
reshengxi:'生息',
|
||||
reshengxi_info:'结束阶段,若你于本回合内未造成过伤害,则你可摸两张牌。',
|
||||
fyjianyu:'谏喻',
|
||||
|
|
124
character/sp.js
124
character/sp.js
|
@ -34,7 +34,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_dingshangwan:['female','wei',3,['olfudao','olfengyan']],
|
||||
zhangyan:['male','qun',4,['olsuji','ollangdao']],
|
||||
ol_tw_zhangji:['male','wei',3,['skill_zhangji_A','skill_zhangji_B'],['unseen']],
|
||||
ol_feiyi:['male','shu',3,['skill_feiyi_A','skill_feiyi_B'],['unseen']],
|
||||
ol_feiyi:['male','shu',3,['yanru','hezhong']],
|
||||
lvboshe:['male','qun',4,['olfushi','oldongdao']],
|
||||
ol_luyusheng:['female','wu',3,['olcangxin','olrunwei']],
|
||||
caoxi:['male','wei',3,['olgangshu','oljianxuan']],
|
||||
|
@ -1424,24 +1424,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
//费祎
|
||||
skill_feiyi_A:{
|
||||
yanru:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
var num=player.countCards('h')%2;
|
||||
if(num==0&&!player.countCards('h')) return false;
|
||||
return !player.hasSkill('skill_feiyi_A_'+num);
|
||||
return !player.hasSkill('yanru_'+num);
|
||||
},
|
||||
filterCard:function(card,player){
|
||||
return player.countCards('h')%2==0;
|
||||
if(player.countCards('h')&&player.countCards('h')%2==0) return lib.filter.cardDiscardable(card,player);
|
||||
return false;
|
||||
},
|
||||
selectCard:function(){
|
||||
var player=_status.event.player;
|
||||
if(player.countCards('h')%2==0) return [player.countCards('h')/2,Infinity];
|
||||
if(player.countCards('h')&&player.countCards('h')%2==0) return [player.countCards('h')/2,Infinity];
|
||||
return -1;
|
||||
},
|
||||
prompt:function(){
|
||||
var player=_status.event.player;
|
||||
return [
|
||||
(player.countCards('h')?'弃置至少一半的手牌,然后':'')+'摸三张牌',
|
||||
'摸三张牌,然后弃置至少一半的手牌',
|
||||
|
||||
][player.countCards('h')%2];
|
||||
},
|
||||
check:function(card){
|
||||
if(player.hasSkill('skill_feiyi_B')){
|
||||
if(player.hasSkill('hezhong')){
|
||||
if(player.countCards('h')-ui.selected.cards.length>1) return 1/(get.value(card)||0.5);
|
||||
return 0;
|
||||
}
|
||||
|
@ -1449,20 +1457,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return 0;
|
||||
},
|
||||
complexCard:true,
|
||||
discard:false,
|
||||
lose:false,
|
||||
delay:0,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.addTempSkill('skill_feiyi_A_'+(cards.length?'0':'1'),'phaseUseAfter');
|
||||
if(cards.length){
|
||||
player.draw(3)
|
||||
event.finish();
|
||||
}
|
||||
else player.draw(3);
|
||||
var bool=player.countCards('h')%2;
|
||||
if(cards) player.discard(cards);
|
||||
player.addTempSkill('yanru_'+bool,'phaseUseAfter');
|
||||
player.draw(3);
|
||||
if(!bool) event.finish();
|
||||
'step 1'
|
||||
player.chooseToDiscard('h','技能:弃置至少一半手牌',[Math.floor(player.countCards('h')/2),Infinity],true).set('ai',card=>{
|
||||
player.chooseToDiscard('h','宴如:弃置至少一半手牌',[Math.floor(player.countCards('h')/2),Infinity],true).set('ai',card=>{
|
||||
var player=_status.event.player;
|
||||
if(player.hasSkill('skill_feiyi_B')&&player.countCards('h')-ui.selected.cards.length>1) return 1/(get.value(card)||0.5);
|
||||
if(!player.hasSkill('skill_feiyi_B')&&ui.selected.cards.length<Math.floor(player.countCards('h')/2)) return 1/(get.value(card)||0.5);
|
||||
if(player.hasSkill('hezhong')&&player.countCards('h')-ui.selected.cards.length>1) return 1/(get.value(card)||0.5);
|
||||
if(!player.hasSkill('hezhong')&&ui.selected.cards.length<Math.floor(player.countCards('h')/2)) return 1/(get.value(card)||0.5);
|
||||
return 0;
|
||||
});
|
||||
},
|
||||
|
@ -1475,7 +1484,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
result:{player:1},
|
||||
},
|
||||
},
|
||||
skill_feiyi_B:{
|
||||
hezhong:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:'loseAfter',
|
||||
|
@ -1483,19 +1492,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
filter:function(event,player){
|
||||
if(player.countCards('h')!=1||typeof get.number(player.getCards('h')[0],player)!='number') return false;
|
||||
if(player.hasSkill('skill_feiyi_B_0')&&player.hasSkill('skill_feiyi_B_1')) return false;
|
||||
if(player.hasSkill('hezhong_0')&&player.hasSkill('hezhong_1')) return false;
|
||||
if(event.getg) return event.getg(player).length;
|
||||
var evt=event.getl(player);
|
||||
return evt&&evt.player==player&&evt.hs&&evt.hs.length>0;
|
||||
},
|
||||
prompt2:function(event,player){
|
||||
var str='展示最后一张手牌并摸一张牌';
|
||||
if(!player.hasSkill('skill_feiyi_B_0')||!player.hasSkill('skill_feiyi_B_0')){
|
||||
if(!player.hasSkill('hezhong_0')||!player.hasSkill('hezhong_0')){
|
||||
str+=',然后令本回合使用点数';
|
||||
if(!player.hasSkill('skill_feiyi_B_0')) str+='大于';
|
||||
if(!player.hasSkill('skill_feiyi_B_0')&&!player.hasSkill('skill_feiyi_B_0')) str+='或';
|
||||
if(!player.hasSkill('skill_feiyi_B_1')) str+='小于';
|
||||
if(!player.hasSkill('hezhong_0')) str+='大于';
|
||||
if(!player.hasSkill('hezhong_0')&&!player.hasSkill('hezhong_0')) str+='或';
|
||||
if(!player.hasSkill('hezhong_1')) str+='小于';
|
||||
str+=get.number(player.getCards('h')[0],player);
|
||||
str+='的牌额外结算一次';
|
||||
str+='的普通锦囊牌额外结算一次';
|
||||
}
|
||||
return str;
|
||||
},
|
||||
|
@ -1507,23 +1517,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
player.draw();
|
||||
'step 2'
|
||||
if(player.hasSkill('skill_feiyi_B_0')) event._result={index:1};
|
||||
else if(player.hasSkill('skill_feiyi_B_1')) event._result={index:0};
|
||||
if(player.hasSkill('hezhong_0')) event._result={index:1};
|
||||
else if(player.hasSkill('hezhong_1')) event._result={index:0};
|
||||
else{
|
||||
player.chooseControl().set('choiceList',[
|
||||
'本回合使用点数大于'+num+'的牌额外结算一次',
|
||||
'本回合使用点数小于'+num+'的牌额外结算一次',
|
||||
'本回合使用点数大于'+num+'的普通锦囊牌额外结算一次',
|
||||
'本回合使用点数小于'+num+'的普通锦囊牌额外结算一次',
|
||||
]).set('ai',()=>{
|
||||
var player=_status.event.player;
|
||||
var num=_status.event.player;
|
||||
if(player.getCards('h').reduce(function(num,card){
|
||||
return num=(get.number(card,player)||0);
|
||||
return num+(get.number(card,player)||0);
|
||||
},0)>num*2) return 0;
|
||||
return 1;
|
||||
}).set('num',num);
|
||||
}
|
||||
'step 3'
|
||||
var skill='skill_feiyi_B_'+result.index;
|
||||
var skill='hezhong_'+result.index;
|
||||
player.addTempSkill(skill);
|
||||
player.markAuto(skill,[num]);
|
||||
},
|
||||
|
@ -1531,42 +1541,70 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'0':{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
marktext:'技',
|
||||
marktext:'>',
|
||||
intro:{
|
||||
markcount:()=>0,
|
||||
content:'使用点数大于$的牌额外结算一次',
|
||||
markcount:(list)=>{
|
||||
var list2=[1,11,12,13];
|
||||
return list.reduce((str,num)=>{
|
||||
if(list2.includes(num)) return str+['A','J','Q','K'][list2.indexOf(num)];
|
||||
return str+parseFloat(num);
|
||||
},'');
|
||||
},
|
||||
audio:'skill_feiyi_B',
|
||||
content:'使用点数大于$的普通锦囊牌额外结算一次',
|
||||
},
|
||||
audio:'hezhong',
|
||||
trigger:{player:'useCard'},
|
||||
filter:function(event,player){
|
||||
if(get.type(event.card)!='trick') return false;
|
||||
var num=get.number(event.card,player);
|
||||
return typeof num=='number'&&player.getStorage('skill_feiyi_B_0').some(numx=>num>numx);
|
||||
return typeof num=='number'&&player.getStorage('hezhong_0').some(numx=>num>numx);
|
||||
},
|
||||
forced:true,
|
||||
content:function(){
|
||||
trigger.effectCount++;
|
||||
game.log(trigger.card,'额外结算一次');
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target){
|
||||
if(card.name=='tiesuo') return 'zerotarget';
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
'1':{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
marktext:'能',
|
||||
marktext:'<',
|
||||
intro:{
|
||||
markcount:()=>0,
|
||||
content:'使用点数小于$的牌额外结算一次',
|
||||
markcount:(list)=>{
|
||||
var list2=[1,11,12,13];
|
||||
return list.reduce((str,num)=>{
|
||||
if(list2.includes(num)) return str+['A','J','Q','K'][list2.indexOf(num)];
|
||||
return str+parseFloat(num);
|
||||
},'');
|
||||
},
|
||||
audio:'skill_feiyi_B',
|
||||
content:'使用点数小于$的普通锦囊牌额外结算一次',
|
||||
},
|
||||
audio:'hezhong',
|
||||
trigger:{player:'useCard'},
|
||||
filter:function(event,player){
|
||||
if(get.type(event.card)!='trick') return false;
|
||||
var num=get.number(event.card,player);
|
||||
return typeof num=='number'&&player.getStorage('skill_feiyi_B_1').some(numx=>num<numx);
|
||||
return typeof num=='number'&&player.getStorage('hezhong_1').some(numx=>num<numx);
|
||||
},
|
||||
forced:true,
|
||||
content:function(){
|
||||
trigger.effectCount++;
|
||||
game.log(trigger.card,'额外结算一次');
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target){
|
||||
if(card.name=='tiesuo') return 'zerotarget';
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -26490,10 +26528,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
skill_zhangji_B:'技能',
|
||||
skill_zhangji_B_info:'当你受到1点伤害后,你可令一名手牌数小于体力上限的角色摸三张牌,然后其将手牌数弃置至其体力上限数;当你进入濒死状态时,你可令一名其他角色观看五张魏势力武将牌,其可以选择其中一张代替自己的武将牌(体力和体力上限不变)。',
|
||||
ol_feiyi:'费祎',
|
||||
skill_feiyi_A:'技能',
|
||||
skill_feiyi_A_info:'出牌阶段各限一次,若你的手牌数为:①奇数,你可以摸三张牌,然后弃置至少一半手牌(向下取整);②偶数,你可以弃置至少一半手牌,然后摸三张牌。',
|
||||
skill_feiyi_B:'技能',
|
||||
skill_feiyi_B_info:'每回合每项限一次,当你的手牌数变为1后,你可以展示此唯一手牌A并摸一张牌,然后你选择一项:①本回合使用点数大于A的点数的牌额外结算一次;②本回合使用点数小于A的点数的牌额外结算一次。',
|
||||
yanru:'宴如',
|
||||
yanru_info:'出牌阶段各限一次,若你的手牌数为:①奇数,你可以摸三张牌,然后弃置至少一半手牌(向下取整);②偶数,你可以弃置至少一半手牌,然后摸三张牌。',
|
||||
hezhong:'和衷',
|
||||
hezhong_info:'每回合每项限一次,当你的手牌数变为1后,你可以展示此唯一手牌A并摸一张牌,然后你选择一项:①本回合使用点数大于A的点数的普通锦囊牌额外结算一次;②本回合使用点数小于A的点数的普通锦囊牌额外结算一次。',
|
||||
lvboshe:'吕伯奢',
|
||||
olfushi:'缚豕',
|
||||
olfushi_info:'①一名角色使用【杀】结算结束后,若你至其的距离不大于1,你将此【杀】对应的所有实体牌置于武将牌上。②当你需要使用一张【杀】时,你可以将任意张“缚豕”牌置入弃牌堆并摸等量的牌,视为使用一张【杀】并选择X项(X为你以此法重铸的牌数且至多为3):1.你为此【杀】额外指定一个目标;2.你选择此【杀】的一个目标角色,此牌对其造成的伤害-1;3.你选择此【杀】的一个目标角色,此【杀】对其造成的伤害+1。当此【杀】指定最后一个目标后,若此牌被选择的效果选项相邻且此牌的目标角色座位连续,则此【杀】不计入次数限制。',
|
||||
|
|
|
@ -12546,11 +12546,14 @@
|
|||
feichu_equip4_info:"攻击坐骑栏已废除",
|
||||
feichu_equip5:"已废除",
|
||||
feichu_equip5_info:"宝物栏已废除",
|
||||
feichu_equip6:'已废除',
|
||||
feichu_equip6_info:'特殊装备栏已废除',
|
||||
feichu_equip1_bg:"废",
|
||||
feichu_equip2_bg:"废",
|
||||
feichu_equip3_bg:"废",
|
||||
feichu_equip4_bg:"废",
|
||||
feichu_equip5_bg:"废",
|
||||
feichu_equip6_bg:'废',
|
||||
disable_judge:'已废除',
|
||||
disable_judge_info:'判定区已废除',
|
||||
disable_judge_bg:'废',
|
||||
|
@ -32628,6 +32631,10 @@
|
|||
type:"equip",
|
||||
subtype:"equip5",
|
||||
},
|
||||
feichu_equip6:{
|
||||
type:"equip",
|
||||
subtype:"equip6",
|
||||
},
|
||||
zhengsu_leijin:{},
|
||||
zhengsu_mingzhi:{},
|
||||
zhengsu_bianzhen:{},
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 46 KiB |
|
@ -19,8 +19,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
for(var i in lib.character){
|
||||
if(lib.character[i][1]=='shen'){
|
||||
if(lib.character[i][4]){
|
||||
var group=lib.character[i][4].find(group=>lib.group.contains(group)||group=='key');
|
||||
if(group) lib.character[i][1]=group;
|
||||
var group=lib.character[i][4].find(group=>lib.group.contains(group)||group=='key'||group.startsWith('gzgroup:'));
|
||||
if(group){
|
||||
if(group.startsWith('gzgroup:')) lib.character[i][1]=group.slice(8);
|
||||
else lib.character[i][1]=group;
|
||||
}
|
||||
else lib.character[i][1]='qun';
|
||||
}
|
||||
else lib.character[i][1]='qun';
|
||||
|
|
Loading…
Reference in New Issue