commit
9d4b0f6a0b
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -281,7 +281,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
target.link();
|
||||
},
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
ai:{
|
||||
wuxie:function(target,card,player,viewer){
|
||||
if(_status.event.getRand()<0.5) return 0;
|
||||
|
|
|
@ -397,7 +397,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
player.logSkill('taipingyaoshu');
|
||||
player.draw(2);
|
||||
'step 1'
|
||||
if(player.hp>1) player.loseHp();
|
||||
if(player.hp>1||get.mode()=='guozhan') player.loseHp();
|
||||
}
|
||||
},
|
||||
yuxi:{
|
||||
|
@ -455,28 +455,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
return target!=player&&(get.mode()!='guozhan'||_status.mode=='yingbian'||_status.mode=='free'||target.countCards('e')>0);
|
||||
},
|
||||
enable:true,
|
||||
yingbian_prompt:function(card){
|
||||
var str='';
|
||||
if(get.cardtag(card,'yingbian_all')){
|
||||
str+='此牌的效果改为依次执行所有选项';
|
||||
}
|
||||
if(!str.length||get.cardtag(card,'yingbian_add')){
|
||||
if(str.length) str+=';';
|
||||
str+='当你使用此牌选择目标后,你可为此牌增加一个目标';
|
||||
}
|
||||
return str;
|
||||
},
|
||||
yingbian:function(event){
|
||||
var card=event.card,bool=false;
|
||||
if(get.cardtag(card,'yingbian_all')){
|
||||
bool=true;
|
||||
card.yingbian_all=true;
|
||||
game.log(card,'执行所有选项');
|
||||
}
|
||||
if(!bool||get.cardtag(card,'yingbian_add')){
|
||||
event.yingbian_addTarget=true;
|
||||
}
|
||||
},
|
||||
defaultYingbianEffect:'add',
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(event.card.yingbian_all){
|
||||
|
@ -577,7 +556,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
mode:['guozhan','versus'],
|
||||
filterTarget:true,
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
changeTarget:function(player,targets){
|
||||
var target=targets[0];
|
||||
game.filterPlayer(function(current){
|
||||
|
@ -942,7 +921,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
fullskin:true,
|
||||
type:'trick',
|
||||
enable:true,
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
if(player==target) return false;
|
||||
return (target.countCards('h')||target.isUnseen(2));
|
||||
|
@ -1496,7 +1475,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
return current.isFriendOf(player);
|
||||
});
|
||||
}
|
||||
return num+game.countGroup();
|
||||
return num+game.countGroup()-1;
|
||||
}
|
||||
},
|
||||
trigger:{player:'damageBegin4'},
|
||||
|
@ -1687,34 +1666,23 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
g_diaohulishan:{},
|
||||
diaohulishan:{
|
||||
trigger:{player:['damageBegin3','loseHpBefore','recoverBefore']},
|
||||
forced:true,
|
||||
popup:false,
|
||||
content:function(){
|
||||
trigger.cancel();
|
||||
},
|
||||
mod:{
|
||||
cardEnabled:function(){
|
||||
return false;
|
||||
},
|
||||
cardSavable:function(){
|
||||
return false;
|
||||
},
|
||||
targetEnabled:function(){
|
||||
return false;
|
||||
},
|
||||
},
|
||||
mark:true,
|
||||
intro:{
|
||||
content:'不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去/回复体力和受到伤害'
|
||||
},
|
||||
charlotte:true,
|
||||
group:'undist',
|
||||
ai:{
|
||||
effect:{
|
||||
target:function (card,player,target){
|
||||
if(get.tag(card,'recover')||get.tag(card,'damage')) return 'zeroplayertarget';
|
||||
},
|
||||
},
|
||||
init:function(player){
|
||||
if(player.isIn()){
|
||||
game.broadcastAll(function(player){
|
||||
player.classList.add('out');
|
||||
},player);
|
||||
game.log(player,'移出了游戏');
|
||||
}
|
||||
},
|
||||
onremove:function(player){
|
||||
if(player.isOut()){
|
||||
game.broadcastAll(function(player){
|
||||
player.classList.remove('out');
|
||||
},player);
|
||||
game.log(player,'移回了游戏');
|
||||
}
|
||||
},
|
||||
},
|
||||
huxinjing:{
|
||||
|
@ -1815,8 +1783,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
feilongduofeng3:'飞龙夺凤',
|
||||
feilongduofeng_info:'①当你使用【杀】指定目标后,你可令目标角色弃置一张牌。②当你因使用【杀】而令其他角色进入濒死状态时,你可以获得其一张手牌。',
|
||||
taipingyaoshu:'太平要术',
|
||||
taipingyaoshu_info:'锁定技。①当你即将收到属性伤害时,取消之。②你的手牌上限+X(X为势力数)。③当你失去装备区里的【太平要术】时,你摸两张牌,然后若你的体力值大于1,你失去1点体力。',
|
||||
taipingyaoshu_info_guozhan:'锁定技。①当你即将收到属性伤害时,取消之。②你的手牌上限+X(X为与你势力相同的角色数)。③当你失去装备区里的【太平要术】时,你摸两张牌,然后若你的体力值大于1,你失去1点体力。',
|
||||
taipingyaoshu_info:'锁定技。①当你即将受到属性伤害时,取消之。②你的手牌上限+X(X为场上势力数-1)。③当你失去装备区里的【太平要术】时,你摸两张牌,然后若你的体力值大于1,你失去1点体力。',
|
||||
taipingyaoshu_info_guozhan:'锁定技。①当你即将受到属性伤害时,取消之。②你的手牌上限+X(X为与你势力相同的角色数)。③当你失去装备区里的【太平要术】时,你摸两张牌,然后你失去1点体力。',
|
||||
yuxi_skill:'玉玺',
|
||||
yuxi_skill2:'玉玺',
|
||||
yuxi:'玉玺',
|
||||
|
@ -1836,7 +1804,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
chiling:'敕令',
|
||||
chiling_info:'①出牌阶段,对所有没有势力的角色使用。目标角色选择一项:1、明置一张武将牌,然后摸一张牌;2、弃置一张装备牌;3、失去1点体力。②当【敕令】因判定或弃置而置入弃牌堆时,系统将之移出游戏并将【诏书】置于牌堆底,然后系统于当前回合结束后视为对所有没有势力的角色使用【敕令】。',
|
||||
diaohulishan:'调虎离山',
|
||||
diaohulishan_info:'出牌阶段,对至多两名其他角色使用。目标角色于此回合结束之前不计入距离的计算且不能使用牌且不是牌的合法目标且不能失去或回复体力或受到伤害。',
|
||||
diaohulishan_info:'出牌阶段,对至多两名其他角色使用。目标角色于此回合视为移出游戏。',
|
||||
huoshaolianying:'火烧连营',
|
||||
huoshaolianying_bg:'烧',
|
||||
huoshaolianying_info_guozhan:'出牌阶段,对你的下家及其队列中的所有角色使用。你对目标角色造成1点火属性伤害。',
|
||||
|
|
|
@ -447,7 +447,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
fullskin:true,
|
||||
type:'trick',
|
||||
enable:true,
|
||||
// chongzhu:true,
|
||||
// recastable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target==player;
|
||||
},
|
||||
|
|
|
@ -501,7 +501,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
if(cardsToGain.length) player.gain(cardsToGain,'draw');
|
||||
if(cards.length-cardsToGain.length) player.draw(cards.length-cardsToGain.length).log=false;
|
||||
return cardsToGain;
|
||||
});
|
||||
},
|
||||
ai:{
|
||||
|
|
|
@ -259,7 +259,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
enable:function(){
|
||||
return game.countPlayer()>2;
|
||||
},
|
||||
chongzhu:function(){
|
||||
recastable:function(){
|
||||
return game.countPlayer()<=2;
|
||||
},
|
||||
singleCard:true,
|
||||
|
|
101
card/standard.js
101
card/standard.js
|
@ -100,39 +100,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(lib.linked.contains(card.nature)) return '出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,否则你对其造成1点'+get.translation(card.nature)+'属性伤害。';
|
||||
return '出牌阶段,对你攻击范围内的一名角色使用。其须使用一张【闪】,否则你对其造成1点伤害。';
|
||||
},
|
||||
yingbian_prompt:function(card){
|
||||
var str='';
|
||||
if(get.cardtag(card,'yingbian_hit')){
|
||||
str+='此牌不可被响应';
|
||||
}
|
||||
if(get.cardtag(card,'yingbian_damage')){
|
||||
if(str.length) str+=';';
|
||||
str+='此牌的伤害值基数+1';
|
||||
}
|
||||
if(!str.length||get.cardtag(card,'yingbian_add')){
|
||||
if(str.length) str+=';';
|
||||
str+='当你使用此牌选择目标后,你可为此牌增加一个目标';
|
||||
}
|
||||
return str;
|
||||
},
|
||||
yingbian:function(event){
|
||||
var card=event.card,bool=false;
|
||||
if(get.cardtag(card,'yingbian_hit')){
|
||||
bool=true;
|
||||
event.directHit.addArray(game.players);
|
||||
game.log(card,'不可被响应');
|
||||
}
|
||||
if(get.cardtag(card,'yingbian_damage')){
|
||||
bool=true;
|
||||
if(typeof event.baseDamage!='number') event.baseDamage=1;
|
||||
event.baseDamage++;
|
||||
game.log(event.card,'的伤害值基数+1');
|
||||
}
|
||||
if(!bool||get.cardtag(card,'yingbian_add')){
|
||||
event.yingbian_addTarget=true;
|
||||
}
|
||||
},
|
||||
yingbian_tags:['hit','damage','add'],
|
||||
defaultYingbianEffect:'add',
|
||||
filterTarget:function(card,player,target){return player!=target},
|
||||
content:function(){
|
||||
"step 0"
|
||||
|
@ -387,27 +355,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
cardcolor:'red',
|
||||
notarget:true,
|
||||
nodelay:true,
|
||||
yingbian_prompt:function(card){
|
||||
var str='';
|
||||
if(get.cardtag(card,'yingbian_gain')){
|
||||
str+='当你声明使用此牌时,你获得此牌响应的目标牌';
|
||||
}
|
||||
if(!str.length||get.cardtag(card,'yingbian_draw')){
|
||||
if(str.length) str+=';';
|
||||
str+='当你声明使用此牌时,你摸一张牌';
|
||||
}
|
||||
return str;
|
||||
},
|
||||
yingbian_tags:['gain','draw'],
|
||||
yingbian:function(event){
|
||||
var bool=false;
|
||||
if(get.cardtag(event.card,'yingbian_gain')){
|
||||
bool=true;
|
||||
var cardx=event.respondTo;
|
||||
if(cardx&&cardx[1]&&cardx[1].cards&&cardx[1].cards.filterInD('od').length) event.player.gain(cardx[1].cards.filterInD('od'),'gain2','log');
|
||||
}
|
||||
if(!bool||get.cardtag(event.card,'yingbian_draw')) event.player.draw();
|
||||
},
|
||||
defaultYingbianEffect:'draw',
|
||||
content:function(){
|
||||
event.result='shaned';
|
||||
event.getParent().delayx=false;
|
||||
|
@ -889,11 +837,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
selectTarget:-1,
|
||||
cardcolor:'red',
|
||||
reverseOrder:true,
|
||||
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
|
||||
yingbian_tags:['remove'],
|
||||
yingbian:function(event){
|
||||
event.yingbian_removeTarget=true;
|
||||
},
|
||||
defaultYingbianEffect:'remove',
|
||||
filterTarget:function(card,player,target){
|
||||
//return target.hp<target.maxHp;
|
||||
return true;
|
||||
|
@ -929,11 +873,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
type:'trick',
|
||||
enable:true,
|
||||
selectTarget:-1,
|
||||
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
|
||||
yingbian_tags:['remove'],
|
||||
yingbian:function(event){
|
||||
event.yingbian_removeTarget=true;
|
||||
},
|
||||
defaultYingbianEffect:'remove',
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player;
|
||||
},
|
||||
|
@ -1006,11 +946,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
enable:true,
|
||||
selectTarget:-1,
|
||||
reverseOrder:true,
|
||||
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌减少一个目标',
|
||||
yingbian_tags:['remove'],
|
||||
yingbian:function(event){
|
||||
event.yingbian_removeTarget=true;
|
||||
},
|
||||
defaultYingbianEffect:'remove',
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player;
|
||||
},
|
||||
|
@ -1124,11 +1060,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
fullskin:true,
|
||||
type:'trick',
|
||||
enable:true,
|
||||
yingbian_prompt:'你令此牌不可被响应',
|
||||
yingbian_tags:['hit'],
|
||||
yingbian:function(event){
|
||||
event.directHit.addArray(game.players);
|
||||
},
|
||||
defaultYingbianEffect:'hit',
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player;
|
||||
},
|
||||
|
@ -1426,11 +1358,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(player==target) return false;
|
||||
return target.countDiscardableCards(player,get.is.single()?'he':'hej');
|
||||
},
|
||||
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌增加一个目标',
|
||||
yingbian_tags:['add'],
|
||||
yingbian:function(event){
|
||||
event.yingbian_addTarget=true;
|
||||
},
|
||||
defaultYingbianEffect:'add',
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(!get.is.single()&&target.countDiscardableCards(player,'hej')){
|
||||
|
@ -1665,14 +1593,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
notarget:true,
|
||||
finalDelay:false,
|
||||
yingbian_tags:['gain','draw'],
|
||||
yingbian_prompt:function(card){
|
||||
if(!get.cardtag(card,'yingbian_gain')) return '当你声明使用此牌时,你摸一张牌';
|
||||
return '当此牌生效后,你获得此牌响应的目标牌';
|
||||
},
|
||||
yingbian:function(event){
|
||||
if(!get.cardtag(event.card,'yingbian_gain')||get.cardtag(event.card,'yingbian_draw')) event.player.draw();
|
||||
},
|
||||
defaultYingbianEffect:'draw',
|
||||
contentBefore:function(){
|
||||
'step 0'
|
||||
if(get.mode()=='guozhan'&&get.cardtag(card,'guo')){
|
||||
|
@ -1725,11 +1646,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
delete ui.tempnowuxie;
|
||||
}
|
||||
}
|
||||
if(event.card.yingbian&&get.cardtag(event.card,'yingbian_gain')){
|
||||
var cardx=event.getParent().respondTo;
|
||||
if(cardx&&cardx[1]&&cardx[1].cards&&cardx[1].cards.filterInD('od').length) player.gain(cardx[1].cards.filterInD('od'),'gain2','log');
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
lebu:{
|
||||
audio:true,
|
||||
|
|
|
@ -266,7 +266,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
fullskin:true,
|
||||
type:'trick',
|
||||
nodelay:true,
|
||||
// chongzhu:true,
|
||||
// recastable:true,
|
||||
global:'g_shencaojie',
|
||||
content:function(){
|
||||
var evt=event.getParent('g_shencaojie')._trigger;
|
||||
|
|
336
card/yingbian.js
336
card/yingbian.js
|
@ -16,38 +16,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.countCards('hej')>0;
|
||||
},
|
||||
yingbian_tags:['all','hit','add'],
|
||||
yingbian_prompt:function(card){
|
||||
var str='';
|
||||
if(get.cardtag(card,'yingbian_all')){
|
||||
str+='此牌的效果改为依次执行所有选项';
|
||||
}
|
||||
if(get.cardtag(card,'yingbian_hit')){
|
||||
if(str.length) str+=';';
|
||||
str+='此牌不可被响应';
|
||||
}
|
||||
if(!str.length||get.cardtag(card,'yingbian_add')){
|
||||
if(str.length) str+=';';
|
||||
str+='当你使用此牌选择目标后,你可为此牌增加一个目标';
|
||||
}
|
||||
return str;
|
||||
},
|
||||
yingbian:function(event){
|
||||
var card=event.card,bool=false;
|
||||
if(get.cardtag(card,'yingbian_all')){
|
||||
bool=true;
|
||||
card.yingbian_all=true;
|
||||
game.log(card,'执行所有选项');
|
||||
}
|
||||
if(get.cardtag(card,'yingbian_hit')){
|
||||
bool=true;
|
||||
event.directHit.addArray(game.players);
|
||||
game.log(card,'不可被响应');
|
||||
}
|
||||
if(!bool||get.cardtag(card,'yingbian_add')){
|
||||
event.yingbian_addTarget=true;
|
||||
}
|
||||
},
|
||||
defaultYingbianEffect:'add',
|
||||
content:function(){
|
||||
var dist=get.distance(player,target);
|
||||
if(dist>1||card.yingbian_all) player.discardPlayerCard(target,'hej',true);
|
||||
|
@ -174,11 +143,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.countCards('h')>0;
|
||||
},
|
||||
yingbian_prompt:'当你使用此牌选择目标后,你可为此牌增加一个目标',
|
||||
yingbian_tags:['add'],
|
||||
yingbian:function(event){
|
||||
event.yingbian_addTarget=true;
|
||||
},
|
||||
defaultYingbianEffect:'add',
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(player.isDead()||!target.countCards('h')){
|
||||
|
@ -274,30 +239,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
type:'equip',
|
||||
subtype:'equip5',
|
||||
loseDelay:false,
|
||||
onEquip:function(){
|
||||
if(player.countCards('he',function(cardx){
|
||||
return cardx!=card;
|
||||
})>0){
|
||||
player.logSkill('tianjitu_skill');
|
||||
player.chooseToDiscard(true,function(card){
|
||||
return card!=_status.event.card;
|
||||
},'he').set('card',card);
|
||||
}
|
||||
},
|
||||
onLose:function(){
|
||||
var next=game.createEvent('tianjitu_lose');
|
||||
event.next.remove(next);
|
||||
var evt=event.getParent();
|
||||
if(evt.getlx===false) evt=evt.getParent();
|
||||
evt.after.push(next);
|
||||
next.player=player;
|
||||
next.setContent(function(){
|
||||
if(player.countCards('h')<5){
|
||||
player.logSkill('tianjitu_skill');
|
||||
player.drawTo(5);
|
||||
}
|
||||
});
|
||||
},
|
||||
global:'tianjitu_skill',
|
||||
ai:{
|
||||
value:function(card,player){
|
||||
if(player.countCards('h')>3||get.position(card)!='e') return 0.5;
|
||||
|
@ -422,23 +364,24 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
global:'heiguangkai_ai',
|
||||
},
|
||||
tongque_skill:{
|
||||
trigger:{player:'useCard1'},
|
||||
trigger:{player:'yingbian'},
|
||||
equipSkill:true,
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return !event.card.yingbian&&get.is.yingbian(event.card)&&player.getHistory('useCard',function(evt){
|
||||
return get.is.yingbian(evt.card)
|
||||
}).indexOf(event)==0;
|
||||
},
|
||||
content:function(){
|
||||
trigger.card.yingbian=true;
|
||||
var info=get.info(trigger.card);
|
||||
if(info&&info.yingbian) info.yingbian(trigger);
|
||||
player.addTempSkill('yingbian_changeTarget');
|
||||
},
|
||||
filter:(event,player)=>get.is.yingbianConditional(event.card)&&player.getHistory('useCard',evt=>get.is.yingbianConditional(evt.card)).length<2,
|
||||
content:()=>{
|
||||
trigger.forceYingbian=true;
|
||||
}
|
||||
},
|
||||
tianjitu_skill:{
|
||||
audio:true,
|
||||
trigger:{player:['equipBegin','loseBegin']},
|
||||
forced:true,
|
||||
equipSkill:true,
|
||||
filter:(event,player,name)=>name=='equipBegin'?event.card.name=='tianjitu'&&player.hasCard(card=>card!=event.card):event.cards.some(value=>get.position(value)=='e'&&value.name=='tianjitu')&&player.countCards('h')<5,
|
||||
content:()=>{
|
||||
if(event.triggername=='loseBegin') player.drawTo(5);
|
||||
else player.chooseToDiscard(true,card=>card!=_status.event.getTrigger().card,'he');
|
||||
}
|
||||
},
|
||||
taigongyinfu_skill:{
|
||||
equipSkill:true,
|
||||
|
@ -456,10 +399,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('taigongyinfu_skill');
|
||||
player.lose(result.cards,ui.discardPile,'visible');
|
||||
player.$throw(result.cards,1000);
|
||||
game.log(player,'将',result.cards,'置入了弃牌堆');
|
||||
player.draw();
|
||||
player.recast(result.cards);
|
||||
}
|
||||
},
|
||||
},
|
||||
|
@ -494,202 +434,69 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
_yingbian:{
|
||||
trigger:{player:'useCard1'},
|
||||
trigger:{player:'yingbian'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
firstDo:true,
|
||||
ruleSkill:true,
|
||||
forceLoad:true,
|
||||
filter:function(event,player){
|
||||
filter:(event,player)=>{
|
||||
if(event.card.yingbian) return false;
|
||||
var bool=player.hasSkillTag('forceYingbian');
|
||||
var card=event.card;
|
||||
if(get.cardtag(card,'yingbian_kongchao')&&(!player.countCards('h')||bool)) return true;
|
||||
if(get.cardtag(card,'yingbian_canqu')&&(player.hp==1||bool)) return true;
|
||||
if(get.cardtag(card,'yingbian_fujia')&&(player.isMaxHandcard()||bool)) return true;
|
||||
if(get.cardtag(card,'yingbian_zhuzhan')) return true;
|
||||
return false;
|
||||
const temporaryYingbian=event.temporaryYingbian||[],card=event.card;
|
||||
if(temporaryYingbian.includes('force')||get.cardtag(card,'yingbian_force')) return true;
|
||||
const forceYingbian=event.forceYingbian||player.hasSkillTag('forceYingbian');
|
||||
for(const entry of lib.yingbian.condition.simple){
|
||||
const key=entry[0];
|
||||
if((temporaryYingbian.includes(key)||get.cardtag(card,`yingbian_${key}`))&&(forceYingbian||entry[1](event))) return true;
|
||||
}
|
||||
const complexYingbianConditions=get.complexYingbianConditions();
|
||||
return temporaryYingbian.some(value=>complexYingbianConditions.includes(value))||get.is.complexlyYingbianConditional(card);
|
||||
},
|
||||
content:function(){
|
||||
content:()=>{
|
||||
'step 0'
|
||||
var card=trigger.card;
|
||||
event.card=card;
|
||||
var bool=false;
|
||||
if(get.cardtag(card,'yingbian_kongchao')&&!player.countCards('h')){
|
||||
player.popup('空巢','soil');
|
||||
bool=true;
|
||||
event.card=trigger.card;
|
||||
event.temporaryYingbian=trigger.temporaryYingbian||[];
|
||||
var yingbianConditionSatisfied=false;
|
||||
lib.yingbian.condition.simple.forEach((value,key)=>{
|
||||
if(!event.temporaryYingbian.includes(key)&&!get.cardtag(event.card,`yingbian_${key}`)||!value(trigger)) return;
|
||||
player.popup(`yingbian_${key}_tag`,lib.yingbian.condition.color.get(key));
|
||||
if(!yingbianConditionSatisfied) yingbianConditionSatisfied=true;
|
||||
});
|
||||
if(event.temporaryYingbian.includes('force')||get.cardtag(event.card,'yingbian_force')||trigger.forceYingbian||player.hasSkillTag('forceYingbian')){
|
||||
player.popup('yingbian_force_tag',lib.yingbian.condition.color.get('force'));
|
||||
if(!yingbianConditionSatisfied) yingbianConditionSatisfied=true;
|
||||
}
|
||||
else if(get.cardtag(card,'yingbian_canqu')&&player.hp==1){
|
||||
player.popup('残躯','fire');
|
||||
bool=true;
|
||||
}
|
||||
else if(get.cardtag(card,'yingbian_fujia')&&player.isMaxHandcard()){
|
||||
player.popup('富甲','orange');
|
||||
bool=true;
|
||||
}
|
||||
else if(player.hasSkillTag('forceYingbian')){
|
||||
player.popup('应变','metal');
|
||||
bool=true;
|
||||
}
|
||||
if(bool){
|
||||
game.log(player,'触发了',card,'的应变条件');
|
||||
event.goto(10);
|
||||
if(yingbianConditionSatisfied){
|
||||
game.log(player,'触发了',event.card,'的应变条件');
|
||||
event.goto(4);
|
||||
}
|
||||
else if((event.num=0)>=(event.yingbianConditions=get.complexYingbianConditions()).length) event.finish();
|
||||
'step 1'
|
||||
event._global_waiting=true;
|
||||
event.send=function(player,card,source,targets,id,id2,skillState){
|
||||
if(skillState){
|
||||
player.applySkills(skillState);
|
||||
}
|
||||
var type=get.type2(card);
|
||||
var str=get.translation(source);
|
||||
if(targets&&targets.length){
|
||||
str+='对';
|
||||
str+=get.translation(targets);
|
||||
}
|
||||
str+='使用了';
|
||||
var next=player.chooseCard({
|
||||
filterCard:function(card){
|
||||
return get.type2(card)==type&&lib.filter.cardDiscardable.apply(this,arguments);
|
||||
},
|
||||
prompt:str+=(get.translation(card)+',是否弃置一张'+get.translation(type)+'为其助战?'),
|
||||
position:'h',
|
||||
_global_waiting:true,
|
||||
id:id,
|
||||
id2:id2,
|
||||
ai:function(cardx){
|
||||
var info=get.info(card);
|
||||
if(info&&info.ai&&info.ai.yingbian){
|
||||
var ai=info.ai.yingbian(card,source,targets,player);
|
||||
if(!ai) return 0;
|
||||
return ai-get.value(cardx);
|
||||
}
|
||||
else if(get.attitude(player,source)<=0) return 0;
|
||||
return 5-get.value(cardx);
|
||||
},
|
||||
});
|
||||
if(game.online){
|
||||
_status.event._resultid=id;
|
||||
game.resume();
|
||||
}
|
||||
};
|
||||
var yingbianCondition=event.yingbianConditions[num];
|
||||
if(event.temporaryYingbian.includes(yingbianCondition)||get.cardtag(card,`yingbian_${yingbianCondition}`)) lib.yingbian.condition.complex.get(yingbianCondition)(trigger);
|
||||
else event.goto(3);
|
||||
'step 2'
|
||||
var type=get.type2(card);
|
||||
var list=game.filterPlayer(function(current){
|
||||
if(current==player) return false;
|
||||
if(!current.countCards('h')) return false;
|
||||
return _status.connectMode||current.countCards('h',function(cardx){
|
||||
return get.type2(cardx)==type;
|
||||
})
|
||||
});
|
||||
event.list=list;
|
||||
event.id=get.id();
|
||||
list.sort(function(a,b){
|
||||
return get.distance(event.source,a,'absolute')-get.distance(event.source,b,'absolute');
|
||||
});
|
||||
if(result.bool) event.goto(4);
|
||||
'step 3'
|
||||
if(event.list.length==0){
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
|
||||
event.goto(5);
|
||||
}
|
||||
else{
|
||||
event.current=event.list.shift();
|
||||
event.send(event.current,event.card,player,trigger.targets,event.id,trigger.parent.id);
|
||||
}
|
||||
'step 4'
|
||||
if(result.bool){
|
||||
event.zhuzhanresult=event.current;
|
||||
event.zhuzhanresult2=result;
|
||||
if(event.current!=game.me) game.delayx();
|
||||
event.goto(9);
|
||||
}
|
||||
else{
|
||||
event.goto(3);
|
||||
}
|
||||
'step 5'
|
||||
var id=event.id;
|
||||
var sendback=function(result,player){
|
||||
if(result&&result.id==id&&!event.zhuzhanresult&&result.bool){
|
||||
event.zhuzhanresult=player;
|
||||
event.zhuzhanresult2=result;
|
||||
game.broadcast('cancel',id);
|
||||
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
|
||||
return (function(){
|
||||
event.resultOL=_status.event.resultOL;
|
||||
ui.click.cancel();
|
||||
if(ui.confirm) ui.confirm.close();
|
||||
});
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
|
||||
return (function(){
|
||||
event.resultOL=_status.event.resultOL;
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var withme=false;
|
||||
var withol=false;
|
||||
var list=event.list;
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i].isOnline()){
|
||||
withol=true;
|
||||
list[i].wait(sendback);
|
||||
list[i].send(event.send,list[i],event.card,player,trigger.targets,event.id,trigger.parent.id,get.skillState(list[i]));
|
||||
list.splice(i--,1);
|
||||
}
|
||||
else if(list[i]==game.me){
|
||||
withme=true;
|
||||
event.send(list[i],event.card,player,trigger.targets,event.id,trigger.parent.id);
|
||||
list.splice(i--,1);
|
||||
}
|
||||
}
|
||||
if(!withme){
|
||||
event.goto(7);
|
||||
}
|
||||
if(_status.connectMode){
|
||||
if(withme||withol){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i]!=player) game.players[i].showTimer();
|
||||
}
|
||||
}
|
||||
}
|
||||
event.withol=withol;
|
||||
'step 6'
|
||||
if(result&&result.bool&&!event.zhuzhanresult){
|
||||
game.broadcast('cancel',event.id);
|
||||
event.zhuzhanresult=game.me;
|
||||
event.zhuzhanresult2=result;
|
||||
}
|
||||
'step 7'
|
||||
if(event.withol&&!event.resultOL){
|
||||
game.pause();
|
||||
}
|
||||
'step 8'
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
game.players[i].hideTimer();
|
||||
}
|
||||
'step 9'
|
||||
if(event.zhuzhanresult){
|
||||
var target=event.zhuzhanresult;
|
||||
target.line(player,'green');
|
||||
target.discard(event.zhuzhanresult2.cards).discarder=target;
|
||||
target.popup('助战','wood');
|
||||
game.log(target,'响应了',player,'发起的助战');
|
||||
target.addExpose(0.2);
|
||||
}
|
||||
event.num++;
|
||||
if(event.num<event.yingbianConditions.length) event.goto(1);
|
||||
else event.finish();
|
||||
'step 10'
|
||||
'step 4'
|
||||
trigger.card.yingbian=true;
|
||||
var info=get.info(trigger.card);
|
||||
if(info&&info.yingbian) info.yingbian(trigger);
|
||||
player.addTempSkill('yingbian_changeTarget');
|
||||
},
|
||||
var yingbianEffectExecuted=false;
|
||||
lib.yingbian.effect.forEach((value,key)=>{
|
||||
if(!event.temporaryYingbian.includes(key)&&!get.cardtag(card,`yingbian_${key}`)) return;
|
||||
game.yingbianEffect(trigger,value);
|
||||
if(!yingbianEffectExecuted) yingbianEffectExecuted=true;
|
||||
});
|
||||
if(!yingbianEffectExecuted){
|
||||
var defaultYingbianEffect=get.defaultYingbianEffect(card);
|
||||
if(lib.yingbian.effect.has(defaultYingbianEffect)){
|
||||
game.yingbianEffect(trigger,lib.yingbian.effect.get(defaultYingbianEffect));
|
||||
if(!yingbianEffectExecuted) yingbianEffectExecuted=true;
|
||||
}
|
||||
}
|
||||
if(yingbianEffectExecuted) player.addTempSkill('yingbian_changeTarget');
|
||||
}
|
||||
},
|
||||
yingbian_changeTarget:{
|
||||
trigger:{player:'useCard2'},
|
||||
|
@ -820,7 +627,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
tongque_info:'锁定技,你于一回合内使用的第一张带有“应变”效果的牌无视条件直接生效。',
|
||||
tianjitu:'天机图',
|
||||
tianjitu_skill:'天机图',
|
||||
tianjitu_info:'锁定技,当此牌进入你的装备区时,你弃置一张不为此【天机图】的牌。当此牌离开你的装备区后,你将手牌摸至五张。',
|
||||
tianjitu_info:'锁定技,当此牌进入你的装备区时,你弃置一张不为此【天机图】的牌。当此牌离开你的装备区时,你将手牌摸至五张。',
|
||||
taigongyinfu:'太公阴符',
|
||||
taigongyinfu_info:'出牌阶段开始时,你可以横置或重置一名角色。出牌阶段结束时,你可以重铸一张手牌。',
|
||||
taigongyinfu_skill:'太公阴符',
|
||||
|
@ -829,15 +636,16 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
yingbian_kongchao_tag:'空巢',
|
||||
yingbian_fujia_tag:'富甲',
|
||||
yingbian_canqu_tag:'残躯',
|
||||
yingbian_force_tag:'应变',
|
||||
_yingbian:'应变',
|
||||
yingbian_changeTarget:'应变',
|
||||
yingbian_add_tag:'(目标+)',
|
||||
yingbian_remove_tag:'(目标-)',
|
||||
yingbian_draw_tag:'(摸牌)',
|
||||
yingbian_all_tag:'(双项)',
|
||||
yingbian_hit_tag:'(强命)',
|
||||
yingbian_gain_tag:'(反甲)',
|
||||
yingbian_damage_tag:'(伤害+)',
|
||||
yingbian_draw_tag:'(摸牌)',
|
||||
yingbian_gain_tag:'(反甲)',
|
||||
yingbian_hit_tag:'(强命)',
|
||||
yingbian_all_tag:'(双项)'
|
||||
},
|
||||
list:[
|
||||
['spade',1,'juedou'],
|
||||
|
|
113
card/yongjian.js
113
card/yongjian.js
|
@ -76,7 +76,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.index==0) player.gain(event.show_card,target,'give','bySelf');
|
||||
if(result.index==0) target.give(event.show_card,player);
|
||||
else target.damage();
|
||||
},
|
||||
ai:{
|
||||
|
@ -157,8 +157,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
subtype:'equip1',
|
||||
distance:{attackFrom:-1},
|
||||
fullskin:true,
|
||||
skills:['qixingbaodao'],
|
||||
selectTarget:[-1,-2],
|
||||
global:'qixingbaodao',
|
||||
ai:{
|
||||
order:9,
|
||||
value:function(card,player){
|
||||
|
@ -404,14 +403,15 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
audio:true,
|
||||
equipSkill:true,
|
||||
forced:true,
|
||||
trigger:{target:'_yongjian_zengyuBegin'},
|
||||
content:function(){
|
||||
trigger._zengyu_denied=true;
|
||||
game.log(player,'拒绝了',trigger.player,'发起的赠予');
|
||||
trigger:{target:'gift'},
|
||||
filter:(event,player)=>event.target!=player,
|
||||
logTarget:'player',
|
||||
content:()=>{
|
||||
trigger.deniedGift.add(trigger.card);
|
||||
},
|
||||
ai:{
|
||||
refuseGifts:true,
|
||||
},
|
||||
refuseGifts:true
|
||||
}
|
||||
},
|
||||
xinge:{
|
||||
audio:true,
|
||||
|
@ -449,7 +449,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
qixingbaodao:{
|
||||
trigger:{player:'equipAfter'},
|
||||
trigger:{player:'equipBegin'},
|
||||
forced:true,
|
||||
equipSkill:true,
|
||||
filter:function(event,player){
|
||||
|
@ -595,6 +595,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
map.push([source,event.given_map[i]]);
|
||||
cards.addArray(event.given_map[i]);
|
||||
}
|
||||
player.showCards(cards,`${get.translation(player)}对${(targets=>{
|
||||
if(get.itemtype(targets)=='player') targets=[targets];
|
||||
if(targets[0]!=player) return get.translation(targets);
|
||||
const selfTargets=targets.slice();
|
||||
selfTargets[0]='自己';
|
||||
return get.translation(selfTargets);
|
||||
})(logs)}发动了【${get.skillTranslation(event.name,player)}】`);
|
||||
game.loseAsync({
|
||||
gain_list:map,
|
||||
player:player,
|
||||
|
@ -606,82 +613,40 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{expose:0.1},
|
||||
},
|
||||
_yongjian_zengyu:{
|
||||
_gifting:{
|
||||
enable:'phaseUse',
|
||||
forceLoad:true,
|
||||
filter:function(event,player){
|
||||
return player.hasCard((card)=>lib.skill._yongjian_zengyu.filterCard(card,player),'he');
|
||||
},
|
||||
filterCard:function(card,player){
|
||||
var mod=game.checkMod(card,player,'unchanged','cardZengyuable',player);
|
||||
if(mod!='unchanged') return mod;
|
||||
return get.position(card)=='h'&&get.cardtag(card,'gifts');
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
if(player==target) return false;
|
||||
var card=ui.selected.cards[0];
|
||||
if(get.type(card,false)=='equip'){
|
||||
return target.canEquip(card,true);
|
||||
}
|
||||
return true;
|
||||
},
|
||||
filter:(event,player)=>player.hasCard(card=>lib.skill._gifting.filterCard(card,player),lib.skill._gifting.position),
|
||||
filterCard:(card,player)=>game.hasPlayer(current=>player.canGift(card,current,true)),
|
||||
filterTarget:(card,player,target)=>ui.selected.cards.every(value=>player.canGift(value,target,true)),
|
||||
position:'he',
|
||||
discard:false,
|
||||
lose:false,
|
||||
delay:false,
|
||||
check:function(card){
|
||||
var player=_status.event.player;
|
||||
if(get.cardtag(card,'gifts')&&get.type(card,false)=='equip'&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.canEquip(card,true)&&!current.hasSkillTag('refuseGifts')&&get.effect(current,card,player,player)>0;
|
||||
})) return 2;
|
||||
check:card=>{
|
||||
const player=_status.event.player;
|
||||
if(game.hasPlayer(current=>player.canGift(card,current,true)&&!current.refuseGifts(card,player)&&get.effect(current,card,player,player)>0)) return 2;
|
||||
if(!player.needsToDiscard()&&get.position(card)=='h') return 0;
|
||||
return 1+Math.random();
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(event._zengyu_denied){
|
||||
player.loseToDiscardpile(cards);
|
||||
}
|
||||
else{
|
||||
if(get.type(cards[0],false)=='equip'){
|
||||
player.$give(cards[0],target,false);
|
||||
game.delay(0.5);
|
||||
target.equip(cards[0]);
|
||||
}
|
||||
else{
|
||||
target.gain(cards,player,'give');
|
||||
event.finish();
|
||||
}
|
||||
}
|
||||
'step 1'
|
||||
game.delayx();
|
||||
content:()=>{
|
||||
player.gift(cards,target);
|
||||
},
|
||||
ai:{
|
||||
order:function(item,player){
|
||||
if(player.hasCard(function(card){
|
||||
return get.cardtag(card,'gifts')&&get.type(card,false)=='equip'&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.canEquip(card,true)&&!current.hasSkillTag('refuseGifts')&&get.effect(current,card,player,player)>0;
|
||||
});
|
||||
},'h')) return 7;
|
||||
return 0.51;
|
||||
},
|
||||
order:(item,player)=>player.hasCard(card=>game.hasPlayer(current=>player.canGift(card,current,true)&&!current.refuseGifts(card,player)&&get.effect(current,card,player,player)>0),'h')?7:0.51,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
var card=ui.selected.cards[0];
|
||||
if(!card||target.hasSkillTag('refuseGifts')) return 0;
|
||||
if(get.type(card,false)=='equip') return get.effect(target,card,target,target);
|
||||
if(card.name=='du') return player.hp>target.hp?-1:0;
|
||||
if(target.hasSkillTag('nogain')) return 0;
|
||||
return Math.max(1,get.value(card,player)-get.value(card,target));
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
target:(player,target)=>{
|
||||
const result=ui.selected.cards.map(value=>player.getGiftAIResultTarget(value,target));
|
||||
return result.reduce((previousValue,currentValue)=>previousValue+currentValue,0)/result.length;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
translate:{
|
||||
gifts_tag:'赠',
|
||||
du:'毒',
|
||||
du_info:'①当此牌正面向上离开你的手牌区,或作为你的拼点牌而亮出时,你失去1点体力。②当你因摸牌或分发起始手牌而获得【毒】后,你可将其分配给其他角色(正面朝上移动,且不触发〖毒①〗)。',
|
||||
du_info:'①当此牌正面向上离开你的手牌区,或作为你的拼点牌而亮出时,你失去1点体力。②当你因摸牌或分发起始手牌而获得【毒】后,你可展示之并交给其他角色(不触发〖毒①〗)。',
|
||||
g_du:'毒',
|
||||
g_du_give:'赠毒',
|
||||
du_given:'已分配',
|
||||
|
@ -694,7 +659,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
yitianjian:'倚天剑',
|
||||
yitianjian_info:'当你因执行【杀】的效果而造成伤害后,若你已受伤,则你可弃置一张手牌,然后回复1点体力。',
|
||||
qixingbaodao:'七星宝刀',
|
||||
qixingbaodao_info:'锁定技。当此牌进入你的装备区后,你弃置装备区和判定区内的所有其他牌。',
|
||||
qixingbaodao_info:'锁定技。当此牌进入你的装备区时,你弃置装备区和判定区内的所有其他牌。',
|
||||
duanjian:'断剑',
|
||||
duanjian_info:'这是一把坏掉的武器…',
|
||||
duanjian_append:'<span class="text" style="font-family: yuanli">不要因为手快而装给自己。</span>',
|
||||
|
@ -707,13 +672,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
yonglv_info:'锁定技。①你至其他角色的距离-1。②其他角色至你的距离视为1。',
|
||||
yonglv_append:'<span class="text" style="font-family: yuanli">它旁边的就是王仲宣。</span>',
|
||||
zhanxiang:'战象',
|
||||
zhanxiang_info:'锁定技。①其他角色至你的距离+1。②当你成为〖赠予〗的目标后,你将此次赠予的效果改为“将赠予牌移动至弃牌堆”。',
|
||||
zhanxiang_info:'锁定技。①其他角色至你的距离+1。②其他角色对你赠予的牌视为赠予失败。',
|
||||
xinge:'信鸽',
|
||||
xinge_info:'出牌阶段限一次。你可以将一张手牌交给一名其他角色。',
|
||||
xinge_append:'<span class="text" style="font-family: yuanli">咕咕咕。</span>',
|
||||
|
||||
_yongjian_zengyu:'赠予',
|
||||
_yongjian_zengyu_info:'出牌阶段,你可将一张拥有“赠”标签的手牌区装备牌置于一名其他角色的装备区内,或将一张拥有“赠”标签的手牌区非装备牌正面朝上交给一名其他角色。',
|
||||
_gifting:'赠予',
|
||||
_gifting_info:'出牌阶段,你可将一张拥有“赠”标签的手牌区装备牌置于一名其他角色的装备区内,或将一张拥有“赠”标签的手牌区非装备牌正面朝上交给一名其他角色。',
|
||||
},
|
||||
list:[
|
||||
['spade',1,'guaguliaodu'],
|
||||
|
|
|
@ -276,7 +276,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
enable:function(){
|
||||
return game.countPlayer()>2;
|
||||
},
|
||||
chongzhu:function(){
|
||||
recastable:function(){
|
||||
return game.countPlayer()<=2;
|
||||
},
|
||||
multicheck:function(card,player){
|
||||
|
|
|
@ -5,7 +5,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
card:{
|
||||
pozhenjue:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:true,
|
||||
notarget:true,
|
||||
content:function(){
|
||||
|
@ -25,7 +25,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
changshezhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:function(card,player){
|
||||
if(player.inline()) return true;
|
||||
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||
|
@ -68,7 +68,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
tianfuzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:function(){
|
||||
return game.hasPlayer(function(current){
|
||||
return current.isMajor();
|
||||
|
@ -94,7 +94,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
dizaizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:function(){
|
||||
return game.hasPlayer(function(current){
|
||||
return current.isNotMajor();
|
||||
|
@ -121,7 +121,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
fengyangzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.sieged();
|
||||
|
@ -142,7 +142,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
yunchuizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.siege();
|
||||
|
@ -163,7 +163,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
qixingzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:function(card,player){
|
||||
return player.siege()||player.sieged();
|
||||
},
|
||||
|
@ -202,7 +202,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
shepanzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:function(card,player){
|
||||
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||
if(get.population(player.identity)<=1) return false;
|
||||
|
@ -231,7 +231,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
longfeizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:function(card,player){
|
||||
return player.next.siege(player);
|
||||
},
|
||||
|
@ -261,7 +261,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
huyizhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:function(card,player){
|
||||
return player.siege(player.next)||player.siege(player.previous);
|
||||
},
|
||||
|
@ -309,7 +309,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
niaoxiangzhen:{
|
||||
type:'zhenfa',
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
enable:true,
|
||||
filterTarget:function(card,player,target){
|
||||
if(player.identity==target.identity) return false;
|
||||
|
|
|
@ -43,6 +43,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
locked:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.unmarkSkill('clanyuzhi');
|
||||
var num1=0,num2=0,num3=0,bool=true;
|
||||
var history=player.actionHistory;
|
||||
for(var i=history.length-2;i>=0;i--){
|
||||
|
@ -92,7 +93,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.storage.clanyuzhi=lib.skill.dcweidang.getLength(result.cards[0]);
|
||||
player.markSkill('clanyuzhi');
|
||||
}
|
||||
else player.unmarkSkill('clanyuzhi');
|
||||
},
|
||||
ai:{
|
||||
threaten:3,
|
||||
|
@ -285,6 +285,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var storage=player.storage.clanjiexuan;
|
||||
return get.color(card)==((storage||0)%2?'black':'red');
|
||||
},
|
||||
prompt:function(){
|
||||
if(_status.event.player.storage.clanjiexuan) return '将一张黑色牌当【过河拆桥】使用';
|
||||
return '将一张红色牌当【顺手牵羊】使用';
|
||||
},
|
||||
skillAnimation:true,
|
||||
animationColor:'thunder',
|
||||
precontent:function(){
|
||||
|
@ -829,16 +833,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
clanSkill:true,
|
||||
filter:function(event,player){
|
||||
if(!event.cards.length) return true;
|
||||
var cards=[];
|
||||
game.countPlayer(current=>{
|
||||
if(!current.hasClan('太原王氏')) return false;
|
||||
current.getHistory('lose',evt=>{
|
||||
if(event!=evt.getParent()) return false;
|
||||
cards.addArray(evt.getl(current).hs);
|
||||
return !game.hasPlayer2(current=>{
|
||||
if(!current.hasClan('太原王氏')&¤t!=player) return false;
|
||||
return current.hasHistory('lose',evt=>{
|
||||
return evt.getParent()==event&&evt.hs.length>0;
|
||||
});
|
||||
})
|
||||
if(event.cards.some(card=>!cards.contains(card))) return false;
|
||||
return true;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
|
@ -899,6 +899,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
global:'clanlianzhu_global',
|
||||
subSkill:{
|
||||
global:{
|
||||
forceaudio:true,
|
||||
audio:'clanlianzhu',
|
||||
enable:'phaseUse',
|
||||
filter:(event,player)=>game.hasPlayer(current=>lib.skill.clanlianzhu_global.filterTarget(null,player,current)),
|
||||
filterCard:(card,player)=>game.hasPlayer(current=>current.hasSkill('clanlianzhu')&&!current.hasSkill('clanlianzhu_targeted')&&!current.storage.clanlianzhu)&&player.canRecast(card),
|
||||
|
@ -1935,11 +1937,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.hasCard(card=>get.suit(card)==get.suit(event.card)&&player.canRecast(card),'h');
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(trigger.targets&&trigger.targets.length==1){
|
||||
trigger.targets[0].link(true);
|
||||
}
|
||||
var cards=player.getCards('h',card=>get.suit(card)==get.suit(trigger.card)&&player.canRecast(card));
|
||||
if(cards.length>0) player.recast(cards);
|
||||
'step 1'
|
||||
player.draw();
|
||||
}
|
||||
},
|
||||
clanhuanyin:{
|
||||
|
@ -2024,6 +2029,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return 6-ui.selected.cards.length-get.value(card);
|
||||
},
|
||||
onuse:function(links,player){
|
||||
lib.skill.chenliuwushi.change(player,-1);
|
||||
player.addTempSkill('clanzhanding_effect');
|
||||
},
|
||||
ai:{
|
||||
|
@ -2042,7 +2048,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return event.skill=='clanzhanding';
|
||||
},
|
||||
content:function(){
|
||||
lib.skill.chenliuwushi.change(player,-1);
|
||||
if(player.hasHistory('sourceDamage',function(evt){
|
||||
return evt.card==trigger.card;
|
||||
})){
|
||||
|
@ -2269,6 +2274,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.storage.clanguangu) return '转换技,出牌阶段限一次。阴:你可以观看牌堆顶的至多四张牌;<span class="bluetext">阳:你可以观看一名角色的至多四张手牌。</span>然后你可以使用其中的一张牌。';
|
||||
return '转换技,出牌阶段限一次。<span class="bluetext">阴:你可以观看牌堆顶的至多四张牌;</span>阳:你可以观看一名角色的至多四张手牌。然后你可以使用其中的一张牌。';
|
||||
},
|
||||
clanjiexuan:function(player){
|
||||
if(player.storage.clanjiexuan) return '限定技,转换技。阴:你可以将一张红色牌当【顺手牵羊】使用;<span class="bluetext">阳:你可以将一张黑色牌当【过河拆桥】使用。</span>';
|
||||
return '限定技,转换技。<span class="bluetext">阴:你可以将一张红色牌当【顺手牵羊】使用;</span>阳:你可以将一张黑色牌当【过河拆桥】使用。';
|
||||
},
|
||||
},
|
||||
translate:{
|
||||
clan_wuxian:'族吴苋',
|
||||
|
@ -2281,7 +2290,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
chenliuwushi:'陈留·吴氏',
|
||||
clan_wuban:'族吴班',
|
||||
clanzhanding:'斩钉',
|
||||
clanzhanding_info:'你可以将任意张牌当做【杀】使用。你以此法使用的【杀】结算结束后,你令你的手牌上限-1,然后若你因此【杀】造成过伤害,则你将手牌摸至手牌上限(至多摸五张),否则你令此【杀】不计入次数限制。',
|
||||
clanzhanding_info:'你可以将任意张牌当做【杀】使用并你令你的手牌上限-1。你以此法使用的【杀】结算结束后,若你因此【杀】造成过伤害,则你将手牌摸至手牌上限(至多摸五张),否则你令此【杀】不计入次数限制。',
|
||||
clan_xunshu:'族荀淑',
|
||||
clanshenjun:'神君',
|
||||
clanshenjun_info:'当一名角色使用【杀】或普通锦囊牌时,若你手牌中有该牌名的牌,你展示之,且这些牌称为“神君”。然后本阶段结束时,你可以将等同于你“神君”数张牌当做一张“神君”牌使用。',
|
||||
|
|
|
@ -982,7 +982,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
if(trigger.name=='lose'){
|
||||
trigger.cards.remove(player.getEquips('ruyijingubang'));
|
||||
trigger.cards.removeArray(player.getEquips('ruyijingubang'));
|
||||
}
|
||||
else{
|
||||
while(trigger.slots.contains('equip1')) trigger.slots.remove('equip1');
|
||||
|
|
|
@ -117,7 +117,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target.useCard(result.targets,card,event.links);
|
||||
}
|
||||
else{
|
||||
target.recast(event.links,(player,cards)=>game.cardsDiscard(cards).cards);
|
||||
target.recast(event.links,(player,cards)=>game.cardsDiscard(cards));
|
||||
}
|
||||
'step 4'
|
||||
for(var card of cards){
|
||||
|
@ -3864,17 +3864,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
discard:function(){
|
||||
"step 0"
|
||||
game.log(player,'进入了弃牌阶段');
|
||||
event.num=(function(){
|
||||
var num=0;
|
||||
var hs=player.getCards('he');
|
||||
num+=hs.length;
|
||||
for(var i=0;i<hs.length;i++){
|
||||
if(game.checkMod(hs[i],player,false,'ignoredHandcard',player)==true){
|
||||
num--;
|
||||
}
|
||||
}
|
||||
return Math.max(0,num-player.getHandcardLimit());
|
||||
})();
|
||||
event.num=Math.max(0,player.countCards('he',card=>!player.canIgnoreHandcard(card))-player.getHandcardLimit());
|
||||
if(event.num<=0) event.finish();
|
||||
else{
|
||||
if(lib.config.show_phase_prompt){
|
||||
|
|
|
@ -1243,20 +1243,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
lose:false,
|
||||
delay:false,
|
||||
promptfunc:()=>'出牌阶段,你可以赠予一张“米券”,然后执行一项本回合内未被选择过的效果:⒈对其造成1点伤害;⒉摸两张牌;⒊弃置其的两张牌;⒋亮出牌堆顶的一张牌,然后你可以使用之。',
|
||||
check:function(card){
|
||||
var player=_status.event.player;
|
||||
if(get.cardtag(card,'gifts')&&get.type(card,false)=='equip'&&game.hasPlayer(function(current){
|
||||
return current!=player&¤t.canEquip(card,true)&&!current.hasSkillTag('refuseGifts')&&get.effect(current,card,player,player)>0;
|
||||
})) return 2;
|
||||
return 1+Math.random();
|
||||
check:card=>{
|
||||
const player=_status.event.player;
|
||||
return get.type(card,false)=='equip'&&game.hasPlayer(current=>player.canGift(card,current,true)&&!current.refuseGifts(card,player)&&get.effect(current,card,player,player)>0)?2:1+Math.random();
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var next=game.createEvent('_yongjian_zengyu');
|
||||
next.player=player;
|
||||
next.target=target;
|
||||
next.cards=cards;
|
||||
next.setContent(lib.skill._yongjian_zengyu.content);
|
||||
player.gift(cards,target);
|
||||
'step 1'
|
||||
var list=player.getStorage('minagi_peiquan_yukito');
|
||||
if(list.length>=4) event.finish();
|
||||
|
@ -1300,12 +1293,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
order:4,
|
||||
result:{
|
||||
player:function(player,target){
|
||||
var baseEffect=Math.min(3,get.effect(target,'_yongjian_zengyu',player,player));
|
||||
var choices=['damage','draw','discard','use'];
|
||||
player:(player,target)=>{
|
||||
const giftEffects=ui.selected.cards.map(value=>player.getGiftEffect(value,target));
|
||||
const baseEffect=Math.min(3,giftEffects.reduce((previousValue,currentValue)=>previousValue+currentValue,0)/giftEffects.length);
|
||||
const choices=['damage','draw','discard','use'];
|
||||
choices.removeArray(player.getStorage('minagi_peiquan_yukito'));
|
||||
if(choices.length<=0) return baseEffect;
|
||||
var eff=Math.max.apply(Math,choices.map(function(choice){
|
||||
return baseEffect+Math.max(...choices.map(choice=>{
|
||||
switch(choice){
|
||||
case 'damage':return get.damageEffect(target,player,player);
|
||||
case 'draw':return get.effect(player,{name:'wuzhong'},player,player);
|
||||
|
@ -1313,9 +1307,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
case 'use':return _status.event.getRand('minagi_peiquan')*4;
|
||||
}
|
||||
}));
|
||||
return baseEffect+eff;
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
group:'minagi_peiquan_umareta',
|
||||
subSkill:{
|
||||
|
@ -4269,25 +4262,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
asara_yingwei:{
|
||||
trigger:{player:'useCard1'},
|
||||
trigger:{player:'yingbian'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player.getHistory('lose',function(evt){
|
||||
if(evt.getParent()!=event) return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains('asara_yingwei')) return true;
|
||||
}
|
||||
return false;
|
||||
}).length>0;
|
||||
},
|
||||
content:function(){
|
||||
if(!trigger.card.yingbian){
|
||||
trigger.card.yingbian=true;
|
||||
var info=get.info(trigger.card);
|
||||
if(info&&info.yingbian) info.yingbian(trigger);
|
||||
player.addTempSkill('yingbian_changeTarget');
|
||||
}
|
||||
},
|
||||
filter:(event,player)=>event.card.isCard&&player.hasHistory('lose',evt=>evt.getParent()==event&&Object.values(evt.gaintag_map).some(value=>value.includes('asara_yingwei'))),
|
||||
content:()=>{
|
||||
trigger.forceYingbian=true;
|
||||
}
|
||||
},
|
||||
yukito_kongwu:{
|
||||
enable:'phaseUse',
|
||||
|
@ -6265,16 +6245,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
phaseDiscardContent:function(){
|
||||
"step 0"
|
||||
var num=0;
|
||||
var hs=player.getCards('he');
|
||||
num+=hs.length;
|
||||
for(var i=0;i<hs.length;i++){
|
||||
if(game.checkMod(hs[i],player,false,'ignoredHandcard',player)==true){
|
||||
num--;
|
||||
}
|
||||
}
|
||||
num=Math.max(0,num-player.getHandcardLimit());
|
||||
event.num=num;
|
||||
event.num=Math.max(0,player.countCards('he',card=>!player.canIgnoreHandcard(card))-player.getHandcardLimit());
|
||||
if(event.num<=0) event.finish();
|
||||
else{
|
||||
if(lib.config.show_phase_prompt){
|
||||
|
@ -8523,7 +8494,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return true;
|
||||
}
|
||||
else if(event.name=='gain'){
|
||||
if(event.giver||event.getParent().name=='_yongjian_zengyu') return false;
|
||||
if(event.giver||event.getParent().name=='gift') return false;
|
||||
var cards=event.getg(event.player);
|
||||
if(!cards.length) return false;
|
||||
return game.hasPlayer(function(current){
|
||||
|
|
|
@ -18,7 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
extra_mobilezhi:['shen_guojia','shen_xunyu'],
|
||||
extra_mobilexin:['shen_taishici','shen_sunce'],
|
||||
extra_tw:['tw_shen_guanyu','tw_shen_lvmeng'],
|
||||
extra_offline:['shen_diaochan','boss_zhaoyun'],
|
||||
extra_offline:['shen_diaochan','boss_zhaoyun','shen_dianwei'],
|
||||
},
|
||||
},
|
||||
character:{
|
||||
|
@ -1010,9 +1010,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else if(lib.translate[name+'_info']){
|
||||
str+=(''+lib.translate[name+'_info']+'|');
|
||||
}
|
||||
if(lib.card[name].yingbian_prompt&&get.is.yingbian(node)){
|
||||
if(typeof lib.card[name].yingbian_prompt=='function') str+=('应变:'+lib.card[name].yingbian_prompt(node)+'|');
|
||||
else str+=('应变:'+lib.card[name].yingbian_prompt+'|');
|
||||
if(get.is.yingbianConditional(node)){
|
||||
const yingbianEffects=get.yingbianEffects(node);
|
||||
if(!yingbianEffects.length){
|
||||
const defaultYingbianEffect=get.defaultYingbianEffect(node);
|
||||
if(lib.yingbian.prompt.has(defaultYingbianEffect)) yingbianEffects.push(defaultYingbianEffect);
|
||||
}
|
||||
if(yingbianEffects.length) str+=`应变:${yingbianEffects.map(value=>lib.yingbian.prompt.get(value)).join(';')}|`;
|
||||
}
|
||||
return str;
|
||||
},
|
||||
|
@ -2337,199 +2341,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
group:'hina_shenshi_yingbian',
|
||||
},
|
||||
hina_shenshi_yingbian:{
|
||||
trigger:{player:'useCard1'},
|
||||
trigger:{player:'yingbian'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.cards.length==1&&!event.card.yingbian&&player.hasHistory('lose',function(evt){
|
||||
if(evt.getParent()!=event) return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains('hina_shenshi')) return true;
|
||||
}
|
||||
return false;
|
||||
})&&Array.isArray(get.info(event.card).yingbian_tags);
|
||||
},
|
||||
content:function(){
|
||||
if(!trigger.card.yingbian){
|
||||
trigger.card.yingbian=true;
|
||||
var info=get.info(trigger.card);
|
||||
trigger.card.cardtags=info.yingbian_tags.map(function(i){
|
||||
return 'yingbian_'+i;
|
||||
});
|
||||
if(info&&info.yingbian) info.yingbian(trigger);
|
||||
player.addTempSkill('yingbian_changeTarget');
|
||||
}
|
||||
},
|
||||
filter:(event,player)=>event.card.isCard&&player.hasHistory('lose',evt=>evt.getParent()==event&&Object.values(evt.gaintag_map).some(value=>value.includes('hina_shenshi'))),
|
||||
content:()=>{
|
||||
if(!Array.isArray(trigger.temporaryYingbian)) trigger.temporaryYingbian=[];
|
||||
trigger.temporaryYingbian.add('force');
|
||||
trigger.temporaryYingbian.addArray(get.yingbianEffects());
|
||||
}
|
||||
},
|
||||
hina_xingzhi:{
|
||||
groupSkill:true,
|
||||
trigger:{player:'useCard1'},
|
||||
trigger:{player:'yingbian'},
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return player.group=='key'&&!event.card.yingbian&&Array.isArray(get.info(event.card).yingbian_tags);
|
||||
},
|
||||
content:function(){
|
||||
filter:(event,player)=>player.group=='key'&&!event.card.yingbian&&lib.yingbian.condition.complex.has('zhuzhan'),
|
||||
content:()=>{
|
||||
'step 0'
|
||||
var info=get.info(trigger.card);
|
||||
trigger.card.cardtags=info.yingbian_tags.map(function(i){
|
||||
return 'yingbian_'+i;
|
||||
});
|
||||
event.card=trigger.card;
|
||||
event._global_waiting=true;
|
||||
event.send=function(player,card,source,targets,id,id2,skillState){
|
||||
if(skillState){
|
||||
player.applySkills(skillState);
|
||||
}
|
||||
var type=get.type2(card);
|
||||
var str=get.translation(source);
|
||||
if(targets&&targets.length){
|
||||
str+='对';
|
||||
str+=get.translation(targets);
|
||||
}
|
||||
str+='使用了';
|
||||
var next=player.chooseCard({
|
||||
filterCard:function(card){
|
||||
return get.type2(card)==type&&lib.filter.cardDiscardable.apply(this,arguments);
|
||||
},
|
||||
prompt:str+=(get.translation(card)+',是否弃置一张'+get.translation(type)+'为其助战?'),
|
||||
position:'h',
|
||||
_global_waiting:true,
|
||||
id:id,
|
||||
id2:id2,
|
||||
ai:function(cardx){
|
||||
var info=get.info(card),num=0;
|
||||
if(info&&info.ai&&info.ai.yingbian){
|
||||
var ai=info.ai.yingbian(card,source,targets,player);
|
||||
if(ai) num=ai;
|
||||
}
|
||||
if(get.attitude(player,source)<=0) return 0;
|
||||
return Math.max(ai,6)-get.value(cardx);
|
||||
},
|
||||
});
|
||||
if(game.online){
|
||||
_status.event._resultid=id;
|
||||
game.resume();
|
||||
trigger.yingbianZhuzhanAI=(player,card,source,targets)=>cardx=>{
|
||||
if(get.attitude(player,source)<=0) return 0;
|
||||
var info=get.info(card),num=0;
|
||||
if(info&&info.ai&&info.ai.yingbian){
|
||||
var ai=info.ai.yingbian(card,source,targets,player);
|
||||
if(ai) num=ai;
|
||||
}
|
||||
return Math.max(num,6)-get.value(cardx);
|
||||
};
|
||||
trigger.afterYingbianZhuzhan=event=>event.zhuzhanresult.draw(2);
|
||||
lib.yingbian.condition.complex.get('zhuzhan')(trigger);
|
||||
'step 1'
|
||||
var type=get.type2(card);
|
||||
var list=game.filterPlayer(function(current){
|
||||
if(current==player) return false;
|
||||
if(!current.countCards('h')) return false;
|
||||
return _status.connectMode||current.countCards('h',function(cardx){
|
||||
return get.type2(cardx)==type;
|
||||
})
|
||||
});
|
||||
event.list=list;
|
||||
event.id=get.id();
|
||||
list.sort(function(a,b){
|
||||
return get.distance(event.source,a,'absolute')-get.distance(event.source,b,'absolute');
|
||||
});
|
||||
'step 2'
|
||||
if(event.list.length==0){
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
else if(_status.connectMode&&(event.list[0].isOnline()||event.list[0]==game.me)){
|
||||
event.goto(4);
|
||||
}
|
||||
else{
|
||||
event.current=event.list.shift();
|
||||
event.send(event.current,event.card,player,trigger.targets,event.id,trigger.parent.id);
|
||||
}
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
event.zhuzhanresult=event.current;
|
||||
event.zhuzhanresult2=result;
|
||||
if(event.current!=game.me) game.delayx();
|
||||
event.goto(8);
|
||||
}
|
||||
else{
|
||||
event.goto(2);
|
||||
}
|
||||
'step 4'
|
||||
var id=event.id;
|
||||
var sendback=function(result,player){
|
||||
if(result&&result.id==id&&!event.zhuzhanresult&&result.bool){
|
||||
event.zhuzhanresult=player;
|
||||
event.zhuzhanresult2=result;
|
||||
game.broadcast('cancel',id);
|
||||
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
|
||||
return (function(){
|
||||
event.resultOL=_status.event.resultOL;
|
||||
ui.click.cancel();
|
||||
if(ui.confirm) ui.confirm.close();
|
||||
});
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(_status.event.id==id&&_status.event.name=='chooseCard'&&_status.paused){
|
||||
return (function(){
|
||||
event.resultOL=_status.event.resultOL;
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
var withme=false;
|
||||
var withol=false;
|
||||
var list=event.list;
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i].isOnline()){
|
||||
withol=true;
|
||||
list[i].wait(sendback);
|
||||
list[i].send(event.send,list[i],event.card,player,trigger.targets,event.id,trigger.parent.id,get.skillState(list[i]));
|
||||
list.splice(i--,1);
|
||||
}
|
||||
else if(list[i]==game.me){
|
||||
withme=true;
|
||||
event.send(list[i],event.card,player,trigger.targets,event.id,trigger.parent.id);
|
||||
list.splice(i--,1);
|
||||
}
|
||||
}
|
||||
if(!withme){
|
||||
event.goto(6);
|
||||
}
|
||||
if(_status.connectMode){
|
||||
if(withme||withol){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i]!=player) game.players[i].showTimer();
|
||||
}
|
||||
}
|
||||
}
|
||||
event.withol=withol;
|
||||
'step 5'
|
||||
if(result&&result.bool&&!event.zhuzhanresult){
|
||||
game.broadcast('cancel',event.id);
|
||||
event.zhuzhanresult=game.me;
|
||||
event.zhuzhanresult2=result;
|
||||
}
|
||||
'step 6'
|
||||
if(event.withol&&!event.resultOL){
|
||||
game.pause();
|
||||
}
|
||||
'step 7'
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
game.players[i].hideTimer();
|
||||
}
|
||||
'step 8'
|
||||
if(event.zhuzhanresult){
|
||||
var target=event.zhuzhanresult;
|
||||
target.line(player,'green');
|
||||
target.discard(event.zhuzhanresult2.cards).discarder=target;
|
||||
target.draw(2);
|
||||
target.popup('助战','wood');
|
||||
game.log(target,'响应了',player,'发起的助战');
|
||||
target.addExpose(0.2);
|
||||
}
|
||||
else event.finish();
|
||||
'step 9'
|
||||
if(!trigger.card.yingbian){
|
||||
trigger.card.yingbian=true;
|
||||
var info=get.info(trigger.card);
|
||||
if(info&&info.yingbian) info.yingbian(trigger);
|
||||
player.addTempSkill('yingbian_changeTarget');
|
||||
}
|
||||
},
|
||||
if(!result.bool) return;
|
||||
trigger.card.yingbian=true;
|
||||
lib.yingbian.effect.forEach(value=>game.yingbianEffect(trigger,value));
|
||||
player.addTempSkill('yingbian_changeTarget');
|
||||
}
|
||||
},
|
||||
yingba:{
|
||||
audio:2,
|
||||
|
@ -2985,7 +2829,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
if(result.control!='cancel2'){
|
||||
if(result.control=='选项二'){
|
||||
player.logSkill('tspowei',target);
|
||||
player.logSkill('tspowei_use',target);
|
||||
player.gainPlayerCard(target,'h',true);
|
||||
event.goto(3);
|
||||
}
|
||||
|
@ -5964,6 +5808,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
evt.cards&&evt.cards.length==2&&_status.currentPhase&&_status.currentPhase!=player&&_status.currentPhase.countDiscardableCards(player,'he');
|
||||
},
|
||||
content:function(){
|
||||
//game.log(trigger.card)
|
||||
//game.log(trigger.cards)
|
||||
player.line(_status.currentPhase,'green');
|
||||
player.discardPlayerCard(_status.currentPhase,'he',true);
|
||||
}
|
||||
|
|
|
@ -8470,22 +8470,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
if(result.bool&&result.cards.length){
|
||||
target.recast(result.cards,null,(player,cards)=>{
|
||||
var type=get.type(result.cards[0],'trick');
|
||||
var name=result.cards[0].name;
|
||||
var card2=get.cardPile(function(card){
|
||||
return get.type(card,'trick')==type&&card.name!=name;
|
||||
});
|
||||
if(!card2){
|
||||
card2=get.cardPile(function(card){
|
||||
return get.type(card,'trick')==type;
|
||||
});
|
||||
}
|
||||
if(card2){
|
||||
target.gain(card2,'draw');
|
||||
}
|
||||
else{
|
||||
target.draw().log=false;
|
||||
}
|
||||
var type=get.type(cards[0],'trick'),name=cards[0].name,card2=get.cardPile(card=>get.type(card,'trick')==type&&card.name!=name);
|
||||
if(!card2) card2=get.cardPile(card=>get.type(card,'trick')==type);
|
||||
if(card2) player.gain(card2,'draw');
|
||||
else player.draw().log=false;
|
||||
});
|
||||
var clone=game.createCard(card);
|
||||
player.gain(clone,'gain2');
|
||||
|
|
|
@ -11,9 +11,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhangkai:['male','qun',4,['dcxiangshu']],
|
||||
gaoxiang:['male','shu',4,['dcchiying'],['unseen']],
|
||||
yuanyin:['male','qun',3,['dcmoshou','dcyunjiu'],['unseen']],
|
||||
dongwan:['female','qun',3,['dcshengdu','dcjieling'],['unseen']],
|
||||
dongwan:['female','qun',3,['dcshengdu','dcjieling']],
|
||||
zhangchu:['female','qun',3,['dcjizhong','dcrihui','dcguangshi']],
|
||||
peiyuanshao:['male','qun',4,['dcmoyu'],['unseen']],
|
||||
peiyuanshao:['male','qun',4,['dcmoyu']],
|
||||
mengjie:['male','qun',3,['dcyinlu','dcyouqi']],
|
||||
dc_huojun:['male','shu',4,['dcgue','dcsigong']],
|
||||
dc_sunhanhua:['female','wu',3,['dchuiling','dcchongxu']],
|
||||
|
@ -613,38 +613,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return game.hasPlayer(current=>{
|
||||
if(current==player||current==event.player) return false;
|
||||
return current.hasHistory('lose',function(evt){
|
||||
return evt.cards.length>0;
|
||||
return evt.cards2.length>0;
|
||||
});
|
||||
})&&(_status.connectMode||player.hasCard({type:'basic'},'h'));
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var map={};
|
||||
game.countPlayer(function(current){
|
||||
if(current==player||current==trigger.player) return false;
|
||||
if(current.hasHistory('lose',function(evt){
|
||||
return evt.cards2.length>0;
|
||||
})) map[current.playerid]=Math.min(5,current.getHistory('lose').reduce(function(num,evt){
|
||||
return num=evt.cards2.length;
|
||||
},0))+1;
|
||||
});
|
||||
player.chooseCardTarget({
|
||||
prompt:get.prompt('dcporui'),
|
||||
//prompt2:'弃置一张基本牌并选择一名本回合失去过牌的非当前回合的其他角色,你视为对其依次使用'+get.cnNumber(Math.max(0,player.hp)+1)+'张【杀】',
|
||||
prompt2:get.skillInfoTranslation('dcporui',player),
|
||||
filterCard:lib.filter.cardDiscardable,
|
||||
selectCard:1,
|
||||
filterCard:function(card,player){
|
||||
return get.type2(card)=='basic'&&lib.filter.cardDiscardable(card,player,'dcporui');
|
||||
},
|
||||
position:'he',
|
||||
list:game.filterPlayer(current=>{
|
||||
if(current==player||current==trigger.player) return false;
|
||||
return current.hasHistory('lose',function(evt){
|
||||
return evt.cards.length>0;
|
||||
});
|
||||
}),
|
||||
filterTarget:function(card,player,target){
|
||||
return _status.event.list.map(i=>i[0]).contains(target);
|
||||
return Object.keys(_status.event.map).contains(target.playerid);
|
||||
},
|
||||
ai1:function(card){
|
||||
return 7-get.value(card);
|
||||
},
|
||||
ai2:function(target){
|
||||
return get.effect(target,{name:'sha'},_status.event.player,_status.event.player)*_status.event.list.find(i=>{
|
||||
return i[0]==target;
|
||||
})[1];
|
||||
return get.effect(target,{name:'sha'},_status.event.player,_status.event.player)*_status.event.map[target.playerid];
|
||||
}
|
||||
});
|
||||
}).set('map',map);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0],cards=result.cards;
|
||||
|
@ -884,12 +885,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target.chooseToUse(function(card,player,event){
|
||||
if(get.name(card)!='sha') return false;
|
||||
return lib.filter.filterCard.apply(this,arguments);
|
||||
},'是否对'+get.translation(player)+'使用一张【杀】(伤害基数为'+num+')?').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
|
||||
},'是否对'+get.translation(player)+'使用一张无距离限制的【杀】(伤害基数为'+num+')?').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
|
||||
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
|
||||
return lib.filter.filterTarget.apply(this,arguments);
|
||||
return lib.filter.targetEnabled.apply(this,arguments);
|
||||
}).set('sourcex',player).set('num',num).set('oncard',card=>{
|
||||
var evt=_status.event;
|
||||
evt.baseDamage=evt.num;
|
||||
_status.event.baseDamage=_status.event.getParent().num;
|
||||
});
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
|
@ -903,7 +903,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
charlotte:true,
|
||||
onremove:true,
|
||||
},
|
||||
ban:{charlotte:true},
|
||||
ban:{
|
||||
charlotte:true,
|
||||
mark:true,
|
||||
marktext:'欲',
|
||||
intro:{content:'偷马贼被反打了!'},
|
||||
},
|
||||
ai:{
|
||||
ai:{
|
||||
effect:{
|
||||
|
@ -936,7 +941,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target:player,
|
||||
card:{name:'sha'},
|
||||
},true)) return eff;
|
||||
if(player.getStorage('dcmoyu_clear').length||player.hp+player.countCards('hs','tao')<=1) return 0;
|
||||
if(target.hasSha()&&player.hp+player.countCards('h',function(card){
|
||||
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
|
||||
if(mod2!='unchanged') return mod2;
|
||||
var mod=game.checkMod(card,player,player,'unchanged','cardSavable',player);
|
||||
if(mod!='unchanged') return mod;
|
||||
var savable=get.info(card).savable;
|
||||
if(typeof savable=='function') savable=savable(card,player,player);
|
||||
return savable;
|
||||
})<=player.getStorage('dcmoyu_clear').length+1) return 0;
|
||||
return eff;
|
||||
}
|
||||
}
|
||||
|
@ -1147,16 +1160,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
targetInRange:function(card){
|
||||
if(card.storage&&card.storage.dcjieling) return true;
|
||||
},
|
||||
cardUsable:function(card,player,num){
|
||||
if(card.storage&&card.storage.dcjieling) return Infinity;
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
after:{
|
||||
trigger:{global:'useCardAfter'},
|
||||
forced:true,
|
||||
direct:true,
|
||||
charlotte:true,
|
||||
audio:'dcjieling',
|
||||
trigger:{global:'useCardAfter'},
|
||||
filter:function(event,player){
|
||||
return event.card.name=='sha'&&event.card.storage&&event.card.storage.dcjieling;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var damaged=game.hasPlayer2(current=>{
|
||||
|
@ -6459,10 +6475,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
mod:{
|
||||
targetInRange:function(card,player,target){
|
||||
for(var i=1;i<=5;i++){
|
||||
if(!player.hasDisabledSlot(i)) return false;
|
||||
}
|
||||
return true;
|
||||
if(!player.hasEnabledSlot()) return true;
|
||||
},
|
||||
},
|
||||
marktext:'萍',
|
||||
|
@ -10196,7 +10209,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcsigong_info:'其他角色的回合结束时,若其于本回合内使用牌被响应过,你可以将手牌摸至或弃置至1,视为对其使用一张需使用X张【闪】抵消的【杀】,且此【杀】的伤害基数+1(X为你以此法弃置的牌数且至少为1)。当你以此法造成伤害后,该技能于本轮失效。',
|
||||
peiyuanshao:'裴元绍',
|
||||
dcmoyu:'没欲',
|
||||
dcmoyu_info:'出牌阶段每名角色限一次。你可以获得一名其他角色区域里的一张牌,然后其可以对你使用一张【杀】,且此【杀】伤害基数为X(X为你于本回合发动此技能的次数)。若此【杀】对你造成了伤害,你令此技能于本回合失效。',
|
||||
dcmoyu_info:'出牌阶段每名角色限一次。你可以获得一名其他角色区域里的一张牌,然后其可以对你使用一张无距离限制的【杀】,且此【杀】伤害基数为X(X为你于本回合发动此技能的次数)。若此【杀】对你造成了伤害,你令此技能于本回合失效。',
|
||||
zhangchu:'张楚',
|
||||
dcjizhong:'集众',
|
||||
dcjizhong_info:'出牌阶段限一次。你可以令一名其他角色摸两张牌,然后其选择一项:1.若其没有“信众”标记,其获得“信众”标记;2.弃置三张手牌。',
|
||||
|
|
|
@ -29,13 +29,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//承
|
||||
jsrg_sunce:['male','wu',4,['jsrgduxing','jsrgzhiheng','jsrgzhasi','jsrgbashi'],['zhu']],
|
||||
jsrg_xuyou:['male','wei',3,['jsrglipan','jsrgqingxi','jsrgjinmie'],['doublegroup:wei:qun']],
|
||||
jsrg_lvbu:['male','qun',5,['jsrgwuchang','jsrgqingjiao','jsrgchengxu'],['doublegroup:qun:shu']],
|
||||
jsrg_zhanghe:['male','wei',4,['jsrgqiongtu','jsrgxianzhu'],['doublegroup:qun:wei']],
|
||||
jsrg_lvbu:['male','qun',5,['jsrgwuchang','jsrgqingjiao','jsrgchengxu'],['doublegroup:shu:qun']],
|
||||
jsrg_zhanghe:['male','wei',4,['jsrgqiongtu','jsrgxianzhu'],['doublegroup:wei:qun']],
|
||||
jsrg_zoushi:['female','qun',3,['jsrgguyin','jsrgzhangdeng']],
|
||||
jsrg_guanyu:['male','shu',5,['jsrgguanjue','jsrgnianen']],
|
||||
jsrg_guanyu:['male','shu',5,['jsrgguanjue','jsrgnianen'],['border:wei']],
|
||||
jsrg_chendeng:['male','qun',3,['jsrglunshi','jsrgguitu']],
|
||||
jsrg_zhenji:['female','qun',3,['jsrgjixiang','jsrgchengxian']],
|
||||
jsrg_zhangliao:['male','qun',4,['jsrgzhengbing','jsrgtuwei'],['doublegroup:qun:wei']],
|
||||
jsrg_zhangliao:['male','qun',4,['jsrgzhengbing','jsrgtuwei'],['doublegroup:wei:qun']],
|
||||
jsrg_xugong:['male','wu',3,['jsrgbiaozhao','jsrgyechou']],
|
||||
jsrg_chunyuqiong:['male','qun',4,['jsrgcangchu','jsrgshishou']],
|
||||
},
|
||||
|
@ -84,7 +84,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
order:5,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
player:function(player,target){
|
||||
var eff=Math.sign(get.effect(target,{name:'juedou'},player,player));
|
||||
if(player.hasSkillTag('directHit_ai',true,{
|
||||
target:target,
|
||||
|
@ -92,10 +92,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},true)||ui.selected.targets.concat(target).reduce((p,c)=>{
|
||||
return p+c.countCards('h');
|
||||
},0)<player.countCards('h','sha')){
|
||||
return -eff;
|
||||
return 0;
|
||||
}
|
||||
return eff;
|
||||
}
|
||||
return -114514;
|
||||
},
|
||||
target:-1.5,
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
|
@ -168,9 +169,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.addSkillLog('rezhiheng');
|
||||
player.addSkill('jsrgzhasi_undist');
|
||||
},
|
||||
derivation:'rezhiheng',
|
||||
subSkill:{
|
||||
undist:{
|
||||
inherit:'undist',
|
||||
group:'undist',
|
||||
charlotte:true,
|
||||
trigger:{
|
||||
player:['useCardAfter','damageEnd'],
|
||||
|
@ -301,7 +303,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}).set('choice',maxGroup);
|
||||
'step 1'
|
||||
var group=result.control;
|
||||
if(group=='cancel2')
|
||||
if(group=='cancel2') return;
|
||||
player.logSkill('jsrglipan');
|
||||
player.popup(group+'2',get.groupnature(group,'raw'));
|
||||
player.changeGroup(group);
|
||||
|
@ -575,6 +577,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.useCard({name:name},target,cards);
|
||||
player.addTempSkill('jsrgqingjiao_'+name,'phaseUseAfter');
|
||||
},
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
player:function(player,target){
|
||||
var name=(target.countCards('h')>player.countCards('h')?'tuixinzhifu':'chenghuodajie');
|
||||
var list=[];
|
||||
if(ui.selected.cards.length) list.addArray(ui.selected.cards);
|
||||
var card=get.autoViewAs({name:name},list);
|
||||
return get.effect(target,card,player,player);
|
||||
},
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
tuixinzhifu:{
|
||||
charlotte:true,
|
||||
|
@ -1240,7 +1254,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.asked=true;
|
||||
player.chooseButton([
|
||||
'###'+get.prompt('jsrgjixiang',trigger.player)+'###<div class="text center">'+str+'</div>',
|
||||
[listx,'vcard']
|
||||
[listx,'vcard'],
|
||||
]).set('ai',()=>Math.random()+1);
|
||||
}
|
||||
'step 1'
|
||||
|
@ -1248,6 +1262,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var name=result.links[0][2],nature=result.links[0][3];
|
||||
var card={name:name,nature:nature,isCard:true};
|
||||
event.card=card;
|
||||
var evt=trigger.getParent();
|
||||
var reason=(trigger.name=='chooseToUse'?'使用':'打出');
|
||||
var prompt=event.asked?
|
||||
'济乡:是否弃置一张牌'+(trigger.filterTarget?'并选择目标角色':'')+'?':
|
||||
|
@ -1467,8 +1482,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return player.group=='qun';
|
||||
},
|
||||
filterCard:lib.filter.cardRecastable,
|
||||
check:function(card,player){
|
||||
var val=5+['shan','tao'].contains(get.name(card))*1.5;
|
||||
check:function(card){
|
||||
var player=_status.event.player,val=5+['shan','tao'].contains(get.name(card))*1.5;
|
||||
if(player.needsToDiscard()>2&&get.name(card)=='sha'&&player.countCards('hs','sha')>1) val+=0.5;
|
||||
return val-get.value(card);
|
||||
},
|
||||
|
@ -1526,13 +1541,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('jsrgtuwei'),'获得攻击范围内任意名角色的各一张牌。然后回合结束时这些角色中未受过伤害的角色依次获得你的一张牌。',(card,player,target)=>{
|
||||
return player.inRange(current)&&target.countGainableCards(player,'he')>0;
|
||||
return player.inRange(target)&&target.countGainableCards(player,'he')>0;
|
||||
},[1,Infinity]).set('ai',target=>{
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,{name:'shunshou'},player,player);
|
||||
}).set('damage',player.hasCard(card=>{
|
||||
return player.hasValueTarget(card)&&get.tag(card,'damage');
|
||||
},'hs'));
|
||||
return get.effect(target,{name:'shunshou_copy2'},player,player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var targets=result.targets.slice();
|
||||
|
@ -1831,7 +1844,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
//江山如故·起
|
||||
sbyingmen:{
|
||||
forbid:['guozhan'],
|
||||
trigger:{
|
||||
global:'phaseBefore',
|
||||
player:'enterGame',
|
||||
|
@ -1880,8 +1892,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
addVisitors:function(characters,player){
|
||||
player.addSkillBlocker('sbyingmen');
|
||||
game.log(player,'将','#y'+get.translation(characters),'加入了','#g“访客”')
|
||||
lib.skill.rehuashen.drawCharacter(player,characters);
|
||||
game.log(player,'将','#y'+get.translation(characters),'加入了','#g“访客”');
|
||||
game.broadcastAll(function(player,characters){
|
||||
player.$draw(characters.map(function(name){
|
||||
var cardname='huashen_card_'+name;
|
||||
lib.card[cardname]={
|
||||
fullimage:true,
|
||||
image:'character:'+name
|
||||
};
|
||||
lib.translate[cardname]=get.rawName2(name);
|
||||
return game.createCard(cardname,' ',' ');
|
||||
}),'nobroadcast');
|
||||
},player,characters);
|
||||
player.markAuto('sbyingmen',characters)
|
||||
var storage=player.getStorage('sbyingmen');
|
||||
var skills=lib.skill.sbyingmen.getSkills(storage,player);
|
||||
|
@ -2807,7 +2829,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
locked:false,
|
||||
getNum:function(target,player){
|
||||
return target.countCards(card=>{
|
||||
return target.countCards('e',card=>{
|
||||
var subtype=get.subtypes(card);
|
||||
for(var i of subtype){
|
||||
if(player.hasDisabledSlot(i)) return true;
|
||||
|
@ -2883,6 +2905,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
});
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
'step 2'
|
||||
if(result.bool){event.finish();return;}
|
||||
var targets=game.filterPlayer(current=>{
|
||||
|
|
|
@ -6,23 +6,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
connect:true,
|
||||
characterSort:{
|
||||
mobile:{
|
||||
mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao","old_wanglang",'shichangshi'],
|
||||
mobile_default:['xin_guozhao',"miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao","old_wanglang",'shichangshi'],
|
||||
mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning",'yj_huangzhong','yj_weiyan'],
|
||||
mobile_sunben:["re_sunben"],
|
||||
mobile_standard:["xin_xiahoudun","xin_zhangfei"],
|
||||
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong","re_caiwenji","re_xunyu","re_dianwei","xin_zhoutai","re_yanwen",'re_zhangzhang'],
|
||||
mobile_shenhua_feng:['re_xiaoqiao',"xin_zhoutai"],
|
||||
mobile_shenhua_huo:["re_pangtong","re_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","xin_yuanshao"],
|
||||
mobile_shenhua_lin:["re_dongzhuo","re_sunjian","re_zhurong"],
|
||||
mobile_shenhua_shan:["re_liushan","re_dengai","re_jiangwei","re_caiwenji",'re_zhangzhang',"re_sunben"],
|
||||
mobile_shenhua_yin:['xin_sunliang'],
|
||||
mobile_shenhua_lei:["re_guanqiujian"],
|
||||
mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin","re_wuguotai","re_gaoshun",'re_caozhi'],
|
||||
mobile_yijiang2:["xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui","re_bulianshi"],
|
||||
mobile_yijiang3:["re_liru","xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"],
|
||||
mobile_yijiang4:["xin_zhoucang","xin_caifuren","xin_guyong","xin_sunluban","xin_caozhen","xin_jushou","xin_wuyi","xin_zhuhuan","re_chenqun"],
|
||||
mobile_yijiang5:['xin_sunxiu','xin_quancong','xin_zhuzhi','xin_caoxiu'],
|
||||
mobile_yijiang5:['xin_zhangyi','xin_sunxiu','xin_quancong','xin_zhuzhi','xin_caoxiu'],
|
||||
mobile_yijiang67:["re_jikang"],
|
||||
mobile_changshi:['scs_zhangrang','scs_zhaozhong','scs_sunzhang','scs_bilan','scs_xiayun','scs_hankui','scs_lisong','scs_duangui','scs_guosheng','scs_gaowang'],
|
||||
mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan","xin_hansui"],
|
||||
},
|
||||
},
|
||||
character:{
|
||||
shichangshi:['male','qun',1,['mbdanggu','mbmowang']],
|
||||
xin_guozhao:['female','wei',3,['yichong','wufei'],['unseen']],
|
||||
xin_zhangyi:['male','shu',4,['xinwurong','shizhi'],['unseen']],
|
||||
xin_sunliang:['male','wu',3,['xinzhizheng','xinkuizhu','xinlijun'],['zhu']],
|
||||
re_xiaoqiao:['female','wu',3,['retianxiang','xinhongyan']],
|
||||
shichangshi:['male','qun',1,['mbdanggu','mbmowang']],
|
||||
re_zhangzhang:['male','wu',3,['rezhijian','guzheng']],
|
||||
qianzhao:['male','wei',4,['mbshihe','mbzhenfu']],
|
||||
old_wanglang:['male','wei',3,['gushe','jici']],
|
||||
|
@ -386,6 +394,377 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//郭照
|
||||
yichong:{
|
||||
init:function(player){
|
||||
if(!lib.skill['yichong_'+player.playerid]){
|
||||
lib.skill['yichong_'+player.playerid]={
|
||||
onremove:true,
|
||||
mark:true,
|
||||
marktext:'雀',
|
||||
intro:{
|
||||
markcount:function(storage){
|
||||
return (storage||0).toString();
|
||||
},
|
||||
content:function(storage){
|
||||
return '已被掠夺'+(storage||0)+'张牌';
|
||||
},
|
||||
},
|
||||
};
|
||||
lib.translate['yichong_'+player.playerid]='易宠';
|
||||
lib.translate['yichong_'+player.playerid+'_bg']='雀';
|
||||
}
|
||||
},
|
||||
audio:2,
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('meihun'),'选择一名其他角色并选择一个花色,获得其此花色的所有牌并令其获得“雀”标记',lib.filter.notMe).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
var att=get.attitude(player,target);
|
||||
if(att>0) return 0;
|
||||
var getNum=function(player){
|
||||
var list=[];
|
||||
for(var i of lib.suit) list.push((player.countCards('he',{suit:i})+3));
|
||||
return list.sort((a,b)=>b-a)[0];
|
||||
};
|
||||
return getNum(target)+target.countCards('h')/10;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('yichong',target);
|
||||
event.target=target;
|
||||
player.chooseControl(lib.suit.slice(0).reverse()).set('prompt','请声明一个花色').set('ai',function(){
|
||||
var target=_status.event.target,cards=target.getCards('he');
|
||||
var suits=lib.suit.slice(0);
|
||||
suits.sort(function(a,b){
|
||||
var num=function(suit){
|
||||
return cards.filter(function(card){
|
||||
return get.suit(card)==suit;
|
||||
}).length;
|
||||
};
|
||||
return num(b)-num(a);
|
||||
});
|
||||
return suits[0];
|
||||
}).set('target',target);
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
var suit=result.control;
|
||||
player.chat(get.translation(suit+2));
|
||||
game.log(player,'选择了','#y'+get.translation(suit+2));
|
||||
player.storage.yichong=suit;
|
||||
player.markSkill('yichong');
|
||||
game.broadcastAll(function(player,suit){
|
||||
if(player.marks.yichong) player.marks.yichong.firstChild.innerHTML=get.translation(suit);
|
||||
},player,suit)
|
||||
if(target.countCards('he',{suit:suit})) player.gain(target.getCards('he',{suit:suit}),target,'giveAuto');
|
||||
game.countPlayer(function(current){
|
||||
current.removeSkill('yichong_'+player.playerid);
|
||||
if(current==target) target.addSkill('yichong_'+player.playerid);
|
||||
});
|
||||
player.addTempSkill('yichong_clear',{player:'phaseBegin'});
|
||||
},
|
||||
onremove:true,
|
||||
intro:{content:'拥有“雀”标记的角色获得$牌后,你获得之'},
|
||||
group:'yichong_gain',
|
||||
subSkill:{
|
||||
gain:{
|
||||
audio:'yichong',
|
||||
trigger:{global:['gainAfter','loseAsyncAfter']},
|
||||
filter:function(event,player){
|
||||
if(!player.storage.yichong) return false;
|
||||
return game.hasPlayer(function(current){
|
||||
if(!event.getg(current).length||!current.hasSkill('yichong_'+player.playerid)) return false;
|
||||
if(current.countMark('yichong_'+player.playerid)>=5) return false;
|
||||
return event.getg(current).some(card=>get.suit(card,current)==player.storage.yichong&&lib.filter.canBeGained(card,current,player));
|
||||
});
|
||||
},
|
||||
forced:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var target=game.findPlayer(function(current){
|
||||
if(!trigger.getg(current).length||!current.hasSkill('yichong_'+player.playerid)) return false;
|
||||
if(current.countMark('yichong_'+player.playerid)>=5) return false;
|
||||
return trigger.getg(current).some(card=>get.suit(card,current)==player.storage.yichong&&lib.filter.canBeGained(card,current,player));
|
||||
});
|
||||
event.target=target;
|
||||
var cards=trigger.getg(target).filter(card=>get.suit(card,target)==player.storage.yichong&&lib.filter.canBeGained(card,target,player));
|
||||
if(cards.length<=5-target.countMark('yichong_'+player.playerid)) event._result={bool:true,links:cards};
|
||||
else{
|
||||
var num=(5-target.countMark('yichong_'+player.playerid));
|
||||
player.chooseButton(['易宠:获得其中的'+get.cnNumber(num)+'张牌',cards],num,true).set('ai',function(button){
|
||||
return get.value(button.link);
|
||||
});
|
||||
}
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.gain(result.links,target,'give');
|
||||
target.addMark('yichong_'+player.playerid,result.links.length,false);
|
||||
}
|
||||
},
|
||||
},
|
||||
clear:{
|
||||
charlotte:true,
|
||||
onremove:function(player){
|
||||
game.countPlayer(function(current){
|
||||
current.removeSkill('yichong_'+player.playerid);
|
||||
});
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
wufei:{
|
||||
audio:2,
|
||||
trigger:{player:['useCardToPlayered','damageEnd']},
|
||||
filter:function(event,player){
|
||||
var target=game.findPlayer(current=>current.hasSkill('yichong_'+player.playerid));
|
||||
if(!target) return false;
|
||||
if(event.name=='damage') return target.hp>Math.max(1,player.hp);
|
||||
return event.isFirstTarget&&(event.card.name=='sha'||(get.type(event.card)=='trick'&&get.tag(event.card,'damage')));
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var target=game.findPlayer(current=>current.hasSkill('yichong_'+player.playerid));
|
||||
event.target=target;
|
||||
if(trigger.name=='damage'){
|
||||
player.chooseBool(get.prompt('wufei',target),'对'+get.translation(target)+'造成1点伤害').set('choice',get.damageEffect(target,player,player)>0);
|
||||
}
|
||||
else{
|
||||
player.logSkill('wufei',target);
|
||||
player.addTempSkill('wufei_effect');
|
||||
player.markAuto('wufei_effect',[trigger.card]);
|
||||
game.log(target,'成为了',trigger.card,'的伤害来源');
|
||||
event.finish();
|
||||
}
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('wufei',target);
|
||||
target.damage();
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
charlotte:true,
|
||||
trigger:{source:'damageBefore'},
|
||||
filter:function(event,player){
|
||||
if(!event.card) return false;
|
||||
return player.getStorage('wufei_effect').contains(event.card);
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
firstDo:true,
|
||||
content:function(){
|
||||
var target=game.findPlayer(current=>current.hasSkill('yichong_'+player.playerid));
|
||||
if(!target) delete trigger.source;
|
||||
else trigger.source=target;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//张嶷
|
||||
xinwurong:{
|
||||
audio:3,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterTarget:lib.filter.notMe,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseToDuiben(target).set('title','谋弈').set('namelist',[
|
||||
'反抗','归顺','镇压','安抚'
|
||||
]).set('ai',button=>1+Math.random());
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
if(result.player=='db_def1'){
|
||||
target.damage();
|
||||
player.draw();
|
||||
event.finish();
|
||||
}
|
||||
else{
|
||||
var cards=target.getCards('he');
|
||||
if(cards.length<2){
|
||||
target.skip('phaseDraw');
|
||||
target.addTempSkill('xinwurong_skip',{player:'phaseDrawSkipped'});
|
||||
event.finish();
|
||||
}
|
||||
else if(cards.length==2) event._result={bool:true,cards:cards};
|
||||
else target.chooseCard('怃戎:交给'+get.translation(player)+'两张牌',2,true,'he');
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(result.player=='db_def1'){
|
||||
player.gainPlayerCard(target,'he',true);
|
||||
event.goto(3);
|
||||
}
|
||||
else{
|
||||
player.damage();
|
||||
player.draw(2);
|
||||
event.finish();
|
||||
}
|
||||
}
|
||||
'step 2'
|
||||
if(result.bool) player.gain(result.cards,target,'giveAuto');
|
||||
event.finish();
|
||||
'step 3'
|
||||
var cards=player.getCards('he');
|
||||
if(!cards.length) event.finish();
|
||||
else if(cards.length<=2) event._result={bool:true,cards:cards};
|
||||
else player.chooseCard('怃戎:交给'+get.translation(target)+'两张牌',2,true,'he');
|
||||
'step 4'
|
||||
if(result.bool) target.gain(result.cards,player,'giveAuto');
|
||||
},
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
player:1,
|
||||
target:-1,
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
skip:{
|
||||
charlotte:true,
|
||||
mark:true,
|
||||
intro:{content:'跳过下个摸牌阶段'},
|
||||
},
|
||||
},
|
||||
},
|
||||
//孙亮
|
||||
xinkuizhu:{
|
||||
audio:'nzry_kuizhu',
|
||||
trigger:{player:'phaseDiscardAfter'},
|
||||
filter:function(event,player){
|
||||
return player.getHistory('lose',function(evt){
|
||||
return evt.type=='discard'&&evt.getParent('phaseDiscard')==event;
|
||||
}).length;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=[];
|
||||
player.getHistory('lose',function(evt){
|
||||
if(evt.type=='discard'&&evt.getParent('phaseDiscard')==trigger) cards.addArray(evt.cards2);
|
||||
});
|
||||
event.num=cards.length;
|
||||
event.str1='令至多'+event.num+'名角色摸一张牌';
|
||||
event.str2='对任意名体力值之和为'+event.num+'的角色造成1点伤害';
|
||||
player.chooseControl('cancel2').set('ai',function(){
|
||||
if(game.countPlayer(function(current){return get.attitude(player,current)<0&¤t.hp==event.num})>0&&event.num<=3) return 1;
|
||||
return 0;
|
||||
}).set('choiceList',[event.str1,event.str2]).set('prompt','是否发动【溃诛】?');
|
||||
'step 1'
|
||||
if(result.control=='cancel2') event.finish();
|
||||
event.control=[event.str1,event.str2][result.index];
|
||||
'step 2'
|
||||
var str='请选择〖溃诛〗的目标';
|
||||
if(event.bool==false) str='<br>所选目标体力之和不足'+event.num+',请重选';
|
||||
if(event.control==event.str2){
|
||||
player.chooseTarget(str,function(card,player,target){
|
||||
var targets=ui.selected.targets;
|
||||
var num=0;
|
||||
for(var i=0;i<targets.length;i++) num+=targets[i].hp;
|
||||
return num+target.hp<=_status.event.num;
|
||||
}).set('ai',function(target){
|
||||
if(ui.selected.targets[0]!=undefined) return -1;
|
||||
return get.attitude(player,target)<0;
|
||||
}).set('promptbar','none').set('num',event.num).set('selectTarget',function(){
|
||||
var targets=ui.selected.targets;
|
||||
var num=0;
|
||||
for(var i=0;i<targets.length;i++) num+=targets[i].hp;
|
||||
if(num==_status.event.num) return ui.selected.targets.length;
|
||||
return ui.selected.targets.length+1;
|
||||
});
|
||||
}
|
||||
else{
|
||||
player.chooseTarget('请选择〖溃诛〗的目标','令至多'+get.cnNumber(event.num)+'名角色各摸一张牌',[1,event.num]).set('ai',function(target){
|
||||
return get.attitude(_status.event.player,target);
|
||||
});
|
||||
}
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var targets=result.targets.sortBySeat();
|
||||
if(event.control==event.str1){
|
||||
player.logSkill('xinkuizhu',targets);
|
||||
game.asyncDraw(targets);
|
||||
}
|
||||
else{
|
||||
var num=0;
|
||||
for(var i=0;i<targets.length;i++) num+=targets[i].hp;
|
||||
if(num<event.num){
|
||||
event.bool=false;
|
||||
event.goto(2);
|
||||
}
|
||||
else{
|
||||
player.logSkill('xinkuizhu',targets);
|
||||
for(var i of targets) i.damage();
|
||||
if(targets.length>=2) player.loseHp();
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
xinzhizheng:{
|
||||
audio:'nzry_zhizheng',
|
||||
mod:{
|
||||
playerEnabled:function(card,player,target){
|
||||
var info=get.info(card);
|
||||
if(target!=player&&(!info||!info.singleCard||!ui.selected.targets.length)&&player.isPhaseUsing()&&!target.inRange(player)) return false;
|
||||
},
|
||||
},
|
||||
trigger:{player:'phaseUseEnd'},
|
||||
filter:function(event,player){
|
||||
return player.getHistory('useCard',function(evt){
|
||||
return evt.getParent('phaseUse')==event;
|
||||
}).length<game.countPlayer(function(current){
|
||||
return current!=player&&!current.inRange(player);
|
||||
})&&game.hasPlayer(function(target){
|
||||
return target!=player&&!target.inRange(player)&&target.countDiscardableCards(player,'he');
|
||||
});
|
||||
},
|
||||
forced:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget('请选择〖掣政〗的目标','弃置一名攻击范围内不包含你的角色的一张牌',true,function(card,player,target){
|
||||
return target!=player&&!target.inRange(player)&&target.countDiscardableCards(player,'he');
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,{name:'guohe_copy2'},player,player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.line(result.targets);
|
||||
player.discardPlayerCard(result.targets[0],'he',true);
|
||||
}
|
||||
},
|
||||
},
|
||||
xinlijun:{
|
||||
unique:true,
|
||||
audio:'nzry_lijun1',
|
||||
trigger:{global:'useCardAfter'},
|
||||
filter:function(event,player){
|
||||
if(event.card.name!='sha') return false;
|
||||
if(_status.currentPhase!=event.player||event.player.group!='wu') return false;
|
||||
if(!player.hasZhuSkill('xinlijun',event.player)||player==event.player) return false;
|
||||
return event.cards.filterInD().length;
|
||||
},
|
||||
zhuSkill:true,
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
trigger.player.chooseBool(get.prompt('xinlijun'),'将'+get.translation(trigger.cards)+'交给'+get.translation(player)).set('choice',get.attitude(trigger.player,player)>0);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('xinlijun',trigger.player);
|
||||
player.gain(trigger.cards.filterInD(),'gain2');
|
||||
player.chooseBool().set('prompt','是否令'+get.translation(trigger.player)+'摸一张牌?').set('choice',get.attitude(player,trigger.player)>0);
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.bool) trigger.player.draw();
|
||||
},
|
||||
},
|
||||
//十常侍
|
||||
mbdanggu:{
|
||||
audio:2,
|
||||
|
@ -3007,7 +3386,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var cards=player.getExpansions(skill);
|
||||
if(cards.length) player.loseToDiscardpile(cards);
|
||||
},
|
||||
marktext:'六',
|
||||
marktext:'经',
|
||||
intro:{
|
||||
name:'六经',
|
||||
markcount:'expansion',
|
||||
|
@ -3026,11 +3405,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
group:'chengye_gain',
|
||||
subSkill:{
|
||||
gain:{
|
||||
audio:'chengye',
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player.getExpansions('chengye').length>=6;
|
||||
},
|
||||
forced:true,
|
||||
content:function(){
|
||||
player.gain(player.getExpansions('chengye'),'gain2');
|
||||
},
|
||||
|
@ -6487,21 +6867,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
tianshu:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
filter:function(event,player){
|
||||
return player.countCards('he')>0&&!game.hasPlayer(function(current){
|
||||
return player.countCards('he')&&!game.hasPlayer(function(current){
|
||||
return current.countCards('ej','taipingyaoshu');
|
||||
});
|
||||
},
|
||||
position:'he',
|
||||
filterCard:true,
|
||||
filterTarget:true,
|
||||
check:function(card){
|
||||
return 6-get.value(card);
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseCardTarget({
|
||||
prompt:get.prompt2('tianshu'),
|
||||
filterCard:true,
|
||||
position:'he',
|
||||
ai1:function(card){
|
||||
return 5-get.value(card);
|
||||
},
|
||||
ai2:function(target){
|
||||
var player=_status.event.player;
|
||||
if(get.attitude(player,target)>0&&!target.hasEmptySlot(2)) return 0;
|
||||
return get.attitude(player,target);
|
||||
},
|
||||
});
|
||||
'step 1'
|
||||
if(!result.bool){event.finish();return;}
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('tianshu',target);
|
||||
player.discard(result.cards);
|
||||
if(!lib.inpile.contains('taipingyaoshu')){
|
||||
lib.inpile.push('taipingyaoshu');
|
||||
event.card=game.createCard2('taipingyaoshu','heart',3);
|
||||
|
@ -6513,20 +6906,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
if(!event.card) event.finish();
|
||||
else target.gain(event.card,'gain2');
|
||||
'step 1'
|
||||
'step 2'
|
||||
if(target.getCards('h').contains(card)&&get.name(card,target)=='taipingyaoshu') target.chooseUseTarget(card,'nopopup',true);
|
||||
},
|
||||
ai:{
|
||||
order:3,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(lib.inpile.contains('taipingyaoshu')&&!get.cardPile(function(card){
|
||||
return card.name=='taipingyaoshu';
|
||||
})) return 0;
|
||||
return target.getUseValue({name:'taipingyaoshu'});
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//界伏寿
|
||||
xinzhuikong:{
|
||||
|
@ -6652,9 +7034,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var source=event.source;
|
||||
if(!source) return false;
|
||||
var cards=source.getEquips(1);
|
||||
return cards.length&&cards.some(card=>lib.filter.canBeGained(card,player,source));
|
||||
return cards.some(card=>lib.filter.canBeGained(card,player,source));
|
||||
},
|
||||
prompt2:function(event){
|
||||
prompt2:function(event,player){
|
||||
var source=event.source;
|
||||
var cards=source.getEquips(1).filter(card=>lib.filter.canBeGained(card,player,source));
|
||||
return '获得其装备区中的'+get.translation(cards);
|
||||
|
@ -7538,6 +7920,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:3,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(function(target){
|
||||
return lib.skill.beizhu.filterTarget(null,player,target);
|
||||
});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.countCards('h')>0;
|
||||
},
|
||||
|
@ -7551,12 +7938,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.cards=cards;
|
||||
event.goto(5);
|
||||
}
|
||||
else player.discardPlayerCard('he',target,true);
|
||||
else player.discardPlayerCard('he',target,'visible',true);
|
||||
'step 2'
|
||||
player.chooseBool('是否令'+get.translation(target)+'获得一张【杀】?').set('ai',function(){
|
||||
var evt=_status.event.getParent();
|
||||
return get.attitude(evt.player,evt.target)>0;
|
||||
});
|
||||
player.chooseBool('是否令'+get.translation(target)+'获得一张【杀】?').set('choice',get.attitude(player,target)>0);
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var card=get.cardPile2(function(card){
|
||||
|
@ -7583,6 +7967,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.redo();
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:7,
|
||||
threaten:1.14+5.14,
|
||||
result:{
|
||||
player:function(player,target){
|
||||
var eff=get.effect(target,{name:'guohe_copy2'},player,player);
|
||||
var cards=target.getCards('h',{name:'sha'});
|
||||
if(!cards.length) return eff;
|
||||
return eff/(cards.length+3);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
beizhu_draw:{
|
||||
trigger:{player:'damageEnd'},
|
||||
|
@ -13371,8 +13767,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//伊吹 风子
|
||||
qiaosi_c6:'<img src="'+lib.assetURL+'image/card/qiaosi_card6.png" width="60" height="60"> ',
|
||||
//仲村 由理
|
||||
mobile_sunben:'那个男人',
|
||||
//孙笨
|
||||
|
||||
yangbiao:'手杀杨彪',
|
||||
zhaohan:'昭汉',
|
||||
|
@ -13559,7 +13953,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yufeng2:'御风',
|
||||
yufeng_info:'出牌阶段限一次,你可以表演“御风飞行”。若表演失败,则你摸X张牌。若表演成功,则你可以选择至多X名其他角色获得“御风”效果,然后摸X-Y张牌(准备阶段开始时,你进行判定。若结果为:红色,你跳过摸牌阶段;黑色,你跳过出牌阶段和弃牌阶段。X为你的得分。Y为你选择的角色数)。',
|
||||
tianshu:'天书',
|
||||
tianshu_info:'出牌阶段限一次,若场上没有【太平要术】,则你可以弃置一张牌并选择一名角色。该角色获得并使用【太平要术】。',
|
||||
tianshu_info:'出牌阶段开始时,若场上没有【太平要术】,则你可以弃置一张牌并选择一名角色。该角色获得并使用【太平要术】。',
|
||||
re_jiangwei:'手杀姜维',
|
||||
retiaoxin:'挑衅',
|
||||
retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。',
|
||||
|
@ -13816,10 +14210,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
scsanruo_info:'你可以将一张♥牌当【桃】、♦牌当火【杀】、♣牌当【闪】、♠牌当【无懈可击】使用。当你以此法使用或打出【杀】或【闪】时,你可以获得对方的一张牌;当你以此法使用【桃】时,你可以获得一名其他角色的一张牌;当你以此法使用【无懈可击】时,你可以获得此牌响应的普通锦囊牌的使用者的一张牌。',
|
||||
scsmiaoyu:'妙语',
|
||||
scsmiaoyu_info:'你可以将至多两张相同花色的牌按照以下规则使用或打出:♦牌当作火【杀】,♥牌当作【桃】,♣牌当作【闪】,♠牌当作【无懈可击】。若你以此法使用了两张红色牌,则此牌回复值或伤害值+1。若你以此法使用了两张黑色牌,则你弃置当前回合角色一张牌。',
|
||||
|
||||
re_xiaoqiao:'手杀小乔',
|
||||
xin_sunliang:'手杀孙亮',
|
||||
xinkuizhu:'溃诛',
|
||||
xinkuizhu_info:'弃牌阶段结束后,你可以选择一项:1.令至多X名角色各摸一张牌。2.对任意名体力值之和为X的角色造成1点伤害,若你以此法选择的角色数不小于2,你失去1点体力。(X为你此阶段弃置的牌数)',
|
||||
xinzhizheng:'掣政',
|
||||
xinzhizheng_info:'锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色的数量,则你弃置其中一名角色的一张牌。',
|
||||
xinlijun:'立军',
|
||||
xinlijun_info:'主公技,其他吴势力角色于其回合内使用【杀】结算完毕后,其可以将此【杀】对应的实体牌交给你,然后你可以令其摸一张牌。',
|
||||
xin_zhangyi:'手杀张嶷',
|
||||
xinwurong:'怃戎',
|
||||
xinwurong_info:'出牌阶段限一次,你可以与一名其他角色进行谋弈:<br><li>若你选择“镇压”且其选择“反抗”,你对其造成1点伤害,然后你摸一张牌。<br><li>若你选择“安抚”且其选择“归顺”,其须交给你两张牌(若其手牌数不足两张,则改为令其跳过其下个摸牌阶段)。<br><li>若你选择“镇压”且其选择“归顺”,你获得其一张牌,然后你交给其两张牌。<br><li>若你选择“安抚”且其选择“反抗”,你受到1点伤害,然后你摸两张牌。',
|
||||
xin_guozhao:'手杀郭照',
|
||||
yichong:'易宠',
|
||||
yichong_info:'①准备阶段,你可以选择一名其他角色并选择一个花色,然后你获得其所有此花色的牌,移除场上的所有“雀”标记,令其获得“雀”标记直到你的下个回合开始。②拥有“雀”标记的角色获得你最后一次发动〖易宠①〗选择的花色的牌后,你获得这些牌(你至多通过每个“雀”获得五张牌)。',
|
||||
wufei:'诬诽',
|
||||
wufei_info:'若场上存在拥有“雀”标记的角色A,则:①当你使用【杀】或伤害类锦囊牌指定第一个目标后,你令A成为此牌伤害来源。②当你受到伤害后,若A的体力值大于1且A的体力值大于你,则你可以对A造成1点伤害。',
|
||||
|
||||
mobile_standard:'手杀异构·标准包',
|
||||
mobile_shenhua:'手杀异构·神话再临',
|
||||
mobile_shenhua_feng:'手杀异构·其疾如风',
|
||||
mobile_shenhua_huo:'手杀异构·侵掠如火',
|
||||
mobile_shenhua_lin:'手杀异构·其徐如林',
|
||||
mobile_shenhua_shan:'手杀异构·不动如山',
|
||||
mobile_shenhua_yin:'手杀异构·难知如阴',
|
||||
mobile_shenhua_lei:'手杀异构·动如雷霆',
|
||||
mobile_yijiang1:'手杀异构·将1',
|
||||
mobile_yijiang2:'手杀异构·将2',
|
||||
mobile_yijiang3:'手杀异构·将3',
|
||||
|
|
|
@ -3647,12 +3647,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
result:{player:1},
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(card&&get.type(card)=='equip'&&_status.event.skill=='_yongjian_zengyu') return 0;
|
||||
if(card&&get.type(card)=='equip'&&_status.event.skill=='_gifting') return 0;
|
||||
},
|
||||
},
|
||||
},
|
||||
mod:{
|
||||
cardZengyuable:function(card,player){
|
||||
cardGiftable:function(card,player){
|
||||
return get.type(card)=='equip';
|
||||
}
|
||||
}
|
||||
|
@ -3786,19 +3786,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
//群曹操
|
||||
yjxiandao:{
|
||||
trigger:{player:'_yongjian_zengyuEnd'},
|
||||
trigger:{player:'giftAccepted'},
|
||||
usable:1,
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return !event._zengyu_denied&&event.target.isIn();
|
||||
},
|
||||
filter:(event,player)=>event.target!=player&&event.target.isIn(),
|
||||
logTarget:'target',
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.target=trigger.target;
|
||||
event.card=trigger.cards[0];
|
||||
event.target.markAuto('yjxiandao',[get.suit(event.card,false)])
|
||||
event.card=trigger.card;
|
||||
event.target.markAuto('yjxiandao_block',[get.suit(event.card,false)]);
|
||||
event.target.addTempSkill('yjxiandao_block');
|
||||
'step 1'
|
||||
var type=get.type(card,false);
|
||||
|
@ -3859,14 +3857,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
player.line(result.targets[0],'green');
|
||||
var next=game.createEvent('_yongjian_zengyu');
|
||||
next.player=player;
|
||||
next.target=result.targets[0];
|
||||
next.cards=result.cards;
|
||||
next.setContent(lib.skill._yongjian_zengyu.content);
|
||||
var target=result.targets[0];
|
||||
player.line(target,'green');
|
||||
player.gift(result.cards,target);
|
||||
}
|
||||
},
|
||||
}
|
||||
},
|
||||
yjyibing:{
|
||||
trigger:{
|
||||
|
@ -3875,7 +3870,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(event.getParent().name=='_yongjian_zengyu') return false;
|
||||
if(event.getParent().name=='gift') return false;
|
||||
if(event.getParent('yjyibing').player==player) return false;
|
||||
var evt=event.getParent('phaseDraw'),hs=player.getCards('h'),cards=event.getg(player);
|
||||
return cards.length>0&&(!evt||evt.player!=player)&&cards.filter(function(card){
|
||||
|
@ -6403,11 +6398,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//用间
|
||||
yj_caocao:'SP曹操',
|
||||
yjxiandao:'献刀',
|
||||
yjxiandao_info:'每回合限一次。当你对其他角色发动〖赠予〗后,你令其不能使用或打出与本次赠予移动的牌A花色相同的牌直到回合结束。然后若牌A:为锦囊牌,你摸两张牌。为装备牌,你获得其一张不为A的牌。为武器牌,你对其造成1点伤害。',
|
||||
yjxiandao_info:'每回合限一次。当你赠予其他角色一张牌后,你令其不能使用或打出与本次赠予移动的牌A花色相同的牌直到回合结束。然后若牌A:为锦囊牌,你摸两张牌。为装备牌,你获得其一张不为A的牌。为武器牌,你对其造成1点伤害。',
|
||||
yjsancai:'散财',
|
||||
yjsancai_info:'出牌阶段限一次,你可以展示所有手牌。若这些牌的类别均相同,则你可以发动一次〖赠予〗(可以选择任意手牌)。',
|
||||
yjsancai_info:'出牌阶段限一次,你可以展示所有手牌。若这些牌的类别均相同,则你可以赠予一名其他角色一张手牌。',
|
||||
yjyibing:'义兵',
|
||||
yjyibing_info:'当你不因〖赠予〗且不因〖义兵〗的嵌套结算而于摸牌阶段外获得牌时,你可以将此次获得的所有牌当做【杀】使用(无距离限制且不计入使用次数)。',
|
||||
yjyibing_info:'当你不因赠予且不因〖义兵〗的嵌套结算而于摸牌阶段外获得牌时,你可以将此次获得的所有牌当做【杀】使用(无距离限制且不计入使用次数)。',
|
||||
yj_caohong:'用间曹洪',
|
||||
yj_caohong_ab:'曹洪',
|
||||
yjlifeng:'厉锋',
|
||||
|
|
|
@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
characterSort:{
|
||||
old:{
|
||||
old_standard:['ol_yuanshu'],
|
||||
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","xiaoqiao","pangde","xuhuang",'junk_sunquan',"huangzhong","new_caoren",'old_chendao'],
|
||||
old_shenhua:["yuji","zhangjiao","old_zhugezhan","old_guanqiujian","xiahouyuan","weiyan","old_xiaoqiao","pangde","xuhuang",'junk_sunquan',"huangzhong","new_caoren",'old_chendao'],
|
||||
old_refresh:["old_zhangfei","old_huatuo","old_zhaoyun","ol_huaxiong",'old_re_lidian'],
|
||||
old_yijiang1:["masu","xushu","xin_yujin","old_xusheng","old_lingtong","fazheng",'old_gaoshun'],
|
||||
old_yijiang2:["old_zhonghui","madai",'old_handang','old_liubiao','oldre_liubiao','old_guanzhang'],
|
||||
|
@ -45,7 +45,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
pangde:['male','qun',4,['mashu','mengjin']],
|
||||
ol_huaxiong:["male","qun",6,["new_reyaowu"]],
|
||||
old_wangyun:['male','qun',4,['wylianji','moucheng'],['clan:太原王氏']],
|
||||
xiaoqiao:['female','wu',3,['tianxiang','hongyan']],
|
||||
old_xiaoqiao:['female','wu',3,['tianxiang','hongyan']],
|
||||
weiyan:['male','shu',4,['kuanggu']],
|
||||
xiahouyuan:['male','wei',4,['shensu']],
|
||||
old_huangfusong:['male','qun',4,['fenyue']],
|
||||
|
@ -61,7 +61,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
jsp_caoren:['male','wei',4,['kuiwei','yanzheng']],
|
||||
old_caochun:['male','wei',4,['shanjia']],
|
||||
masu:['male','shu',3,['xinzhan','huilei']],
|
||||
xushu:['male','shu',3,['xswuyan','jujian']],
|
||||
xushu:['male','shu',3,['xswuyan','jujian'],['border:wei']],
|
||||
liru:['male','qun',3,['juece','mieji','fencheng']],
|
||||
xin_yujin:['male','wei',4,['jieyue']],
|
||||
//lusu:['male','wu',3,['haoshi','dimeng']],
|
||||
|
@ -971,6 +971,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
old_zhaoyun:'新杀赵云',
|
||||
old_zhaoyun_ab:'赵云',
|
||||
ol_huaxiong:'旧华雄',
|
||||
old_xiaoqiao:'旧小乔',
|
||||
|
||||
old_guhuo:"蛊惑",
|
||||
old_guhuo_info:"你可以扣置一张手牌当做一张基本牌或普通锦囊牌使用或打出,体力值不为0的其他角色依次选择是否质疑。然后,若有质疑的角色,你展示此牌:若为假,此牌作废,这些角色摸一张牌;若为真,这些角色失去1点体力,且若此牌不为♥,此牌作废。",
|
||||
|
|
123
character/sb.js
123
character/sb.js
|
@ -5,13 +5,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:'sb',
|
||||
connect:true,
|
||||
character:{
|
||||
sb_zhanghe:['male','wei',4,['sbqiaobian'],['unseen']],
|
||||
sb_yujin:['male','wei',4,['sbxiayuan','sbjieyue']],
|
||||
sb_huaxiong:['male','qun','3/4/1',['new_reyaowu','sbyangwei']],
|
||||
liucheng:['female','qun',3,['splveying','spyingwu']],
|
||||
sp_yangwan:['female','qun',3,['spmingxuan','spxianchou']],
|
||||
sb_huangzhong:['male','shu',4,['sbliegong']],
|
||||
sb_lvmeng:['male','wu',4,['sbkeji','sbdujiang']],
|
||||
sb_sunshangxiang:['female','shu',4,['sbjieyin','sbliangzhu','sbxiaoji']],
|
||||
sb_sunshangxiang:['female','shu',4,['sbjieyin','sbliangzhu','sbxiaoji'],['border:wu']],
|
||||
sb_sunquan:['male','wu',4,['sbzhiheng','sbtongye','sbjiuyuan'],['zhu']],
|
||||
sb_huanggai:['male','wu',4,['sbkurou','sbzhaxiang']],
|
||||
sb_zhouyu:['male','wu',3,['sbyingzi','sbfanjian']],
|
||||
|
@ -48,6 +49,103 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
skill:{
|
||||
//张郃
|
||||
sbqiaobian:{
|
||||
audio:2,
|
||||
trigger:{player:['phaseJudgeBefore','phaseDrawBefore','phaseUseBefore']},
|
||||
filter:function(event,player){
|
||||
if(event.name=='phaseJudge') return player.countCards('j');
|
||||
return event.name!='phaseUse'||player.countCards('h')>6;
|
||||
},
|
||||
usable:1,
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
switch(trigger.name){
|
||||
case 'phaseJudge':
|
||||
player.chooseTarget(get.prompt('sbqiaobian'),'失去1点体力并跳过判定阶段,将判定区里的牌移动给一名其他角色',lib.filter.notMe).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
if(player.hp+player.countCards('h',function(card){
|
||||
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
|
||||
if(mod2!='unchanged') return mod2;
|
||||
var mod=game.checkMod(card,player,player,'unchanged','cardSavable',player);
|
||||
if(mod!='unchanged') return mod;
|
||||
var savable=get.info(card).savable;
|
||||
if(typeof savable=='function') savable=savable(card,player,player);
|
||||
return savable;
|
||||
})<=1) return 0;
|
||||
var eff=0;
|
||||
for(var card of player.getCards('j')){
|
||||
var cardx;
|
||||
if(card.viewAs) cardx=get.autoViewAs({name:card.viewAs},[card]);
|
||||
else cardx=card;
|
||||
if(target.canAddJudge(cardx)) eff+=get.effect(target,cardx,player,player);
|
||||
else eff-=get.attitude(player,target)/114514;
|
||||
}
|
||||
return eff;
|
||||
}).setHiddenSkill('sbqiaobian');
|
||||
break;
|
||||
case 'phaseDraw':
|
||||
player.chooseBool(get.prompt('sbqiaobian'),'跳过摸牌阶段,于下个准备阶段摸两张牌并回复1点体力').setHiddenSkill('sbqiaobian');
|
||||
break;
|
||||
case 'phaseUse':
|
||||
var num=(player.countCards('h')-6);
|
||||
player.chooseToDiscard(get.prompt('sbqiaobian'),num,'弃置'+get.cnNumber(num)+'张手牌并跳过出牌阶段和弃牌阶段,然后移动场上的一张牌').set('ai',function(card){
|
||||
var player=_status.event.player;
|
||||
if(!player.canMoveCard(true)||player.countCards('hs',card=>player.hasValueTarget(card))>=9) return 0;
|
||||
return 7-get.value(card);
|
||||
}).setHiddenSkill('sbqiaobian').logSkill='sbqiaobian';
|
||||
break;
|
||||
}
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
trigger.cancel();
|
||||
switch(trigger.name){
|
||||
case 'phaseJudge':
|
||||
var target=result.targets[0];
|
||||
player.logSkill('sbqiaobian',target);
|
||||
player.loseHp();
|
||||
game.log(player,'跳过了判定阶段');
|
||||
for(var card of player.getCards('j')){
|
||||
if(target.canAddJudge(card)){
|
||||
player.$give(card,target,false);
|
||||
if(card.viewAs) target.addJudge({name:card.viewAs},[card]);
|
||||
else target.addJudge(card);
|
||||
}
|
||||
else player.discard(card);
|
||||
}
|
||||
break;
|
||||
case 'phaseDraw':
|
||||
player.logSkill('sbqiaobian');
|
||||
game.log(player,'跳过了摸牌阶段');
|
||||
player.addSkill('sbqiaobian_draw');
|
||||
break;
|
||||
case 'phaseUse':
|
||||
player.skip('phaseDiscard');
|
||||
game.log(player,'跳过了出牌阶段');
|
||||
game.log(player,'跳过了弃牌阶段');
|
||||
player.moveCard();
|
||||
break;
|
||||
}
|
||||
}
|
||||
else player.storage.counttrigger.sbqiaobian--;
|
||||
},
|
||||
subSkill:{
|
||||
draw:{
|
||||
charlotte:true,
|
||||
mark:true,
|
||||
intro:{content:'准备阶段摸两张牌并回复1点体力'},
|
||||
audio:'sbqiaobian',
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
forced:true,
|
||||
content:function(){
|
||||
player.removeSkill('sbqiaobian_draw');
|
||||
player.draw(2);
|
||||
player.recover();
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//萌货
|
||||
sbhuoshou:{
|
||||
audio:2,
|
||||
|
@ -467,6 +565,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
sbzhiba:{
|
||||
init:function(player){
|
||||
if(player.hasZhuSkill('sbzhiba')) player.markSkill('sbzhiba');
|
||||
},
|
||||
audio:2,
|
||||
trigger:{player:'dying'},
|
||||
filter:function(event,player){
|
||||
|
@ -475,6 +576,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
zhuSkill:true,
|
||||
limited:true,
|
||||
mark:false,
|
||||
skillAnimation:true,
|
||||
animationColor:'wood',
|
||||
content:function(){
|
||||
|
@ -1603,7 +1705,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
lose:false,
|
||||
delay:false,
|
||||
filter:function(event,player){
|
||||
return player.countMark('sbrende')<2||player.hasSkill('sbrende_used');
|
||||
if(player.countMark('sbrende')<2||player.hasSkill('sbrende_used')) return true;
|
||||
for(var name of lib.inpile){
|
||||
if(get.type(name)!='basic') continue;
|
||||
var card={name:name,isCard:true};
|
||||
if(event.filterCard(card,player,event)) return false;
|
||||
if(name=='sha'){
|
||||
for(var nature of lib.inpile_nature){
|
||||
card.nature=nature;
|
||||
if(event.filterCard(card,player,event)) return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return true;
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
if(player.getStorage('sbrende_given').contains(target)) return false;
|
||||
|
@ -3496,7 +3610,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
onremove:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseControl('变化','不变').set('prompt','统业:猜测场上装备数是否于你下回合准备阶段前发生变化').set('ai',()=>(game.countPlayer()<=4?Math.random():1)<0.4);
|
||||
player.chooseControl('变化','不变').set('prompt','统业:猜测场上装备数是否于你下回合准备阶段前发生变化').set('ai',()=>Number((game.countPlayer()<=4?Math.random():1)<0.4));
|
||||
'step 1'
|
||||
if(result.control=='变化'){
|
||||
player.addSkill('sbtongye_change',1);
|
||||
|
@ -4643,6 +4757,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sbhuoshou_info:'锁定技。①【南蛮入侵】对你无效。②当其他角色使用【南蛮入侵】指定第一个目标后,你代替其成为此牌的伤害来源。③出牌阶段开始时,你随机获得弃牌堆中的一张【南蛮入侵】。④出牌阶段,若你于此阶段使用过【南蛮入侵】,你不能使用【南蛮入侵】。',
|
||||
sbzaiqi:'再起',
|
||||
sbzaiqi_info:'蓄力技(1/7)。①弃牌阶段结束时,你可以消耗任意点蓄力值并选择等量名角色,然后令这些角色选择一项:1.令你摸一张牌;2.弃置一张牌,然后你回复1点体力。②每回合限一次。当你造成伤害后,你获得1点蓄力值。',
|
||||
sb_zhanghe:'谋张郃',
|
||||
sbqiaobian:'巧变',
|
||||
sbqiaobian_info:'每回合限一次。①你可以失去1点体力并跳过判定阶段,将判定区的所有牌移动给一名其他角色(无法置入其判定区的牌改为弃置之)。②你可以跳过摸牌阶段,于下个准备阶段摸两张牌并回复1点体力。③你可以将手牌数弃置至六张并跳过出牌阶段和弃牌阶段,然后移动场上的一张牌。',
|
||||
|
||||
sb_zhi:'谋攻篇·知',
|
||||
sb_shi:'谋攻篇·识',
|
||||
|
|
|
@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
connect:true,
|
||||
characterSort:{
|
||||
shenhua:{
|
||||
shenhua_feng:["sp_zhangjiao","re_yuji","old_zhoutai","old_caoren","re_xiahouyuan","re_xiaoqiao","re_huangzhong","re_weiyan"],
|
||||
shenhua_feng:["sp_zhangjiao","re_yuji","old_zhoutai","old_caoren","re_xiahouyuan","xiaoqiao","re_huangzhong","re_weiyan"],
|
||||
shenhua_huo:['dianwei','xunyu','pangtong','sp_zhugeliang','taishici','yanwen','re_yuanshao','re_pangde'],
|
||||
shenhua_lin:['caopi','re_xuhuang','menghuo','zhurong','re_lusu','sunjian','dongzhuo','jiaxu'],
|
||||
shenhua_shan:['dengai','zhanghe','liushan','jiangwei','zhangzhang','sunce','caiwenji','zuoci'],
|
||||
|
@ -21,7 +21,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_pangde:['male','qun',4,['mashu','jianchu']],
|
||||
re_xiahouyuan:['male','wei',4,['xinshensu']],
|
||||
re_weiyan:['male','shu',4,['xinkuanggu','qimou']],
|
||||
re_xiaoqiao:['female','wu',3,['retianxiang','xinhongyan']],
|
||||
xiaoqiao:['female','wu',3,['retianxiang','hongyan']],
|
||||
sp_zhangjiao:['male','qun',3,['releiji','guidao','huangtian'],['zhu']],
|
||||
re_yuji:["male","qun",3,["xinfu_guhuo"]],
|
||||
// yuji:['male','qun',3,['guhuo']],
|
||||
|
@ -1014,19 +1014,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
})>1) return 'equip5';
|
||||
});
|
||||
'step 1'
|
||||
if(result.control=='equip1'){
|
||||
player.addTempSkill('drlt_jueyan1',{player:'phaseAfter'});
|
||||
};
|
||||
if(result.control=='equip2'){
|
||||
player.draw(3);
|
||||
player.addTempSkill('drlt_jueyan3',{player:'phaseAfter'});
|
||||
};
|
||||
if(result.control=='equip6'){
|
||||
player.addTempSkill('drlt_jueyan2',{player:'phaseAfter'});
|
||||
};
|
||||
if(result.control=='equip5'){
|
||||
player.addTempSkill('rejizhi',{player:'phaseAfter'});
|
||||
};
|
||||
switch(result.control){
|
||||
case 'equip1':
|
||||
player.addTempSkill('drlt_jueyan1',{player:'phaseAfter'});
|
||||
break;
|
||||
case 'equip2':
|
||||
player.draw(3);
|
||||
player.addTempSkill('drlt_jueyan3',{player:'phaseAfter'});
|
||||
break;
|
||||
case 'equip3_4':
|
||||
player.addTempSkill('drlt_jueyan2',{player:'phaseAfter'});
|
||||
break;
|
||||
case 'equip5':
|
||||
player.addTempSkill('rejizhi',{player:'phaseAfter'});
|
||||
break;
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:13,
|
||||
|
@ -7023,7 +7025,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return true;
|
||||
}
|
||||
else if(event.name=='gain'){
|
||||
if(event.giver||event.getParent().name=='_yongjian_zengyu') return false;
|
||||
if(event.giver||event.getParent().name=='gift') return false;
|
||||
var cards=event.getg(event.player);
|
||||
if(!cards.length) return false;
|
||||
return game.hasPlayer(function(current){
|
||||
|
@ -7700,6 +7702,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ol_lusu:['ol_lusu','re_lusu'],
|
||||
zhanghe:['re_zhanghe','zhanghe'],
|
||||
yl_luzhi:['yl_luzhi','tw_yl_luzhi'],
|
||||
sunliang:['sunliang','xin_sunliang'],
|
||||
},
|
||||
translate:{
|
||||
re_yuanshao:'袁绍',
|
||||
|
@ -8005,12 +8008,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
re_xiahouyuan:'夏侯渊',
|
||||
re_huangzhong:'黄忠',
|
||||
re_weiyan:'魏延',
|
||||
re_xiaoqiao:'小乔',
|
||||
|
||||
gz_xiahouyuan:'夏侯渊',
|
||||
gz_huangzhong:'黄忠',
|
||||
gz_weiyan:'魏延',
|
||||
gz_xiaoqiao:'小乔',
|
||||
gz_xuhuang:'徐晃',
|
||||
gz_pangde:'庞德',
|
||||
gz_caoren:'曹仁',
|
||||
|
@ -8025,7 +8026,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
huangzhong:'旧黄忠',
|
||||
sp_zhangjiao:'张角',
|
||||
weiyan:'旧魏延',
|
||||
xiaoqiao:'旧小乔',
|
||||
xiaoqiao:'小乔',
|
||||
zhoutai:'界周泰',
|
||||
zhangjiao:'旧张角',
|
||||
//yuji:'于吉',
|
||||
|
|
|
@ -1118,7 +1118,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var target=trigger.player,card=result.cards[0],suit=get.suit(card,player);
|
||||
if(!lib.suit.contains(suit)||(!target||!target.isIn())&&suit!='heart') return;
|
||||
game.broadcastAll(function(suit){
|
||||
if(lib.config.background_speak) game.playAudio('skill','spfangzong'+(4-lib.suit.indexOf(suit)));
|
||||
if(lib.config.background_speak) game.playAudio('skill','spxizhan'+(4-lib.suit.indexOf(suit)));
|
||||
},suit);
|
||||
switch(suit){
|
||||
case 'spade':
|
||||
|
@ -4058,22 +4058,38 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
var list=get.zhinangs();
|
||||
player.chooseButton(['是否发动【生息】获得一张智囊?',[list,'vcard']]).set('ai',function(card){
|
||||
return (Math.random()+0.5)*get.value({name:card.link[2]},_status.event.player)
|
||||
player.chooseButton([
|
||||
'###'+get.prompt('mjshengxi')+'###获得一张智囊或摸一张牌',
|
||||
[list,'vcard'],
|
||||
[['摸一张牌','取消'],'tdnodes'],
|
||||
],true).set('ai',function(card){
|
||||
if(card.link[2]){
|
||||
if(!get.cardPile2(function(cardx){
|
||||
return cardx.name==card.link[2];
|
||||
})) return 0;
|
||||
return (Math.random()+1.5)*get.value({name:card.link[2]},_status.event.player);
|
||||
}
|
||||
if(card.link=='摸一张牌') return 1;
|
||||
return 0;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
if(result.bool&&result.links[0]!='取消'){
|
||||
player.logSkill('mjshengxi');
|
||||
var card=get.cardPile2(function(card){
|
||||
return card.name==result.links[0][2];
|
||||
});
|
||||
if(card) player.gain(card,'gain2');
|
||||
if(result.links[0]=='摸一张牌') player.draw();
|
||||
else{
|
||||
var card=get.cardPile2(function(card){
|
||||
return card.name==result.links[0][2];
|
||||
});
|
||||
if(card) player.gain(card,'gain2');
|
||||
}
|
||||
}
|
||||
},
|
||||
group:'mjshengxi_zhunbei',
|
||||
subfrequent:['zhunbei'],
|
||||
subSkill:{
|
||||
zhunbei:{
|
||||
audio:'shengxi',
|
||||
audioname:['feiyi'],
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
frequent:true,
|
||||
prompt2:'从游戏外或牌堆中获得一张【调剂盐梅】',
|
||||
|
@ -4118,7 +4134,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
event.card=result.links[0];
|
||||
var card=result.links[0];
|
||||
event.card=card;
|
||||
player.chooseTarget('将'+get.translation(card)+'交给一名其他角色并摸一张牌',lib.filter.notMe,true).set('ai',function(target){
|
||||
var evt=_status.event.getParent();
|
||||
return get.attitude(evt.player,target)*get.value(evt.card,target)*(target.hasSkillTag('nogain')?0.1:1);
|
||||
|
@ -5382,20 +5399,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
fyjianyu:{
|
||||
init:function(player){
|
||||
if(!lib.skill['fyjianyu_'+player.playerid]){
|
||||
lib.skill['fyjianyu_'+player.playerid]={
|
||||
marktext:'喻',
|
||||
intro:{
|
||||
markcount:()=>1,
|
||||
content:'指定另一名有“喻”的角色为目标时,其摸一张牌',
|
||||
},
|
||||
};
|
||||
lib.translate['fyjianyu_'+player.playerid]='谏喻';
|
||||
lib.translate['fyjianyu_'+player.playerid+'_bg']='喻';
|
||||
}
|
||||
},
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return !player.hasSkill('fyjianyu2')&&game.countPlayer(function(current){
|
||||
return !current.hasMark('fyjianyux');
|
||||
return game.countPlayer(function(current){
|
||||
return !current.hasMark('fyjianyu_'+player.playerid);
|
||||
})>1;
|
||||
},
|
||||
round:1,
|
||||
filterTarget:function(card,player,target){
|
||||
return !target.hasMark('fyjianyux');
|
||||
return !target.hasMark('fyjianyu_'+player.playerid);
|
||||
},
|
||||
selectTarget:2,
|
||||
content:function(){
|
||||
player.addTempSkill('fyjianyux',{player:'phaseBegin'});
|
||||
target.addMark('fyjianyux',1);
|
||||
player.addTempSkill('fyjianyu_draw',{player:'phaseBegin'});
|
||||
target.addMark('fyjianyu_'+player.playerid,1);
|
||||
},
|
||||
ai:{
|
||||
order:0.1,
|
||||
|
@ -5411,30 +5442,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
fyjianyux:{
|
||||
trigger:{global:'useCardToPlayer'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
return event.player!=event.target&&event.player.hasMark('fyjianyux')&&
|
||||
event.target.hasMark('fyjianyux')&&event.target.isIn();
|
||||
},
|
||||
logTarget:'target',
|
||||
content:function(){
|
||||
trigger.target.draw();
|
||||
},
|
||||
onremove:function(){
|
||||
game.countPlayer(function(current){
|
||||
var num=current.countMark('fyjianyux');
|
||||
if(num) current.removeMark('fyjianyux');
|
||||
});
|
||||
},
|
||||
intro:{
|
||||
content:'mark',
|
||||
subSkill:{
|
||||
draw:{
|
||||
charlotte:true,
|
||||
trigger:{global:'useCardToPlayer'},
|
||||
filter:function(event,player){
|
||||
return event.player!=event.target&&event.player.hasMark('fyjianyu_'+player.playerid)&&event.target.hasMark('fyjianyu_'+player.playerid)&&event.target.isIn();
|
||||
},
|
||||
forced:true,
|
||||
logTarget:'target',
|
||||
content:function(){
|
||||
trigger.target.draw();
|
||||
},
|
||||
onremove:function(player){
|
||||
game.countPlayer(function(current){
|
||||
var num=current.countMark('fyjianyu_'+player.playerid);
|
||||
if(num) current.removeMark('fyjianyu_'+player.playerid);
|
||||
});
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
fyjianyu2:{},
|
||||
spwanwei:{
|
||||
audio:2,
|
||||
enable:'chooseToUse',
|
||||
|
@ -6120,7 +6148,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
return true;
|
||||
},
|
||||
chongzhu:true,
|
||||
recastable:true,
|
||||
selectTarget:2,
|
||||
postAi:()=>true,
|
||||
contentBefore:function(){
|
||||
|
@ -6339,9 +6367,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
reshengxi_info:'结束阶段,若你于本回合内未造成过伤害,则你可摸两张牌。',
|
||||
fyjianyu:'谏喻',
|
||||
fyjianyu_info:'每轮限一次。出牌阶段,你可选择两名角色,令这些角色获得“喻”直到你的下回合开始。当一名有“喻”的角色A使用牌指定另一名有“喻”的角色B为目标时,你令B摸一张牌。',
|
||||
fyjianyux:'谏喻',
|
||||
mjshengxi:'生息',
|
||||
mjshengxi_info:'准备阶段,你可以获得一张【调剂盐梅】;结束阶段,若你本回合使用过牌且未造成伤害,则你可以获得一张智囊。',
|
||||
mjshengxi_info:'准备阶段,你可以获得一张【调剂盐梅】;结束阶段,若你本回合使用过牌且未造成伤害,则你可以获得一张智囊或摸一张牌。',
|
||||
mjkuanji:'宽济',
|
||||
mjkuanji_info:'每回合限一次。当你因弃置而失去牌后,你可令一名其他角色获得其中的一张牌,然后你摸一张牌。',
|
||||
tiaojiyanmei:'调剂盐梅',
|
||||
|
@ -6522,7 +6549,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
spjungong_info:'出牌阶段,你可失去X+1点体力或弃置X+1张牌,视为对一名其他角色使用【杀】(不计入次数和距离限制,X为你本回合内发动过〖峻攻〗的次数)。若你因此【杀】造成了伤害,则你令此技能失效直到回合结束。',
|
||||
spdengli:'等力',
|
||||
spdengli_info:'当你使用【杀】指定目标后,或成为【杀】的目标后,若使用者和目标的体力值相等,则你摸一张牌。',
|
||||
sp_huaman:'手杀花蔓',
|
||||
sp_huaman:'手杀花鬘',
|
||||
spxiangzhen:'象阵',
|
||||
spxiangzhen_info:'锁定技。①【南蛮入侵】对你无效。②当有角色使用的【南蛮入侵】结算结束后,若有角色因此牌受到过伤害,则你和使用者各摸一张牌。',
|
||||
spfangzong:'芳踪',
|
||||
|
|
290
character/sp.js
290
character/sp.js
|
@ -7,15 +7,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp:{
|
||||
sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji",'caoxiancaohua'],
|
||||
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan','quhuang','zhanghua','wangguan','sunhong'],
|
||||
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna"],
|
||||
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna",'ol_wenqin'],
|
||||
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao","jin_guohuai"],
|
||||
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','zhangzhi','lushi'],
|
||||
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian','ol_wenqin'],
|
||||
sp_huben:['duanjiong','ol_mengda',"caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian','ol_huban','haopu'],
|
||||
sp_liesi:['mizhu','weizi','ol_liuba','zhangshiping'],
|
||||
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo','ol_puyuan','ol_wenqin'],
|
||||
sp_waitforsort:['ol_huban','ol_mengda','haopu'],
|
||||
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
|
||||
sp_waitforsort:[],
|
||||
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
|
||||
sp_wanglang:['ol_wanglang'],
|
||||
sp_wanglang:['ol_wanglang','ol_puyuan','ol_zhouqun'],
|
||||
sp_zhongdan:["cuiyan","huangfusong"],
|
||||
sp_guozhan2:["sp_dongzhuo","liqueguosi","zhangren"],
|
||||
//sp_single:["niujin"],
|
||||
|
@ -28,6 +28,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
duanjiong:['male','qun',4,['olsaogu']],
|
||||
ol_zhouqun:['male','shu',4,['oltianhou','olchenshuo']],
|
||||
ol_wenqin:['male','wei',4,['olguangao','olhuiqi']],
|
||||
haopu:['male','shu',4,['olzhenying']],
|
||||
|
@ -191,6 +192,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//kaisa:["male","western",4,["zhengfu"]],
|
||||
},
|
||||
characterIntro:{
|
||||
duanjiong:'段颎(?-179年),字纪明,武威姑臧(今甘肃省武威市)人。东汉名将,西域都护段会宗从曾孙,与皇甫规(字威明)、张奂(字然明)并称“凉州三明”。段颎少时学习骑射,有文武智略,最初被举为孝廉,为宪陵园丞、阳陵令,有治理之才。汉桓帝时入军旅,先破鲜卑,后讨平东郭窦、公孙举起事,以功封列侯。延熹二年(159年)起戍边征战十余年,百战羌人,至永康元年(167年)平定西羌,建宁二年(169年)平定东羌,前后斩东西羌六万余级。累功封新丰县侯。建宁三年(170年),段颎被征入朝,历任侍中、执金吾、河南尹、司隶校尉等职,他党附宦官、捕杀太学生,因而得保富贵,两度出任太尉。光和二年(179年),权宦王甫罪行被揭发,段颎受牵连下狱,其后在狱中饮鸩而死。',
|
||||
haopu:'郝普,字子太,义阳(治所在今湖北枣阳东南)人。刘备入川后,郝普为零陵太守。建安二十年(215年),吴将吕蒙进攻荆州三郡,唯有郝普坚守待援。但援兵久久不至,其挚友邓玄之又被吕蒙所骗,郝普也因此上当,投降吴国。湘水划界后,郝普回归刘备。建安二十四年(219年),吕蒙再次袭击荆州,击败关羽,郝普再次投降,最终归顺吴国并官至廷尉。郝普与隐蕃亲善,隐蕃蓄谋叛变事情败露,他受到牵连,因此自杀。在刘备集团的5个荆州郡守中,郝普是唯一一个抵抗过东吴的荆州郡守。',
|
||||
ol_zhanghe:'字儁乂,河间鄚人。三国时期魏国名将。官渡之战时,本为袁绍部将的张郃投降了曹操,并在曹操帐下多立功勋,于曹魏建立后加封为征西车骑将军。诸葛亮六出祁山之间,张郃多次抵御蜀军的进攻,于公元231年在木门道被诸葛亮设伏射死。后谥曰壮侯。为曹魏“五子良将”之一。',
|
||||
zhangshiping:'张世平是东汉末期的中山商人,曾与苏双同路,资助刘备组织武装、建立政权。于《三国演义》第一回出场,刘关张桃园三结义时资助刘备良马五十匹,金银五百两,镔铁一千斤。刘备所使用的“双股剑”、关羽所使用的“青龙偃月刀(又名‘冷艳锯’)”、张飞所使用的“丈八点钢矛(又名‘丈八蛇矛’)”皆由这一千斤上好镔铁打造而成。',
|
||||
|
@ -688,6 +690,235 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//段颎
|
||||
olsaogu:{
|
||||
audio:2,
|
||||
zhuanhuanji:true,
|
||||
mark:true,
|
||||
marktext:'☯',
|
||||
intro:{
|
||||
content:function(storage){
|
||||
if(storage) return '转换技。①出牌阶段,你可以摸一张牌。②结束阶段,你可以弃置一张牌,令一名其他角色摸一张牌。';
|
||||
return '转换技。①出牌阶段,你可以弃置两张牌(不能包含你本阶段弃置过的花色),然后使用其中的【杀】。②结束阶段,你可以弃置一张牌,令一名其他角色弃置两张牌,然后其使用弃置的【杀】。';
|
||||
},
|
||||
},
|
||||
onChooseToUse:function(event){
|
||||
if(!game.online&&!event.olsaogu){
|
||||
var list=[],player=event.player;
|
||||
var evtx=event.getParent('phaseUse');
|
||||
player.getHistory('lose',evt=>{
|
||||
if(evt.type=='discard'&&evt.getParent('phaseUse')==evtx) list.addArray(evt.cards2);
|
||||
});
|
||||
event.set('olsaogu',list);
|
||||
}
|
||||
},
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
var storage=player.storage.olsaogu;
|
||||
if(storage) return true;
|
||||
return player.getDiscardableCards(player,'he').filter(card=>{
|
||||
if(event.olsaogu&&event.olsaogu.some(cardx=>get.suit(cardx,false)==get.suit(card,player))) return false;
|
||||
return true;
|
||||
}).length>1;
|
||||
},
|
||||
filterCard:function(card,player){
|
||||
if(player.storage.olsaogu) return false;
|
||||
if(_status.event.olsaogu&&_status.event.olsaogu.some(cardx=>get.suit(cardx,false)==get.suit(card,player))) return false;
|
||||
return true;
|
||||
},
|
||||
selectCard:function(){
|
||||
var player=_status.event.player;
|
||||
return player.storage.olsaogu?-1:2;
|
||||
},
|
||||
position:'he',
|
||||
check:function(card){
|
||||
var player=_status.event.player;
|
||||
if(card.name=='sha') return player.hasValueTarget(card)?10:0.001;
|
||||
return 6-get.value(card);
|
||||
},
|
||||
prompt:function(){
|
||||
var player=_status.event.player;
|
||||
var storage=player.storage.olsaogu;
|
||||
if(storage) return '摸一张牌';
|
||||
var list=_status.event.olsaogu,str='';
|
||||
if(list&&list.length){
|
||||
var text='',suits=list.reduce(function(list,card){
|
||||
return list.add(get.suit(card,false)),list;
|
||||
},[]).sort((a,b)=>lib.suit.indexOf(b)-lib.suit.indexOf(a));
|
||||
for(var i=0;i<suits.length;i++) text+=get.translation(suits[i]);
|
||||
str+='(不能弃置'+text+'花色的牌)';
|
||||
}
|
||||
return '弃置两张牌'+str+',然后使用其中的【杀】';
|
||||
},
|
||||
content:function(){
|
||||
player.changeZhuanhuanji('olsaogu');
|
||||
if(!cards.length) player.draw();
|
||||
else{
|
||||
var cardx=cards.filter(card=>card.name=='sha');
|
||||
if(cardx.length){
|
||||
var next=game.createEvent('olsaogu_chooseToUseSha');
|
||||
next.player=player;
|
||||
next.cards=cardx;
|
||||
next.setContent(lib.skill.olsaogu.chooseToUseSha);
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:function(item,player){
|
||||
return get.order({name:'sha'},player)-0.2;
|
||||
},
|
||||
result:{
|
||||
player:function(player){
|
||||
var storage=player.storage.olsaogu;
|
||||
if(storage) return 1;
|
||||
if(player.getDiscardableCards(player,'he').filter(card=>{
|
||||
if(card.name!='sha') return false;
|
||||
if(_status.event.olsaogu&&_status.event.olsaogu.some(cardx=>get.suit(cardx,false)==get.suit(card,player))) return false;
|
||||
return true;
|
||||
}).length) return 1;
|
||||
return 0;
|
||||
},
|
||||
},
|
||||
},
|
||||
group:'olsaogu_effect',
|
||||
subSkill:{
|
||||
effect:{
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
filter:function(event,player){
|
||||
if(_status.connectMode) return player.countCards('he');
|
||||
return player.countDiscardableCards(player,'he');
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var list=[];
|
||||
player.getHistory('lose',evt=>{
|
||||
if(evt.type=='discard'&&evt.getParent('phaseJieshu').name=='phaseJieshu') list.addArray(evt.cards2);
|
||||
});
|
||||
event.list=list;
|
||||
var str,storage=player.storage.olsaogu;
|
||||
if(storage) str='弃置一张牌,令一名其他角色摸一张牌。';
|
||||
else{
|
||||
str='弃置一张牌,令一名其他角色弃置两张牌(不能包含你本阶段弃置过的花色),然后其使用弃置的【杀】。';
|
||||
if(list.length){
|
||||
var text='',suits=list.reduce(function(list,card){
|
||||
return list.add(get.suit(card,false)),list;
|
||||
},[]).sort((a,b)=>lib.suit.indexOf(b)-lib.suit.indexOf(a));
|
||||
for(var i=0;i<suits.length;i++) text+=get.translation(suits[i]);
|
||||
str+='<br>本阶段已弃置过'+text+'花色的牌。';
|
||||
}
|
||||
}
|
||||
player.chooseCardTarget({
|
||||
prompt:get.prompt('olsaogu'),
|
||||
prompt2:str,
|
||||
filterTarget:function(card,player,target){
|
||||
return player!=target&&target.countCards('he')>1;
|
||||
},
|
||||
filterCard:lib.filter.cardDiscardable,
|
||||
position:'he',
|
||||
complexCard:true,
|
||||
complexSelect:true,
|
||||
ai1:function(card){
|
||||
var player=_status.event.player;
|
||||
if(!player.storage.olsaogu&&_status.event.list.some(cardx=>get.suit(cardx,false)==get.suit(card,player))) return 7-get.value(card);
|
||||
return 5-get.value(card);
|
||||
},
|
||||
ai2:function(target){
|
||||
var player=_status.event.player;
|
||||
var att=get.attitude(player,target);
|
||||
if(player.storage.olsaogu) return att;
|
||||
var list=_status.event.list.slice();
|
||||
if(ui.selected.cards.length) list.addArray(ui.selected.cards);
|
||||
var cards=target.getCards('he',card=>{
|
||||
if(card.name!='sha'||list.some(cardx=>get.suit(cardx,false)==get.suit(card,target))) return false;
|
||||
return lib.filter.cardDiscardable(card,target)&&game.hasPlayer(function(current){
|
||||
if(!current.canUse(card,target,false)) return false;
|
||||
return get.effect(current,card,target,target)>0&&get.effect(current,card,target,player)>0;
|
||||
});
|
||||
});
|
||||
if(cards.length&&att>0) return Math.sqrt(Math.min(2,cards.length))*cards.reduce(function(num,card){
|
||||
var players=game.filterPlayer(current=>target.canUse(card,current,false));
|
||||
players.sort((a,b)=>get.effect(b,card,target,target)*get.effect(b,card,target,player)-get.effect(a,card,target,target)*get.effect(a,card,target,player));
|
||||
return num=(get.effect(players[0],card,target,target)*get.effect(players[0],card,target,player));
|
||||
},0);
|
||||
return get.effect(target,{name:'guohe_copy2'},player,player)*Math.sqrt(Math.min(2,target.getDiscardableCards(player,'he').filter(card=>{
|
||||
return !list.some(cardx=>get.suit(cardx,false)==get.suit(card,target));
|
||||
}).length));
|
||||
},
|
||||
}).set('list',list);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var cards=result.cards,target=result.targets[0];
|
||||
player.logSkill('olsaogu',target);
|
||||
player.discard(cards);
|
||||
if(player.storage.olsaogu){
|
||||
target.draw();
|
||||
event.finish();
|
||||
}
|
||||
else{
|
||||
event.target=target;
|
||||
var list=result.cards.slice();
|
||||
player.getHistory('lose',evt=>{
|
||||
if(evt.type=='discard'&&evt.getParent('phaseJieshu').name=='phaseJieshu') list.addArray(evt.cards2);
|
||||
});
|
||||
var cards=target.getCards('he',card=>{
|
||||
return lib.filter.cardDiscardable(card,target)&&!list.some(cardx=>get.suit(cardx,false)==get.suit(card,target));
|
||||
});
|
||||
if(cards.length){
|
||||
var text='',suits=list.reduce(function(list,card){
|
||||
return list.add(get.suit(card,false)),list;
|
||||
},[]).sort((a,b)=>lib.suit.indexOf(b)-lib.suit.indexOf(a));
|
||||
for(var i=0;i<suits.length;i++) text+=get.translation(suits[i]);
|
||||
target.chooseToDiscard('he','扫谷:弃置两张牌(不能弃置'+text+'花色的牌),然后使用其中的【杀】',function(card,player){
|
||||
var list=_status.event.list;
|
||||
return !list.some(cardx=>get.suit(cardx,false)==get.suit(card,player));
|
||||
},Math.min(cards.length,2),true).set('ai',function(card){
|
||||
var player=_status.event.player;
|
||||
if(card.name=='sha'&&player.hasValueTarget(card)) return 10;
|
||||
return -get.value(card);
|
||||
}).set('list',list);
|
||||
}
|
||||
else event.finish();
|
||||
}
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var cards=result.cards.filter(card=>card.name=='sha');
|
||||
if(cards.length){
|
||||
var next=game.createEvent('olsaogu_chooseToUseSha');
|
||||
next.player=target;
|
||||
next.cards=cards;
|
||||
next.setContent(lib.skill.olsaogu.chooseToUseSha);
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
chooseToUseSha:function(){
|
||||
'step 0'
|
||||
event.cards2=cards.filter(i=>get.position(i,true)=='d'&&player.hasUseTarget(i));
|
||||
if(!event.cards2.length) event.finish();
|
||||
'step 1'
|
||||
if(event.cards2.length==1) event._result={bool:true,links:event.cards2};
|
||||
else player.chooseButton(['扫谷:请使用其中的【杀】',event.cards2],true).set('filterButton',button=>{
|
||||
return _status.event.player.hasUseTarget(button.link,false);
|
||||
}).set('ai',button=>{
|
||||
return _status.event.player.getUseValue(button.link);
|
||||
});
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var card=result.links[0];
|
||||
event.cards2.remove(card);
|
||||
player.$gain2(card,false);
|
||||
game.delayx();
|
||||
player.chooseUseTarget(true,card,false);
|
||||
}
|
||||
else event.finish();
|
||||
'step 3'
|
||||
if(event.cards2.length) event.goto(1);
|
||||
},
|
||||
},
|
||||
//OL周群
|
||||
oltianhou:{
|
||||
audio:2,
|
||||
|
@ -721,7 +952,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!lib.skill.oltianhou.derivation.contains(skill)) event.finish();
|
||||
else{
|
||||
event.weather_skill=skill;
|
||||
player.chooseTarget(true,'令一名角色获得技能【'+get.translation(skill)+'】').set('ai',function(target){
|
||||
player.chooseTarget(true,'令一名角色获得技能【'+get.translation(skill)+'】',get.translation(skill+'_info')).set('ai',function(target){
|
||||
return get.attitude(_status.event.player,target);
|
||||
});
|
||||
}
|
||||
|
@ -990,12 +1221,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var card=event.card;
|
||||
if(card.name!='sha') return false;
|
||||
if(event.player==player){
|
||||
if(game.hasPlayer(current=>{
|
||||
return current.isIn()&&!event.targets.contains(current)&&player.canUse(event.card,current,false);
|
||||
})){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return game.hasPlayer(current=>{
|
||||
return current.isIn()&&!event.targets.contains(current)&&player.canUse(card,current);
|
||||
});
|
||||
}
|
||||
return event.player.isIn()&&!event.targets.contains(player)&&event.player.canUse(card,player);
|
||||
},
|
||||
|
@ -1004,7 +1232,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
if(trigger.player==player){
|
||||
player.chooseTarget(get.prompt('olguangao'),'为'+get.translation(trigger.card)+'额外指定一个目标。然后若你手牌数为偶数,你摸一张牌并令此牌对任意目标无效。',(card,player,target)=>{
|
||||
return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target,false);
|
||||
return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target);
|
||||
}).set('sourcex',trigger.targets).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
var eff=get.effect(target,_status.event.card,player,player);
|
||||
|
@ -8810,7 +9038,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var type=get.type(trigger.card,false);
|
||||
player.chooseToDiscard('h',get.prompt('olfengzi'),'弃置一张'+get.translation(type)+'牌,令'+get.translation(trigger.card)+'结算两次',function(card,player){
|
||||
return get.type2(card,player)==_status.event.type;
|
||||
}).set('type',type).set('ai',()=>-1).logSkill='olfengzi';
|
||||
}).set('type',type).set('ai',function(card){
|
||||
var player=_status.event.player;
|
||||
var trigger=_status.event.getTrigger();
|
||||
if(trigger.card.name=='tiesuo') return 0;
|
||||
var num=0;
|
||||
for(var i of trigger.targets) num+=get.effect(i,trigger.card,player,player);
|
||||
if(num<=0) return 0;
|
||||
return 7-get.value(card);
|
||||
}).logSkill='olfengzi';
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
trigger.effectCount++;
|
||||
|
@ -10500,8 +10736,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
selectTarget:[1,Infinity],
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(!target.countCards('he')) event.finish();
|
||||
else target.chooseCard('he','交给'+get.translation(player)+'一张牌',true);
|
||||
if(!target.countCards('h')) event.finish();
|
||||
else target.chooseCard('h','交给'+get.translation(player)+'一张牌',true);
|
||||
'step 1'
|
||||
target.give(result.cards,player);
|
||||
'step 2'
|
||||
|
@ -18118,9 +18354,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
filter:function(event,player){
|
||||
if(event.targets.length!=1||!['sha','juedou'].contains(event.card.name)) return false;
|
||||
return player.getHistory('useCard',function(evt){
|
||||
return evt.card.name==event.card.name;
|
||||
}).indexOf(event.getParent())==0;
|
||||
var evtx=event.getParent();
|
||||
return !player.hasHistory('useCard',function(evt){
|
||||
return evt!=evtx&&evt.card.name==event.card.name;
|
||||
},evtx)
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
|
@ -22819,7 +23056,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
luochong:function(player){
|
||||
var storage=player.getStorage('luochong');
|
||||
var str='准备阶段开始时/当你受到伤害后,你可选择本轮内未选择过的一项(每名角色每轮限选一次):'
|
||||
var str='准备阶段开始时/当你于一回合首次受到伤害后,你可选择本轮内未选择过的一项(每名角色每轮限选一次):'
|
||||
var choiceList=[
|
||||
'⒈令一名角色回复1点体力。',
|
||||
'⒉令一名角色失去1点体力。',
|
||||
|
@ -22865,6 +23102,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.storage.olmiuyan) return '转换技。你可以将一张黑色牌当做【火攻】使用。然后若此技能:处于阳状态且此牌造成了伤害,则你获得此阶段内所有被展示过的牌;<span class="bluetext">处于阴状态且未造成伤害,则你令此技能失效直到本轮结束。</span>';
|
||||
return '转换技。你可以将一张黑色牌当做【火攻】使用。然后若此技能:<span class="bluetext">处于阳状态且此牌造成了伤害,则你获得此阶段内所有被展示过的牌;</span>处于阴状态且未造成伤害,则你令此技能失效直到本轮结束。';
|
||||
},
|
||||
olsaogu:function(player){
|
||||
if(player.storage.olsaogu) return '转换技。①出牌阶段,你可以。阴:弃置两张牌(不能包含你本阶段弃置过的花色),然后使用其中的【杀】;<span class="bluetext">阳:摸一张牌</span>。②结束阶段,你可以弃置一张牌,令一名其他角色执行你当前〖扫谷①〗的分支。';
|
||||
return '转换技。①出牌阶段,你可以。<span class="bluetext">阴:弃置两张牌(不能包含你本阶段弃置过的花色),然后使用其中的【杀】</span>;阳:摸一张牌。②结束阶段,你可以弃置一张牌,令一名其他角色执行你当前〖扫谷①〗的分支。';
|
||||
},
|
||||
},
|
||||
characterReplace:{
|
||||
caoshuang:['caoshuang','ns_caoshuang'],
|
||||
|
@ -23938,7 +24179,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olbihun:'弼昏',
|
||||
olbihun_info:'锁定技。当你使用牌指定其他角色为目标时,若你的手牌数大于手牌上限且若此牌的目标数:大于1,取消此目标;为1,其获得此牌。',
|
||||
olchuanwu:'穿屋',
|
||||
olchuanwu_info:'锁定技。当你造成或受到伤害后,你令武将牌上的前X个未失效的技能失效直到回合结束。然后你摸等同于你此次失效的技能数张牌(X为你的攻击范围)。',
|
||||
olchuanwu_info:'锁定技。当你造成或受到伤害后,你令武将牌上的前X个技能失效直到回合结束。然后你摸等同于你此次失效的技能数张牌(X为你的攻击范围)。',
|
||||
oljianhe:'剑合',
|
||||
oljianhe_info:'出牌阶段每名角色限一次。你可以重铸至少两张同名牌或至少两张装备牌,然后令一名角色选择一项:1.重铸等量张与你以此法重铸的牌类型相同的牌;2.受到你造成的1点雷电伤害。',
|
||||
dongtuna:'董荼那',
|
||||
|
@ -24004,7 +24245,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olzhenying_info:'出牌阶段限两次。你可以选择一名手牌数不大于你的其他角色,你与其同时将手牌摸或弃置至至多两张。然后你与其中手牌数较少的角色视为对另一名角色使用一张【决斗】。',
|
||||
ol_wenqin:'文钦',
|
||||
olguangao:'犷骜',
|
||||
olguangao_info:'当你/其他角色使用【杀】时,你/该角色可以额外指定一个目标/你为目标(使用者不为你则有距离限制)。然后若你的手牌数为偶数,你摸一张牌并令此牌对任意目标无效(可不选)。',
|
||||
olguangao_info:'当你/其他角色使用【杀】时,你/该角色可以额外指定一个目标/你为目标(有距离限制)。然后若你的手牌数为偶数,你摸一张牌并令此牌对任意目标无效(可不选)。',
|
||||
olhuiqi:'彗企',
|
||||
olhuiqi_info:'觉醒技。一名角色回合结束后,若仅有三名角色于此回合成为过牌的目标,你获得〖偕举〗并获得一个额外的回合。',
|
||||
olxieju:'偕举',
|
||||
|
@ -24023,6 +24264,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
oltianhou_club_info:'锁定技。其他角色的结束阶段开始时,若其体力值为全场最小,则其失去1点体力。',
|
||||
oltianhou_diamond:'凝雾',
|
||||
oltianhou_diamond_info:'锁定技。其他角色使用【杀】指定与其座次不相邻唯一目标时,则其判定。若判定结果的点数大于此【杀】,则此【杀】对其无效。',
|
||||
duanjiong:'段颎',
|
||||
olsaogu:'扫谷',
|
||||
olsaogu_info:'转换技。①出牌阶段,你可以。阴:弃置两张牌(不能包含你本阶段弃置过的花色),然后使用其中的【杀】;阳:摸一张牌。②结束阶段,你可以弃置一张牌,令一名其他角色执行你当前〖扫谷①〗的分支。',
|
||||
|
||||
sp_tianji:'天极·皇室宗亲',
|
||||
sp_sibi:'四弼·辅国文曲',
|
||||
|
@ -24033,7 +24277,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_liesi:'列肆·豪商巨贾',
|
||||
sp_default:"天同·同名异势",
|
||||
sp_qifu:'灯愿·祈福武将',
|
||||
sp_wanglang:'八萬·饶舌凤鹛',
|
||||
sp_wanglang:'OL·限定专属',
|
||||
sp_zhongdan:"忠胆英杰",
|
||||
sp_guozhan:"国战",
|
||||
sp_guozhan2:"国战移植",
|
||||
|
|
173
character/sp2.js
173
character/sp2.js
|
@ -51,7 +51,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhaozhong:['male','qun',6,['yangzhong','huangkong']],
|
||||
hanfu:['male','qun',4,['hfjieying','weipo']],
|
||||
re_quyi:['male','qun',4,['refuqi','jiaozi']],
|
||||
dongxie:['female','qun','3/4',['juntun','jiaojie']],
|
||||
dongxie:['female','qun',4,['dcjiaoxia','dchumei']],
|
||||
wangrong:['female','qun',3,['minsi','jijing','zhuide']],
|
||||
ol_dingyuan:['male','qun',4,['cixiao','xianshuai']],
|
||||
xin_baosanniang:['female','shu',3,['decadewuniang','decadexushen']],
|
||||
|
@ -111,6 +111,173 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
skill:{
|
||||
//董翓
|
||||
dcjiaoxia:{
|
||||
mod:{
|
||||
cardUsableTarget:function(card,player,target){
|
||||
if(!player.isPhaseUsing()) return;
|
||||
if(card.name=='sha'&&!player.getStorage('dcjiaoxia_mark').contains(target)) return true;
|
||||
},
|
||||
},
|
||||
audio:2,
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
filter:function(event,player){
|
||||
return player.countCards('h');
|
||||
},
|
||||
check:function(event,player){
|
||||
return player.countCards('h',card=>{
|
||||
return game.hasPlayer(target=>{
|
||||
var cardx=get.autoViewAs({name:'sha'},[card]);
|
||||
return player.canUse(cardx,target)&&get.effect(target,cardx,player,player)>0&&(!player.hasUseTarget(card)||player.hasValueTarget(card));
|
||||
});
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
var cards=player.getCards('h');
|
||||
player.addTempSkill('dcjiaoxia_used','phaseUseAfter');
|
||||
player.addGaintag(cards,'dcjiaoxia_used');
|
||||
},
|
||||
group:'dcjiaoxia_load',
|
||||
subSkill:{
|
||||
load:{
|
||||
charlotte:true,
|
||||
trigger:{player:'useCard1'},
|
||||
filter:function(event,player){
|
||||
if(!player.isPhaseUsing()) return false;
|
||||
return event.card.name=='sha'&&event.targets&&event.targets.some(target=>!player.getStorage('dcjiaoxia_mark').contains(target));
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
firstDo:true,
|
||||
content:function(){
|
||||
player.addTempSkill('dcjiaoxia_mark','phaseUseAfter');
|
||||
player.markAuto('dcjiaoxia_mark',trigger.targets.filter(target=>!player.getStorage('dcjiaoxia_mark').contains(target)));
|
||||
},
|
||||
},
|
||||
mark:{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
},
|
||||
used:{
|
||||
mod:{
|
||||
aiOrder:function(player,card,num){
|
||||
if(get.itemtype(card)=='card'&&card.hasGaintag('dcjiaoxia_used')) return num+1;
|
||||
},
|
||||
cardname:function(card,player){
|
||||
if(get.itemtype(card)=='card'&&card.hasGaintag('dcjiaoxia_used')) return 'sha';
|
||||
},
|
||||
},
|
||||
charlotte:true,
|
||||
onremove:function(player){
|
||||
player.removeGaintag('dcjiaoxia_used');
|
||||
},
|
||||
trigger:{player:'useCardAfter'},
|
||||
filter:function(event,player){
|
||||
return event.cards&&event.cards.length==1&&player.hasUseTarget(get.copy(event.cards[0]))&&player.getHistory('lose',evt=>{
|
||||
if(evt.getParent()!=event) return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains('dcjiaoxia_used')) return true;
|
||||
}
|
||||
return false;
|
||||
}).length&&player.getHistory('sourceDamage',evt=>evt.card==event.card).length;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
var card=get.copy(trigger.cards[0]);
|
||||
player.chooseUseTarget(card,get.prompt('dcjiaoxia'),false,false).set('prompt2','视为使用'+get.translation(card)).logSkill='dcjiaoxia';
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
dchumei:{
|
||||
subSkill:{
|
||||
0:{charlotte:true},
|
||||
1:{charlotte:true},
|
||||
2:{charlotte:true},
|
||||
},
|
||||
onChooseToUse:function(event){
|
||||
if(!game.online&&!event.dchumei_num){
|
||||
var player=event.player;
|
||||
var evtx=event.getParent('phaseUse');
|
||||
event.set('dchumei_num',player.getHistory('sourceDamage',function(evt){
|
||||
return evt.getParent('phaseUse')==evtx;
|
||||
}).length);
|
||||
}
|
||||
},
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
if(typeof event.dchumei_num!='number') return false;
|
||||
return game.hasPlayer(target=>lib.skill.dchumei.filterTarget(null,player,target));
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
if(target.getHp()>_status.event.dchumei_num) return false;
|
||||
if(!player.hasSkill('dchumei_0')) return true;
|
||||
if(!player.hasSkill('dchumei_1')&&target.countCards('he')) return true;
|
||||
if(!player.hasSkill('dchumei_2')&&target.isDamaged()) return true;
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var str=get.translation(target);
|
||||
player.chooseButton([
|
||||
'狐魅:请选择一项',
|
||||
[[
|
||||
[0,'令'+str+'摸一张牌'],
|
||||
[1,'令'+str+'交给你一张牌'],
|
||||
[2,'令'+str+'回复1点体力'],
|
||||
].filter(list=>{
|
||||
if(player.hasSkill('dchumei_'+list[0])) return false;
|
||||
if(list[0]==1&&!target.countCards('he')) return false;
|
||||
if(list[0]==2&&target.isHealthy()) return false;
|
||||
return true;
|
||||
}),'textbutton']
|
||||
],true).set('filterButton',button=>{
|
||||
var target=_status.event.target;
|
||||
if(player.hasSkill('dchumei_'+button.link)) return false;
|
||||
if(button.link==1&&!target.countCards('he')) return false;
|
||||
if(button.link==2&&target.isHealthy()) return false;
|
||||
return true;
|
||||
}).set('ai',function(button){
|
||||
var target=_status.event.target;
|
||||
return [
|
||||
get.effect(target,{name:'wuzhong'},player,player)/2,
|
||||
get.effect(target,{name:'shunshou_copy2'},player,player),
|
||||
get.recoverEffect(target,player,player),
|
||||
][button.link];
|
||||
}).set('target',target);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var num=result.links[0];
|
||||
player.addTempSkill('dchumei_'+num,'phaseUseAfter');
|
||||
switch(num){
|
||||
case 0:
|
||||
target.draw();
|
||||
break;
|
||||
case 1:
|
||||
target.chooseCard('狐魅:交给'+get.translation(player)+'一张牌','he',true);
|
||||
break;
|
||||
case 2:
|
||||
target.recover();
|
||||
break;
|
||||
}
|
||||
if(num!=1) event.finish();
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.bool) player.gain(result.cards,target,'giveAuto');
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(!player.hasSkill('dchumei_0')) return 1;
|
||||
if(!player.hasSkill('dchumei_1')) return -1;
|
||||
if(!player.hasSkill('dchumei_2')) return 1;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//魏关羽
|
||||
dcdanji:{
|
||||
audio:'danji',
|
||||
|
@ -10060,6 +10227,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
juntun_info:'锁定技,准备阶段,若X大于1,则你减1点体力上限并摸X张牌(X为你的体力上限)。',
|
||||
jiaojie:'狡黠',
|
||||
jiaojie_info:'锁定技,你的红色牌不计入手牌上限。你使用黑色牌无距离和次数限制。',
|
||||
dcjiaoxia:'狡黠',
|
||||
dcjiaoxia_info:'①出牌阶段开始时,你可以令自己的所有手牌于此阶段均视为【杀】。若如此做,你使用以此法转化的【杀】造成伤害后,你可以视为使用此牌对应的原卡牌。②出牌阶段,你对你本阶段未使用过【杀】的角色使用【杀】无次数限制。',
|
||||
dchumei:'狐魅',
|
||||
dchumei_info:'出牌阶段各限一次,你可以选择一名体力值不大于X的角色,令其:①摸一张牌。②交给你一张牌。③回复1点体力。(X为你本阶段造成伤害的次数)',
|
||||
buchen:'不臣',
|
||||
buchen_info:'隐匿技,你于其他角色的回合登场时,可获得当前回合角色的一张牌。',
|
||||
smyyingshi:'鹰视',
|
||||
|
|
201
character/tw.js
201
character/tw.js
|
@ -7447,7 +7447,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 2'
|
||||
player.chooseToCompare(targets,function(card){
|
||||
return get.number(card);
|
||||
}).setContent(lib.skill.twchaofeng.chooseToCompareMeanwhile);
|
||||
}).setContent('chooseToCompareMeanwhile');
|
||||
'step 3'
|
||||
if(result.winner&&result.winner==player){
|
||||
event.targets.remove(result.winner);
|
||||
|
@ -7685,7 +7685,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result.bool){
|
||||
event.targets=result.targets;
|
||||
player.logSkill('twchaofeng_compare',event.targets);
|
||||
player.chooseToCompare(event.targets).setContent(lib.skill.twchaofeng.chooseToCompareMeanwhile);
|
||||
player.chooseToCompare(event.targets).setContent('chooseToCompareMeanwhile');
|
||||
}
|
||||
'step 2'
|
||||
if(result.winner){
|
||||
|
@ -7699,169 +7699,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
chooseToCompareMeanwhile:function(){
|
||||
'step 0'
|
||||
if(player.countCards('h')==0){
|
||||
event.result={cancelled:true,bool:false}
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
for(var i=0; i<targets.length; i++){
|
||||
if(targets[i].countCards('h')==0){
|
||||
event.result={cancelled:true,bool:false}
|
||||
event.finish();
|
||||
return;
|
||||
}
|
||||
}
|
||||
if(!event.multitarget){
|
||||
targets.sort(lib.sort.seat);
|
||||
}
|
||||
game.log(player,'对',targets,'发起了共同拼点');
|
||||
event.compareMeanwhile=true;
|
||||
'step 1'
|
||||
event._result=[];
|
||||
event.list=targets.filter(function(current){
|
||||
return !event.fixedResult||!event.fixedResult[current.playerid];
|
||||
});
|
||||
if(event.list.length||!event.fixedResult||!event.fixedResult[player.playerid]){
|
||||
if(!event.fixedResult||!event.fixedResult[player.playerid]) event.list.unshift(player);
|
||||
player.chooseCardOL(event.list,'请选择拼点牌',true).set('type','compare').set('ai',event.ai).set('source',player).aiCard=function(target){
|
||||
var hs=target.getCards('h');
|
||||
var event=_status.event;
|
||||
event.player=target;
|
||||
hs.sort(function(a,b){
|
||||
return event.ai(b)-event.ai(a);
|
||||
});
|
||||
delete event.player;
|
||||
return {bool:true,cards:[hs[0]]};
|
||||
};
|
||||
}
|
||||
'step 2'
|
||||
var cards=[];
|
||||
var lose_list=[];
|
||||
if(event.fixedResult&&event.fixedResult[player.playerid]){
|
||||
event.list.unshift(player);
|
||||
result.unshift({bool:true,cards:[event.fixedResult[player.playerid]]});
|
||||
lose_list.push([player,[event.fixedResult[player.playerid]]]);
|
||||
}
|
||||
else{
|
||||
if(result[0].skill&&lib.skill[result[0].skill]&&lib.skill[result[0].skill].onCompare){
|
||||
player.logSkill(result[0].skill);
|
||||
result[0].cards=lib.skill[result[0].skill].onCompare(player)
|
||||
}
|
||||
else lose_list.push([player,result[0].cards]);
|
||||
};
|
||||
for(var j=0; j<targets.length; j++){
|
||||
if(event.list.contains(targets[j])){
|
||||
var i=event.list.indexOf(targets[j]);
|
||||
if(result[i].skill&&lib.skill[result[i].skill]&&lib.skill[result[i].skill].onCompare){
|
||||
event.list[i].logSkill(result[i].skill);
|
||||
result[i].cards=lib.skill[result[i].skill].onCompare(event.list[i]);
|
||||
}
|
||||
else lose_list.push([targets[j],result[i].cards]);
|
||||
cards.push(result[i].cards[0]);
|
||||
}
|
||||
else if(event.fixedResult&&event.fixedResult[targets[j].playerid]){
|
||||
cards.push(event.fixedResult[targets[j].playerid]);
|
||||
lose_list.push([targets[j],[event.fixedResult[targets[j].playerid]]]);
|
||||
}
|
||||
}
|
||||
if(lose_list.length){
|
||||
game.loseAsync({
|
||||
lose_list:lose_list,
|
||||
}).setContent('chooseToCompareLose');
|
||||
}
|
||||
event.lose_list=lose_list;
|
||||
event.getNum=function(card){
|
||||
for(var i of event.lose_list){
|
||||
if(i[1].contains&&i[1].contains(card)) return get.number(card,i[0]);
|
||||
}
|
||||
return get.number(card,false);
|
||||
}
|
||||
event.cardlist=cards;
|
||||
event.cards=cards;
|
||||
event.card1=result[0].cards[0];
|
||||
event.num1=event.getNum(event.card1);
|
||||
event.iwhile=0;
|
||||
event.winner=null;
|
||||
event.maxNum=-1;
|
||||
event.tempplayer=event.player;
|
||||
event.result={
|
||||
winner:null,
|
||||
player:event.card1,
|
||||
targets:event.cardlist.slice(0),
|
||||
num1:[],
|
||||
num2:[],
|
||||
};
|
||||
player.$compareMultiple(event.card1,targets,cards);
|
||||
game.log(player,'的拼点牌为',event.card1);
|
||||
player.animate('target');
|
||||
game.delay(0,1000);
|
||||
'step 3'
|
||||
event.target=null;
|
||||
event.trigger('compare');
|
||||
'step 4'
|
||||
if(event.iwhile<targets.length){
|
||||
event.target=targets[event.iwhile];
|
||||
event.target.animate('target');
|
||||
event.card2=event.cardlist[event.iwhile];
|
||||
event.num2=event.getNum(event.card2);
|
||||
game.log(event.target,'的拼点牌为',event.card2);
|
||||
//event.tempplayer.line(event.target);
|
||||
delete event.player;
|
||||
event.trigger('compare');
|
||||
}
|
||||
else{
|
||||
game.delay(0,1000);
|
||||
event.goto(7);
|
||||
}
|
||||
'step 5'
|
||||
event.result.num1[event.iwhile]=event.num1;
|
||||
event.result.num2[event.iwhile]=event.num2;
|
||||
var list=[[event.tempplayer,event.num1],[event.target,event.num2]];
|
||||
for(var i of list){
|
||||
if(i[1]>event.maxNum){
|
||||
event.maxNum=i[1];
|
||||
event.winner=i[0];
|
||||
}
|
||||
else if(event.winner&&i[1]==event.maxNum&&i[0]!=event.winner){
|
||||
event.winner=null;
|
||||
}
|
||||
}
|
||||
'step 6'
|
||||
event.iwhile++;
|
||||
event.goto(4);
|
||||
'step 7'
|
||||
var player=event.tempplayer;
|
||||
event.player=player;
|
||||
delete event.tempplayer;
|
||||
var str='无人拼点成功';
|
||||
if(event.winner){
|
||||
event.result.winner=event.winner;
|
||||
str=get.translation(event.winner)+'拼点成功';
|
||||
game.log(event.winner,'拼点成功');
|
||||
event.winner.popup('胜');
|
||||
} else game.log('#b无人','拼点成功');
|
||||
var list=[player].addArray(targets);
|
||||
list.remove(event.winner);
|
||||
for(var i of list){
|
||||
i.popup('负');
|
||||
}
|
||||
if(str){
|
||||
game.broadcastAll(function(str){
|
||||
var dialog=ui.create.dialog(str);
|
||||
dialog.classList.add('center');
|
||||
setTimeout(function(){
|
||||
dialog.close();
|
||||
},1000);
|
||||
},str);
|
||||
}
|
||||
game.delay(3);
|
||||
'step 8'
|
||||
game.broadcastAll(ui.clear);
|
||||
'step 9'
|
||||
event.cards.add(event.card1);
|
||||
}
|
||||
},
|
||||
twchuanshu:{
|
||||
|
@ -8910,8 +8747,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
intro:{
|
||||
content:function(storage,player){
|
||||
if(player.storage.twzhengjian) return '其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则你可对其造成1点伤害,然后你可失去此效果并获得〖征建〗的效果二。';
|
||||
return '其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果二。';
|
||||
if(player.storage.twzhengjian) return '其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则你可对其造成1点伤害,然后你可失去此效果并获得〖征建〗的效果一。';
|
||||
return '其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果一。';
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -8936,8 +8773,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return list.length>=Math.ceil(num1/2);
|
||||
},
|
||||
content:function(){
|
||||
player.storage.twzhengjian=true;
|
||||
'step 0'
|
||||
player.awakenSkill('twzhongchi');
|
||||
'step 1'
|
||||
player.recover(2);
|
||||
player.addSkill('twzhongchi_effect');
|
||||
player.storage.twzhengjian=true;
|
||||
'step 2'
|
||||
game.delayx();
|
||||
},
|
||||
subSkill:{
|
||||
|
@ -11569,7 +11411,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
case 'equip2':
|
||||
target.draw();
|
||||
break;
|
||||
case 'equip3': case 'equip4': case 'equip6':
|
||||
case 'equip3': case 'equip4': case 'equip5':
|
||||
target.recover();
|
||||
break;
|
||||
}
|
||||
|
@ -11595,7 +11437,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var hp=player.hp,hs=player.countCards('h',(card)=>card!=ui.selected.cards[0]);
|
||||
var tp=target.hp,ts=target.countCards('h');
|
||||
if(sub=='equip2') ts++;
|
||||
if(tp<target.maxHp&&(sub=='equip3'||sub=='equip4')) tp++;
|
||||
if(tp<target.maxHp&&(sub=='equip3'||sub=='equip4'||sub=='equip5')) tp++;
|
||||
if(tp<=hp||ts<=hs) eff+=2;
|
||||
}
|
||||
if(sub=='equip1'){
|
||||
|
@ -11613,7 +11455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var sub=get.subtype(ui.selected.cards[0],false);
|
||||
var eff=get.effect(target,ui.selected.cards[0],player,target);
|
||||
if(sub=='equip2') eff+=(get.effect(target,{name:'wuzhong'},target,target)/2);
|
||||
if(target.isDamaged()&&(sub=='equip3'||sub=='equip4')) eff+=get.recoverEffect(target,player,player);
|
||||
if(target.isDamaged()&&(sub=='equip3'||sub=='equip4'||sub=='equip5')) eff+=get.recoverEffect(target,player,player);
|
||||
return eff;
|
||||
},
|
||||
},
|
||||
|
@ -11630,7 +11472,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
player.chooseCardTarget({
|
||||
prompt:get.prompt('twyuanhu'),
|
||||
prompt2:'将一张装备牌置入一名角色的装备区内。若此牌为:武器牌,你弃置与其距离为1的另一名角色区域的一张牌;防具牌,其摸一张牌;坐骑牌,其回复1点体力。若其的体力值或手牌数不大于你,则你可摸一张牌。',
|
||||
prompt2:'将一张装备牌置入一名角色的装备区内。若此牌为:武器牌,你弃置与其距离为1的另一名角色区域的一张牌;防具牌,其摸一张牌;坐骑牌或宝物牌,其回复1点体力。然后若其体力值或手牌数不大于你,则你摸一张牌。',
|
||||
filterCard:lib.skill.twyuanhu.filterCard,
|
||||
filterTarget:lib.skill.twyuanhu.filterTarget,
|
||||
position:'he',
|
||||
|
@ -11672,7 +11514,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.target=result.targets[0];
|
||||
var list=[];
|
||||
if(player.hasEnabledSlot(3)) list.push('equip3');
|
||||
if(!player.hasEnabledSlot(4)) list.push('equip4');
|
||||
if(player.hasEnabledSlot(4)) list.push('equip4');
|
||||
if(list.length==1) event._result={control:list[0]};
|
||||
else player.chooseControl(list).set('prompt','选择废除一个坐骑栏');
|
||||
}
|
||||
|
@ -13391,6 +13233,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(target.countCards('h')>player.countCards('h')||player.group==target.group) player.draw();
|
||||
},
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
player:function(player,target){
|
||||
if(player.countCards('h')<target.countCards('h')||player.group==target.group) return 1;
|
||||
|
@ -13554,7 +13397,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
tw_re_caohong:'TW手杀曹洪',
|
||||
tw_re_caohong_ab:'曹洪',
|
||||
twyuanhu:'援护',
|
||||
twyuanhu_info:'出牌阶段限一次。你可将一张装备牌置入一名角色的装备区内。若此牌为:武器牌,你弃置与其距离为1的另一名角色区域的一张牌;防具牌,其摸一张牌;坐骑牌,其回复1点体力。若其的体力值或手牌数不大于你,则你可摸一张牌,且可以于本回合的结束阶段再发动一次〖援护〗。',
|
||||
twyuanhu_info:'出牌阶段限一次。你可将一张装备牌置入一名角色的装备区内。若此牌为:武器牌,你弃置与其距离为1的另一名角色区域的一张牌;防具牌,其摸一张牌;坐骑牌或宝物牌,其回复1点体力。然后若其体力值或手牌数不大于你,则你摸一张牌,且你可以于本回合的结束阶段发动一次〖援护〗。',
|
||||
twjuezhu:'决助',
|
||||
twjuezhu_info:'限定技。准备阶段,你可废除一个坐骑栏,令一名角色获得〖飞影〗并废除判定区。该角色死亡后,你恢复以此法废除的装备栏。',
|
||||
tw_zangba:'TW臧霸',
|
||||
|
@ -13588,7 +13431,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
twbudao:'布道',
|
||||
twbudao_info:'限定技。准备阶段,你可减1点体力上限,回复1点体力并选择获得一个〖布道〗技能池里的技能(三选一)。然后你可以令一名其他角色也获得此技能并交给你一张牌。',
|
||||
twzhouhu:'咒护',
|
||||
twzhouhu_info:'出牌阶段限一次。你可以弃置一张红色手牌并施法:回复1点体力。',
|
||||
twzhouhu_info:'出牌阶段限一次。你可以弃置一张红色手牌并施法:回复X点体力。',
|
||||
twharvestinori:'丰祈',
|
||||
twharvestinori_info:'出牌阶段限一次。你可以弃置一张黑色手牌并施法:摸2X张牌。',
|
||||
twzuhuo:'阻祸',
|
||||
|
@ -13601,7 +13444,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
twguimen_info:'锁定技。当你弃置牌时,若其中有♠牌,你为每一张♠牌判定,若此牌点数与结果之差不大于1,你对一名其他角色造成2点雷电伤害。',
|
||||
twdidao:'地道',
|
||||
twdidao_info:'一名角色的判定牌生效前,你可以打出一张牌作为判定牌并获得原判定牌。若你以此法打出的牌与原判定牌颜色相同,你摸一张牌。',
|
||||
tw_chengpu:'程普',
|
||||
tw_chengpu:'TW程普',
|
||||
twlihuo:'疠火',
|
||||
twlihuo2:'疠火',
|
||||
twlihuo3:'疠火',
|
||||
|
@ -13646,11 +13489,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
twzhenxi_info:'每回合限一次。当你使用【杀】指定目标后,你可选择一项:⒈弃置其X张手牌(X为你至其的距离);⒉将其装备区或判定区内的一张牌移动到另一名角色的装备区或判定区内。若其体力值大于你或其体力值为全场最高,则你可以改为依次执行以上两项。',
|
||||
twyangshi:'扬师',
|
||||
twyangshi_info:'锁定技。当你受到伤害后,若场上有不在你攻击范围内的其他角色,则你令攻击范围+1;若没有,则你从牌堆中获得一张【杀】。',
|
||||
tw_puyangxing:'TW濮阳兴',
|
||||
tw_puyangxing:'濮阳兴',
|
||||
twzhengjian:'征建',
|
||||
twzhengjian_info:'游戏开始时,你可选择获得一项效果:⒈其他角色的出牌阶段结束时,若其本阶段内未使用过非基本牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果二。⒉其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果二。',
|
||||
twzhengjian_info:'游戏开始时,你可选择获得一项效果:⒈其他角色的出牌阶段结束时,若其本阶段内未使用过非基本牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果二。⒉其他角色的出牌阶段结束时,若其本阶段内未获得过牌,则其须交给你一张牌,然后你可失去此效果并获得〖征建〗的效果一。',
|
||||
twzhongchi:'众斥',
|
||||
twzhongchi_info:'锁定技,限定技。当你因〖征建〗而获得牌后,若已经有至少X名角色因〖征建〗而交给你过牌(X为游戏人数的一半且向上取整),则你于本局游戏内受到渠道为【杀】的伤害+1,且你将〖征建〗中的“其须交给你一张牌”改为“你可对其造成1点伤害”。',
|
||||
twzhongchi_info:'锁定技,限定技。当你因〖征建〗而获得牌后,若已经有至少X名角色因〖征建〗而交给你过牌(X为游戏人数的一半且向上取整),则你回复2点体力,且于本局游戏内受到渠道为【杀】的伤害+1,且你将〖征建〗中的“其须交给你一张牌”改为“你可对其造成1点伤害”。',
|
||||
tw_bingyuan:'邴原',
|
||||
twbingde:'秉德',
|
||||
twbingde_info:'出牌阶段限一次。你可以选择一个本阶段未选择过的花色并弃置一张牌,你摸等同于本阶段你使用此花色的牌数,然后若你以此法弃置的牌的花色与你选择的花色相同,你令你〖秉德〗于此阶段发动的次数上限+1。',
|
||||
|
|
|
@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:'xianding',
|
||||
connect:true,
|
||||
character:{
|
||||
tianshangyi:['female','wei',3,['dcposuo','dcxiaoren'],['unseen']],
|
||||
sunlingluan:['female','wu',3,['dclingyue','dcpandi']],
|
||||
dc_wangjun:['male','qun',4,['dctongye','dcchangqu']],
|
||||
zhoubuyi:['male','wei',3,['dcshiji','dcsilun']],
|
||||
|
@ -81,7 +82,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'],
|
||||
sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen'],
|
||||
sp2_yinyu:['zhouyi','luyi','sunlingluan'],
|
||||
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao'],
|
||||
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao','tianshangyi'],
|
||||
sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'],
|
||||
sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun','zhoubuyi'],
|
||||
sp2_gaoshan:['wanglang','liuhui'],
|
||||
|
@ -89,6 +90,180 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
skill:{
|
||||
//田尚衣
|
||||
dcposuo:{
|
||||
onChooseToUse:function(event){
|
||||
if(!game.online&&!event.dcposuo_cards){
|
||||
var player=event.player;
|
||||
var evtx=event.getParent('phaseUse');
|
||||
var suits=lib.suit.slice(0).reverse();
|
||||
suits=suits.filter(suit=>!player.getStorage('dcposuo_suits').contains(suit)&&player.countCards('hs',card=>get.suit(card,player)==suit));
|
||||
if(!suits.length||player.getHistory('sourceDamage',evt=>{
|
||||
return evt.player!=player&&evt.getParent('phaseUse')==evtx;
|
||||
}).length) event.set('dcposuo_cards',undefined);
|
||||
else{
|
||||
var list=[],cards=Array.from(ui.cardPile.childNodes);
|
||||
cards.addArray(Array.from(ui.discardPile.childNodes));
|
||||
game.countPlayer(current=>cards.addArray(current.getCards('hejxs')));
|
||||
for(var name of lib.inpile){
|
||||
if(!get.tag({name:name},'damage')) continue;
|
||||
if(cards.some(card=>get.name(card,false)==name&&!get.nature(card,false))){
|
||||
for(var suit of suits){
|
||||
if(cards.some(card=>get.name(card,false)==name&&!get.nature(card,false)&&get.suit(card,false)==suit)){
|
||||
list.push([get.type(name),get.translation(suit),name,undefined,suit]);
|
||||
}
|
||||
}
|
||||
}
|
||||
if(name=='sha'){
|
||||
for(var nature of lib.inpile_nature){
|
||||
if(cards.some(card=>get.name(card,false)==name&&get.nature(card,false)==nature)){
|
||||
for(var suit of suits){
|
||||
if(cards.some(card=>get.name(card,false)==name&&get.nature(card,false)==nature&&get.suit(card,false)==suit)){
|
||||
list.push([get.type(name),get.translation(suit),name,nature,suit]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
event.set('dcposuo_cards',list);
|
||||
}
|
||||
}
|
||||
},
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filter:function(event,player){
|
||||
return event.dcposuo_cards&&event.dcposuo_cards.length;
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
return ui.create.dialog('婆娑',[event.dcposuo_cards,'vcard'],'hidden');
|
||||
},
|
||||
check:function(button){
|
||||
var player=_status.event.player;
|
||||
return player.getUseValue({name:button.link[2],nature:button.link[3]});
|
||||
},
|
||||
backup:function(links,player){
|
||||
return {
|
||||
suit:links[0][4],
|
||||
filterCard:function(card,player){
|
||||
return get.suit(card,player)==lib.skill.dcposuo_backup.suit;
|
||||
},
|
||||
viewAs:{
|
||||
name:links[0][2],
|
||||
nature:links[0][3],
|
||||
isCard:true,
|
||||
},
|
||||
check:function(card){
|
||||
return 6.5-get.value(card);
|
||||
},
|
||||
precontent:function(){
|
||||
player.logSkill('dcposuo');
|
||||
delete event.result.skill;
|
||||
player.addTempSkill('dcposuo_suits','phaseUseAfter');
|
||||
player.markAuto('dcposuo_suits',[get.suit(event.result.cards[0])]);
|
||||
},
|
||||
}
|
||||
},
|
||||
prompt:function(links,player){
|
||||
var suit=links[0][4];
|
||||
var name=links[0][2];
|
||||
var nature=links[0][3];
|
||||
return '将一张'+get.translation(suit)+'牌当作'+(get.translation(nature)||'')+get.translation(name)+'使用';
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
order:10,
|
||||
result:{player:1},
|
||||
},
|
||||
subSkill:{
|
||||
suits:{
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
},
|
||||
},
|
||||
},
|
||||
dcxiaoren:{
|
||||
audio:2,
|
||||
trigger:{source:'damageSource'},
|
||||
usable:1,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.judge();
|
||||
'step 1'
|
||||
if(result.color!='red'&&result.color!='black') return;
|
||||
if(result.color=='red'&&!game.hasPlayer(current=>current.isDamaged())) return;
|
||||
if(result.color=='black'&&(!trigger.player.isIn()||game.countPlayer()<3)) return;
|
||||
var next=game.createEvent('dcxiaoren_'+result.color);
|
||||
next.player=player;
|
||||
if(result.color=='black') next.target=trigger.player;
|
||||
next.setContent(lib.skill.dcxiaoren['content_'+result.color]);
|
||||
},
|
||||
content_red:function(){
|
||||
'step 0'
|
||||
player.chooseTarget('绡刃:是否令一名其他角色回复1点体力?',(card,player,target)=>target.isDamaged()).set('ai',target=>get.recoverEffect(target,_status.event.player,_status.event.player));
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.line(target);
|
||||
target.recover();
|
||||
}
|
||||
},
|
||||
content_black:function(){
|
||||
'step 0'
|
||||
if(target.getPrevious()==player) event._result={control:'下家'};
|
||||
else if(target.getNext()==player) event._result={control:'上家'};
|
||||
else player.chooseControl('上家','下家').set('prompt','绡刃:请选择一个方向').set('prompt2','对'+get.translation(target)+'上家或下家造成1点伤害,然后你以此方向可重复此流程直到有角色因此死亡或此方向的下个目标为你').set('ai',()=>{
|
||||
var player=_status.event.player;
|
||||
var target=_status.event.target;
|
||||
var left=0,right=0;
|
||||
var leftx=target.getPrevious(),lefty=target.getNext();
|
||||
while(leftx!=player){
|
||||
if(get.damageEffect(leftx,player,player)<0) break;
|
||||
else{
|
||||
left+=get.damageEffect(leftx,player,player);
|
||||
leftx=leftx.getPrevious();
|
||||
}
|
||||
}
|
||||
while(rightx!=player){
|
||||
if(get.damageEffect(rightx,player,player)<0) break;
|
||||
else{
|
||||
right+=get.damageEffect(rightx,player,player);
|
||||
rightx=leftx.getPrevious();
|
||||
}
|
||||
}
|
||||
return left>right?'上家':'下家';
|
||||
}).set('target',target);
|
||||
'step 1'
|
||||
if(result.control){
|
||||
event.num=1;
|
||||
player.popup(result.control);
|
||||
game.log(player,'选择了','#y'+result.control);
|
||||
event.fangxiang=result.control;
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
var current=target;
|
||||
for(var i=0;i<event.num;i++){
|
||||
current=current[event.fangxiang=='上家'?'getPrevious':'getNext']();
|
||||
}
|
||||
if(current==player) event.finish();
|
||||
else{
|
||||
event.current=current;
|
||||
player.line(current);
|
||||
current.damage();
|
||||
}
|
||||
'step 3'
|
||||
var aim=event.current[event.fangxiang=='上家'?'getPrevious':'getNext']();
|
||||
if(!event.current.isIn()||aim==player) event.finish();
|
||||
else player.chooseBool('绡刃:是否对'+get.translation(aim)+'造成1点伤害?').set('choice',get.damageEffect(aim,player,player)>=0);
|
||||
'step 4'
|
||||
if(result.bool){
|
||||
event.num++;
|
||||
event.goto(2);
|
||||
}
|
||||
},
|
||||
},
|
||||
//孙翎鸾
|
||||
dclingyue:{
|
||||
audio:2,
|
||||
|
@ -108,7 +283,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
var num=1,current=_status.currentPhase;
|
||||
if(current&&trigger.player!=current){
|
||||
if(current&&trigger.source!=current){
|
||||
var num=0,players=game.players.slice(0).concat(game.dead);
|
||||
for(var target of players){
|
||||
target.getHistory('sourceDamage',function(evt){
|
||||
|
@ -128,8 +303,61 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var source=player.storage.dcpandi_effect;
|
||||
return get.itemtype(source)!='player'||!source.isIn();
|
||||
},
|
||||
pandi_wrapKey:function(){
|
||||
var str = "";
|
||||
for(var arg of arguments){
|
||||
if(arg === null || arg === undefined){
|
||||
str += (arg + "-");
|
||||
continue;
|
||||
}
|
||||
switch(get.itemtype(arg)){
|
||||
case 'player':
|
||||
str+=("p:"+arg.playerid);
|
||||
break;
|
||||
case 'card':
|
||||
if(arg.cardid){
|
||||
str+=("c:"+arg.cardid);
|
||||
}else{
|
||||
str+=("c:"+arg.name);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
str+=("n:"+arg);
|
||||
break;
|
||||
}
|
||||
str+="-";
|
||||
}
|
||||
return str;
|
||||
},
|
||||
pandi_effect:function(target,card,player,viewer){
|
||||
if(!_status.event)return get.effect(target,card,player,viewer);
|
||||
var key = lib.skill.dcpandi.pandi_wrapKey.apply(null,arguments);
|
||||
var effect = _status.event.getTempCache('effect',key);
|
||||
if(effect !== undefined)return effect;
|
||||
effect = get.effect(target,card,player,viewer);
|
||||
_status.event.putTempCache('effect',key,effect);
|
||||
return effect;
|
||||
},
|
||||
pandi_canUse:function(player,card,target,arg1,arg2){
|
||||
if(!_status.event)return player.canUse(card,target,arg1,arg2);
|
||||
var key = lib.skill.dcpandi.pandi_wrapKey.apply(null,arguments);
|
||||
var effect = _status.event.getTempCache('canUse',key);
|
||||
if(effect !== undefined)return effect;
|
||||
effect = player.canUse(card,target,arg1,arg2);
|
||||
_status.event.putTempCache('canUse',key,effect);
|
||||
return effect;
|
||||
},
|
||||
pandi_effect_use:function(target,card,player,viewer){
|
||||
if(!_status.event)return get.effect_use(target,card,player,viewer);
|
||||
var key = lib.skill.dcpandi.pandi_wrapKey.apply(null,arguments);
|
||||
var effect = _status.event.getTempCache('effect_use',key);
|
||||
if(effect !== undefined)return effect;
|
||||
effect = get.effect_use(target,card,player,viewer);
|
||||
_status.event.putTempCache('effect_use',key,effect);
|
||||
return effect;
|
||||
},
|
||||
onChooseToUse:function(event){
|
||||
if(!game.online&&event.type=='phase'){
|
||||
if(!game.online&&event.type=='phase'&&!event.dcpandi){
|
||||
var players=game.filterPlayer(function(current){
|
||||
return current!=event.player&¤t.getHistory('sourceDamage').length==0;
|
||||
})
|
||||
|
@ -162,15 +390,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(typeof(card)=='string'){
|
||||
card={name:card,isCard:true};
|
||||
}
|
||||
var key = lib.skill.dcpandi.pandi_wrapKey(card,player,viewer);
|
||||
if(_status.event){
|
||||
var uv = _status.event.getTempCache('getUseValue',key);
|
||||
if(uv!==undefined){
|
||||
return uv;
|
||||
}
|
||||
}
|
||||
var targets=game.filterPlayer();
|
||||
var value=[];
|
||||
var min=0;
|
||||
var info=get.info(card);
|
||||
if(!info||info.notarget) return 0;
|
||||
if(!info||info.notarget){
|
||||
if(_status.event){
|
||||
_status.event.putTempCache('getUseValue',key,0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
var range;
|
||||
var select=get.copy(info.selectTarget);
|
||||
if(select==undefined){
|
||||
if(info.filterTarget==undefined) return true;
|
||||
if(info.filterTarget==undefined) {
|
||||
if(_status.event){
|
||||
_status.event.putTempCache('getUseValue',key,true);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
range=[1,1];
|
||||
}
|
||||
else if(typeof select=='number') range=[select,select];
|
||||
|
@ -178,11 +423,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else if(typeof select=='function') range=select(card,player);
|
||||
if(info.singleCard) range=[1,1];
|
||||
game.checkMod(card,player,range,'selectTarget',player);
|
||||
if(!range) return 0;
|
||||
if(!range){
|
||||
if(_status.event){
|
||||
_status.event.putTempCache('getUseValue',key,0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
for(var i=0;i<targets.length;i++){
|
||||
if(player.canUse(card,targets[i],null,true)){
|
||||
var eff=get.effect(targets[i],card,player,viewer);
|
||||
if(lib.skill.dcpandi.pandi_canUse(player,card,targets[i],null,true)){
|
||||
var eff=lib.skill.dcpandi.pandi_effect(targets[i],card,player,viewer);
|
||||
value.push(eff);
|
||||
}
|
||||
}
|
||||
|
@ -193,6 +443,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(i==range[1]||range[1]!=-1&&value[i]<=0) break;
|
||||
min+=value[i];
|
||||
}
|
||||
if(_status.event){
|
||||
_status.event.putTempCache('getUseValue',key,min);
|
||||
}
|
||||
return min;
|
||||
},
|
||||
subSkill:{
|
||||
|
@ -223,7 +476,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(typeof card!='object') return;
|
||||
var source=player.storage.dcpandi_effect;
|
||||
if(!source.isIn()||get.itemtype(source)!='player'||get.itemtype(source.storage.dcpandi_effect)=='player') return;
|
||||
return [0,get.effect_use(target,card,source,player),0,get.effect(target,card,source,target)]
|
||||
return [0,lib.skill.dcpandi.pandi_effect_use(target,card,source,player),0,lib.skill.dcpandi.pandi_effect(target,card,source,target)]
|
||||
},
|
||||
},
|
||||
mod:{
|
||||
|
@ -261,7 +514,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var mod=game.checkMod(card,player,source,'unchanged','cardEnabled',source);
|
||||
if(mod!='unchanged') return mod;
|
||||
if(typeof filter=='boolean') return filter;
|
||||
if(typeof filter=='function') return filter(card,player,event);
|
||||
if(typeof filter=='function') return filter(card,source,event);
|
||||
}
|
||||
},
|
||||
cardUsable:function(card,player,num){
|
||||
|
@ -3760,7 +4013,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger._triggered=5;
|
||||
var evt=player.insertPhase();
|
||||
delete evt.skill;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{
|
||||
|
@ -4806,7 +5059,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else if(evt.type=='gain'){
|
||||
var evtx=evt.getParent();
|
||||
if(evtx.giver||evtx.getParent().name=='_yongjian_zengyu') return false;
|
||||
if(evtx.giver||evtx.getParent().name=='gift') return false;
|
||||
var cards=evtx.getg(target);
|
||||
if(!cards.length) return false;
|
||||
var cards2=evtx.getl(current).cards2;
|
||||
|
@ -4817,7 +5070,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
})) guojue=true;
|
||||
if(!renzhi&¤t.hasHistory('gain',evt=>{
|
||||
if(evt.giver!=target||evt.getParent().name=='_yongjian_zengyu') return false;
|
||||
if(evt.giver!=target||evt.getParent().name=='gift') return false;
|
||||
return evt.cards.length;
|
||||
})) renzhi=true;
|
||||
});
|
||||
|
@ -4849,7 +5102,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
else if(evt.type=='gain'){
|
||||
var evtx=evt.getParent();
|
||||
if(evtx.giver||evtx.getParent().name=='_yongjian_zengyu') return false;
|
||||
if(evtx.giver||evtx.getParent().name=='gift') return false;
|
||||
var cards=evtx.getg(target);
|
||||
if(!cards.length) return false;
|
||||
var cards2=evtx.getl(current).cards2;
|
||||
|
@ -4860,7 +5113,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
})) guojue=true;
|
||||
if(!renzhi&¤t.hasHistory('gain',evt=>{
|
||||
if(evt.giver!=target||evt.getParent().name=='_yongjian_zengyu') return false;
|
||||
if(evt.giver!=target||evt.getParent().name=='gift') return false;
|
||||
return evt.cards.length;
|
||||
})) renzhi=true;
|
||||
});
|
||||
|
@ -5566,7 +5819,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var evt=trigger.getl(player);
|
||||
var num=0;
|
||||
player.getHistory('lose',function(evt){
|
||||
if(!goon||evt.type!='discard') return false;
|
||||
if(evt.type!='discard') return false;
|
||||
num+=evt.cards2.length;
|
||||
});
|
||||
var cards=[];
|
||||
|
@ -5597,52 +5850,148 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
var list=lib.skill.dchuishu.getList(player);
|
||||
event.initial_list=list.slice(0);
|
||||
var min=list[0];
|
||||
var min=list[0],max=list[0];
|
||||
for(var i of list){
|
||||
if(i<min) min=i;
|
||||
if(i>max) max=i;
|
||||
}
|
||||
var exps=['摸牌数[','弃牌数[','目标牌数['];
|
||||
var choices=[];
|
||||
var choices_min=[],choices_max=[];
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(list[i]==min) choices.push(exps[i]+min+']');
|
||||
if(list[i]==min) choices_min.push(exps[i]+min+']');
|
||||
if(list[i]==max) choices_max.push(exps[i]+max+']');
|
||||
}
|
||||
if(choices_min.length==1&&choices_max.length==1){
|
||||
event._result={bool:true,min:choices_min[0],max:choices_max[0]};
|
||||
}
|
||||
else{
|
||||
if(player.isUnderControl()) game.swapPlayerAuto(player);
|
||||
var switchToAuto=function(){
|
||||
_status.imchoosing=false;
|
||||
event._result={
|
||||
bool:true,
|
||||
min:choices_min[0],
|
||||
max:choices_max[0],
|
||||
};
|
||||
if(event.dialog) event.dialog.close();
|
||||
if(event.control) event.control.close();
|
||||
};
|
||||
var chooseButton=function(player,min,max){
|
||||
var event=_status.event;
|
||||
player=player||event.player;
|
||||
var list=lib.skill.dchuishu.getList(player);
|
||||
if(!event._result) event._result={};
|
||||
var dialog=ui.create.dialog('###易数:请选择更改的数值###令〖慧淑〗的一个最小数值+2并令一个最大数值-1','forcebutton','hidden');
|
||||
event.dialog=dialog;
|
||||
dialog.addText('最小值+2');
|
||||
var table=document.createElement('div');
|
||||
table.classList.add('add-setting');
|
||||
table.style.margin='0';
|
||||
table.style.width='100%';
|
||||
table.style.position='relative';
|
||||
for(var i=0;i<min.length;i++){
|
||||
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
|
||||
td.link=min[i];
|
||||
table.appendChild(td);
|
||||
td.innerHTML='<span>'+min[i]+'</span>';
|
||||
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
|
||||
if(_status.dragged) return;
|
||||
if(_status.justdragged) return;
|
||||
_status.tempNoButton=true;
|
||||
setTimeout(function(){
|
||||
_status.tempNoButton=false;
|
||||
},500);
|
||||
var link=this.link;
|
||||
var current=this.parentNode.querySelector('.bluebg');
|
||||
if(current) current.classList.remove('bluebg');
|
||||
this.classList.add('bluebg');
|
||||
event._result.min=link;
|
||||
});
|
||||
}
|
||||
dialog.content.appendChild(table);
|
||||
dialog.addText('最大值-1');
|
||||
var table2=document.createElement('div');
|
||||
table2.classList.add('add-setting');
|
||||
table2.style.margin='0';
|
||||
table2.style.width='100%';
|
||||
table2.style.position='relative';
|
||||
for(var i=0;i<max.length;i++){
|
||||
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
|
||||
td.link=max[i];
|
||||
table2.appendChild(td);
|
||||
td.innerHTML='<span>'+max[i]+'</span>';
|
||||
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
|
||||
if(_status.dragged) return;
|
||||
if(_status.justdragged) return;
|
||||
_status.tempNoButton=true;
|
||||
setTimeout(function(){
|
||||
_status.tempNoButton=false;
|
||||
},500);
|
||||
var link=this.link;
|
||||
var current=this.parentNode.querySelector('.bluebg');
|
||||
if(current) current.classList.remove('bluebg');
|
||||
this.classList.add('bluebg');
|
||||
event._result.max=link;
|
||||
});
|
||||
}
|
||||
dialog.content.appendChild(table2);
|
||||
dialog.add(' ');
|
||||
event.dialog.open();
|
||||
|
||||
event.switchToAuto=function(){
|
||||
event._result={
|
||||
bool:true,
|
||||
min:min[0],
|
||||
max:max[0],
|
||||
};
|
||||
event.dialog.close();
|
||||
event.control.close();
|
||||
game.resume();
|
||||
_status.imchoosing=false;
|
||||
};
|
||||
event.control=ui.create.control('ok',function(link){
|
||||
var result=event._result;
|
||||
if(!result.min||!result.max) return;
|
||||
result.bool=true;
|
||||
event.dialog.close();
|
||||
event.control.close();
|
||||
game.resume();
|
||||
_status.imchoosing=false;
|
||||
});
|
||||
for(var i=0;i<event.dialog.buttons.length;i++){
|
||||
event.dialog.buttons[i].classList.add('selectable');
|
||||
}
|
||||
game.pause();
|
||||
game.countChoose();
|
||||
};
|
||||
if(event.isMine()) chooseButton(player,choices_min,choices_max);
|
||||
else if(event.isOnline()){
|
||||
event.player.send(chooseButton,event.player,choices_min,choices_max);
|
||||
event.player.wait();
|
||||
game.pause();
|
||||
}
|
||||
else switchToAuto();
|
||||
}
|
||||
if(choices.length==1) event._result={control:choices[0]};
|
||||
else player.chooseControl(choices).set('prompt','易数:令〖慧淑〗的一个数值+2').set('prompt2','摸牌阶段结束时,你可以摸['+list[0]+']张牌。若如此做,你弃置['+list[1]+']张手牌;且当你于本回合内弃置第['+list[2]+']+1张牌后,你从弃牌堆中获得等同于本回合弃牌数的锦囊牌。');
|
||||
'step 1'
|
||||
var result=result.control.slice(0,result.control.indexOf('['));
|
||||
var exps=['摸牌数','弃牌数','目标牌数'];
|
||||
var index=exps.indexOf(result),list=lib.skill.dchuishu.getList(player);
|
||||
list[index]+=2;
|
||||
game.log(player,'令','#g【慧淑】','中的','#y'+result,'+2');
|
||||
player.storage.dchuishu=list;
|
||||
var map=event.result||result;
|
||||
if(map.bool){
|
||||
var min=map.min,max=map.max;
|
||||
min=min.slice(0,min.indexOf('['));
|
||||
max=max.slice(0,max.indexOf('['));
|
||||
var exps=['摸牌数','弃牌数','目标牌数'];
|
||||
var list=lib.skill.dchuishu.getList(player);
|
||||
list[exps.indexOf(min)]+=2;
|
||||
list[exps.indexOf(max)]--;
|
||||
game.log(player,'令','#g【慧淑】','中的','#y'+min,'+2');
|
||||
game.log(player,'令','#g【慧淑】','中的','#y'+max,'-1');
|
||||
player.storage.dchuishu=list;
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
var list=lib.skill.dchuishu.getList(player);
|
||||
var max=event.initial_list[0];
|
||||
for(var i of event.initial_list){
|
||||
if(i<max) max=i;
|
||||
}
|
||||
var exps=['摸牌数[','弃牌数[','目标牌数['];
|
||||
var choices=[];
|
||||
for(var i=0;i<list.length;i++){
|
||||
if(event.initial_list[i]==max) choices.push(exps[i]+list[i]+']');
|
||||
}
|
||||
if(choices.length==1) event._result={control:choices[0]};
|
||||
else player.chooseControl(choices).set('prompt','易数:令〖慧淑〗的一个数值-1').set('prompt2','摸牌阶段结束时,你可以摸['+list[0]+']张牌。若如此做,你弃置['+list[1]+']张手牌;且当你于本回合内弃置第['+list[2]+']+1张牌后,你从弃牌堆中获得等同于本回合弃牌数的锦囊牌。');
|
||||
'step 3'
|
||||
var result=result.control.slice(0,result.control.indexOf('['));
|
||||
var exps=['摸牌数','弃牌数','目标牌数'];
|
||||
var index=exps.indexOf(result),list=lib.skill.dchuishu.getList(player);
|
||||
list[index]--;
|
||||
game.log(player,'令','#g【慧淑】','中的','#y'+result,'-1');
|
||||
player.storage.dchuishu=list;
|
||||
'step 4'
|
||||
player.markSkill('dchuishu');
|
||||
game.delayx();
|
||||
},
|
||||
ai:{
|
||||
combo:'dchuishu',
|
||||
},
|
||||
ai:{combo:'dchuishu'},
|
||||
},
|
||||
dcligong:{
|
||||
audio:2,
|
||||
|
@ -6269,7 +6618,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
target.gain(cards,'draw');
|
||||
event.goto(4);
|
||||
},
|
||||
group:'dcgeyuan_qyubee',
|
||||
group:'dcgeyuan_kyubey',
|
||||
filterNumber:function(player,num){
|
||||
var list1=player.getStorage('dcgeyuan');
|
||||
var list2=player.getStorage('dcgeyuan_homura');
|
||||
|
@ -6285,7 +6634,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return false;
|
||||
},
|
||||
subSkill:{
|
||||
qyubee:{
|
||||
kyubey:{
|
||||
audio:'dcgeyuan',
|
||||
trigger:{
|
||||
global:'phaseBefore',
|
||||
|
@ -6320,7 +6669,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!storage||!storage.length) return '(圆环之理尚不存在)';
|
||||
var list2=player.getStorage('dcgeyuan_homura');
|
||||
var core=document.createElement('div');
|
||||
var centerX=-10,centerY=80,radius=80;
|
||||
core.style.width='0';
|
||||
var centerX=-15,centerY=80,radius=80;
|
||||
var radian=Math.PI*2/list.length;
|
||||
var fulllist=['A','2','3','4','5','6','7','8','9','10','J','Q','K'];
|
||||
for(var i=0;i<list.length;i++){
|
||||
|
@ -10365,15 +10715,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.finish();
|
||||
return;
|
||||
}
|
||||
var color=get.color(result.cards[0],result.cards[0].original=='j'?false:target);
|
||||
event.color=color;
|
||||
var next=player.chooseTarget(true,'挫锐:选择另一名其他角色','弃置该角色装备区里至多两张'+get.translation(event.color)+'牌;或展示该角色的至多两张手牌,然后获得其中的'+get.translation(event.color)+'牌');
|
||||
next.set('filterTarget',(card,player,target)=>{
|
||||
return target.countCards('he')>0&&target!=player&&target!=_status.event.getParent().target;
|
||||
});
|
||||
next.set('ai',target=>{
|
||||
return -get.attitude(_status.event.player,target)*target.countCards('he')+0.1;
|
||||
});
|
||||
if(game.hasPlayer(current=>{
|
||||
return current.countCards('he')>0&¤t!=player&¤t!=target;
|
||||
})){
|
||||
var color=get.color(result.cards[0],result.cards[0].original=='j'?false:target);
|
||||
event.color=color;
|
||||
var next=player.chooseTarget(true,'挫锐:选择另一名其他角色','弃置该角色装备区里至多两张'+get.translation(event.color)+'牌;或展示该角色的至多两张手牌,然后获得其中的'+get.translation(event.color)+'牌');
|
||||
next.set('filterTarget',(card,player,target)=>{
|
||||
return target.countCards('he')>0&&target!=player&&target!=_status.event.getParent().target;
|
||||
});
|
||||
next.set('ai',target=>{
|
||||
return -get.attitude(_status.event.player,target)*target.countCards('he')+0.1;
|
||||
});
|
||||
}
|
||||
else event.finish();
|
||||
'step 8'
|
||||
if(result.bool){
|
||||
var targetx=result.targets[0];
|
||||
|
@ -11231,6 +11586,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ganfurenmifuren:'甘夫人,刘备起兵后于沛城娶之为妾。后来,甘夫人随刘备到荆州,生了阿斗(也就是后主刘禅)。223年四月,刘备病死于白帝城,追谥甘夫人为“昭烈皇后”。<br>糜夫人,刘备夫人。徐州别驾糜竺之妹。长坂兵败,她怀抱年仅两岁的刘禅在乱军中走散,被赵云发现;但麋夫人因为赵云只有一匹马,不肯上马,在将阿斗托付给赵云后投井而亡。',
|
||||
sunlingluan:'孙翎鸾,孙坚与妾室丁氏的女儿,孙策的妹妹,孙权、孙尚香的姐姐。孙翎年幼时曾得杜夔点化,窥得音律玄妙,丝竹八音,擅长琵琶,每次弹奏琵琶时,经常引来百鸟,称为奇观。早年孙翎鸾出游,山林巧遇葛玄,葛玄观其面相为吉,特传授修行辟谷之法,可令其身心洗涤,容颜久存。孙翎鸾有恋人名张奋,两人情投意合,可惜造化弄人,张奋病死外域,孙翎鸾倚楼盼归,日复一日、年复一年。后有五彩孔雀自东南而来,绕楼而鸣,其声如慕,孙翎鸾泪染笑靥,与孔雀耳语几句后乘翎而去。',
|
||||
zhoubuyi:'周不疑(192年—208年),字元直(或作“文直”),零陵重安(今湖南衡阳县)人,刘表别驾刘先的外甥,少有异才,聪明敏达,在十七岁时就著有文论四首。曹冲死后,曹操怀疑曹丕无法驾驭周不疑,于是派人杀了周不疑。',
|
||||
tianshangyi:'田尚衣,一作陈尚衣,魏文帝曹丕宫中著名宫人。能歌善舞,一时冠绝于世,私以为比之汉宫飞燕也不遑多让。',
|
||||
},
|
||||
characterTitle:{
|
||||
// wulan:'#b对决限定武将',
|
||||
|
@ -11312,6 +11668,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
fengfangnv:['re_fengfangnv','fengfangnv'],
|
||||
luotong:['luotong','dc_luotong'],
|
||||
dc_wangchang:['dc_wangchang','tw_wangchang'],
|
||||
guozhao:['guozhao','xin_guozhao'],
|
||||
},
|
||||
translate:{
|
||||
puyuan:'蒲元',
|
||||
|
@ -11547,7 +11904,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dchuishu:'慧淑',
|
||||
dchuishu_info:'摸牌阶段结束时,你可以摸[3]张牌。若如此做:你弃置[1]张手牌,且当你于本回合内弃置第[2]+1张牌后,你从弃牌堆中随机获得等同于本回合弃牌数的锦囊牌。',
|
||||
dcyishu:'易数',
|
||||
dcyishu_info:'锁定技。当你不因出牌阶段而失去牌后,你令A={〖慧淑〗的中括号内最小的数字},B={〖慧淑〗的中括号内最大的数字}。然后你令A中的一个数字+2,且B中的一个数字-1。',
|
||||
dcyishu_info:'锁定技。当你不因出牌阶段而失去牌后,你同时令{〖慧淑〗的中括号内最小的一个数字+2}且{〖慧淑〗的中括号内最大的一个数字-1}。',
|
||||
dcligong:'离宫',
|
||||
dcligong_info:'觉醒技。准备阶段,若〖慧淑〗的中括号内有不小于5的数字,则你加1点体力上限,回复1点体力并失去〖易数〗。系统随机检索四张吴势力的女性武将牌,然后你选择一项:⒈摸三张牌。⒉失去〖慧淑〗,然后获得这些武将牌上的任意两个非Charlotte技能。',
|
||||
dingshangwan:'丁尚涴',
|
||||
|
@ -11746,6 +12103,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcchangqu_info:'出牌阶段限一次。你可以开一艘战舰(你从你的上家或下家开始选择任意名座位连续的其他角色,且起点角色获得“战舰”标记)。这些角色按照你选择的顺序依次执行:{若其有本次获得的“战舰”,其选择一项:1.交给你X张手牌,然后将“战舰”移动给你选择的下一名目标角色;2.令其下次受到的属性伤害值+X,然后横置(X为本次〖长驱〗中选项一被选择过的次数且至少为1)。}。',
|
||||
dctongye:'统业',
|
||||
dctongye_info:'锁定技。游戏开始时或一名角色死亡后,若场上势力数:不大于4,你的手牌上限+3;不大于3,你的攻击范围+3;不大于2,你使用【杀】的次数上限+3;不大于1,你摸牌阶段额定摸牌数+3。',
|
||||
tianshangyi:'田尚衣',
|
||||
dcposuo:'婆娑',
|
||||
dcposuo_info:'出牌阶段,若你本阶段未造成过伤害,则你可以将一张你本阶段未以此法使用过的花色的手牌当作任意一张存在于游戏的同花色伤害牌使用。',
|
||||
dcxiaoren:'绡刃',
|
||||
dcxiaoren_info:'每回合限一次,当你造成伤害后,你可以进行判定,若结果为:红色,你可以令一名角色回复1点体力;黑色,你可以对受伤角色的上家或下家造成1点伤害,然后你可以重复此方向的伤害流程直到有角色因此死亡或下个目标角色为你。',
|
||||
|
||||
sp2_yinyu:'隐山之玉',
|
||||
sp2_huben:'百战虎贲',
|
||||
|
|
|
@ -34,7 +34,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
caozhi:['male','wei',3,['luoying','jiushi']],
|
||||
caochong:['male','wei',3,['chengxiang','renxin']],
|
||||
xunyou:['male','wei',3,['qice','zhiyu'],['clan:颍川荀氏']],
|
||||
xin_xushu:['male','shu',3,['xinwuyan','xinjujian']],
|
||||
xin_xushu:['male','shu',3,['xinwuyan','xinjujian'],['border:wei']],
|
||||
xin_masu:['male','shu',3,['olsanyao','rezhiman']],
|
||||
zhuran:['male','wu',4,['danshou']],
|
||||
xusheng:['male','wu',4,['xinpojun']],
|
||||
|
@ -7931,6 +7931,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
respondSha:true,
|
||||
},
|
||||
audio:2,
|
||||
audioname:['xin_zhangyi'],
|
||||
trigger:{player:['useCard1','respond']},
|
||||
firstDo:true,
|
||||
forced:true,
|
||||
|
@ -13566,7 +13567,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhuhuan:['re_zhuhuan','xin_zhuhuan','zhuhuan','old_zhuhuan'],
|
||||
caoxiu:['re_caoxiu','tw_caoxiu','xin_caoxiu','caoxiu','old_caoxiu'],
|
||||
xiahoushi:['re_xiahoushi','xiahoushi'],
|
||||
zhangyi:['re_zhangyi','zhangyi'],
|
||||
zhangyi:['xin_zhangyi','re_zhangyi','zhangyi'],
|
||||
quancong:['old_quancong','re_quancong','xin_quancong','quancong'],
|
||||
sunxiu:['re_sunxiu','xin_sunxiu','sunxiu'],
|
||||
zhuzhi:['re_zhuzhi','zhuzhi','xin_zhuzhi','old_zhuzhi'],
|
||||
|
|
Binary file not shown.
Binary file not shown.
BIN
font/shousha.ttf
BIN
font/shousha.ttf
Binary file not shown.
Binary file not shown.
BIN
font/suits.ttf
BIN
font/suits.ttf
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
font/xinwei.ttf
BIN
font/xinwei.ttf
Binary file not shown.
Binary file not shown.
BIN
font/yuanli.ttf
BIN
font/yuanli.ttf
Binary file not shown.
Binary file not shown.
|
@ -233,15 +233,18 @@ window.noname_asset_list=[
|
|||
'audio/die/chunyuqiong.mp3',
|
||||
'audio/die/clan_hanrong.mp3',
|
||||
'audio/die/clan_hanshao.mp3',
|
||||
'audio/die/clan_wanghun.mp3',
|
||||
'audio/die/clan_wangling.mp3',
|
||||
'audio/die/clan_wangyun.mp3',
|
||||
'audio/die/clan_wuban.mp3',
|
||||
'audio/die/clan_wukuang.mp3',
|
||||
'audio/die/clan_wuxian.mp3',
|
||||
'audio/die/clan_xuncai.mp3',
|
||||
'audio/die/clan_xuncan.mp3',
|
||||
'audio/die/clan_xunchen.mp3',
|
||||
'audio/die/clan_xunshu.mp3',
|
||||
'audio/die/clan_zhonghui.mp3',
|
||||
'audio/die/clan_zhongyan.mp3',
|
||||
'audio/die/cuimao.mp3',
|
||||
'audio/die/cuiyan.mp3',
|
||||
'audio/die/daqiao.mp3',
|
||||
|
@ -301,9 +304,11 @@ window.noname_asset_list=[
|
|||
'audio/die/dongcheng.mp3',
|
||||
'audio/die/dongguiren.mp3',
|
||||
'audio/die/dongtuna.mp3',
|
||||
'audio/die/dongxie.mp3',
|
||||
'audio/die/dongyun.mp3',
|
||||
'audio/die/dongzhao.mp3',
|
||||
'audio/die/dongzhuo.mp3',
|
||||
'audio/die/duanjiong.mp3',
|
||||
'audio/die/duanqiaoxiao.mp3',
|
||||
'audio/die/duanwei.mp3',
|
||||
'audio/die/dufuren.mp3',
|
||||
|
@ -572,6 +577,7 @@ window.noname_asset_list=[
|
|||
'audio/die/ol_sunjian.mp3',
|
||||
'audio/die/ol_wangrong.mp3',
|
||||
'audio/die/ol_weiyan.mp3',
|
||||
'audio/die/ol_wenqin.mp3',
|
||||
'audio/die/ol_xiahouyuan.mp3',
|
||||
'audio/die/ol_xiaoqiao.mp3',
|
||||
'audio/die/ol_xuhuang.mp3',
|
||||
|
@ -600,6 +606,7 @@ window.noname_asset_list=[
|
|||
'audio/die/panshu.mp3',
|
||||
'audio/die/panzhangmazhong.mp3',
|
||||
'audio/die/peixiu.mp3',
|
||||
'audio/die/peiyuanshao.mp3',
|
||||
'audio/die/puyuan.mp3',
|
||||
'audio/die/qianzhao.mp3',
|
||||
'audio/die/qiaogong.mp3',
|
||||
|
@ -777,6 +784,7 @@ window.noname_asset_list=[
|
|||
'audio/die/sb_yuanshao.mp3',
|
||||
'audio/die/sb_yujin.mp3',
|
||||
'audio/die/sb_zhangfei.mp3',
|
||||
'audio/die/sb_zhanghe.mp3',
|
||||
'audio/die/sb_zhangjiao.mp3',
|
||||
'audio/die/sb_zhaoyun.mp3',
|
||||
'audio/die/sb_zhenji.mp3',
|
||||
|
@ -1034,6 +1042,7 @@ window.noname_asset_list=[
|
|||
'audio/die/xin_gaoshun.mp3',
|
||||
'audio/die/xin_gongsunzan.mp3',
|
||||
'audio/die/xin_guohuai.mp3',
|
||||
'audio/die/xin_guozhao.mp3',
|
||||
'audio/die/xin_guyong.mp3',
|
||||
'audio/die/xin_handang.mp3',
|
||||
'audio/die/xin_hansui.mp3',
|
||||
|
@ -1053,6 +1062,7 @@ window.noname_asset_list=[
|
|||
'audio/die/xin_yuanshao.mp3',
|
||||
'audio/die/xin_yufan.mp3',
|
||||
'audio/die/xin_yuji.mp3',
|
||||
'audio/die/xin_zhangyi.mp3',
|
||||
'audio/die/xin_zhonghui.mp3',
|
||||
'audio/die/xin_zhuhuan.mp3',
|
||||
'audio/die/xin_zhuran.mp3',
|
||||
|
@ -1535,6 +1545,7 @@ window.noname_asset_list=[
|
|||
'audio/skill/chuanyun.mp3',
|
||||
'audio/skill/chuhai1.mp3',
|
||||
'audio/skill/chuhai2.mp3',
|
||||
'audio/skill/chuhai3.mp3',
|
||||
'audio/skill/chuiti1.mp3',
|
||||
'audio/skill/chuiti2.mp3',
|
||||
'audio/skill/chulao1.mp3',
|
||||
|
@ -1557,10 +1568,14 @@ window.noname_asset_list=[
|
|||
'audio/skill/clanbalong2.mp3',
|
||||
'audio/skill/clanbaozu_clan_zhonghui1.mp3',
|
||||
'audio/skill/clanbaozu_clan_zhonghui2.mp3',
|
||||
'audio/skill/clanbaozu_clan_zhongyan1.mp3',
|
||||
'audio/skill/clanbaozu_clan_zhongyan2.mp3',
|
||||
'audio/skill/clanbeishi1.mp3',
|
||||
'audio/skill/clanbeishi2.mp3',
|
||||
'audio/skill/clanbolong1.mp3',
|
||||
'audio/skill/clanbolong2.mp3',
|
||||
'audio/skill/clanchenya1.mp3',
|
||||
'audio/skill/clanchenya2.mp3',
|
||||
'audio/skill/clandaojie_clan_xuncai1.mp3',
|
||||
'audio/skill/clandaojie_clan_xuncai2.mp3',
|
||||
'audio/skill/clandaojie_clan_xuncan1.mp3',
|
||||
|
@ -1575,6 +1590,10 @@ window.noname_asset_list=[
|
|||
'audio/skill/clanfangzhen2.mp3',
|
||||
'audio/skill/clanfenchai1.mp3',
|
||||
'audio/skill/clanfenchai2.mp3',
|
||||
'audio/skill/clanfuxun1.mp3',
|
||||
'audio/skill/clanfuxun2.mp3',
|
||||
'audio/skill/clanguangu1.mp3',
|
||||
'audio/skill/clanguangu2.mp3',
|
||||
'audio/skill/clanguixiang1.mp3',
|
||||
'audio/skill/clanguixiang2.mp3',
|
||||
'audio/skill/clanhuanjia1.mp3',
|
||||
|
@ -1585,6 +1604,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/clanjiexuan2.mp3',
|
||||
'audio/skill/clanlianhe1.mp3',
|
||||
'audio/skill/clanlianhe2.mp3',
|
||||
'audio/skill/clanlianzhu1.mp3',
|
||||
'audio/skill/clanlianzhu2.mp3',
|
||||
'audio/skill/clanlieshi1.mp3',
|
||||
'audio/skill/clanlieshi2.mp3',
|
||||
'audio/skill/clanliuju1.mp3',
|
||||
|
@ -1593,6 +1614,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/clanmingjie2.mp3',
|
||||
'audio/skill/clanmuyin_clan_wuban1.mp3',
|
||||
'audio/skill/clanmuyin_clan_wuban2.mp3',
|
||||
'audio/skill/clanmuyin_clan_wukuang1.mp3',
|
||||
'audio/skill/clanmuyin_clan_wukuang2.mp3',
|
||||
'audio/skill/clanmuyin_clan_wuxian1.mp3',
|
||||
'audio/skill/clanmuyin_clan_wuxian2.mp3',
|
||||
'audio/skill/clansankuang1.mp3',
|
||||
|
@ -1601,6 +1624,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/clanshangshen2.mp3',
|
||||
'audio/skill/clanshenjun1.mp3',
|
||||
'audio/skill/clanshenjun2.mp3',
|
||||
'audio/skill/clanxiaoyong1.mp3',
|
||||
'audio/skill/clanxiaoyong2.mp3',
|
||||
'audio/skill/clanxieshu1.mp3',
|
||||
'audio/skill/clanxieshu2.mp3',
|
||||
'audio/skill/clanxumin_clan_hanrong1.mp3',
|
||||
|
@ -1615,6 +1640,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/clanyuzhi2.mp3',
|
||||
'audio/skill/clanzhanding1.mp3',
|
||||
'audio/skill/clanzhanding2.mp3',
|
||||
'audio/skill/clanzhongliu_clan_wanghun1.mp3',
|
||||
'audio/skill/clanzhongliu_clan_wanghun2.mp3',
|
||||
'audio/skill/clanzhongliu_clan_wangling1.mp3',
|
||||
'audio/skill/clanzhongliu_clan_wangling2.mp3',
|
||||
'audio/skill/clanzhongliu_clan_wangyun1.mp3',
|
||||
|
@ -1786,6 +1813,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/dchuishu2.mp3',
|
||||
'audio/skill/dchuizhi1.mp3',
|
||||
'audio/skill/dchuizhi2.mp3',
|
||||
'audio/skill/dchumei1.mp3',
|
||||
'audio/skill/dchumei2.mp3',
|
||||
'audio/skill/dcjianguo1.mp3',
|
||||
'audio/skill/dcjianguo2.mp3',
|
||||
'audio/skill/dcjianji1.mp3',
|
||||
|
@ -1796,6 +1825,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/dcjianzheng2.mp3',
|
||||
'audio/skill/dcjiaofeng1.mp3',
|
||||
'audio/skill/dcjiaofeng2.mp3',
|
||||
'audio/skill/dcjiaoxia1.mp3',
|
||||
'audio/skill/dcjiaoxia2.mp3',
|
||||
'audio/skill/dcjieshu1.mp3',
|
||||
'audio/skill/dcjieshu2.mp3',
|
||||
'audio/skill/dcjiexing1.mp3',
|
||||
|
@ -1870,6 +1901,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/dcminze2.mp3',
|
||||
'audio/skill/dcmiyun1.mp3',
|
||||
'audio/skill/dcmiyun2.mp3',
|
||||
'audio/skill/dcmoyu1.mp3',
|
||||
'audio/skill/dcmoyu2.mp3',
|
||||
'audio/skill/dcneifa1.mp3',
|
||||
'audio/skill/dcneifa2.mp3',
|
||||
'audio/skill/dcnuchen1.mp3',
|
||||
|
@ -3320,12 +3353,16 @@ window.noname_asset_list=[
|
|||
'audio/skill/olfusong2.mp3',
|
||||
'audio/skill/olgoude1.mp3',
|
||||
'audio/skill/olgoude2.mp3',
|
||||
'audio/skill/olguangao1.mp3',
|
||||
'audio/skill/olguangao2.mp3',
|
||||
'audio/skill/olhaoshi1.mp3',
|
||||
'audio/skill/olhaoshi2.mp3',
|
||||
'audio/skill/olhongji1.mp3',
|
||||
'audio/skill/olhongji2.mp3',
|
||||
'audio/skill/olhuanfu1.mp3',
|
||||
'audio/skill/olhuanfu2.mp3',
|
||||
'audio/skill/olhuiqi1.mp3',
|
||||
'audio/skill/olhuiqi2.mp3',
|
||||
'audio/skill/olhunzi_re_sunyi1.mp3',
|
||||
'audio/skill/olhunzi_re_sunyi2.mp3',
|
||||
'audio/skill/olhunzi1.mp3',
|
||||
|
@ -3370,6 +3407,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/olqisi2.mp3',
|
||||
'audio/skill/olruoyu1.mp3',
|
||||
'audio/skill/olruoyu2.mp3',
|
||||
'audio/skill/olsaogu1.mp3',
|
||||
'audio/skill/olsaogu2.mp3',
|
||||
'audio/skill/olshengong1.mp3',
|
||||
'audio/skill/olshengong2.mp3',
|
||||
'audio/skill/olshilu1.mp3',
|
||||
|
@ -3396,6 +3435,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/olxiaosi2.mp3',
|
||||
'audio/skill/olxibing1.mp3',
|
||||
'audio/skill/olxibing2.mp3',
|
||||
'audio/skill/olxieju1.mp3',
|
||||
'audio/skill/olxieju2.mp3',
|
||||
'audio/skill/olximo1.mp3',
|
||||
'audio/skill/olximo2.mp3',
|
||||
'audio/skill/olximo3.mp3',
|
||||
|
@ -4103,6 +4144,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/sbniepan2.mp3',
|
||||
'audio/skill/sbpaoxiao1.mp3',
|
||||
'audio/skill/sbpaoxiao2.mp3',
|
||||
'audio/skill/sbqiaobian1.mp3',
|
||||
'audio/skill/sbqiaobian2.mp3',
|
||||
'audio/skill/sbqiaoshi1.mp3',
|
||||
'audio/skill/sbqiaoshi2.mp3',
|
||||
'audio/skill/sbqingzheng1.mp3',
|
||||
|
@ -4863,6 +4906,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/wfyuyan2.mp3',
|
||||
'audio/skill/wlcuorui1.mp3',
|
||||
'audio/skill/wlcuorui2.mp3',
|
||||
'audio/skill/wufei1.mp3',
|
||||
'audio/skill/wufei2.mp3',
|
||||
'audio/skill/wuhun21.mp3',
|
||||
'audio/skill/wuhun22.mp3',
|
||||
'audio/skill/wuhun23.mp3',
|
||||
|
@ -5236,6 +5281,9 @@ window.noname_asset_list=[
|
|||
'audio/skill/xinshenxing2.mp3',
|
||||
'audio/skill/xintan1.mp3',
|
||||
'audio/skill/xintan2.mp3',
|
||||
'audio/skill/xinwurong1.mp3',
|
||||
'audio/skill/xinwurong2.mp3',
|
||||
'audio/skill/xinwurong3.mp3',
|
||||
'audio/skill/xinwusheng1.mp3',
|
||||
'audio/skill/xinwusheng2.mp3',
|
||||
'audio/skill/xinwuyan1.mp3',
|
||||
|
@ -5378,6 +5426,8 @@ window.noname_asset_list=[
|
|||
'audio/skill/yeyan3.mp3',
|
||||
'audio/skill/yicheng1.mp3',
|
||||
'audio/skill/yicheng2.mp3',
|
||||
'audio/skill/yichong1.mp3',
|
||||
'audio/skill/yichong2.mp3',
|
||||
'audio/skill/yicong1.mp3',
|
||||
'audio/skill/yicong2.mp3',
|
||||
'audio/skill/yicong3.mp3',
|
||||
|
@ -5835,12 +5885,12 @@ window.noname_asset_list=[
|
|||
'audio/voice/female/21.mp3',
|
||||
'audio/voice/female/22.mp3',
|
||||
|
||||
'font/huangcao.ttf',
|
||||
'font/shousha.ttf',
|
||||
'font/xiaozhuan.ttf',
|
||||
'font/xingkai.ttf',
|
||||
'font/xinwei.ttf',
|
||||
'font/yuanli.ttf',
|
||||
'font/huangcao.woff2',
|
||||
'font/shousha.woff2',
|
||||
'font/xiaozhuan.woff2',
|
||||
'font/xingkai.woff2',
|
||||
'font/xinwei.woff2',
|
||||
'font/yuanli.woff2',
|
||||
|
||||
'image/background/beipan_bg.jpg',
|
||||
'image/background/heaven_bg.jpg',
|
||||
|
@ -5907,14 +5957,18 @@ window.noname_asset_list=[
|
|||
'image/card/dawan.png',
|
||||
'image/card/db_atk1.jpg',
|
||||
'image/card/db_atk1_出阵迎战.jpg',
|
||||
'image/card/db_atk1_反抗.jpg',
|
||||
'image/card/db_atk1_固守城池.jpg',
|
||||
'image/card/db_atk2.jpg',
|
||||
'image/card/db_atk2_拱卫中军.jpg',
|
||||
'image/card/db_atk2_归顺.jpg',
|
||||
'image/card/db_atk2_突出重围.jpg',
|
||||
'image/card/db_def1.jpg',
|
||||
'image/card/db_def1_围城断粮.jpg',
|
||||
'image/card/db_def1_镇压.jpg',
|
||||
'image/card/db_def1_直取敌营.jpg',
|
||||
'image/card/db_def2.jpg',
|
||||
'image/card/db_def2_安抚.jpg',
|
||||
'image/card/db_def2_擂鼓进军.jpg',
|
||||
'image/card/db_def2_扰阵疲敌.jpg',
|
||||
'image/card/diaobingqianjiang.png',
|
||||
|
@ -6502,10 +6556,12 @@ window.noname_asset_list=[
|
|||
'image/character/dongcheng.jpg',
|
||||
'image/character/dongguiren.jpg',
|
||||
'image/character/dongtuna.jpg',
|
||||
'image/character/dongwan.jpg',
|
||||
'image/character/dongxie.jpg',
|
||||
'image/character/dongyun.jpg',
|
||||
'image/character/dongzhao.jpg',
|
||||
'image/character/dongzhuo.jpg',
|
||||
'image/character/duanjiong.jpg',
|
||||
'image/character/duanqiaoxiao.jpg',
|
||||
'image/character/duanwei.jpg',
|
||||
'image/character/dufuren.jpg',
|
||||
|
@ -7258,6 +7314,7 @@ window.noname_asset_list=[
|
|||
'image/character/old_wanglang.jpg',
|
||||
'image/character/old_wangyi.jpg',
|
||||
'image/character/old_wangyun.jpg',
|
||||
'image/character/old_xiaoqiao.jpg',
|
||||
'image/character/old_xusheng.jpg',
|
||||
'image/character/old_yangyan.jpg',
|
||||
'image/character/old_yangzhi.jpg',
|
||||
|
@ -7348,6 +7405,7 @@ window.noname_asset_list=[
|
|||
'image/character/pe_wenqin.jpg',
|
||||
'image/character/pe_zhonghui.jpg',
|
||||
'image/character/peixiu.jpg',
|
||||
'image/character/peiyuanshao.jpg',
|
||||
'image/character/pengyang.jpg',
|
||||
'image/character/pk_sp_duyu.jpg',
|
||||
'image/character/prp_zhugeliang.jpg',
|
||||
|
@ -8001,6 +8059,7 @@ window.noname_asset_list=[
|
|||
'image/character/xin_masu.jpg',
|
||||
'image/character/xin_panzhangmazhong.jpg',
|
||||
'image/character/xin_quancong.jpg',
|
||||
'image/character/xin_sunliang.jpg',
|
||||
'image/character/xin_sunluban.jpg',
|
||||
'image/character/xin_sunxiu.jpg',
|
||||
'image/character/xin_wuguotai.jpg',
|
||||
|
|
11685
game/game.js
11685
game/game.js
File diff suppressed because it is too large
Load Diff
|
@ -128,12 +128,12 @@ window.noname_package={
|
|||
music_jilve:'极略',
|
||||
},
|
||||
font:{
|
||||
xiaozhuan:'小篆',
|
||||
xinwei:'新魏',
|
||||
huangcao:'黄草',
|
||||
yuanli:'楷体',
|
||||
xingkai:'行楷',
|
||||
shousha:'手杀',
|
||||
xiaozhuan:'方正小篆体',
|
||||
xinwei:'华文新魏_GBK',
|
||||
huangcao:'方正黄草_GBK',
|
||||
yuanli:'方正北魏楷书_GBK',
|
||||
xingkai:'方正行楷_GBK',
|
||||
shousha:'方正隶变_GBK',
|
||||
},
|
||||
theme:{
|
||||
woodden:'木纹',
|
||||
|
|
|
@ -49,7 +49,7 @@ window.noname_source_list=[
|
|||
'character/yingbian.js',
|
||||
'character/yxs.js',
|
||||
'character/zhuogui.js',
|
||||
'font/suits.ttf',
|
||||
'font/suits.woff2',
|
||||
'game/asset.js',
|
||||
'game/codemirror.js',
|
||||
'game/config.js',
|
||||
|
|
|
@ -1,28 +1,31 @@
|
|||
window.noname_update={
|
||||
version:'1.9.125.1',
|
||||
update:'1.9.125',
|
||||
version:'1.9.126',
|
||||
update:'1.9.125.1',
|
||||
changeLog:[
|
||||
'整合@Tipx-L @copcap @mengxinzxz的Pull Request',
|
||||
'《江山如故·承》扩展包、重铸类技能代码重写',
|
||||
'OL周群、孙翎鸾、周不疑;斗地主曹操、刘备、孙权',
|
||||
'乐綝、孙狼、庞会、韩遂、唐咨、十常侍、手杀蒋干技能调整',
|
||||
'整合@Tipx-L @mengxinzxz @kuangthree @shijian的Pull Request',
|
||||
'将游戏字体从ttf改为woff2格式(需要重新下载)',
|
||||
'“应变”机制重写',
|
||||
'新增lib.init.jsForExtension,用于扩展按顺序提前加载js文件',
|
||||
'增加checkHistory函数,增加懒加载机制,其他性能优化',
|
||||
'段颎、董婉、裴元绍',
|
||||
'bug修复',
|
||||
],
|
||||
files:[
|
||||
//'LICENSE',
|
||||
//'card/extra.js',
|
||||
'card/extra.js',
|
||||
//'card/gujian.js',
|
||||
'card/guozhan.js',
|
||||
//'card/gwent.js',
|
||||
'card/hearth.js',
|
||||
//'card/huanlekapai.js',
|
||||
'card/mtg.js',
|
||||
//'card/sp.js',
|
||||
//'card/standard.js',
|
||||
//'card/swd.js',
|
||||
//'card/yunchou.js',
|
||||
'card/sp.js',
|
||||
'card/standard.js',
|
||||
'card/swd.js',
|
||||
'card/yunchou.js',
|
||||
'card/yingbian.js',
|
||||
'card/yongjian.js',
|
||||
//'card/zhenfa.js',
|
||||
'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
'character/clan.js',
|
||||
'character/collab.js',
|
||||
|
@ -30,7 +33,7 @@ window.noname_update={
|
|||
'character/diy.js',
|
||||
'character/extra.js',
|
||||
//'character/gujian.js',
|
||||
'character/gwent.js',
|
||||
//'character/gwent.js',
|
||||
'character/hearth.js',
|
||||
'character/huicui.js',
|
||||
'character/jsrg.js',
|
||||
|
@ -39,52 +42,52 @@ window.noname_update={
|
|||
'character/offline.js',
|
||||
'character/old.js',
|
||||
//'character/ow.js',
|
||||
'character/rank.js',
|
||||
'character/refresh.js',
|
||||
//'character/rank.js',
|
||||
//'character/refresh.js',
|
||||
'character/sb.js',
|
||||
'character/shenhua.js',
|
||||
'character/shiji.js',
|
||||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
'character/standard.js',
|
||||
//'character/standard.js',
|
||||
'character/tw.js',
|
||||
//'character/swd.js',
|
||||
'character/xiake.js',
|
||||
//'character/xiake.js',
|
||||
'character/xianding.js',
|
||||
//'character/xianjian.js',
|
||||
//'character/xinghuoliaoyuan.js',
|
||||
'character/yijiang.js',
|
||||
'character/yingbian.js',
|
||||
//'character/yingbian.js',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
'font/suits.ttf',
|
||||
'font/suits.woff2',
|
||||
'layout/default/layout.css',
|
||||
//'layout/default/menu.css',
|
||||
//'layout/long2/layout.css',
|
||||
//'layout/mobile/equip.css',
|
||||
//'layout/mobile/layout.css',
|
||||
//'layout/newlayout/global.css',
|
||||
'layout/mobile/layout.css',
|
||||
'layout/newlayout/global.css',
|
||||
//'layout/nova/layout.css',
|
||||
//'mode/boss.js',
|
||||
//'mode/brawl.js',
|
||||
//'mode/chess.js',
|
||||
'mode/boss.js',
|
||||
'mode/brawl.js',
|
||||
'mode/chess.js',
|
||||
//'mode/connect.js',
|
||||
//'mode/doudizhu.js',
|
||||
'mode/doudizhu.js',
|
||||
'mode/guozhan.js',
|
||||
//'mode/identity.js',
|
||||
//'mode/single.js',
|
||||
//'mode/stone.js',
|
||||
'mode/identity.js',
|
||||
'mode/single.js',
|
||||
'mode/stone.js',
|
||||
//'mode/tafang.js',
|
||||
//'mode/versus.js',
|
||||
'mode/versus.js',
|
||||
'game/game.js',
|
||||
//'game/keyWords.js',
|
||||
//'game/NoSleep.js',
|
||||
'game/config.js',
|
||||
//'game/config.js',
|
||||
'game/package.js',
|
||||
//'game/pinyinjs.js',
|
||||
//'game/asset.js',
|
||||
'game/source.js',
|
||||
'theme/simple/style.css',
|
||||
//'theme/simple/style.css',
|
||||
//'theme/style/hp/custom.css',
|
||||
//'theme/style/hp/emotion.css',
|
||||
//'theme/style/hp/glass.css',
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 6.8 KiB |
Binary file not shown.
After Width: | Height: | Size: 6.7 KiB |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue