手杀新将结算调整&交互优化&bugfix
This commit is contained in:
parent
de1f3d7532
commit
a9fc7dffb1
|
@ -101,31 +101,60 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return !target.hasSkill('wuling_wuqinxi');
|
||||
},
|
||||
usable:1,
|
||||
prompt:'选择一名角色,向其传授“五禽戏”',
|
||||
group:'wuling_die',
|
||||
content:function(){
|
||||
'step 0'
|
||||
target.addSkill('wuling_wuqinxi');
|
||||
player.chooseControl(lib.skill.wuling.wuqinxi).set('prompt','五灵:请选择'+get.translation(target)+'的初始五禽戏效果').set('ai',()=>['鹿','熊'].randomGet()).set('choiceList',lib.skill.wuling.wuqinxiMap);
|
||||
target.addAdditionalSkill(`wuling_${player.playerid}`,'wuling_wuqinxi');
|
||||
var next=player.chooseToMove(`五灵:调整向${get.translation(target)}传授的“五禽戏”顺序`);
|
||||
next.set('list',[
|
||||
['',[lib.skill.wuling.wuqinxi,(item,type,position,noclick,node)=>{
|
||||
node=ui.create.buttonPresets.vcard(item,type,position,noclick);
|
||||
node._customintro=[
|
||||
node=>{
|
||||
return `五禽戏:${node.link[2]}`;
|
||||
},
|
||||
node=>{
|
||||
return lib.skill.wuling.wuqinxiMap[lib.skill.wuling.wuqinxi.indexOf(node.link[2])].slice(2);
|
||||
}
|
||||
];
|
||||
return node;
|
||||
}]]
|
||||
]);
|
||||
next.set('processAI',()=>{
|
||||
const event=get.event().getParent(),player=event.player,target=event.target;
|
||||
let first;
|
||||
if(get.recoverEffect(target,player,player)>0) first=['鹿','熊'].randomGet();
|
||||
else first='熊';
|
||||
return [[first].concat(lib.skill.wuling.wuqinxi.slice().remove(first).randomSort()).map(i=>['','',i])];
|
||||
})
|
||||
'step 1'
|
||||
player.popup(result.control);
|
||||
target.storage.wuling_wuqinxi=result.control;
|
||||
var sortedWuqinxi=result.moved[0].map(i=>i[2]);
|
||||
game.log(target,'习得的五禽戏顺序为','#g'+sortedWuqinxi.join('、'));
|
||||
sortedWuqinxi.unshift(sortedWuqinxi.pop());
|
||||
target.storage.wuling_wuqinxi=sortedWuqinxi;
|
||||
lib.skill.wuling.updateMark(target);
|
||||
},
|
||||
wuqinxi:['虎','鹿','熊','猿','鹤'],
|
||||
wuqinxiMap:[
|
||||
'虎:使用仅指定唯一目标的牌对目标角色造成的伤害+1',
|
||||
'鹿:回复1点体力并弃置判定区的所有牌;不能成为延时锦囊牌的目标',
|
||||
'熊:受到伤害时,此伤害-1',
|
||||
'猿:出牌阶段开始时,选择一名角色,随机获得其装备区里的一张牌',
|
||||
'鹤:出牌阶段开始时,摸两张牌',
|
||||
'虎:当你使用指定唯一目标的牌对目标角色造成伤害时,此伤害+1。',
|
||||
'鹿:①当你获得此效果时,你回复1点体力并弃置判定区的所有牌。②你不能成为延时锦囊牌的目标。',
|
||||
'熊:当你受到伤害时,此伤害-1。',
|
||||
'猿:出牌阶段开始时,你选择一名角色,随机获得其装备区里的一张牌。',
|
||||
'鹤:出牌阶段开始时,你摸两张牌。',
|
||||
],
|
||||
updateMark:function(player){
|
||||
var wuqinxi=player.storage.wuling_wuqinxi;
|
||||
game.log(player,'获得了','#g【'+wuqinxi+'】','标记');
|
||||
if(!wuqinxi) return;
|
||||
var prevMark=wuqinxi.shift();
|
||||
wuqinxi.push(prevMark);
|
||||
var curMark=wuqinxi[0];
|
||||
game.log(player,'获得了','#g【'+curMark+'】','标记');
|
||||
player.markSkill('wuling_wuqinxi');
|
||||
game.broadcastAll(function(player,wuqinxi){
|
||||
if(player.marks.wuling_wuqinxi) player.marks.wuling_wuqinxi.firstChild.innerHTML=wuqinxi;
|
||||
},player,wuqinxi);
|
||||
if(wuqinxi=='鹿'){
|
||||
game.broadcastAll(function(player,curMark){
|
||||
if(player.marks.wuling_wuqinxi) player.marks.wuling_wuqinxi.firstChild.innerHTML=curMark;
|
||||
},player,curMark);
|
||||
if(curMark=='鹿'){
|
||||
player.logSkill('wuling_wuqinxi');
|
||||
player.recover();
|
||||
player.discard(player.getCards('j')).discarder=player;
|
||||
|
@ -133,6 +162,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
order:7,
|
||||
threaten:5,
|
||||
result:{target:1},
|
||||
},
|
||||
derivation:'wuling_wuqinxi',
|
||||
|
@ -141,27 +171,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
nopop:true,
|
||||
charlotte:true,
|
||||
intro:{
|
||||
content:function(storage){
|
||||
var str='<li>当前效果:'+storage;
|
||||
var list=lib.skill.wuling.wuqinxiMap.map(str2=>str2.slice(2));
|
||||
str+='<br><li>';
|
||||
str+=list[lib.skill.wuling.wuqinxi.indexOf(storage)];
|
||||
return str;
|
||||
markcount:()=>0,
|
||||
mark:function(dialog,storage){
|
||||
const wuqinxiMap=lib.skill.wuling.wuqinxiMap;
|
||||
const str=`<li>当前效果:${storage[0]}<br><li>${wuqinxiMap.find(str=>storage[0]==str[0]).slice(2)}<br>`;
|
||||
dialog.addText(str,false);
|
||||
const str2='<div class="text center">“五禽戏”顺序:<br>'+storage.join(' ')+'</div>';
|
||||
dialog.addText(str2);
|
||||
const str3=`<div class="text" style="font-size:10px; ">[下一效果] ${wuqinxiMap.find(str=>storage[1]==str[0])}<br></div>`;
|
||||
dialog.add(str3);
|
||||
},
|
||||
},
|
||||
mod:{
|
||||
targetEnabled:function(card,player,target){
|
||||
if(get.type(card)=='delay'&&target.storage.wuling_wuqinxi&&target.storage.wuling_wuqinxi=='鹿') return false;
|
||||
if(get.type(card)=='delay'&&target.storage.wuling_wuqinxi&&target.storage.wuling_wuqinxi[0]=='鹿') return false;
|
||||
},
|
||||
},
|
||||
trigger:{
|
||||
source:'damageBegin1',
|
||||
player:['phaseBegin','damageBegin4','phaseUseBegin'],
|
||||
player:['phaseZhunbeiBegin','damageBegin4','phaseUseBegin'],
|
||||
},
|
||||
filter:function(event,player,name){
|
||||
var wuqinxi=player.storage.wuling_wuqinxi;
|
||||
const wuqinxi=player.storage.wuling_wuqinxi&&player.storage.wuling_wuqinxi[0];
|
||||
if(!wuqinxi) return false;
|
||||
if(event.name=='phase') return true;
|
||||
if(event.name=='phaseZhunbei') return true;
|
||||
switch(name){
|
||||
case 'damageBegin1':
|
||||
if(wuqinxi!='虎'||!event.card) return false;
|
||||
|
@ -178,11 +211,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var wuqinxi=player.storage.wuling_wuqinxi;
|
||||
if(trigger.name=='phase'){
|
||||
var num=lib.skill.wuling.wuqinxi.indexOf(wuqinxi)+1;
|
||||
if(num>=lib.skill.wuling.wuqinxi.length) num-=lib.skill.wuling.wuqinxi.length;
|
||||
player.storage.wuling_wuqinxi=lib.skill.wuling.wuqinxi[num];
|
||||
var wuqinxi=player.storage.wuling_wuqinxi[0];
|
||||
if(trigger.name=='phaseZhunbei'){
|
||||
lib.skill.wuling.updateMark(player);
|
||||
event.finish();
|
||||
}
|
||||
|
@ -229,7 +259,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
var wuqinxi=target.storage.wuling_wuqinxi;
|
||||
var wuqinxi=target.storage.wuling_wuqinxi&&target.storage.wuling_wuqinxi[0];
|
||||
if(!wuqinxi||wuqinxi!='熊') return;
|
||||
if(player.hasSkillTag('jueqing',false,target)) return;
|
||||
var num=get.tag(card,'damage');
|
||||
|
@ -241,6 +271,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
},
|
||||
die:{
|
||||
trigger:{player:'die'},
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(current=>current.additionalSkills(`wuling_${player.playerid}`));
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
forceDie:true,
|
||||
content:function(){
|
||||
var targets=game.filterPlayer(current=>{
|
||||
return current.additionalSkills(`wuling_${player.playerid}`);
|
||||
});
|
||||
player.line(targets);
|
||||
targets.forEach(current=>current.removeAdditionalSkill(`wuling_${player.playerid}`));
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
youyi:{
|
||||
|
@ -7799,16 +7845,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
shen_huatuo:'神华佗',
|
||||
shen_huatuo_prefix:'神',
|
||||
wuling:'五灵',
|
||||
wuling_info:'出牌阶段限一次,你可以令一名没有“五禽戏”的角色获得“五禽戏”,然后你为其指定一个“五禽戏”的初始效果。',
|
||||
// wuling_info:'出牌阶段限一次。你可以令一名没有“五禽戏”的角色获得“五禽戏”,然后你为其指定一个“五禽戏”的初始效果。',
|
||||
wuling_info:'①出牌阶段限一次。你可以选择一名没有“五禽戏”的角色,按照你选择的顺序向其传授“五禽戏”,且其获得你选择的第一种“五禽戏”的效果,并在其准备阶段切换为下一种。②当你死亡时,你令场上的角色失去你传授的“五禽戏”。',
|
||||
wuling_wuqinxi:'五禽戏',
|
||||
wuling_wuqinxi_info:'<br><li>“五禽戏”分为“虎、鹿、熊、猿、鹤”五个不同的效果,有“五禽戏”的角色的准备阶段,将自己“五禽戏”的效果更换为“五禽戏”顺序的下一种效果'+
|
||||
'<br><li>虎:你使用仅指定唯一目标的牌对目标角色造成的伤害+1'+
|
||||
'<br><li>鹿:获得或更换至此效果时,回复1点体力并弃置判定区的所有牌;你不能成为延时锦囊牌的目标'+
|
||||
'<br><li>熊:当你受到伤害时,此伤害-1'+
|
||||
'<br><li>猿:出牌阶段开始时,你选择一名角色,随机获得其装备区里的一张牌'+
|
||||
'<br><li>鹤:出牌阶段开始时,你摸两张牌',
|
||||
wuling_wuqinxi_info:'<br><li>“五禽戏”分为“虎、鹿、熊、猿、鹤”五个不同的效果:'+
|
||||
'<br><li>虎:当你使用指定唯一目标的牌对目标角色造成伤害时,此伤害+1。'+
|
||||
'<br><li>鹿:①当你获得此效果时,你回复1点体力并弃置判定区的所有牌。②你不能成为延时锦囊牌的目标。'+
|
||||
'<br><li>熊:当你受到伤害时,此伤害-1。'+
|
||||
'<br><li>猿:出牌阶段开始时,你选择一名角色,随机获得其装备区里的一张牌。'+
|
||||
'<br><li>鹤:出牌阶段开始时,你摸两张牌。',
|
||||
youyi:'游医',
|
||||
youyi_info:'①弃牌阶段结束时,你可以将所有于此阶段进入弃牌堆的牌置入仁区。②出牌阶段限一次,你可以将仁区的所有牌置入弃牌堆,然后令所有角色各回复1点体力。',
|
||||
youyi_info:'①弃牌阶段结束时,你可以将所有于此阶段弃置的牌置入仁区。②出牌阶段限一次。你可以将仁区的所有牌置入弃牌堆,令所有角色各回复1点体力。',
|
||||
|
||||
extra_feng:'神话再临·风',
|
||||
extra_huo:'神话再临·火',
|
||||
|
|
|
@ -410,17 +410,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
map.trigger.cancel();
|
||||
var num=player.countDiscardableCards(player,'he');
|
||||
if(num){
|
||||
var result=yield player.chooseToDiscard('纳学:弃置任意张牌并摸等量的牌',[1,num],true).set('ai',lib.skill.zhiheng.check);
|
||||
var result=yield player.chooseToDiscard('纳学:是否弃置任意张牌并摸等量的牌?','he',[1,num]).set('ai',lib.skill.zhiheng.check);
|
||||
if(result.bool) yield player.draw(result.cards.length);
|
||||
}
|
||||
if(player.countCards('he')){
|
||||
if(player.countCards('h')){
|
||||
var result2=yield player.chooseCardTarget({
|
||||
prompt:'纳学:将至多两张牌交给一名其他角色',
|
||||
prompt:'是否交给至多两名其他角色各一张手牌?',
|
||||
prompt2:'先按顺序选中所有要给出的牌,然后再按顺序选择等量的目标角色。',
|
||||
selectCard:[1,2],
|
||||
filterCard:true,
|
||||
filterTarget:lib.filter.notMe,
|
||||
forced:true,
|
||||
position:'he',
|
||||
selectTarget:function(){
|
||||
return ui.selected.cards.length;
|
||||
},
|
||||
filterOk:()=>{
|
||||
return ui.selected.cards.length==ui.selected.targets.length;
|
||||
},
|
||||
position:'h',
|
||||
ai1:function(card){
|
||||
if(card.name=='du') return 10;
|
||||
else if(ui.selected.cards.length&&ui.selected.cards[0].name=='du') return 0;
|
||||
|
@ -437,7 +443,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return att;
|
||||
},
|
||||
});
|
||||
if(result2.bool) player.give(result2.cards,result2.targets[0]);
|
||||
if(result2.bool){
|
||||
const list=[];
|
||||
for(let i=0;i<result2.targets.length;i++){
|
||||
list.push([result2.targets[i],result2.cards[i]]);
|
||||
player.line(result2.targets[i]);
|
||||
}
|
||||
game.loseAsync({
|
||||
gain_list:list,
|
||||
player:player,
|
||||
cards:result2.cards,
|
||||
giver:player,
|
||||
animate:'giveAuto',
|
||||
}).setContent('gaincardMultiple');
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
|
@ -15752,7 +15771,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_xianglang:'手杀向朗',
|
||||
re_xianglang_prefix:'手杀',
|
||||
naxue:'纳学',
|
||||
naxue_info:'你可以跳过出牌阶段。若如此做,你弃置任意张牌并摸等量的牌,然后交给一名其他角色至多两张牌。',
|
||||
naxue_given:'已分配',
|
||||
naxue_info:'你可以跳过出牌阶段。若如此做,你可以弃置任意张牌并摸等量的牌,然后你可以交给至多两名其他角色各一张手牌。',
|
||||
yijie:'遗诫',
|
||||
yijie_info:'锁定技。当你死亡时,你令所有其他角色将体力回复或失去至X(X为所有其他角色的体力之和除以所有其他角色数,向下取整,且X至少为1)。',
|
||||
|
||||
|
|
161
character/sb.js
161
character/sb.js
|
@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
character:{
|
||||
sb_huangyueying:['female','shu',3,['sbqicai','sbjizhi']],
|
||||
sb_sp_zhugeliang:['male','shu',3,['sbhuoji','sbkanpo']],
|
||||
sb_zhugeliang:['male','shu',3,['sbguanxing','sbkongcheng']],
|
||||
sb_zhugeliang:['male','shu',3,['sbguanxing','sbkongcheng'],['unseen']],
|
||||
sb_zhanghe:['male','wei',4,['sbqiaobian']],
|
||||
sb_yujin:['male','wei',4,['sbxiayuan','sbjieyue']],
|
||||
sb_huaxiong:['male','qun','3/4/1',['new_reyaowu','sbyangwei']],
|
||||
|
@ -46,10 +46,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
characterSort:{
|
||||
sb:{
|
||||
sb_zhi:['sb_sunquan','sb_zhouyu','sb_zhangjiao','sb_caocao','sb_zhenji','sb_liubei','sb_daqiao','sb_liubiao'],
|
||||
sb_zhi:['sb_sunquan','sb_zhouyu','sb_zhangjiao','sb_caocao','sb_zhenji','sb_liubei','sb_daqiao','sb_liubiao','sb_sp_zhugeliang'],
|
||||
sb_shi:['sb_xuhuang','sb_machao','sb_fazheng','sb_chengong','sb_diaochan','sb_pangtong','sb_zhanghe'],
|
||||
sb_tong:['liucheng','sp_yangwan','sb_xiahoushi','sb_zhangfei','sb_zhaoyun','sb_sunce','sb_zhurong','sb_xiaoqiao'],
|
||||
sb_yu:['sb_yujin','sb_lvmeng','sb_huangzhong','sb_huanggai','sb_zhouyu','sb_caoren','sb_ganning','sb_yl_luzhi'],
|
||||
sb_yu:['sb_yujin','sb_lvmeng','sb_huangzhong','sb_huanggai','sb_zhouyu','sb_caoren','sb_ganning','sb_yl_luzhi','sb_huangyueying'],
|
||||
sb_neng:['sb_huaxiong','sb_sunshangxiang','sb_jiangwei','sb_yuanshao','sb_menghuo'],
|
||||
}
|
||||
},
|
||||
|
@ -278,17 +278,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filterTarget:lib.filter.notMe,
|
||||
prompt:'选择一名其他角色,对其与其势力相同的所有其他角色各造成1点火属性伤害',
|
||||
usable:1,
|
||||
line:false,
|
||||
line:'fire',
|
||||
content:function(){
|
||||
'step 0'
|
||||
target.damage('fire');
|
||||
'step 1'
|
||||
var targets=game.filterPlayer(current=>{
|
||||
if(current==player) return false;
|
||||
if(current==player||current==target) return false;
|
||||
return current.group==target.group;
|
||||
});
|
||||
player.line(targets);
|
||||
targets.forEach(i=>i.damage(1,'fire'));
|
||||
if(targets.length){
|
||||
game.delayx();
|
||||
player.line(targets,'fire');
|
||||
targets.forEach(i=>i.damage('fire'));
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:7,
|
||||
fireAttack:true,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
var att=get.attitude(player,target);
|
||||
|
@ -362,13 +369,57 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{global:'roundStart'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
get getNumber(){
|
||||
return 3;
|
||||
},
|
||||
content:function*(event,map){
|
||||
var player=map.player;
|
||||
var storage=player.getStorage('sbkanpo').slice();
|
||||
if(storage.length){
|
||||
player.unmarkAuto('sbkanpo',storage);
|
||||
}
|
||||
var result=yield player.chooseButton(['看破:是否记录三张不同的牌名',[lib.inpile.map(name=>[get.translation(get.type(name)),'',name]),'vcard']],3).set('ai',function(button){
|
||||
const list=get.inpileVCardList(info=>{
|
||||
if(info[2]=='sha'&&info[3]) return false;
|
||||
return info[0]!='equip';
|
||||
});
|
||||
const func=()=>{
|
||||
const event=get.event();
|
||||
const controls=[link=>{
|
||||
const evt=get.event();
|
||||
let result=evt.result;
|
||||
if(!result) result={};
|
||||
if(link=='cancel2') result.bool=false;
|
||||
else{
|
||||
if(evt.dialog&&evt.dialog.buttons){
|
||||
for(let i=0;i<evt.dialog.buttons.length;i++){
|
||||
const button=evt.dialog.buttons[i];
|
||||
button.classList.remove('selectable');
|
||||
button.classList.remove('selected');
|
||||
const counterNode=button.querySelector('.caption');
|
||||
if(counterNode){
|
||||
counterNode.innerText=``;
|
||||
}
|
||||
}
|
||||
ui.selected.buttons.length=0;
|
||||
game.check();
|
||||
}
|
||||
return;
|
||||
}
|
||||
event.controls.forEach(i=>i.close());
|
||||
game.resume();
|
||||
_status.imchoosing=false;
|
||||
}];
|
||||
event.controls=['清除选择','cancel2'].map(control=>{
|
||||
return ui.create.control(controls.concat(control=='清除选择'?[control,'stayleft']:control));
|
||||
});
|
||||
};
|
||||
if(event.isMine()) func();
|
||||
else if(event.isOnline()) event.player.send(func);
|
||||
var result=yield player.chooseButton(['看破:是否记录三个牌名?',[
|
||||
list,function(item,type,position,noclick,node){
|
||||
return lib.skill.sbkanpo.$createButton(item,type,position,noclick,node);
|
||||
}
|
||||
]],[1,3],true).set('ai',function(button){
|
||||
switch(button.link[2]){
|
||||
case 'wuxie':return 5+Math.random();
|
||||
case 'sha':return 5+Math.random();
|
||||
|
@ -383,14 +434,79 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}).set('filterButton',button=>{
|
||||
return !_status.event.names.includes(button.link[2]);
|
||||
}).set('names',storage);
|
||||
}).set('names',storage).set('custom',{
|
||||
add:{
|
||||
confirm:function(bool){
|
||||
if(bool!=true) return;
|
||||
const event=get.event().getParent();
|
||||
if(event.controls) event.controls.forEach(i=>i.close());
|
||||
},
|
||||
button:function(){
|
||||
const event=get.event();
|
||||
if(event.dialog&&event.dialog.buttons){
|
||||
for(let i=0;i<event.dialog.buttons.length;i++){
|
||||
const button=event.dialog.buttons[i];
|
||||
if(ui.selected.buttons.includes(button)) continue;
|
||||
const counterNode=button.querySelector('.caption');
|
||||
if(counterNode){
|
||||
counterNode.innerText=``;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(!ui.selected.buttons.length){
|
||||
const evt=event.getParent();
|
||||
if(evt.controls) evt.controls[0].hide();
|
||||
}
|
||||
},
|
||||
},
|
||||
replace:{
|
||||
button:function(button){
|
||||
const event=get.event();
|
||||
if(!_status.event.isMine()) return;
|
||||
if(button.classList.contains('selectable')==false) return;
|
||||
if(ui.selected.buttons.length>=lib.skill.sbkanpo.getNumber) return false;
|
||||
button.classList.add('selected');
|
||||
ui.selected.buttons.push(button);
|
||||
const counterNode=button.querySelector('.caption');
|
||||
if(counterNode){
|
||||
counterNode.innerHTML=`<span style="font-size:24px; font-family:xinwei; text-shadow:#FFF 0 0 5px;">×${ui.selected.buttons.filter(i=>i==button).length}</span>`;
|
||||
}
|
||||
const evt=get.event().getParent();
|
||||
if(evt.controls) evt.controls[0].show();
|
||||
game.check();
|
||||
},
|
||||
}
|
||||
});
|
||||
if(result.bool){
|
||||
var names=result.links.map(link=>link[2]);
|
||||
player.markAuto('sbkanpo',names);
|
||||
game.log(player,'记录了','#y'+get.translation(names));
|
||||
player.setStorage('sbkanpo',names);
|
||||
player.markSkill('sbkanpo');
|
||||
}
|
||||
},
|
||||
intro:{content:'已记录$'},
|
||||
$createButton:function(item,type,position,noclick,node){
|
||||
node=ui.create.buttonPresets.vcard(item,type,position,noclick);
|
||||
const counterNode=ui.create.caption(`<div class="text"></div>`,node);
|
||||
counterNode.style.right='5px';
|
||||
counterNode.style.bottom='2px';
|
||||
return node;
|
||||
},
|
||||
marktext:'破',
|
||||
intro:{
|
||||
markcount:function(storage,player){
|
||||
if(player.isUnderControl(true)) return storage.length;
|
||||
return '?';
|
||||
},
|
||||
mark:function(dialog,content,player){
|
||||
if(player.isUnderControl(true)){
|
||||
const storage=player.getStorage('sbkanpo');
|
||||
dialog.addText('已记录牌名:');
|
||||
dialog.addSmall([storage,'vcard']);
|
||||
}
|
||||
else{
|
||||
return `${get.translation(player)}记录了一些牌名`;
|
||||
}
|
||||
},
|
||||
},
|
||||
group:'sbkanpo_kanpo',
|
||||
subSkill:{
|
||||
kanpo:{
|
||||
|
@ -442,19 +558,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
if(trigger.name=='phaseJieshu'){
|
||||
event.goto(1);
|
||||
event.goto(2);
|
||||
return;
|
||||
}
|
||||
var cards=player.getCards('s',card=>card.hasGaintag('sbguanxing'));
|
||||
if(cards.length) player.loseToDiscardpile(cards);
|
||||
var bool=player.getAllHistory('useSkill',evt=>evt.skill=='sbguanxing').length>1;
|
||||
var num=Math.min(7,bool?cards.length+1:7);
|
||||
event.num=Math.min(7,bool?cards.length+1:7);
|
||||
'step 1'
|
||||
var cards2=get.cards(num);
|
||||
player.$gain2(cards2,false);
|
||||
game.log(player,'将',cards2,'置于了武将牌上');
|
||||
player.loseToSpecial(cards2,'sbguanxing').visible=true;
|
||||
player.markSkill('sbguanxing');
|
||||
'step 1'
|
||||
'step 2'
|
||||
var cards=player.getCards('s',card=>card.hasGaintag('sbguanxing'));
|
||||
if(cards.length){
|
||||
player.chooseToMove().set('list',[
|
||||
|
@ -479,7 +596,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
}
|
||||
else event._result={bool:false};
|
||||
'step 2'
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var cards=result.moved[1];
|
||||
player.loseToDiscardpile(cards,ui.cardPile,'insert').log=false;
|
||||
|
@ -530,7 +647,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
trigger:{player:['damageBegin3','damageBegin4']},
|
||||
filter:function(event,player,name){
|
||||
return player.hasSkill('sbguanxing');
|
||||
if(!player.hasSkill('sbguanxing')) return false;
|
||||
const num=player.countCards('s',card=>card.hasGaintag('sbguanxing'));
|
||||
if(name=='damageBegin3'&&!num) return true;
|
||||
if(name=='damageBegin4'&&num) return true;
|
||||
return false;
|
||||
},
|
||||
forced:true,
|
||||
content:function(){
|
||||
|
@ -5600,14 +5721,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sb_xiaoqiao_prefix:'谋',
|
||||
sbtianxiang:'天香',
|
||||
sbtianxiang_info:'①出牌阶段限三次,你可以交给一名没有“天香”标记的其他角色一张红色牌,然后令其获得此牌花色的“天香”标记。②当你受到伤害时,你可以移去一名角色的“天香”标记,若此“天香”标记为:红桃,你防止此伤害,其受到伤害来源对其造成的1点伤害(若没有伤害来源则改为无来源伤害);方片,其交给你两张牌。③准备阶段,你移去场上所有的“天香”标记,然后摸等量的牌。',
|
||||
sb_sp_zhugeliang:'谋卧龙',
|
||||
sb_sp_zhugeliang:'谋诸葛亮',
|
||||
sb_sp_zhugeliang_prefix:'谋',
|
||||
sb_zhugeliang:'谋诸葛亮',
|
||||
sb_zhugeliang_prefix:'谋',
|
||||
sbhuoji:'火计',
|
||||
sbhuoji_info:'使命技。①使命:出牌阶段限一次,你可以选择一名其他角色,对其和所有势力与其势力相同的其他角色造成1点火属性伤害。②成功:准备阶段,若你本局游戏已造成的火属性伤害大于等于游戏人数,则你将武将牌更换为谋诸葛亮(若你没有拥有此技能的武将牌则改为失去〖火计〗和〖看破〗,然后获得〖观星〗和〖空城〗)。③失败:使命成功前进入濒死状态。',
|
||||
sbhuoji_info:'使命技。①使命:出牌阶段限一次。你可以对一名其他角色造成1点火焰伤害,然后你对所有与其势力相同的不为其的其他角色各造成1点火焰伤害。②成功:准备阶段,若你本局游戏已造成的火焰伤害不小于本局游戏总角色数,则你失去〖火计〗和〖看破〗,然后获得〖观星〗和〖空城〗。③失败:使命成功前进入濒死状态。',
|
||||
sbkanpo:'看破',
|
||||
sbkanpo_info:'①一轮开始时,你清除“看破”记录的牌名,然后你可以记录三个非此次移去的牌名的牌名。②一名其他角色使用你“看破”记录的牌名的牌时,你可以从“看破”中移去此牌名,令此牌无效。',
|
||||
sbkanpo_info:'①一轮游戏开始时,你清除〖看破①〗记录的牌名,然后你可以依次记录共计三个未于本次清除过的非装备牌牌名。②当其他角色使用你〖看破①〗记录过的牌名的牌时,你可以移去一个〖看破①〗中的此牌名的记录,令此牌无效。',
|
||||
sbguanxing:'观星',
|
||||
sbguanxing_info:'①准备阶段,你将所有“星”置入弃牌堆,将牌堆顶的X张牌置于你的武将牌上,称为“星”。然后你可以将任意张“星”置于牌堆顶(X为你此次移去的“星”数+1且至多为7,若你此前未发动过〖观星①〗则X为7)。②结束阶段,若你未于本回合的准备阶段将“星”置于过牌堆顶,你可以将任意张“星”置于牌堆顶。③你可以如手牌般使用或打出“星”。',
|
||||
sbkongcheng:'空城',
|
||||
|
|
Loading…
Reference in New Issue