Merge branch 'PR-Branch' of https://github.com/PZ157/noname into PR-Branch
This commit is contained in:
commit
0a76042790
|
@ -17,12 +17,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji','shen_sunquan'],
|
extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji','shen_sunquan'],
|
||||||
extra_mobilezhi:['shen_guojia','shen_xunyu'],
|
extra_mobilezhi:['shen_guojia','shen_xunyu'],
|
||||||
extra_mobilexin:['shen_taishici','shen_sunce'],
|
extra_mobilexin:['shen_taishici','shen_sunce'],
|
||||||
extra_mobileren:['shen_huatuo'],
|
extra_mobileren:['shen_huatuo','shen_lusu'],
|
||||||
extra_tw:['tw_shen_guanyu','tw_shen_lvmeng'],
|
extra_tw:['tw_shen_guanyu','tw_shen_lvmeng'],
|
||||||
extra_offline:['shen_diaochan','boss_zhaoyun','shen_dianwei','le_shen_jiaxu'],
|
extra_offline:['shen_diaochan','boss_zhaoyun','shen_dianwei','le_shen_jiaxu'],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
character:{
|
character:{
|
||||||
|
shen_lusu:['male','shen',3,['dingzhou','tamo','zhimeng'],['wu']],
|
||||||
shen_huatuo:['male','shen',3,['wuling','youyi'],['qun']],
|
shen_huatuo:['male','shen',3,['wuling','youyi'],['qun']],
|
||||||
le_shen_jiaxu:['male','shen',4,['jxlianpo','jxzhaoluan'],['qun']],
|
le_shen_jiaxu:['male','shen',4,['jxlianpo','jxzhaoluan'],['qun']],
|
||||||
shen_dianwei:['male','shen',4,['juanjia','qiexie','cuijue'],['wei']],
|
shen_dianwei:['male','shen',4,['juanjia','qiexie','cuijue'],['wei']],
|
||||||
|
@ -90,6 +91,238 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
skill:{
|
skill:{
|
||||||
|
//神鲁肃
|
||||||
|
dingzhou:{
|
||||||
|
audio:2,
|
||||||
|
enable:'phaseUse',
|
||||||
|
usable:1,
|
||||||
|
filter(event,player){
|
||||||
|
const num=player.countCards('he');
|
||||||
|
return game.hasPlayer(current=>{
|
||||||
|
const total=current.countCards('ej');
|
||||||
|
return total>0&&num>=total;
|
||||||
|
});
|
||||||
|
},
|
||||||
|
filterCard:true,
|
||||||
|
selectCard:[1,Infinity],
|
||||||
|
check(card){
|
||||||
|
return 7-get.value(card);
|
||||||
|
},
|
||||||
|
filterTarget(card,player,target){
|
||||||
|
return ui.selected.cards.length==target.countCards('ej')&&player!=target;
|
||||||
|
},
|
||||||
|
filterOk(){
|
||||||
|
return ui.selected.cards.length==ui.selected.targets[0].countCards('ej');
|
||||||
|
},
|
||||||
|
position:'he',
|
||||||
|
lose:false,
|
||||||
|
discard:false,
|
||||||
|
delay:false,
|
||||||
|
async content(event,trigger,player){
|
||||||
|
const target=event.targets[0];
|
||||||
|
await player.give(event.cards,target);
|
||||||
|
const cards=target.getGainableCards(player,'ej');
|
||||||
|
if(cards.length) player.gain(cards,'give',target);
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
order:9,
|
||||||
|
result:{
|
||||||
|
target(player,target){
|
||||||
|
let eff=0;
|
||||||
|
if(ui.selected.cards.length) eff-=ui.selected.cards.map(card=>get.value(card)).reduce((p,c)=>p+c,0);
|
||||||
|
const es=target.getCards('e'),js=target.getCards('j');
|
||||||
|
es.forEach(card=>{
|
||||||
|
eff-=get.value(card,target);
|
||||||
|
});
|
||||||
|
js.forEach(card=>{
|
||||||
|
eff-=get.effect(target,{
|
||||||
|
name:card.viewAs||card.name,
|
||||||
|
cards:[card],
|
||||||
|
},target,target);
|
||||||
|
});
|
||||||
|
return eff;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
tamo:{
|
||||||
|
audio:2,
|
||||||
|
trigger:{
|
||||||
|
global:'phaseBefore',
|
||||||
|
player:'enterGame',
|
||||||
|
},
|
||||||
|
filter(event,player){
|
||||||
|
return (event.name!='phase'||game.phaseNumber==0)&&game.countPlayer(current=>{
|
||||||
|
return !current.isZhu2();
|
||||||
|
})>1;
|
||||||
|
},
|
||||||
|
direct:true,
|
||||||
|
async content(event,trigger,player){
|
||||||
|
const toSortPlayers=game.filterPlayer(current=>!current.isZhu2());
|
||||||
|
toSortPlayers.sortBySeat(game.findPlayer2(current=>current.getSeatNum()==1,true));
|
||||||
|
const next=player.chooseToMove('榻谟:是否分配所有角色的座次?');
|
||||||
|
next.set('list',[
|
||||||
|
['(以下排列的顺序即为发动技能后角色的座次顺序)',
|
||||||
|
[toSortPlayers.map(i=>`${i.getSeatNum()}|${i.name}`),(item,type,position,noclick,node)=>{
|
||||||
|
const info=item.split('|'),_item=item;
|
||||||
|
const seat=parseInt(info[0]);
|
||||||
|
item=info[1];
|
||||||
|
if(node){
|
||||||
|
node.classList.add('button');
|
||||||
|
node.classList.add('character');
|
||||||
|
node.style.display='';
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
node=ui.create.div('.button.character',position);
|
||||||
|
}
|
||||||
|
node._link=item;
|
||||||
|
node.link=item;
|
||||||
|
|
||||||
|
const func=function(node,item){
|
||||||
|
if(item!='unknown') node.setBackground(item,'character');
|
||||||
|
if(node.node){
|
||||||
|
node.node.name.remove();
|
||||||
|
node.node.hp.remove();
|
||||||
|
node.node.group.remove();
|
||||||
|
node.node.intro.remove();
|
||||||
|
if(node.node.replaceButton) node.node.replaceButton.remove();
|
||||||
|
}
|
||||||
|
node.node={
|
||||||
|
name:ui.create.div('.name',node),
|
||||||
|
group:ui.create.div('.identity',node),
|
||||||
|
intro:ui.create.div('.intro',node),
|
||||||
|
};
|
||||||
|
const currentPlayer=game.findPlayer(current=>current.getSeatNum()==seat);
|
||||||
|
const infoitem=[currentPlayer.sex,currentPlayer.group,`${currentPlayer.hp}/${currentPlayer.maxHp}/${currentPlayer.hujia}`];
|
||||||
|
node.node.name.innerHTML=get.slimName(item);
|
||||||
|
if(lib.config.buttoncharacter_style=='default'||lib.config.buttoncharacter_style=='simple'){
|
||||||
|
if(lib.config.buttoncharacter_style=='simple'){
|
||||||
|
node.node.group.style.display='none';
|
||||||
|
}
|
||||||
|
node.classList.add('newstyle');
|
||||||
|
node.node.name.dataset.nature=get.groupnature(get.bordergroup(infoitem));
|
||||||
|
node.node.group.dataset.nature=get.groupnature(get.bordergroup(infoitem),'raw');
|
||||||
|
}
|
||||||
|
node.node.name.style.top='8px';
|
||||||
|
if(node.node.name.querySelectorAll('br').length>=4){
|
||||||
|
node.node.name.classList.add('long');
|
||||||
|
if(lib.config.buttoncharacter_style=='old'){
|
||||||
|
node.addEventListener('mouseenter',ui.click.buttonnameenter);
|
||||||
|
node.addEventListener('mouseleave',ui.click.buttonnameleave);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
node.node.intro.innerHTML=lib.config.intro;
|
||||||
|
if(!noclick){
|
||||||
|
lib.setIntro(node);
|
||||||
|
}
|
||||||
|
node.node.group.innerHTML=`<div>${get.cnNumber(seat,true)}号</div>`;
|
||||||
|
node.node.group.style.backgroundColor=get.translation(`${get.bordergroup(infoitem)}Color`);
|
||||||
|
};
|
||||||
|
node.refresh=func;
|
||||||
|
node.refresh(node,item);
|
||||||
|
|
||||||
|
node.link=_item;
|
||||||
|
node.seatNumber=seat;
|
||||||
|
node._customintro=(uiintro)=>{
|
||||||
|
uiintro.add(`${get.translation(node._link)}(原${get.cnNumber(node.seatNumber,true)}号位)`);
|
||||||
|
};
|
||||||
|
return node;
|
||||||
|
}]
|
||||||
|
]
|
||||||
|
]);
|
||||||
|
next.set('processAI',list=>{
|
||||||
|
const listx=list[0][1][0];
|
||||||
|
const me=listx.find(info=>parseInt(info.split('|')[0])==get.player().getSeatNum());
|
||||||
|
listx.remove(me);
|
||||||
|
listx.randomSort();
|
||||||
|
listx.unshift(me);
|
||||||
|
return [listx];
|
||||||
|
});
|
||||||
|
const {result}=await next;
|
||||||
|
if(!result.bool) return;
|
||||||
|
player.logSkill('tamo');
|
||||||
|
const resultList=result.moved[0].map(info=>{
|
||||||
|
return parseInt(info.split('|')[0]);
|
||||||
|
});
|
||||||
|
const toSwapList=[];
|
||||||
|
const cmp=(a,b)=>{
|
||||||
|
return resultList.indexOf(a)-resultList.indexOf(b);
|
||||||
|
}
|
||||||
|
for(let i in toSortPlayers){
|
||||||
|
for(let j in toSortPlayers){
|
||||||
|
if(cmp(toSortPlayers[i].getSeatNum(),toSortPlayers[j].getSeatNum())<0){
|
||||||
|
toSwapList.push([toSortPlayers[i],toSortPlayers[j]]);
|
||||||
|
[toSortPlayers[i],toSortPlayers[j]]=[toSortPlayers[j],toSortPlayers[i]];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
game.broadcastAll((toSwapList)=>{
|
||||||
|
for(const list of toSwapList){
|
||||||
|
game.swapSeat(list[0],list[1],false);
|
||||||
|
}
|
||||||
|
},toSwapList);
|
||||||
|
await game.asyncDelay();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//什么均贫卡
|
||||||
|
zhimeng:{
|
||||||
|
audio:2,
|
||||||
|
trigger:{player:'phaseAfter'},
|
||||||
|
filter(event,player){
|
||||||
|
return game.hasPlayer(current=>{
|
||||||
|
return current.countCards('h')+player.countCards('h')>0&&player!=current;
|
||||||
|
})
|
||||||
|
},
|
||||||
|
direct:true,
|
||||||
|
async content(event,trigger,player){
|
||||||
|
const {result:{bool,targets}}=await player.chooseTarget(get.prompt('zhimeng'),'与一名其他角色平分手牌',(card,player,target)=>{
|
||||||
|
return target.countCards('h')+player.countCards('h')>0&&player!=target;
|
||||||
|
}).set('ai',target=>{
|
||||||
|
const player=get.player();
|
||||||
|
const pvalue=-player.getCards('h').map(card=>get.value(card,player)).reduce((p,c)=>p+c,0);
|
||||||
|
const tvalue=-target.getCards('h').map(card=>get.value(card,target)).reduce((p,c)=>p+c,0)*get.sgnAttitude(player,target);
|
||||||
|
return (pvalue+tvalue)/2;
|
||||||
|
});
|
||||||
|
if(!bool) return;
|
||||||
|
const target=targets[0];
|
||||||
|
player.logSkill('zhimeng',target);
|
||||||
|
const lose_list=[];
|
||||||
|
let cards=[];
|
||||||
|
[player,target].forEach(current=>{
|
||||||
|
const hs=current.getCards('h');
|
||||||
|
if(hs.length){
|
||||||
|
cards.addArray(hs);
|
||||||
|
current.$throw(hs.length,500);
|
||||||
|
game.log(current,'将',get.cnNumber(hs.length),'张牌置入了处理区');
|
||||||
|
lose_list.push([current,hs]);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
await game.loseAsync({
|
||||||
|
lose_list:lose_list,
|
||||||
|
}).setContent('chooseToCompareLose');
|
||||||
|
await game.asyncDelay();
|
||||||
|
cards=cards.filterInD();
|
||||||
|
const pcards=cards.randomGets(Math.ceil(cards.length/2));
|
||||||
|
const tcards=cards.removeArray(pcards);
|
||||||
|
const list=[];
|
||||||
|
if(pcards.length){
|
||||||
|
list.push([player,pcards]);
|
||||||
|
game.log(player,'获得了',get.cnNumber(pcards.length),'张牌');
|
||||||
|
}
|
||||||
|
if(tcards.length){
|
||||||
|
list.push([target,tcards]);
|
||||||
|
game.log(target,'获得了',get.cnNumber(tcards.length),'张牌');
|
||||||
|
}
|
||||||
|
game.loseAsync({
|
||||||
|
gain_list:list,
|
||||||
|
player:player,
|
||||||
|
animate:'draw',
|
||||||
|
}).setContent('gaincardMultiple');
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
threaten:4,
|
||||||
|
},
|
||||||
|
},
|
||||||
//神华佗
|
//神华佗
|
||||||
wuling:{
|
wuling:{
|
||||||
audio:2,
|
audio:2,
|
||||||
|
@ -8066,6 +8299,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
'<br><li>鹤:当你获得此效果时,你摸三张牌。',
|
'<br><li>鹤:当你获得此效果时,你摸三张牌。',
|
||||||
youyi:'游医',
|
youyi:'游医',
|
||||||
youyi_info:'①弃牌阶段结束时,你可以将所有于此阶段弃置的牌置入仁区。②出牌阶段限一次。你可以将仁区的所有牌置入弃牌堆,令所有角色各回复1点体力。',
|
youyi_info:'①弃牌阶段结束时,你可以将所有于此阶段弃置的牌置入仁区。②出牌阶段限一次。你可以将仁区的所有牌置入弃牌堆,令所有角色各回复1点体力。',
|
||||||
|
shen_lusu:'神鲁肃',
|
||||||
|
shen_lusu_prefix:'神',
|
||||||
|
dingzhou:'定州',
|
||||||
|
dingzhou_info:'出牌阶段限一次。你可以交给一名角色X张牌,然后你获得其装备区和判定区里的所有牌(X为其装备区与判定区里的牌数之和)。',
|
||||||
|
tamo:'榻谟',
|
||||||
|
tamo_info:'游戏开始时,你可以重新分配除主公外所有角色的座次。',
|
||||||
|
zhimeng:'智盟',
|
||||||
|
zhimeng_info:'回合结束后,你可以与一名其他角色将各自所有手牌置于处理区,然后你随机获得这些牌中的一半(向上取整),其获得剩余的牌。',
|
||||||
|
|
||||||
extra_feng:'神话再临·风',
|
extra_feng:'神话再临·风',
|
||||||
extra_huo:'神话再临·火',
|
extra_huo:'神话再临·火',
|
||||||
|
|
|
@ -27,7 +27,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
},
|
},
|
||||||
character:{
|
character:{
|
||||||
xin_huojun:['male','shu',4,['sidai','jieyu'],['character:tw_huojun','die_audio:tw_huojun']],
|
xin_huojun:['male','shu',4,['sidai','jieyu'],['character:tw_huojun','die_audio:tw_huojun']],
|
||||||
muludawang:['male','qun','3/3/1',['shoufa','yuxiang','zhoulin']],
|
muludawang:['male','qun','3/3/1',['shoufa','zhoulin','yuxiang']],
|
||||||
mb_chengui:['male','qun',3,['guimou','zhouxian']],
|
mb_chengui:['male','qun',3,['guimou','zhouxian']],
|
||||||
mb_huban:['male','wei',4,['mbyilie']],
|
mb_huban:['male','wei',4,['mbyilie']],
|
||||||
mb_xianglang:['male','shu',3,['naxue','yijie']],
|
mb_xianglang:['male','shu',3,['naxue','yijie']],
|
||||||
|
|
|
@ -358,6 +358,7 @@ window.noname_character_rank={
|
||||||
'dc_sb_zhouyu',
|
'dc_sb_zhouyu',
|
||||||
'dc_lingcao',
|
'dc_lingcao',
|
||||||
'jsrg_zhugeliang',
|
'jsrg_zhugeliang',
|
||||||
|
'shen_lusu',
|
||||||
],
|
],
|
||||||
am:[
|
am:[
|
||||||
'muludawang',
|
'muludawang',
|
||||||
|
|
|
@ -49,10 +49,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
characterSort:{
|
characterSort:{
|
||||||
sb:{
|
sb:{
|
||||||
sb_zhi:['sb_sunquan','sb_zhouyu','sb_zhangjiao','sb_caocao','sb_zhenji','sb_liubei','sb_daqiao','sb_liubiao','sb_sp_zhugeliang','sb_zhugeliang'],
|
sb_zhi:['sb_sunquan','sb_zhouyu','sb_zhangjiao','sb_caocao','sb_zhenji','sb_liubei','sb_daqiao','sb_liubiao','sb_sp_zhugeliang','sb_zhugeliang'],
|
||||||
sb_shi:['sb_xuhuang','sb_machao','sb_fazheng','sb_chengong','sb_diaochan','sb_pangtong','sb_zhanghe'],
|
sb_shi:['sb_xuhuang','sb_machao','sb_fazheng','sb_chengong','sb_diaochan','sb_pangtong','sb_zhanghe','sb_caopi'],
|
||||||
sb_tong:['liucheng','sp_yangwan','sb_xiahoushi','sb_zhangfei','sb_zhaoyun','sb_sunce','sb_zhurong','sb_xiaoqiao'],
|
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_huangyueying'],
|
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'],
|
sb_neng:['sb_huaxiong','sb_sunshangxiang','sb_jiangwei','sb_yuanshao','sb_menghuo','sb_guanyu'],
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
skill:{
|
skill:{
|
||||||
|
|
|
@ -640,7 +640,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
return lib.filter.targetEnabled2(event.card,event.player,current);
|
return lib.filter.targetEnabled2(event.card,event.player,current);
|
||||||
});
|
});
|
||||||
else list=game.filterPlayer(current=>current.canAddJudge(event.card));
|
else list=game.filterPlayer(current=>current.canAddJudge(event.card));
|
||||||
return `移去1枚“醉”,${list.length>1?`令${get.translation(event.card)}目标改为${get.translation(list)}中的一名随机角色。若新目标与原目标相同,你`:''}获得牌堆中的一张【酒】。`
|
const gainText=`${list.length>1&&!player.storage.mpmaotao_gained?`若新目标与原目标相同,你`:''}${!player.storage.mpmaotao_gained?'获得牌堆中的一张锦囊牌。':''}`;
|
||||||
|
return `移去1枚“醉”${list.length>1?`,令${get.translation(event.card)}目标改为${get.translation(list)}中的一名随机角色`:''}。${gainText}`;
|
||||||
},
|
},
|
||||||
check:function(event,player){
|
check:function(event,player){
|
||||||
const eff=get.effect(event.target,event.card,player,player);
|
const eff=get.effect(event.target,event.card,player,player);
|
||||||
|
@ -668,12 +669,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
trigger.targets.push(target);
|
trigger.targets.push(target);
|
||||||
trigger.player.line(target,'thunder');
|
trigger.player.line(target,'thunder');
|
||||||
game.log(trigger.card,'的目标被改为',target);
|
game.log(trigger.card,'的目标被改为',target);
|
||||||
if(target==oriTarget){
|
if(target==oriTarget&&!player.storage.mpmaotao_gained){
|
||||||
var card=get.cardPile2('jiu');
|
var card=get.cardPile2(card=>get.type2(card)=='trick');
|
||||||
if(card) player.gain(card,'gain2');
|
if(card){
|
||||||
|
if(!player.storage.mpmaotao_gained){
|
||||||
|
player.when({global:'phaseAfter'}).then(()=>{
|
||||||
|
delete player.storage.mpmaotao_gained;
|
||||||
|
});
|
||||||
|
player.storage.mpmaotao_gained=true;
|
||||||
|
}
|
||||||
|
player.gain(card,'gain2');
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
player.chat('没酒了!');
|
// player.chat('没酒了!');
|
||||||
game.log('但是牌堆中已经没有','#y酒','了!');
|
// game.log('但是牌堆中已经没有','#y酒','了!');
|
||||||
|
player.chat('没牌了!');
|
||||||
|
game.log('但是牌堆中已经没有','#y锦囊牌','了!');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -5842,6 +5853,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
onremove:true,
|
onremove:true,
|
||||||
trigger:{player:'useCard2'},
|
trigger:{player:'useCard2'},
|
||||||
direct:true,
|
direct:true,
|
||||||
|
charlotte:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
if(player!=_status.currentPhase) return false;
|
if(player!=_status.currentPhase) return false;
|
||||||
var card=event.card;
|
var card=event.card;
|
||||||
|
@ -11161,7 +11173,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
mpjiusong:'酒颂',
|
mpjiusong:'酒颂',
|
||||||
mpjiusong_info:'①你可以将一张锦囊牌当【酒】使用。②当一名角色使用【酒】时,你获得1枚“醉”标记(“醉”数至多为3)。',
|
mpjiusong_info:'①你可以将一张锦囊牌当【酒】使用。②当一名角色使用【酒】时,你获得1枚“醉”标记(“醉”数至多为3)。',
|
||||||
mpmaotao:'酕醄',
|
mpmaotao:'酕醄',
|
||||||
mpmaotao_info:'当其他角色使用基本牌或普通锦囊牌指定唯一目标时,你可以移去1枚“醉”,令此牌的目标改为随机一名合法角色(无距离限制)。若目标角色与原目标相同,你从牌堆中获得一张【酒】。',
|
mpmaotao_info:'当其他角色使用基本牌或普通锦囊牌指定唯一目标时,你可以移去1枚“醉”,令此牌的目标改为随机一名合法角色(无距离限制)。若目标角色与原目标相同且你本回合未以此法获得过牌,你从牌堆中随机获得一张锦囊牌。',
|
||||||
mpbishi:'避世',
|
mpbishi:'避世',
|
||||||
mpbishi_info:'锁定技。你不能成为伤害类锦囊牌的目标。',
|
mpbishi_info:'锁定技。你不能成为伤害类锦囊牌的目标。',
|
||||||
star_caoren:'星曹仁',
|
star_caoren:'星曹仁',
|
||||||
|
|
|
@ -26,7 +26,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
|
|
||||||
pal_yuntianhe:['male','wu',4,['longxi','zhuyue','guanri']],
|
pal_yuntianhe:['male','wu',4,['longxi','zhuyue','guanri']],
|
||||||
pal_hanlingsha:['female','shu',3,['tannang','tuoqiao']],
|
pal_hanlingsha:['female','shu',3,['tannang','tuoqiao']],
|
||||||
pal_liumengli:['female','wei',3,['tianxian','runxin','zhimeng']],
|
pal_liumengli:['female','wei',3,['tianxian','runxin','xjzhimeng']],
|
||||||
pal_murongziying:['male','wei',4,['xuanning','poyun','qianfang']],
|
pal_murongziying:['male','wei',4,['xuanning','poyun','qianfang']],
|
||||||
pal_xuanxiao:['male','wei',4,['xuanyan','ningbin','xfenxin']],
|
pal_xuanxiao:['male','wei',4,['xuanyan','ningbin','xfenxin']],
|
||||||
|
|
||||||
|
@ -3858,17 +3858,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
threaten:1.5
|
threaten:1.5
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
zhimeng:{
|
xjzhimeng:{
|
||||||
trigger:{player:'phaseEnd'},
|
trigger:{player:'phaseEnd'},
|
||||||
direct:true,
|
direct:true,
|
||||||
locked:true,
|
locked:true,
|
||||||
unique:true,
|
unique:true,
|
||||||
gainable:true,
|
gainable:true,
|
||||||
// alter:true,
|
// alter:true,
|
||||||
group:'zhimeng3',
|
group:'xjzhimeng3',
|
||||||
content:function(){
|
content:function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
player.chooseTarget(get.prompt('zhimeng'),function(card,player,target){
|
player.chooseTarget(get.prompt('xjzhimeng'),function(card,player,target){
|
||||||
return player!=target;
|
return player!=target;
|
||||||
}).ai=function(target){
|
}).ai=function(target){
|
||||||
var num=get.attitude(player,target);
|
var num=get.attitude(player,target);
|
||||||
|
@ -3888,35 +3888,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
"step 1"
|
"step 1"
|
||||||
if(result.bool){
|
if(result.bool){
|
||||||
var target=result.targets[0];
|
var target=result.targets[0];
|
||||||
if(get.is.altered('zhimeng')){
|
if(get.is.altered('xjzhimeng')){
|
||||||
target.draw();
|
target.draw();
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
var card=get.cards()[0];
|
var card=get.cards()[0];
|
||||||
target.$draw(card);
|
target.$draw(card);
|
||||||
target.storage.zhimeng2=card;
|
target.storage.xjzhimeng2=card;
|
||||||
game.addVideo('storage',target,['zhimeng2',get.cardInfo(card),'card']);
|
game.addVideo('storage',target,['xjzhimeng2',get.cardInfo(card),'card']);
|
||||||
target.addSkill('zhimeng2');
|
target.addSkill('xjzhimeng2');
|
||||||
}
|
}
|
||||||
player.logSkill('zhimeng',target);
|
player.logSkill('xjzhimeng',target);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ai:{
|
ai:{
|
||||||
expose:0.2
|
expose:0.2
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
zhimeng2:{
|
xjzhimeng2:{
|
||||||
intro:{
|
intro:{
|
||||||
content:'card',
|
content:'card',
|
||||||
onunmark:function(storage,player){
|
onunmark:function(storage,player){
|
||||||
delete player.storage.zhimeng2;
|
delete player.storage.xjzhimeng2;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
mark:'card',
|
mark:'card',
|
||||||
trigger:{target:'useCardToBegin'},
|
trigger:{target:'useCardToBegin'},
|
||||||
frequent:true,
|
frequent:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
return player.storage.zhimeng2&&get.type(event.card,'trick')==get.type(player.storage.zhimeng2,'trick');
|
return player.storage.xjzhimeng2&&get.type(event.card,'trick')==get.type(player.storage.xjzhimeng2,'trick');
|
||||||
},
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
player.draw();
|
player.draw();
|
||||||
|
@ -3924,14 +3924,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
ai:{
|
ai:{
|
||||||
effect:{
|
effect:{
|
||||||
target:function(card,player,target){
|
target:function(card,player,target){
|
||||||
if(target.storage.zhimeng2&&get.type(card,'trick')==get.type(target.storage.zhimeng2,'trick')){
|
if(target.storage.xjzhimeng2&&get.type(card,'trick')==get.type(target.storage.xjzhimeng2,'trick')){
|
||||||
return [1,0.5];
|
return [1,0.5];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
zhimeng3:{
|
xjzhimeng3:{
|
||||||
trigger:{player:['phaseBegin','dieBegin']},
|
trigger:{player:['phaseBegin','dieBegin']},
|
||||||
silent:true,
|
silent:true,
|
||||||
content:function(){
|
content:function(){
|
||||||
|
@ -3941,16 +3941,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
"step 1"
|
"step 1"
|
||||||
if(event.num<event.players.length){
|
if(event.num<event.players.length){
|
||||||
var player=event.players[event.num];
|
var player=event.players[event.num];
|
||||||
if(player.storage.zhimeng2){
|
if(player.storage.xjzhimeng2){
|
||||||
if(trigger.name=='die'&&player==trigger.player){
|
if(trigger.name=='die'&&player==trigger.player){
|
||||||
player.storage.zhimeng2.discard();
|
player.storage.xjzhimeng2.discard();
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
game.log(player,'发动织梦,获得了',player.storage.zhimeng2);
|
game.log(player,'发动织梦,获得了',player.storage.xjzhimeng2);
|
||||||
player.gain(player.storage.zhimeng2,'gain2');
|
player.gain(player.storage.xjzhimeng2,'gain2');
|
||||||
player.popup('zhimeng');
|
player.popup('xjzhimeng');
|
||||||
}
|
}
|
||||||
player.removeSkill('zhimeng2');
|
player.removeSkill('xjzhimeng2');
|
||||||
}
|
}
|
||||||
event.num++;
|
event.num++;
|
||||||
event.redo();
|
event.redo();
|
||||||
|
@ -4348,11 +4348,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
guanri_info:'限制技,你可以弃置两张红色手牌并失去1点体力,然后对一名体力值不少于你的其他角色造成2点火焰伤害并弃置其所有装备牌。',
|
guanri_info:'限制技,你可以弃置两张红色手牌并失去1点体力,然后对一名体力值不少于你的其他角色造成2点火焰伤害并弃置其所有装备牌。',
|
||||||
tianxian:'天弦',
|
tianxian:'天弦',
|
||||||
tianxian_info:'锁定技,你的杀无视距离且可指定任意多个目标,目标须进行一次判定,若结果为黑色则取消之。',
|
tianxian_info:'锁定技,你的杀无视距离且可指定任意多个目标,目标须进行一次判定,若结果为黑色则取消之。',
|
||||||
zhimeng:'织梦',
|
xjzhimeng:'织梦',
|
||||||
zhimeng2:'织梦',
|
xjzhimeng2:'织梦',
|
||||||
zhimeng3:'织梦',
|
xjzhimeng3:'织梦',
|
||||||
zhimeng_info:'结束阶段,你可以选择一名其他角色将牌堆顶的一张牌置于该角色的武将牌上,直到你的下个准备阶段将其收入手牌。当一名角色武将牌上有织梦牌时,每当其成为与此牌类型相同的卡牌的目标,可以摸一张牌。',
|
xjzhimeng_info:'结束阶段,你可以选择一名其他角色将牌堆顶的一张牌置于该角色的武将牌上,直到你的下个准备阶段将其收入手牌。当一名角色武将牌上有织梦牌时,每当其成为与此牌类型相同的卡牌的目标,可以摸一张牌。',
|
||||||
zhimeng_info_alter:'结束阶段,你可以令一名其他角色摸一张牌。',
|
xjzhimeng_info_alter:'结束阶段,你可以令一名其他角色摸一张牌。',
|
||||||
runxin:'润心',
|
runxin:'润心',
|
||||||
runxin_info:'每当你使用或打出一张红桃牌,你可以令一名角色回复1点体力。',
|
runxin_info:'每当你使用或打出一张红桃牌,你可以令一名角色回复1点体力。',
|
||||||
tannang:'探囊',
|
tannang:'探囊',
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 94 KiB |
Binary file not shown.
After Width: | Height: | Size: 91 KiB |
Binary file not shown.
After Width: | Height: | Size: 81 KiB |
Binary file not shown.
After Width: | Height: | Size: 110 KiB |
|
@ -6227,7 +6227,7 @@ export class Player extends HTMLDivElement {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
getStorage(name, defaultValue = []) {
|
getStorage(name, defaultValue = []) {
|
||||||
return this.hasStorage(name) ? this.storage[name] : defaultValue;
|
return this.storage[name] || defaultValue;
|
||||||
}
|
}
|
||||||
hasStorage(name, value) {
|
hasStorage(name, value) {
|
||||||
if (!(name in this.storage)) return false;
|
if (!(name in this.storage)) return false;
|
||||||
|
|
Loading…
Reference in New Issue