Merge pull request #1126 from mengxinzxz/PR-Branch

bugfix;技能调整
This commit is contained in:
Spmario233 2024-03-26 09:11:12 +08:00 committed by GitHub
commit 0eb9f8d81d
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 62 additions and 69 deletions

View File

@ -1637,22 +1637,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.hasSkill('dddzhengjun_hp')) return false;
return event.player.getHp()==player.getHp();
}
const info=get.info('dddzhengjun');
const hs_check=info.hs_check,es_check=info.es_check;
return game.hasPlayer(target=>{
if(event.getg&&event.getg(target)&&event.getg(target).length){
return !player.hasSkill('dddzhengjun_hs')&&target.countCards('h')==player.countCards('h');
}
if(event.getg&&event.getg(target)&&event.getg(target).length&&hs_check(player,target)) return true;
const evt=event.getl(target);
if(evt){
if(evt.hs&&evt.hs.length){
return !player.hasSkill('dddzhengjun_hs')&&target.countCards('h')==player.countCards('h');
}
if(evt.es&&evt.es.length){
return !player.hasSkill('dddzhengjun_es')&&target.countCards('e')==player.countCards('e')&&player.canMoveCard(null,true,target);
}
}
return false;
if(evt&&evt.hs&&evt.hs.length&&hs_check(player,target)) return true;
if(event.name=='equip'&&event.player==target&&(!evt||evt.cards.length!=1)&&es_check(player,target)) return true;
return evt&&evt.es&&evt.es.length&&es_check(player,target);
});
},
hs_check(player,target){
return !player.hasSkill('dddzhengjun_hs')&&target.countCards('h')==player.countCards('h');
},
es_check(player,target){
return !player.hasSkill('dddzhengjun_es')&&target.countCards('e')==player.countCards('e');
},
async cost(event,trigger,player){
if(trigger.name=='damage'||trigger.name=='loseHp'||trigger.name=='recover'){
let list=['失去体力','cancel2'];
@ -1674,25 +1674,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else{
let map={};
const hs_targets=game.filterPlayer(target=>{
if(trigger.getg&&trigger.getg(target)&&trigger.getg(target).length){
return !player.hasSkill('dddzhengjun_hs')&&target.countCards('h')==player.countCards('h');
}
if(!get.info('dddzhengjun').hs_check(player,target)) return false;
if(trigger.getg&&trigger.getg(target)&&trigger.getg(target).length) return true;
const evt=trigger.getl(target);
if(evt){
if(evt.es&&evt.es.length){
return !player.hasSkill('dddzhengjun_es')&&target.countCards('e')==player.countCards('e')&&player.canMoveCard(null,true,target);
}
}
return false;
return evt&&evt.hs&&evt.hs.length;
});
const es_targets=game.filterPlayer(target=>{
if(!get.info('dddzhengjun').es_check(player,target)) return false;
const evt=trigger.getl(target);
if(evt){
if(evt.es&&evt.es.length){
return !player.hasSkill('dddzhengjun_es')&&target.countCards('e')==player.countCards('e')&&player.canMoveCard(null,true,target);
}
}
return false;
if(trigger.name=='equip'&&trigger.player==target&&(!evt||evt.cards.length!=1)) return true;
return evt&&evt.es&&evt.es.length;
});
if(hs_targets.length){
let target;

View File

@ -718,7 +718,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(gains.length) player.gain(gains.randomGets(Math.min(gains.length,num)),'gain2');
},
getNum:function(player,event){
let num=3;
let num=(get.mode()=='identity'?3:4);
const history=game.getAllGlobalHistory('everything');
for(let i=history.length-1;i>=0;i--){
const evt=history[i];
@ -16763,7 +16763,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sidai:'伺怠',
sidai_info:'限定技出牌阶段你可以将手牌区内的所有基本牌当做【杀】使用。若此牌对应的实体牌中包含【闪】则目标角色成为此牌的目标后需弃置一张基本牌否则不可响应此牌包含【桃】则当目标角色受到此牌的伤害后其减1点体力上限。',
jieyu:'竭御',
jieyu_info:'结束阶段你可以从弃牌堆中获得共X张不同牌名的基本牌X为3-你上次发动〖竭御〗至今你成为其他角色使用伤害类卡牌目标的次数且X至少为1。',
jieyu_info:'结束阶段你可以从弃牌堆中获得共X张不同牌名的基本牌X为4-你上次发动〖竭御〗至今你成为其他角色使用伤害类卡牌目标的次数且X至少为1。',
jieyu_info_identity:'结束阶段你可以从弃牌堆中获得共X张不同牌名的基本牌X为3-你上次发动〖竭御〗至今你成为其他角色使用伤害类卡牌目标的次数且X至少为1。',
yangfeng:'杨奉',
mbxuetu:'血途',
mbxuetu_info:'转换技。出牌阶段限一次你可以弃置一张牌然后令一名角色回复1点体力你可以失去1点体力然后令一名角色摸两张牌。',

View File

@ -746,11 +746,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.countMark('sbxingshang')>=get.info('sbxingshang').getLimit) return false;
return event.name=='die'||!player.getHistory('custom',evt=>evt.sbxingshang).length;
},
usable:1,
forced:true,
locked:false,
async content(event,trigger,player){
player.addMark('sbxingshang',1);
player.addMark('sbxingshang',Math.min(2,get.info('sbxingshang').getLimit-player.countMark('sbxingshang')));
if(trigger.name=='damage') player.getHistory('custom').push({sbxingshang:true});
},
marktext:'颂',
@ -762,27 +761,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
getLimit:9,
getNum(num){
if(typeof num!='number'||!Array.from({length:9}).map((_,i)=>i+1).includes(num)) return 0;
return [1,2,3,4,1,2,2,3,3][num-1];
return [2,2,5,5,1,2,2,3,3][num-1];
},
getEffect(player,num){
if(!player||typeof num!='number') return 0;
switch(num){
//行殇选项
case 1://-1,重置武将牌
case 1://-2,重置武将牌
if(game.hasPlayer(target=>{
return get.attitude(player,target)>0&&target.isTurnedOver();
})) return 10;
return 0;
case 2://-2摸min(5,max(1,阵亡角色数))的牌
return Math.min(5,(Math.max(1,game.dead.length)));
case 3://-3,加上限加血+复原装备栏
case 3://-5,加上限加血+复原装备栏
if(!game.hasPlayer(target=>{
return get.attitude(player,target)>0&&target.maxHp<10;
})) return 0;
return 5+(game.hasPlayer(target=>{
return get.attitude(player,target)>0&&target.hasDisabledSlot();
})?1:0);
case 4://-4,劝封/化萍
case 4://-5,劝封/化萍
return 0;
//放逐选项
case 5://-1封印基本牌外的手牌
@ -828,20 +827,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return player.countMark('sbxingshang')&&(target.isLinked()||target.isTurnedOver());
});
},
usable:1,
usable:2,
chooseButton:{
dialog(){
var dialog=ui.create.dialog('行殇:请选择你要执行的一项','hidden');
dialog.add([[
[1,'移去1个“颂”标记,复原一名角色的武将牌'],
[1,'移去2个“颂”标记,复原一名角色的武将牌'],
[2,'移去2个“颂”标记令一名角色摸'+get.cnNumber(Math.min(5,Math.max(1,game.dead.length)))+'张牌'],
[3,'移去3个“颂”标记令一名体力上限小于10的角色加1点体力上限并回复1点体力然后随机恢复一个被废除的装备栏'],
[4,'移去4个“颂”标记,获得一名已阵亡角色的所有技能,然后失去〖行殇〗〖放逐〗〖颂威〗'],
[3,'移去5个“颂”标记令一名体力上限小于10的角色加1点体力上限并回复1点体力然后随机恢复一个被废除的装备栏'],
[4,'移去5个“颂”标记,获得一名已阵亡角色的所有技能,然后失去〖行殇〗〖放逐〗〖颂威〗'],
],'textbutton']);
return dialog;
},
filter(button,player){
if(button.link>player.countMark('sbxingshang')) return false;
if(player.countMark('sbxingshang')<get.info('sbxingshang').getNum(button.link)) return false;
switch(button.link){
case 1:
return game.hasPlayer(target=>target.isLinked()||target.isTurnedOver());
@ -950,20 +949,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
const str='###行殇###';
switch(links[0]){
case 1:
return str+'复原一名角色的武将牌';
return str+'移去2个“颂”标记复原一名角色的武将牌';
case 2:
return str+'令一名角色摸'+get.cnNumber(Math.min(5,Math.max(1,game.dead.length)))+'张牌';
return str+'移去2个“颂”标记令一名角色摸'+get.cnNumber(Math.min(5,Math.max(1,game.dead.length)))+'张牌';
case 3:
return str+'令一名体力上限小于10的角色加1点体力上限并回复1点体力然后随机恢复一个被废除的装备栏';
return str+'移去5个“颂”标记令一名体力上限小于10的角色加1点体力上限并回复1点体力然后随机恢复一个被废除的装备栏';
case 4:
return str+'获得一名已阵亡角色的所有技能,然后失去武将牌上的所有技能';
return str+'移去5个“颂”标记获得一名已阵亡角色的所有技能,然后失去武将牌上的所有技能';
}
}
},
ai:{
order(_,player){
const info=get.info('sbxingshang');
const goon=(player.hasSkill('sbfangzhu')&&!player.getStat('skill').sbfangzhu);
const goon=(player.hasSkill('sbfangzhu')&&(player.getStat('skill').sbfangzhu||0)<(get.info('sbfangzhu').usable||Infinity));
let list=Array.from({length:goon?9:4}).map((_,i)=>i+1);
list=list.filter(num=>player.countMark('sbxingshang')>=info.getNum(num));
list.sort((a,b)=>info.getEffect(player,b)-info.getEffect(player,a));
@ -1088,7 +1087,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
order(_,player){
const info=get.info('sbxingshang');
const goon=(player.hasSkill('sbxingshang')&&!player.getStat('skill').sbxingshang_use);
const goon=(player.hasSkill('sbxingshang')&&(player.getStat('skill').sbxingshang_use||0)<(info.subSkill.use.usable||Infinity));
let list=Array.from({length:goon?9:5}).map((_,i)=>i+(goon?1:5));
list=list.filter(num=>player.countMark('sbxingshang')>=info.getNum(num));
list.sort((a,b)=>info.getEffect(player,b)-info.getEffect(player,a));
@ -7086,7 +7085,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sb_caopi:'谋曹丕',
sb_caopi_prefix:'谋',
sbxingshang:'行殇',
sbxingshang_info:'①当一名角色受到伤害后(每回合限一次)或死亡时,你获得1个“颂”标记你至多拥有9个“颂”标记。②出牌阶段限一次你可以1.移去1个“颂”标记令一名角色复原武将牌2.移去2个“颂”标记令一名角色摸X张牌X为场上阵亡角色数且X至少为1至多为53.移去3个“颂”标记令一名体力上限小于10的角色加1点体力上限回复1点体力随机恢复一个已废除的装备栏4.移去4个“颂”标记,获得一名阵亡角色武将牌上的所有技能,然后你失去〖行殇〗〖放逐〗〖颂威〗。',
sbxingshang_info:'①当一名角色受到伤害后(每回合限一次)或死亡时,你获得2个“颂”标记你至多拥有9个“颂”标记。②出牌阶段限两次你可以1.移去2个“颂”标记令一名角色复原武将牌2.移去2个“颂”标记令一名角色摸X张牌X为场上阵亡角色数且X至少为1至多为53.移去5个“颂”标记令一名体力上限小于10的角色加1点体力上限回复1点体力随机恢复一个已废除的装备栏4.移去5个“颂”标记,获得一名阵亡角色武将牌上的所有技能,然后你失去〖行殇〗〖放逐〗〖颂威〗。',
sbfangzhu:'放逐',
sbfangzhu_info:'出牌阶段限一次你可以1.移去1个“颂”标记令一名其他角色于手牌中只能使用基本牌直到其回合结束2.移去2个“颂”标记令一名其他角色的非Charlotte技能失效直到其回合结束3.移去2个“颂”标记令一名其他角色不能响应除其以外的角色使用的牌直到其回合结束4.移去3个“颂”标记令一名其他角色将武将牌翻面5.移去3个“颂”标记令一名其他角色于手牌中只能使用装备牌直到其回合结束。',
sbsongwei:'颂威',

View File

@ -6620,16 +6620,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var target=result.targets[0];
player.logSkill('cixiao',target);
target.addSkills('panshi');
// 彩蛋
var str;
if(target.name.indexOf('lvbu')!=-1){
str='公若不弃,布愿拜为义父';
} else if(target.sex=='male'){
str='我是'+get.translation(player)+'的义子';
} else if(target.sex=='female'){
str='我是'+get.translation(player)+'的义女';
} else str='我们是'+get.translation(player)+'的义子和义女';
target.storage.panshi=str;
}
event.finish();
'step 2'
@ -6670,16 +6660,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}).concat(result.targets),'green');
target.addSkills('panshi');
// 彩蛋
var str;
if(target.name.indexOf('lvbu')!=-1){
str='公若不弃,布愿拜为义父';
} else if(target.sex=='male'){
str='我是'+get.translation(player)+'的义子';
} else if(target.sex=='female'){
str='我是'+get.translation(player)+'的义女';
} else str='我们是'+get.translation(player)+'的义子和义女';
target.storage.panshi=str;
}
else event.finish();
'step 4'
@ -6726,7 +6706,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
marktext:'子',
intro:{
name:'义子',
content:'$',
//content:'我是儿子',
//R·I·P——永远怀念被棘手砍掉的“我是儿子”
content(_,player){
const targets=game.filterPlayer2(target=>target.hasSkill('cixiao',null,null,false)).sortBySeat(player);
if(!targets.length) return '我义父呢?!';
if(['name','name1','name2'].some(name=>{
if(!player[name]||!get.character(player[name])||typeof get.translation(player[name])!='string') return false;
return player[name].includes('lvbu')&&get.translation(player[name]).includes('吕布');
})) return '公若不弃,布愿拜为义父';
return '我是'+get.translation(targets)+'的'+((player)=>{
switch(player.sex){
case 'female':
return '义女';
case 'double':
return '义子义女';
default:
return '义子';
}
})(player);
},
},
group:'panshi_damage',
},

