cards update

This commit is contained in:
Spmario233 2023-08-12 22:57:27 +08:00
parent 2c4ee2e5f6
commit 6919fc6a5e
6 changed files with 88 additions and 59 deletions

View File

@ -555,7 +555,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
cards.splice(i--,1); cards.splice(i--,1);
} }
} }
var muniu=player.getEquip(5); var muniu=player.getEquip('muniu');
if(!muniu||!cards.length){ if(!muniu||!cards.length){
for(var i=0;i<cards.length;i++){ for(var i=0;i<cards.length;i++){
cards[i].discard(); cards[i].discard();
@ -570,8 +570,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},muniu,muniu.cards); },muniu,muniu.cards);
game.delayx(); game.delayx();
"step 2" "step 2"
var muniu=player.getEquip('muniu');
var players=game.filterPlayer(function(current){ var players=game.filterPlayer(function(current){
if(!current.getEquip(5)&&current!=player&&!current.isTurnedOver()&& if(current.canEquip(muniu)&&current!=player&&!current.isTurnedOver()&&
get.attitude(player,current)>=3&&get.attitude(current,player)>=3){ get.attitude(player,current)>=3&&get.attitude(current,player)>=3){
return true; return true;
} }
@ -579,15 +580,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){
players.sort(lib.sort.seat); players.sort(lib.sort.seat);
var choice=players[0]; var choice=players[0];
var next=player.chooseTarget('是否移动木牛流马?',function(card,player,target){ var next=player.chooseTarget('是否移动木牛流马?',function(card,player,target){
return !target.isMin()&&player!=target&&target.isEmpty(5); return !target.isMin()&&player!=target&&target.canEquip(_status.event.muniu);
}); }).set('muniu',muniu)
next.set('ai',function(target){ next.set('ai',function(target){
return target==_status.event.choice?1:-1; return target==_status.event.choice?1:-1;
}); });
next.set('choice',choice); next.set('choice',choice);
"step 3" "step 3"
if(result.bool){ if(result.bool){
var card=player.getEquip(5); var card=player.getEquip('muniu');
result.targets[0].equip(card); result.targets[0].equip(card);
player.$give(card,result.targets[0]); player.$give(card,result.targets[0]);
player.line(result.targets,'green'); player.line(result.targets,'green');
@ -618,7 +619,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
mark:true, mark:true,
intro:{ intro:{
content:function(storage,player){ content:function(storage,player){
var muniu=player.getEquip(5); var muniu=player.getEquip('muniu');
if(!muniu||!muniu.cards||!muniu.cards.length) return '共有〇张牌'; if(!muniu||!muniu.cards||!muniu.cards.length) return '共有〇张牌';
if(player.isUnderControl(true)){ if(player.isUnderControl(true)){
return get.translation(muniu.cards); return get.translation(muniu.cards);
@ -628,7 +629,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
} }
}, },
mark:function(dialog,storage,player){ mark:function(dialog,storage,player){
var muniu=player.getEquip(5); var muniu=player.getEquip('muniu');
if(!muniu||!muniu.cards||!muniu.cards.length) return '共有〇张牌'; if(!muniu||!muniu.cards||!muniu.cards.length) return '共有〇张牌';
if(player.isUnderControl(true)){ if(player.isUnderControl(true)){
dialog.addAuto(muniu.cards); dialog.addAuto(muniu.cards);
@ -638,7 +639,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
} }
}, },
markcount:function(storage,player){ markcount:function(storage,player){
var muniu=player.getEquip(5); var muniu=player.getEquip('muniu');
if(muniu&&muniu.cards) return muniu.cards.length; if(muniu&&muniu.cards) return muniu.cards.length;
return 0; return 0;
} }
@ -658,7 +659,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}).length>0; }).length>0;
}, },
content:function(){ content:function(){
var muniu=player.getEquip(5); var muniu=player.getEquip('muniu');
if(muniu&&muniu.cards){ if(muniu&&muniu.cards){
muniu.cards.removeArray(trigger.ss); muniu.cards.removeArray(trigger.ss);
lib.skill.muniu_skill.sync(muniu); lib.skill.muniu_skill.sync(muniu);

View File

@ -830,8 +830,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
subtype:"equip2", subtype:"equip2",
skills:['huxinjing'], skills:['huxinjing'],
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
if(get.mode()!='guozhan') return true; if(get.mode()=='guozhan'&&player!=target) return false;
return player==target; return target.canEquip(card,true);
}, },
selectTarget:function(){ selectTarget:function(){
return get.mode()=='guozhan'?-1:1; return get.mode()=='guozhan'?-1:1;
@ -1279,7 +1279,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return [1,player.maxHp]; return [1,player.maxHp];
}, },
filterCard:function(card,player){ filterCard:function(card,player){
return card!=player.getEquip(5); var cards=player.getEquips('dinglanyemingzhu');
if(cards.length) return cards.some(card2=>card2!=card&&!ui.selected.cards.contains(card2))
return true;
}, },
prompt:'出牌阶段限一次你可以弃置至多X张牌X为你的体力上限然后摸等量的牌' prompt:'出牌阶段限一次你可以弃置至多X张牌X为你的体力上限然后摸等量的牌'
}, },
@ -1726,13 +1728,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){
target:player, target:player,
card:event.card card:event.card
})) return false; })) return false;
var cards=player.getEquips('huxinjing');
if(!cards.length) return false;
if(get.mode()!='guozhan'&&event.num>1) return true; if(get.mode()!='guozhan'&&event.num>1) return true;
return event.num>=player.hp; return event.num>=player.hp;
}, },
content:function(){ content:function(){
trigger.cancel(); trigger.cancel();
var e2=player.getEquip('huxinjing'); var e2=player.getEquips('huxinjing');
if(e2){ if(e2.length){
player.discard(e2); player.discard(e2);
} }
player.removeSkill('huxinjing'); player.removeSkill('huxinjing');
@ -1859,8 +1863,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
jingfanma_info:'你的进攻距离+1', jingfanma_info:'你的进攻距离+1',
huxinjing_bg:'镜', huxinjing_bg:'镜',
huxinjing:'护心镜', huxinjing:'护心镜',
huxinjing_info:'此牌可对其他角色使用。当你受到伤害时若伤害值大于1或大于等于你的体力值则你可以将【护心镜】置入弃牌堆,然后防止此伤害。', huxinjing_info:'此牌可对其他角色使用。当你受到伤害时若伤害值大于1或大于等于你的体力值则你可以将所有【护心镜】置入弃牌堆,然后防止此伤害。',
huxinjing_info_guozhan:'当你受到伤害时,若伤害值大于等于你的体力值,则你可以将【护心镜】置入弃牌堆,然后防止此伤害。', huxinjing_info_guozhan:'当你受到伤害时,若伤害值大于等于你的体力值,则你可以将所有【护心镜】置入弃牌堆,然后防止此伤害。',
gz_haolingtianxia:'号令天下', gz_haolingtianxia:'号令天下',
gz_haolingtianxia_info:'出牌阶段,对一名体力值不为全场最少的角色使用。所有其他角色依次选择一项:①弃置一张牌(魏势力角色无需弃牌),视为对目标角色使用一张【杀】;②弃置目标角色的一张牌(魏势力角色改为获得其一张牌)。', gz_haolingtianxia_info:'出牌阶段,对一名体力值不为全场最少的角色使用。所有其他角色依次选择一项:①弃置一张牌(魏势力角色无需弃牌),视为对目标角色使用一张【杀】;②弃置目标角色的一张牌(魏势力角色改为获得其一张牌)。',
gz_kefuzhongyuan:'克复中原', gz_kefuzhongyuan:'克复中原',

View File

@ -2043,17 +2043,20 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}, },
mod:{ mod:{
cardUsable:function(card,player,num){ cardUsable:function(card,player,num){
var cardx=player.getEquip('zhuge'); var cards=player.getEquips('zhuge')
if(card.name=='sha'&&(!cardx||player.hasSkill('zhuge_skill',null,false)||(!_status.zhuge_temp&&!ui.selected.cards.contains(cardx)))){ if(card.name=='sha'){
if(get.is.versus()||get.is.changban()){ if(!cards.length||player.hasSkill('zhuge_skill',null,false)||cards.some(card=>(card!=_status.zhuge_temp&&!ui.selected.cards.contains(card)))){
return num+3; if(get.is.versus()||get.is.changban()){
return num+3;
}
return Infinity;
} }
return Infinity;
} }
}, },
cardEnabled2:function(card,player){ cardEnabled2:function(card,player){
if(!_status.event.addCount_extra||player.hasSkill('zhuge_skill',null,false)) return; if(!_status.event.addCount_extra||player.hasSkill('zhuge_skill',null,false)) return;
if(card&&card==player.getEquip('zhuge')){ var cards=player.getEquips('zhuge');
if(card&&cards.contains(card)){
try{ try{
var cardz=get.card(); var cardz=get.card();
} }
@ -2061,7 +2064,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return; return;
} }
if(!cardz||cardz.name!='sha') return; if(!cardz||cardz.name!='sha') return;
_status.zhuge_temp=true; _status.zhuge_temp=card;
var bool=lib.filter.cardUsable(get.autoViewAs({name:'sha'},ui.selected.cards.concat([card])),player); var bool=lib.filter.cardUsable(get.autoViewAs({name:'sha'},ui.selected.cards.concat([card])),player);
delete _status.zhuge_temp; delete _status.zhuge_temp;
if(!bool) return false; if(!bool) return false;
@ -2158,7 +2161,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
"step 0" "step 0"
player.chooseToUse(get.prompt('qinglong',trigger.target),function(card,player,event){ player.chooseToUse(get.prompt('qinglong',trigger.target),function(card,player,event){
if(get.name(card)!='sha') return false; if(get.name(card)!='sha') return false;
if(player.getEquip('qinglong')==card) return false; if(!player.hasSkill('qinglong_skill',null,false)){
var cards=player.getEquips('qinglong');
if(!cards.some(card2=>card2!=card&&!ui.selected.cards.contains(card2))) return false;
}
return lib.filter.filterCard.apply(this,arguments); return lib.filter.filterCard.apply(this,arguments);
},trigger.target,-1).set('addCount',false).logSkill='qinglong_skill'; },trigger.target,-1).set('addCount',false).logSkill='qinglong_skill';
} }

View File

@ -161,7 +161,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
order:9, order:9,
value:function(card,player){ value:function(card,player){
if(player.getEquip(1)==card) return 0; if(player.getEquips(1).contains(card)) return 0;
return 4; return 4;
}, },
equipValue:function(card,player){ equipValue:function(card,player){
@ -195,7 +195,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 2; return 2;
}, },
value:function(card,player){ value:function(card,player){
if(player.getEquip(1)==card) return -3; if(player.getEquips(1).contains(card)) return -3;
return 3; return 3;
}, },
basic:{ basic:{
@ -229,7 +229,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 2; return 2;
}, },
value:function(card,player){ value:function(card,player){
if(player.getEquip(2)==card) return -3; if(player.getEquips(2).contains(card)) return -3;
return 3; return 3;
}, },
basic:{ basic:{
@ -263,7 +263,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 1; return 1;
}, },
value:function(card,player){ value:function(card,player){
if(player.getEquip(2)==card) return -2.5; if(player.getEquips(2).contains(card)) return -2.5;
return 2.5; return 2.5;
}, },
basic:{ basic:{
@ -297,7 +297,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
order:9, order:9,
equipValue:0, equipValue:0,
value:function(card,player){ value:function(card,player){
if(player.getEquip(2)==card) return 0; if(player.getEquips(2).contains(card)) return 0;
return 0.5; return 0.5;
}, },
basic:{ basic:{

View File

@ -81,7 +81,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
var equips=[]; var equips=[];
for(var i=0;i<event.dialog.buttons.length;i++){ for(var i=0;i<event.dialog.buttons.length;i++){
var card=event.dialog.buttons[i].link; var card=event.dialog.buttons[i].link;
if(!target.isDisabled(get.subtype(card))) equips.push(card); if(target.canEquip(card,true)) equips.push(card);
} }
if(equips.length>1){ if(equips.length>1){
var next=target.chooseButton(true,function(button){ var next=target.chooseButton(true,function(button){
@ -281,7 +281,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}, },
result:{ result:{
target:function(player,target){ target:function(player,target){
var e5=target.getEquip(5); var e5=target.getEquip('muniu');
if(e5&&e5.name=='muniu'&&e5.cards&&e5.cards.length>1) return -1; if(e5&&e5.name=='muniu'&&e5.cards&&e5.cards.length>1) return -1;
if(target.countCards('e',function(card){ if(target.countCards('e',function(card){
return get.value(card,target)<=0; return get.value(card,target)<=0;
@ -322,7 +322,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true, fullskin:true,
type:'equip', type:'equip',
subtype:'equip4', subtype:'equip4',
filterTarget:lib.filter.notMe, filterTarget:function(card,player,target){
if(player==target) return false;
return target.canEquip(card,true)
},
selectTarget:1, selectTarget:1,
toself:false, toself:false,
loseThrow:true, loseThrow:true,
@ -332,7 +335,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
order:9, order:9,
value:function(card,player){ value:function(card,player){
if(player.getEquip(4)==card) return 0; if(player.getEquips(4).contains(card)) return 0;
return 4; return 4;
}, },
equipValue:function(card,player){ equipValue:function(card,player){
@ -380,7 +383,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true, fullskin:true,
type:'equip', type:'equip',
subtype:'equip1', subtype:'equip1',
filterTarget:lib.filter.notMe, filterTarget:function(card,player,target){
if(player==target) return false;
return target.canEquip(card,true)
},
selectTarget:1, selectTarget:1,
toself:false, toself:false,
skills:['wufengjian_skill'], skills:['wufengjian_skill'],
@ -391,7 +397,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 2; return 2;
}, },
value:function(card,player){ value:function(card,player){
if(player.getEquip(1)==card) return -1.5; if(player.getEquips(1).contains(card)) return -1.5;
return 1.5; return 1.5;
}, },
basic:{ basic:{
@ -416,7 +422,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true, fullskin:true,
type:'equip', type:'equip',
subtype:'equip1', subtype:'equip1',
filterTarget:lib.filter.notMe, filterTarget:function(card,player,target){
if(player==target) return false;
return target.canEquip(card,true)
},
selectTarget:1, selectTarget:1,
toself:false, toself:false,
distance:{attackFrom:1}, distance:{attackFrom:1},
@ -427,7 +436,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 2; return 2;
}, },
value:function(card,player){ value:function(card,player){
if(player.getEquip(1)==card) return -3; if(player.getEquips(1).contains(card)) return -3;
return 3; return 3;
}, },
basic:{ basic:{
@ -452,7 +461,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true, fullskin:true,
type:'equip', type:'equip',
subtype:'equip2', subtype:'equip2',
filterTarget:lib.filter.notMe, filterTarget:function(card,player,target){
if(player==target) return false;
return target.canEquip(card,true)
},
selectTarget:1, selectTarget:1,
toself:false, toself:false,
skills:['yinfengjia_skill'], skills:['yinfengjia_skill'],
@ -463,7 +475,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return 1; return 1;
}, },
value:function(card,player){ value:function(card,player){
if(player.getEquip(2)==card) return -2.5; if(player.getEquips(2).contains(card)) return -2.5;
return 2.5; return 2.5;
}, },
basic:{ basic:{
@ -488,7 +500,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true, fullskin:true,
type:'equip', type:'equip',
subtype:'equip2', subtype:'equip2',
filterTarget:lib.filter.notMe, filterTarget:function(card,player,target){
if(player==target) return false;
return target.canEquip(card,true)
},
selectTarget:1, selectTarget:1,
toself:false, toself:false,
loseDelay:false, loseDelay:false,
@ -517,7 +532,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
order:9.5, order:9.5,
equipValue:function(card,player){ equipValue:function(card,player){
if(card==player.getEquip(2)){ if(player.getEquips(2).contains(card)){
if(player.sex!='male') return 0; if(player.sex!='male') return 0;
var num=player.countCards('he',function(cardx){ var num=player.countCards('he',function(cardx){
return cardx!=card; return cardx!=card;
@ -575,7 +590,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
fullskin:true, fullskin:true,
type:'equip', type:'equip',
subtype:'equip5', subtype:'equip5',
filterTarget:lib.filter.notMe, filterTarget:function(card,player,target){
if(player==target) return false;
return target.canEquip(card,true)
},
selectTarget:1, selectTarget:1,
toself:false, toself:false,
skills:['jinhe_skill'], skills:['jinhe_skill'],
@ -630,7 +648,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
order:9.5, order:9.5,
equipValue:function(card,player){ equipValue:function(card,player){
if(card!=player.getEquip(5)) return 5; if(!player.getEquips(5).contains(card)) return 5;
if(_status.jinhe&&_status.jinhe[card.cardid]&&_status.event.name!='gainPlayerCard') return 3*player.countCards('h'); if(_status.jinhe&&_status.jinhe[card.cardid]&&_status.event.name!='gainPlayerCard') return 3*player.countCards('h');
return 0; return 0;
}, },
@ -712,11 +730,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
enable:'phaseUse', enable:'phaseUse',
filter:function(event,player){ filter:function(event,player){
if(!_status.jinhe) return false; if(!_status.jinhe) return false;
var card=player.getEquip(5); var card=player.getEquip('jinhe');
return card&&card.name=='jinhe'&&_status.jinhe[card.cardid]!=undefined; return card&&card.name=='jinhe'&&_status.jinhe[card.cardid]!=undefined;
}, },
prepare:function(cards,player){ prepare:function(cards,player){
var card=player.getEquip(5); var card=player.getEquip('jinhe');
if(card&&card.name=='jinhe'&&_status.jinhe[card.cardid]){ if(card&&card.name=='jinhe'&&_status.jinhe[card.cardid]){
var tothrow=_status.jinhe[card.cardid].card; var tothrow=_status.jinhe[card.cardid].card;
player.$throw(tothrow); player.$throw(tothrow);
@ -725,7 +743,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}, },
content:function(){ content:function(){
"step 0" "step 0"
var card=player.getEquip(5); var card=player.getEquip('jinhe');
if(card&&card.name=='jinhe'&&_status.jinhe[card.cardid]){ if(card&&card.name=='jinhe'&&_status.jinhe[card.cardid]){
game.cardsDiscard(_status.jinhe[card.cardid].card); game.cardsDiscard(_status.jinhe[card.cardid].card);
event.suit=get.suit(_status.jinhe[card.cardid].card); event.suit=get.suit(_status.jinhe[card.cardid].card);
@ -748,7 +766,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
order:1, order:1,
result:{ result:{
player:function(player){ player:function(player){
var suit=get.suit(_status.jinhe[player.getEquip(5).cardid].card); var suit=get.suit(_status.jinhe[player.getEquip('jinhe').cardid].card);
var hs=player.getCards('h',function(card){ var hs=player.getCards('h',function(card){
return get.suit(card)==suit; return get.suit(card)==suit;
}); });
@ -763,10 +781,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
mod:{ mod:{
targetEnabled:function(card,player,target){ targetEnabled:function(card,player,target){
if(get.color(card)=='black'&&get.type(card,'trick')=='trick'&&!target.hasSkillTag('unequip2')&&!player.hasSkillTag('unequip',false,{ if(get.color(card)=='black'&&get.type(card,'trick')=='trick'&&!target.hasSkillTag('unequip2')&&!player.hasSkillTag('unequip',false,{
name:card?card.name:null, name:card?card.name:null,
target:target, target:target,
card:card card:card
})) return false; })) return false;
}, },
}, },
}, },
@ -791,16 +809,16 @@ game.import('card',function(lib,game,ui,get,ai,_status){
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
if(event.card.name!='sha') return false; if(event.card.name!='sha') return false;
var card=player.getEquip('wufengjian'); var cards=player.getEquip('wufengjian');
return player.countCards('he',function(cardx){ return player.hasCard(function(card){
return cardx!=card; return !cards.contains(card);
})>0; },'he');
}, },
content:function(){ content:function(){
if(player!=game.me&&!player.isUnderControl()&&!player.isOnline()) game.delayx(); if(player!=game.me&&!player.isUnderControl()&&!player.isOnline()) game.delayx();
player.chooseToDiscard(true,'he',function(card){ player.chooseToDiscard(true,'he',function(card){
return card!=_status.event.card; return !_status.event.cards.contains(card);
}).set('card',player.getEquip('wufengjian')); }).set('cards',player.getEquips('wufengjian'));
}, },
}, },
yajiaoqiang_skill:{ yajiaoqiang_skill:{

View File

@ -10736,7 +10736,7 @@
source.chooseButton([ source.chooseButton([
'选择'+(player==source?'你':get.translation(player))+'的'+get.cnNumber(num)+'张'+get.translation(slot)+'牌置入弃牌堆', '选择'+(player==source?'你':get.translation(player))+'的'+get.cnNumber(num)+'张'+get.translation(slot)+'牌置入弃牌堆',
cards, cards,
],true,num).set('filterOk',function(){ ],true,[1,num]).set('filterOk',function(){
var evt=_status.event; var evt=_status.event;
return ui.selected.buttons.reduce(function(num,button){ return ui.selected.buttons.reduce(function(num,button){
return num+get.numOf(get.subtypes(button.link,false),evt.slot) return num+get.numOf(get.subtypes(button.link,false),evt.slot)
@ -10822,7 +10822,7 @@
source.chooseButton([ source.chooseButton([
'选择替换掉'+get.cnNumber(num)+'张'+get.translation(slot)+'牌', '选择替换掉'+get.cnNumber(num)+'张'+get.translation(slot)+'牌',
cards, cards,
],true,num).set('filterOk',function(){ ],true,[1,num]).set('filterOk',function(){
var evt=_status.event; var evt=_status.event;
return ui.selected.buttons.reduce(function(num,button){ return ui.selected.buttons.reduce(function(num,button){
return num+get.numOf(get.subtypes(button.link,false),evt.slot) return num+get.numOf(get.subtypes(button.link,false),evt.slot)