liunian update

This commit is contained in:
Spmario233 2023-09-13 19:56:48 +08:00
parent 5f8c320b22
commit 55fa9caba8
2 changed files with 67 additions and 33 deletions

View File

@ -5453,39 +5453,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
liunian:{
audio:2,
trigger:{global:'washCard'},
trigger:{global:'phaseEnd'},
forced:true,
filter:function(event,player){
return game.shuffleNumber<=2;
return game.hasGlobalHistory('cardMove',function(evt){
return evt.washCard&&(evt.shuffleNumber==1||evt.shuffleNumber==2);
});
},
content:function(){
if(game.shuffleNumber==1) player.addTempSkill('liunian_shuffle1');
else player.addTempSkill('liunian_shuffle2');
game.delayx();
},
subSkill:{
shuffle1:{
charlotte:true,
forced:true,
trigger:{global:'phaseEnd'},
content:function(){
player.gainMaxHp();
game.delayx();
},
},
shuffle2:{
charlotte:true,
forced:true,
trigger:{global:'phaseEnd'},
content:function(){
'step 0'
if(game.hasGlobalHistory('cardMove',function(evt){
return evt.washCard&&evt.shuffleNumber==1;
})){
player.gainMaxHp();
game.delayx();
}
'step 1'
if(game.hasGlobalHistory('cardMove',function(evt){
return evt.washCard&&evt.shuffleNumber==2;
})){
player.recover();
game.delayx();
'step 1'
}
else event.finish();
'step 2'
player.addSkill('liunian_effect');
player.addMark('liunian_effect',10,false);
},
},
subSkill:{
effect:{
charlotte:true,
mod:{
@ -10042,7 +10037,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xingchong:'幸宠',
xingchong_info:'一轮游戏开始时你可声明两个自然数X和Y且(X+Y)≤min(5, 你的体力上限)。你摸X张牌并展示Y张手牌。若如此做当你于本轮内失去一张以此法展示的牌后你摸两张牌。',
liunian:'流年',
liunian_info:'锁定技。牌堆第一次洗牌后你于回合结束时加1点体力上限牌堆第二次洗牌后你于本回合结束时回复1点体力且本局游戏内的手牌上限+10。',
liunian_info:'锁定技。回合结束时若本回合内进行了本次游戏的第一次洗牌则你加1点体力上限若本回合内进行了本次游戏的第二次洗牌你于本回合结束时回复1点体力且本局游戏内的手牌上限+10。',
caimaozhangyun:'蔡瑁张允',
lianzhou:'连舟',
lianzhou_info:'锁定技。准备阶段,你横置你的武将牌。然后你可横置任意名体力值等于你的角色。',

View File

@ -32414,6 +32414,7 @@
const game={
//洗牌
washCard:()=>{
if(!ui.cardPile.hasChildNodes()&&!ui.discardPile.hasChildNodes()) return false;
if(_status.maxShuffle!=undefined){
if(_status.maxShuffle==0){
if(_status.maxShuffleCheck){
@ -32427,7 +32428,7 @@
_status.maxShuffle--;
}
game.shuffleNumber++;
const cards=Array.from(ui.cardPile);
const cards=Array.from(ui.cardPile.childNodes);
if(_status.discarded){
_status.discarded.length=0;
}
@ -32441,7 +32442,7 @@
cards.push(currentcard);
}
cards.randomSort();
game.cardsGotoPile(cards,'triggeronly','washCard')
return game.cardsGotoPile(cards,'triggeronly','washCard',['shuffleNumber',game.shuffleNumber])
},
//addGroup
//基于钩子的添加势力方法
@ -32714,6 +32715,23 @@
if(get.mode()!='chess'&&rank.junk.contains(name)) return 'junk';
return 'common';
},
hasGlobalHistory:function(key,filter,last){
if(!key) return _status.globalHistory[_status.globalHistory.length-1];
if(!filter) return _status.globalHistory[_status.globalHistory.length-1][key];
else{
const history=game.getGlobalHistory(key);
if(last){
const lastIndex=history.indexOf(last);
return history.some((event,index)=>{
if(index>lastIndex) return false;
return filter(event);
});
}
else{
return history.some(filter);
}
}
},
checkGlobalHistory:function(key,filter,last){
if(!key) return _status.globalHistory[_status.globalHistory.length-1];
if(!filter) return _status.globalHistory[_status.globalHistory.length-1][key];
@ -32746,13 +32764,34 @@
return history.filter(filter);
}
},
checkAllGlobalHistory:function(key,filter,last){
hasAllGlobalHistory:function(key,filter,last){
if(!key||!filter) return;
const stopped=false;
_status.globalHistory.forEach(value=>{
if(value[key]){
if(last&&value[key].includes(last)){
if(last&&value[key].includes(last)&&!stopped){
stopped=true;
const lastIndex=value[key].indexOf(last);
value[key].filter((event,index)=>{
if(value[key].some((event,index)=>{
if(index>lastIndex) return false;
return filter(event);
})) return true;
}
else{
if(value[key].some(filter)) return true;
}
}
})
},
checkAllGlobalHistory:function(key,filter,last){
if(!key||!filter) return;
const stopped=false;
_status.globalHistory.forEach(value=>{
if(value[key]){
if(last&&value[key].includes(last)&&!stopped){
stopped=true;
const lastIndex=value[key].indexOf(last);
value[key].forEach((event,index)=>{
if(index>lastIndex) return false;
return filter(event);
});