Merge pull request #649 from mengxinzxz/PR-Branch

OL费祎
This commit is contained in:
Spmario233 2023-11-17 22:39:46 +08:00 committed by GitHub
commit 76b29d2e7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 106 additions and 57 deletions

View File

@ -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至少为12.回复1点体力。',
mbquesong_info:'一名角色的结束阶段若你于本回合受到过伤害你可以令一名角色选择一项1.摸X张牌并复原武将牌X为4+其装备区牌数且X至少为12.回复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你死亡。',

View File

@ -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:'谏喻',

View File

@ -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);
},'');
},
content:'使用点数大于$的普通锦囊牌额外结算一次',
},
audio:'skill_feiyi_B',
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);
},'');
},
content:'使用点数小于$的普通锦囊牌额外结算一次',
},
audio:'skill_feiyi_B',
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为你以此法重铸的牌数且至多为31.你为此【杀】额外指定一个目标2.你选择此【杀】的一个目标角色,此牌对其造成的伤害-13.你选择此【杀】的一个目标角色,此【杀】对其造成的伤害+1。当此【杀】指定最后一个目标后若此牌被选择的效果选项相邻且此牌的目标角色座位连续则此【杀】不计入次数限制。',

View File

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

View File

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