View File

@ -843,6 +843,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
mod:{
ignoredHandcard:function(card,player){
if(card.hasGaintag('cibei_mark')) return true;
},
cardDiscardable:function(card,player,name){
if(card.hasGaintag('cibei_mark')) return false;
},
@ -14605,7 +14608,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
duwang:'独往',
duwang_info:'锁定技。①游戏开始时,你从牌堆顶将五张不为【杀】的牌置于武将牌上,称为“刺”。②若你有牌名不为【杀】“刺”,你至其他角色或其他角色至你的距离+1。',
cibei:'刺北',
cibei_info:'①当一名角色使用【杀】造成伤害且此牌对应的实体牌进入弃牌堆后,你可以将一张不为【杀】的“刺”置入弃牌堆,并将这些牌置入“刺”,然后弃置一名角色区域里的一张牌。②一名角色的回合结束时,若你的“刺”均为【杀】,你获得所有“刺”,且这些牌不能被弃置,且当你使用对应实体牌包含这些牌的牌时无次数和距离限制。',
cibei_info:'①当一名角色使用【杀】造成伤害且此牌对应的实体牌进入弃牌堆后,你可以将一张不为【杀】的“刺”置入弃牌堆,并将这些牌置入“刺”,然后弃置一名角色区域里的一张牌。②一名角色的回合结束时,若你的“刺”均为【杀】,你获得所有“刺”,且这些牌不能被弃置,不计入手牌上限,且当你使用对应实体牌包含这些牌的牌时无次数和距离限制。',
wuanguo:'武安国',
diezhang:'叠嶂',
diezhang_info:'转换技。①出牌阶段,你使用杀的次数上限+1。②阴当你使用牌被其他角色抵消后你可以弃置一张牌视为对其使用X张【杀】当其他角色使用牌被你抵消后你可以摸X张牌视为对其使用一张【杀】X为1。',