Add files via upload

This commit is contained in:
Spmario233 2020-03-05 21:10:37 +08:00 committed by GitHub
parent 8a91540c27
commit aee63ead79
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
87 changed files with 2882 additions and 1267 deletions

BIN
audio/die/nashime.mp3 Normal file

Binary file not shown.

BIN
audio/die/ol_liushan.mp3 Normal file

Binary file not shown.

BIN
audio/die/ol_yuanshao.mp3 Normal file

Binary file not shown.

BIN
audio/die/re_sunce.mp3 Normal file

Binary file not shown.

BIN
audio/die/shenpei.mp3 Normal file

Binary file not shown.

BIN
audio/die/tw_beimihu.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/chijie.mp3 Normal file

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.

BIN
audio/skill/liezhi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/liezhi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/neifa1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/neifa2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olfangquan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olfangquan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olhunzi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olhunzi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olluanji1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olluanji2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olruoyu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olruoyu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olxueyi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olxueyi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olzhiba1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olzhiba2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/renshe1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/renshe2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/shouye1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/shouye2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sishu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sishu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/waishi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/waishi2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -19,12 +19,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
player.$throw(card.cards,1000);
player.popup('muniu');
game.log(card,'掉落了',card.cards);
while(card.cards.length){
var card2=card.cards.shift();
if(card2.parentNode.id=='special'){
card2.discard();
}
}
game.cardsDiscard(card.cards);
card.cards.length=0;
}
},
clearLose:true,
@ -62,7 +58,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return target==player;
},
content:function(){
if(target.isDying()){
if(target.isDying()||event.getParent(2).type=='dying'){
target.recover();
if(_status.currentPhase==target){
target.getStat().card.jiu--;

View File

@ -230,7 +230,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
tag:{
damage:1,
thunderDamage:1,
natureDamage:1
natureDamage:1,
loseCard:1,
},
result:{
target:function(player,target){
@ -620,7 +621,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(target.isUnseen(0)) controls.push('主将');
if(target.isUnseen(1)) controls.push('副将');
if(controls.length>1){
player.chooseControl(controls);
player.chooseControl(controls).set('ai',function(){return 1});
}
if(controls.length==0) event.finish();
"step 1"

View File

@ -13,50 +13,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
ai:{
basic:{
equipValue:8,
order:function (card,player){
if(player&&player.hasSkillTag('reverseEquip')){
return 8.5-get.equipValue(card,player)/20;
}
else{
return 8+get.equipValue(card,player)/20;
}
},
useful:2,
value:function (card,player){
var value=0;
var info=get.info(card);
var current=player.getEquip(info.subtype);
if(current&&card!=current){
value=get.value(current,player);
}
var equipValue=info.ai.equipValue;
if(equipValue==undefined){
equipValue=info.ai.basic.equipValue;
}
if(typeof equipValue=='function') return equipValue(card,player)-value;
if(typeof equipValue!='number') equipValue=0;
return equipValue-value;
},
},
result:{
target:function (player,target){
return get.equipResult(player,target,name);
},
},
},
enable:true,
selectTarget:-1,
filterTarget:function (card,player,target){
return target==player;
},
modTarget:true,
allowMultiple:false,
content:function (){
target.equip(card);
},
toself:true,
},
"mianju":{
audio:true,
type:"equip",
@ -70,53 +29,18 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(player.isTurnedOver()) return -10;
return 0;
},
order:function (card,player){
if(player&&player.hasSkillTag('reverseEquip')){
return 8.5-get.equipValue(card,player)/20;
}
else{
return 8+get.equipValue(card,player)/20;
}
},
useful:2,
value:function (card,player){
var value=0;
var info=get.info(card);
var current=player.getEquip(info.subtype);
if(current&&card!=current){
value=get.value(current,player);
}
var equipValue=info.ai.equipValue;
if(equipValue==undefined){
equipValue=info.ai.basic.equipValue;
}
if(typeof equipValue=='function') return equipValue(card,player)-value;
if(typeof equipValue!='number') equipValue=0;
return equipValue-value;
},
},
result:{
target:function (player,target){
return get.equipResult(player,target,name);
},
},
},
enable:true,
selectTarget:-1,
modTarget:true,
allowMultiple:false,
toself:true,
fullskin:true,
},
"shoulijian":{
audio:true,
type:"basic",
skills:["shoulijian"],
enable:true,
fullskin:true,
filterTarget:function (card,player,target){
return get.distance(player,target)>1;
outrange:{
global:1,
},
filterTarget:lib.filter.notMe,
content:function (){
"step 0"
if(!target.countCards('he',{type:'equip'})){
@ -125,6 +49,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
else{
target.chooseToDiscard('he',{type:'equip'},'弃置一张装备牌或受到一点伤害').ai=function(card){
var player=_status.event.player;
var source=_status.event.getParent().player;
if(get.damageEffect(player,source,player)>0) return -1;
return 7-get.value(card);
};
}
@ -133,7 +60,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
target.damage();
}
},
ai:{
basic:{
order:9,
@ -150,11 +76,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
selectTarget:1,
},
"kuwu":{
audio:true,
fullskin:true,
type:"equip",
subtype:"equip1",
skills:["kuwu"],
@ -166,44 +90,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
ai:{
equipValue:6,
basic:{
order:function (card,player){
if(player&&player.hasSkillTag('reverseEquip')){
return 8.5-get.equipValue(card,player)/20;
}
else{
return 8+get.equipValue(card,player)/20;
}
},
useful:2,
equipValue:1,
value:function (card,player){
var value=0;
var info=get.info(card);
var current=player.getEquip(info.subtype);
if(current&&card!=current){
value=get.value(current,player);
}
var equipValue=info.ai.equipValue;
if(equipValue==undefined){
equipValue=info.ai.basic.equipValue;
}
if(typeof equipValue=='function') return equipValue(card,player)-value;
if(typeof equipValue!='number') equipValue=0;
return equipValue-value;
},
},
result:{
target:function (player,target){
return get.equipResult(player,target,name);
},
},
},
enable:true,
selectTarget:-1,
modTarget:true,
allowMultiple:false,
toself:true,
},
"xuelunyang":{
audio:true,
@ -214,43 +101,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
ai:{
basic:{
equipValue:8,
order:function (card,player){
if(player&&player.hasSkillTag('reverseEquip')){
return 8.5-get.equipValue(card,player)/20;
}
else{
return 8+get.equipValue(card,player)/20;
}
},
useful:2,
value:function (card,player){
var value=0;
var info=get.info(card);
var current=player.getEquip(info.subtype);
if(current&&card!=current){
value=get.value(current,player);
}
var equipValue=info.ai.equipValue;
if(equipValue==undefined){
equipValue=info.ai.basic.equipValue;
}
if(typeof equipValue=='function') return equipValue(card,player)-value;
if(typeof equipValue!='number') equipValue=0;
return equipValue-value;
},
},
result:{
target:function (player,target){
return get.equipResult(player,target,name);
},
},
},
enable:true,
selectTarget:-1,
modTarget:true,
allowMultiple:false,
toself:true,
},
"jiuwei":{
audio:true,
@ -261,101 +113,26 @@ game.import('card',function(lib,game,ui,get,ai,_status){
ai:{
basic:{
equipValue:8,
order:function (card,player){
if(player&&player.hasSkillTag('reverseEquip')){
return 8.5-get.equipValue(card,player)/20;
}
else{
return 8+get.equipValue(card,player)/20;
}
},
useful:2,
value:function (card,player){
var value=0;
var info=get.info(card);
var current=player.getEquip(info.subtype);
if(current&&card!=current){
value=get.value(current,player);
}
var equipValue=info.ai.equipValue;
if(equipValue==undefined){
equipValue=info.ai.basic.equipValue;
}
if(typeof equipValue=='function') return equipValue(card,player)-value;
if(typeof equipValue!='number') equipValue=0;
return equipValue-value;
},
},
result:{
target:function (player,target){
return get.equipResult(player,target,name);
},
},
},
enable:true,
selectTarget:-1,
modTarget:true,
allowMultiple:false,
toself:true,
},
},
skill:{
"shoulijian":{
audio:true,
enable:true,
filterTarget:function (card,player,target){
return get.distance(player,target)>1;
},
content:function (){
"step 0"
if(!target.countCards('he',{type:'equip'})){
target.damage();
event.finish();
}
else{
target.chooseToDiscard('he',{type:'equip'},'弃置一张装备牌或受到一点伤害').ai=function(card){
return 7-get.value(card);
};
}
"step 1"
if(!result.bool){
target.damage();
}
},
ai:{
basic:{
order:9,
value:6,
useful:2,
},
result:{
target:-2,
},
tag:{
discard:1,
damage:1,
},
},
selectTarget:1,
},
"monkey":{
trigger:{
global:"useCardToBegin",
},
audio:true,
filter:function (event,player){
var card=player.get('e','5');
var card=player.getEquip(5);
if(card){
var name=card.name;
if(event.name=='tao'&&get.itemtype(event.cards)=='cards'&&get.position(event.cards[0])=='d'&&event.player!=player&&name&&name.indexOf('monkey')!=-1) return true;
if(name&&name.indexOf('monkey')!=-1&&event.name=='tao'&&event.player!=player&&event.cards.filterInD().length>0) return true;
}
return false;
},
check:function (event,player){
return ai.get.attitude(player,event.player)<=0;
return get.attitude(player,event.player)<=0;
},
content:function (){
"step 0"
@ -363,22 +140,18 @@ trigger:{
trigger.untrigger();
trigger.finish();
"step 1"
player.discard(player.get('e','5'));
player.discard(player.getEquip(5));
"step 2"
player.gain(trigger.cards);
player.$gain2(trigger.cards);
player.gain(trigger.cards.filterInD(),'gain2','log');
},
},
"mianju":{
audio:true,
trigger:{
player:"turnOverBefore",
},
forced:true,
filter:function (event,player){
return !player.isTurnedOver();
},
equipSkill:true,
content:function (){
trigger.cancel();
},
@ -391,14 +164,13 @@ trigger:{
},
},
},
"kuwu":{
audio:true,
trigger:{
source:"damageEnd",
source:"damageSource",
},
forced:true,
priority:55,
equipSkill:true,
filter:function (event,player){
if(event._notrigger.contains(event.player)) return false;
return event.card&&event.card.name=='sha'&&event.notLink()&&event.player.countCards('he')>0;
@ -407,16 +179,12 @@ audio:true,
trigger.player.chooseToDiscard(true,'he');
},
},
"xuelunyang":{
audio:true,
trigger:{
player:"phaseBegin",
},
filter:function (event,player){
return player.isAlive();
},
priority:2018,
equipSkill:true,
direct:true,
createDialog:function (player,target,onlylist){
var names=[];
@ -444,6 +212,8 @@ audio:true,
_status.event.list=list;
var clickItem=function(){
_status.event._result=this.link;
if(dialog) dialog.close();
_status.imchoosing=false;
game.resume();
};
for(i=0;i<list.length;i++){
@ -486,8 +256,7 @@ audio:true,
return false;
}
}).set('ai',function(target){
if(get.attitude(_status.event.player,target)>0) return Math.random();
return get.attitude(_status.event.player,target)<=0;
return Math.random();
});
'step 1'
if(result.bool){
@ -505,50 +274,39 @@ audio:true,
event.dialog=lib.skill.xuelunyang.createDialog(player,target);//tianshu
event.switchToAuto=function(){
event._result=event.skillai(event.list);
event.dialog.close();
_status.imchoosing=false;
game.resume();
};
_status.imchoosing=true;
game.pause();
}
else if(event.isOnline()){
event.player.send(function(){
var event=_status.event;
event.skillai=function(list){
return get.max(list,get.skillRank,'item');
};
event.dialog=lib.skill.xuelunyang.createDialog(player,target);//tianshu
event.switchToAuto=function(){
event._result=event.skillai(event.list);
event.dialog.close();
_status.imchoosing=false;
game.resume();
};
_status.imchoosing=true;
game.pause();
})
event.player.wait();
game.pause();
}
else{
event._result=event.skillai(lib.skill.xuelunyang.createDialog(player,target,true));
}
'step 3'
_status.imchoosing=false;
if(event.dialog){
event.dialog.close();
}
player.addTempSkill(result);
player.popup(result);
game.log(player,'获得了','【'+get.translation(result)+'】');
/* 'step 0'
player.chooseTarget(get.prompt2('xuelunyang'),function(card,player,target){
return target!=player;
}).set('ai',function(target){
if(get.attitude(_status.event.player,target)>0) return Math.random();
return get.attitude(_status.event.player,target)<=0;
});
'step 1'
if(result.bool){
event.target=result.targets[0];
player.logSkill('xuelunyang',event.target);
}
else{
event.finish();
}
'step 2'
player.chooseSkill(event.target,function(info,skill){
return player.isAlive();
});
'step 3'
if(result.bool){
var skill=result.skill;
player.addTempSkill(skill);
player.popup(skill);
//player.markSkillCharacter('xuelunyang',event.target.name,get.skillTranslation(skill,player),get.skillInfoTranslation(skill));
game.log(player,'获得了','【'+get.translation(skill)+'】');
} */
},
},
@ -557,10 +315,8 @@ trigger:{
player:"phaseEnd",
},
audio:true,
filter:function (event,player){
return player.isAlive();
},
frequent:true,
equipSkill:true,
content:function (){
if(player.isDamaged()){
player.recover();
@ -575,7 +331,7 @@ trigger:{
"monkey":"猴子",
"monkey_info":"猴子偷桃:当场上有其他角色使用【桃】时,你可以弃掉【猴子】,阻止【桃】的结算并将其收为手牌",
"mianju":"漩涡面具",
"mianju_info":"<font color=#f00>锁定技</font> 若你的武将牌正面向上,你的武将牌不能被翻面",
"mianju_info":"<font color=#f00>锁定技</font> 你的武将牌不能被翻面",
"shoulijian":"手里剑",
"shoulijian_info":"出牌阶段对一名距离1以外的角色使用令其弃置一张装备牌或受到一点伤害",
"kuwu":"苦无",

View File

@ -524,8 +524,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
filterTarget:true,
contentBefore:function(){
"step 0"
game.delay();
"step 1"
if(get.is.versus()){
player.chooseControl('顺时针','逆时针',function(event,player){
if(player.next.side==player.side) return '逆时针';
@ -533,9 +531,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}).set('prompt','选择'+get.translation(card)+'的结算方向');
}
else{
event.goto(3);
event.goto(2);
}
"step 2"
"step 1"
if(result&&result.control=='顺时针'){
var evt=event.getParent();
evt.fixedSeat=true;
@ -545,16 +543,17 @@ game.import('card',function(lib,game,ui,get,ai,_status){
evt.targets.unshift(evt.targets.pop());
}
}
"step 3"
"step 2"
ui.clear();
var num;
if(event.getParent().stocktargets){
num=event.getParent().stocktargets.length;
if(event.targets){
num=event.targets.length;
}
else{
num=game.countPlayer();
}
var cards=get.cards(num);
game.cardsGotoOrdering(cards).relatedEvent=event.getParent();
var dialog=ui.create.dialog('五谷丰登',cards,true);
_status.dieClose.push(dialog);
dialog.videoId=lib.status.videoId++;
@ -643,10 +642,6 @@ game.import('card',function(lib,game,ui,get,ai,_status){
event.remained.push(dialog.buttons[i].link);
}
event.trigger('wuguRemained');
for(var i=0;i<event.remained.length;i++){
var current=event.remained[i];
if(!get.owner(current)) current.discard();
}
}
break;
}
@ -1202,7 +1197,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
content:function(){
"step 0"
if(!_status.connectMode&&lib.config.skip_shan&&!target.hasSha()){
if(event.directHit||(!_status.connectMode&&lib.config.skip_shan&&!target.hasSha())){
event.directfalse=true;
}
else{
@ -1210,7 +1205,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
{name:'sha'}).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);
}).set('sourcex',event.addedTarget);
}).set('sourcex',event.addedTarget).set('addCount',false).set('respondTo',[player,card]);
}
"step 1"
if(event.directfalse||result.bool==false){
@ -1254,7 +1249,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
notarget:true,
contentBefore:function(){
'step 0'
if(get.mode()=='guozhan'&&get.itemtype(card)=='card'&&card.hasTag('guo')){
if(get.mode()=='guozhan'&&get.cardtag(card,'guo')){
var trigger=event.getParent(2);
if(trigger.triggername!='phaseJudge'&&!trigger.statecard&&trigger.target.identity!='ye'&&trigger.target.identity!='unknown'){
player.chooseControl('对单体使用','对势力使用').set('prompt','请选择'+get.translation(card)+'的使用方式').set('ai',function(){
@ -1897,7 +1892,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(result.judge>0){
trigger.untrigger();
trigger.set('responded',true);
trigger.result={bool:true,card:{name:'shan'}}
trigger.result={bool:true,card:{name:'shan',isCard:true}}
}
},
ai:{
@ -2195,9 +2190,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
'step 8'
if(event.wuxieresult){
var next=event.wuxieresult.useResult(event.wuxieresult2);
if(event.triggername!='phaseJudge'){
if(event.stateplayer&&event.statecard) next.respondTo=[event.stateplayer,event.statecard];
else next.respondTo=[trigger.player,trigger.card];
else if(event.triggername!='phaseJudge'){
next.respondTo=[trigger.player,trigger.card];
}
}
'step 9'

805
card/zhulu.js Normal file
View File

@ -0,0 +1,805 @@
'use strict';
game.import('card',function(lib,game,ui,get,ai,_status){
return {
name:'zhulu',
connect:true,
card:{
zhulu_card:{
audio:true,
fullskin:true,
type:'trick',
enable:true,
cardcolor:'red',
selectTarget:-1,
filterTarget:true,
contentBefore:function(){
"step 0"
if(get.is.versus()){
player.chooseControl('顺时针','逆时针',function(event,player){
if(player.next.side==player.side) return '逆时针';
return '顺时针';
}).set('prompt','选择'+get.translation(card)+'的结算方向');
}
else{
event.goto(2);
}
"step 1"
if(result&&result.control=='顺时针'){
var evt=event.getParent();
evt.fixedSeat=true;
evt.targets.sortBySeat();
evt.targets.reverse();
if(evt.targets[evt.targets.length-1]==player){
evt.targets.unshift(evt.targets.pop());
}
}
"step 2"
ui.clear();
var num;
if(event.targets){
num=event.targets.length;
}
else{
num=game.countPlayer();
}
var cards=[];
for(var i=0;i<num;i++){
var cardx=get.cardPile(function(card){
return get.type(card)=='equip'&&!cards.contains(card);
});
if(cardx) cards.push(cardx);
};
if(!cards.length){
event.finish();
event.getParent().excluded.addArray(game.players);
return;
}
game.cardsGotoOrdering(cards).relatedEvent=event.getParent();
var dialog=ui.create.dialog('逐鹿天下',cards,true);
_status.dieClose.push(dialog);
dialog.videoId=lib.status.videoId++;
game.addVideo('cardDialog',null,['逐鹿天下',get.cardsInfo(cards),dialog.videoId]);
event.getParent().preResult=dialog.videoId;
game.broadcast(function(cards,id){
var dialog=ui.create.dialog('逐鹿天下',cards,true);
_status.dieClose.push(dialog);
dialog.videoId=id;
},cards,dialog.videoId);
game.log(event.card,'亮出了',cards);
},
content:function(){
"step 0"
for(var i=0;i<ui.dialogs.length;i++){
if(ui.dialogs[i].videoId==event.preResult){
event.dialog=ui.dialogs[i];break;
}
}
if(!event.dialog){
event.finish();
return;
}
var equips=[];
for(var i=0;i<event.dialog.buttons.length;i++){
var card=event.dialog.buttons[i].link;
if(!player.isDisabled(get.subtype(card))) equips.push(card);
}
if(equips.length>1){
var next=target.chooseButton(true,function(button){
var player=_status.event.player;
return get.effect(player,button.link,player,player);
});
next.set('equips',equips);
next.set('filterButton',function(button){
return _status.event.equips.contains(button.link);
});
next.set('dialog',event.preResult);
next.set('closeDialog',false);
next.set('dialogdisplay',true);
}
else if(equips.length){
event.directButton=equips[0];
}
else event.finish();
"step 1"
var dialog=event.dialog;
var card;
if(event.directButton){
card=event.directButton;
}
else{
card=result.links[0];
}
var button;
for(var i=0;i<dialog.buttons.length;i++){
if(dialog.buttons[i].link==card){
button=dialog.buttons[i];
button.querySelector('.info').innerHTML=get.translation(target);
dialog.buttons.remove(button);
break;
}
}
var capt=get.translation(target)+'选择了'+get.translation(button.link);
if(card){
target.equip(card);
target.$gain2(card);
game.broadcast(function(card,id,name,capt){
var dialog=get.idDialog(id);
if(dialog){
dialog.content.firstChild.innerHTML=capt;
for(var i=0;i<dialog.buttons.length;i++){
if(dialog.buttons[i].link==card){
dialog.buttons[i].querySelector('.info').innerHTML=name;
dialog.buttons.splice(i--,1);
break;
}
}
}
},card,dialog.videoId,get.translation(target),capt);
}
dialog.content.firstChild.innerHTML=capt;
game.addVideo('dialogCapt',null,[dialog.videoId,dialog.content.firstChild.innerHTML]);
game.log(target,'选择了',button.link);
game.delay();
},
contentAfter:function(){
for(var i=0;i<ui.dialogs.length;i++){
if(ui.dialogs[i].videoId==event.preResult){
var dialog=ui.dialogs[i];
dialog.close();
_status.dieClose.remove(dialog);
break;
}
}
game.broadcast(function(id){
var dialog=get.idDialog(id);
if(dialog){
dialog.close();
_status.dieClose.remove(dialog);
}
},event.preResult);
game.addVideo('cardDialog',null,event.preResult);
},
ai:{
wuxie:function(){
if(Math.random()<0.5) return 0;
},
basic:{
order:3,
useful:1,
},
result:{
target:function(player,target){
if(get.is.versus()){
if(target==player) return 1.5;
return 1;
}
if(player.hasUnknown(2)){
return 0;
}
return 2-2*get.distance(player,target,'absolute')/game.countPlayer();
}
},
tag:{
draw:1,
multitarget:1
}
}
},
kaihua:{
enable:true,
fullskin:true,
type:'trick',
selectTarget:-1,
toself:true,
filterTarget:function(card,player,target){
return target==player;
},
modTarget:true,
content:function(){
'step 0'
if(!target.countCards('he')){
event.finish();return;
}
target.chooseToDiscard(true,'he',[1,2]).set('ai',function(card){
if(!ui.selected.cards.length&&get.type(card)=='equip') return 8-get.value(card);
return 6-get.value(card);
});
'step 1'
if(result.bool&&result.cards){
var bool=0;
for(var i=0;i<result.cards.length;i++){
if(get.type(result.cards[i])=='equip'){bool=1;break}
}
target.draw(result.cards.length+bool);
}
},
ai:{
wuxie:function(){
return 0;
},
basic:{
useful:3,
value:3,
order:5
},
result:{
target:function(player,target){
var hs=target.getCards('h');
if(hs.length<=1){
if(target==player&&(hs.length==0||hs[0].name=='kaihua')){
return 0;
}
return 0.3;
}
return Math.sqrt(target.countCards('he'));
},
},
tag:{
loseCard:1,
discard:1,
norepeat:1
}
},
},
jiejia:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return target.countCards('e')>0;
},
content:function(){
var es=target.getCards('e');
if(es.length) target.gain(es,'gain2','log');
},
ai:{
order:10,
tag:{
gain:1,
loseCard:1,
},
basic:{
useful:0.5,
value:0.5,
},
result:{
target:function(player,target){
if(get.value(target.getCards('e'),target)<=0||target.hasSkillTag('noe')) return 1;
return 0;
},
},
},
},
caochuan:{
fullskin:true,
type:'trick',
wuxieable:true,
global:['caochuan_skill'],
notarget:true,
content:function(){
var evt2=event.getParent(3)._trigger;
evt2.cancel();
var evt=evt2.getParent();
var next=game.createEvent('caochuan_gain');
_status.event.next.remove(next);
evt.after.push(next);
next.player=player;
next.setContent(function(){
var cards=event.getParent().cards.filterInD();
if(cards.length) player.gain(cards,'gain2','log');
});
},
ai:{
basic:{
useful:[6,4],
value:[6,4],
},
result:{player:1},
},
},
numa:{
fullskin:true,
type:'equip',
subtype:'equip4',
filterTarget:lib.filter.notMe,
selectTarget:1,
toself:false,
onEquip:function(){
var cards=player.getCards('e',function(cardz){
return cardz!=card;
});
if(cards.length) player.discard(cards);
},
ai:{
order:9,
equipValue:function(card,player){
if(get.position(card)=='e') return 0;
return 1;
},
basic:{
equipValue:5,
},
result:{
target:function(player,target){
var card=target.getCards('e');
var val=get.value(card);
if(val>0) return -val;
return 0;
},
},
},
},
yajiaoqiang:{
fullskin:true,
type:'equip',
subtype:'equip1',
distance:{attackFrom:-2},
skills:['yajiaoqiang_skill'],
ai:{
equipValue:function(card,player){
var skills=['longdan','kanpo','rekanpo','qingguo','reqingguo'];
for(var i=0;i<skills.length;i++){
if(player.hasSkill(skills[i])) return 5;
}
return 2;
},
basic:{
equipValue:5,
},
},
},
wufengjian:{
fullskin:true,
type:'equip',
subtype:'equip1',
filterTarget:lib.filter.notMe,
selectTarget:1,
toself:false,
skills:['wufengjian_skill'],
ai:{
order:9,
equipValue:function(card,player){
if(get.position(card)=='e') return -2;
return 1;
},
basic:{
equipValue:5,
},
result:{
target:function(player,target){
var val=2.5;
var card=target.getEquip(2);
if(card) val+=get.value(card);
return -val;
},
},
},
},
zheji:{
fullskin:true,
type:'equip',
subtype:'equip1',
filterTarget:lib.filter.notMe,
selectTarget:1,
toself:false,
distance:{attackFrom:1},
ai:{
order:9,
equipValue:function(card,player){
if(get.position(card)=='e') return -2;
return 1;
},
basic:{
equipValue:5,
},
result:{
target:function(player,target){
var val=2.5;
var card=target.getEquip(2);
if(card) val+=get.value(card);
return -val;
},
},
},
},
yinfengjia:{
fullskin:true,
type:'equip',
subtype:'equip2',
filterTarget:lib.filter.notMe,
selectTarget:1,
toself:false,
skills:['yinfengjia_skill'],
ai:{
order:9,
equipValue:function(card,player){
if(get.position(card)=='e') return -1;
return 1;
},
basic:{
equipValue:5,
},
result:{
target:function(player,target){
var val=2;
var card=target.getEquip(2);
if(card) val+=get.value(card);
return -val;
},
},
},
},
nvzhuang:{
fullskin:true,
type:'equip',
subtype:'equip2',
filterTarget:lib.filter.notMe,
selectTarget:1,
toself:false,
loseDelay:false,
onEquip:function(){
if(player.sex=='male'&&player.countCards('he',function(cardx){
return cardx!=card;
})) player.chooseToDiscard(true,function(card){
return card!=_status.event.card;
},'he').set('card',card);
},
onLose:function(){
if(player.sex!='male') return;
var next=game.createEvent('nvzhuang_lose');
event.next.remove(next);
event.getParent().after.push(next);
next.player=player;
next.card=card;
next.setContent(function(){
if(player.countCards('he')){
player.popup('nvzhuang');
player.chooseToDiscard(true,'he');
}
});
},
ai:{
order:9.5,
equipValue:function(card,player){
if(get.position(card)=='e') return player.sex=='male'?(4/(1+player.countCards('he'))):0;
return 1;
},
basic:{
equipValue:5,
},
result:{
target:function(player,target){
if(target.sex=='male'){
var val=0;
var card=target.getEquip(2);
if(card) val=get.value(card);
return -1-val;
}
return 0;
},
},
}
},
yexingyi:{
fullskin:true,
type:'equip',
subtype:'equip2',
skills:['yexingyi_skill'],
ai:{
equipValue:4,
basic:{
equipValue:4,
},
}
},
jinhe:{
fullskin:true,
type:'equip',
subtype:'equip5',
filterTarget:lib.filter.notMe,
selectTarget:1,
toself:false,
skills:['jinhe_skill'],
global:['jinhe_lose'],
loseDelay:false,
onEquip:function(){
"step 0"
player.markSkill('jinhe_skill');
if(event.getParent(2).name!='jinhe') event.finish();
else{
event.target=player;
event.player=event.getParent(2).player;
}
"step 1"
var id=card.cardid;
event.cardid=id;
if(!_status.jinhe) _status.jinhe={};
if(_status.jinhe[id]){
game.cardsDiscard(_status.jinhe[id].card);
delete _status.jinhe[id];
}
var cards2=get.cards(2);
event.cards2=cards2;
player.chooseButton(['选择一张牌作为「礼」',cards2],true);
"step 2"
var id=event.cardid;
_status.jinhe[id]={
player:player,
card:result.links[0],
};
game.broadcast(function(jinhe){
_status.jinhe=jinhe;
},_status.jinhe);
game.cardsGotoSpecial(result.links[0]);
event.cards2.remove(result.links[0]);
event.cards2[0].fix();
ui.cardPile.insertBefore(event.cards2[0],ui.cardPile.firstChild);
game.updateRoundNumber();
target.markSkill('jinhe_skill');
},
onLose:function(){
player.unmarkSkill('jinhe_skill');
var id=card.cardid;
if((event.getParent(2)&&event.getParent(2).name!='swapEquip')&&get.position(card)!='d'&&event.parent.type!='equip'&&_status.jinhe&&_status.jinhe[id]){
var card2=_status.jinhe[id].card;
player.$throw(card2,1000);
game.log(card,'掉落了',card2);
game.cardsDiscard(card2);
delete _status.jinhe[id];
}
},
ai:{
order:9.5,
equipValue:function(card,player){
if(get.position(card)!='e') return 5;
if(_status.jinhe&&_status.jinhe[card.cardid]&&(_status.event.name=='discardPlayerCard'||_status.event.name=='chooseToDiscard')) return 2*player.countCards('h');
return 0;
},
basic:{
equipValue:5,
},
result:{
target:function(player,target){
return -1-target.countCards('h');
},
},
}
},
},
skill:{
jinhe_lose:{
trigger:{player:'loseEnd'},
equipSkill:true,
forced:true,
filter:function(event,player){
if(event.type!='discard'||!_status.jinhe||event.getParent(2).name=='jinhe_skill'&&event.getParent(2).player==player) return false;
for(var i=0;i<event.es.length;i++){
if(event.es[i].name=='jinhe'&&_status.jinhe[event.es[i].cardid]) return true;
}
return false;
},
content:function(){
"step 0"
for(var i=0;i<trigger.es.length;i++){
if(trigger.es[i].name=='jinhe'&&_status.jinhe[trigger.es[i].cardid]){
var card=_status.jinhe[trigger.es[i].cardid].card;
game.cardsDiscard(card);
player.$throw(card);
game.log(card,'进入了弃牌堆');
delete _status.jinhe[trigger.es[i].cardid];
};
}
game.broadcastAll(function(jinhe){
_status.jinhe=jinhe;
},_status.jinhe);
"step 1"
var hs=player.getCards('h');
if(hs.length) player.discard(hs);
"step 2"
game.broadcastAll(ui.clear);
},
},
jinhe_skill:{
equipSkill:true,
intro:{
mark:function(dialog,storage,player){
var card=player.getEquip('jinhe');
if(card&&_status.jinhe&&_status.jinhe[card.cardid]){
if(_status.jinhe[card.cardid].player==game.me||_status.jinhe[card.cardid].player.isUnderControl()) dialog.addAuto([_status.jinhe[card.cardid].card]);
else return '共有一张「礼」';
}
else return '没有牌';
},
},
mark:true,
marktext:'礼',
enable:'phaseUse',
filter:function(event,player){
if(!_status.jinhe) return false;
var card=player.getEquip(5);
return card&&card.name=='jinhe'&&_status.jinhe[card.cardid]!=undefined;
},
prepare:function(cards,player){
var card=player.getEquip(5);
if(card&&card.name=='jinhe'&&_status.jinhe[card.cardid]){
var tothrow=_status.jinhe[card.cardid].card;
player.$throw(tothrow);
game.log(player,'将',tothrow,'置入了弃牌堆');
}
},
content:function(){
"step 0"
var card=player.getEquip(5);
if(card&&card.name=='jinhe'&&_status.jinhe[card.cardid]){
game.cardsDiscard(_status.jinhe[card.cardid].card);
event.suit=get.suit(_status.jinhe[card.cardid].card);
delete _status.jinhe[card.cardid];
game.broadcastAll(function(jinhe){
_status.jinhe=jinhe;
},_status.jinhe);
}
else event.finish();
"step 1"
var cards=player.getCards('he',function(card){
if(get.position(card)=='h') return get.suit(card)==event.suit;
return get.position(card)=='e'&&card.name=='jinhe';
});
if(cards.length) player.discard(cards);
"step 2"
game.broadcastAll(ui.clear);
},
},
yexingyi_skill:{
equipSkill:true,
mod:{
targetEnabled:function(card,player,target){
if(get.color(card)=='black'&&get.type(card,'trick')=='trick'&&!target.hasSkillTag('unequip2')&&!player.hasSkillTag('unequip',false,{
name:card?card.name:null,
target:target,
card:card
})) return false;
},
},
},
yinfengjia_skill:{
trigger:{player:'damageBegin3'},
forced:true,
equipSkill:true,
filter:function(event,player){
if(get.type(event.card,'trick')!='trick') return false;
if(player.hasSkillTag('unequip2')) return false;
if(event.source&&event.source.hasSkillTag('unequip',false,{
name:event.card?event.card.name:null,
target:player,
card:event.card
})) return false;
return true;
},
content:function(){trigger.num++},
},
wufengjian_skill:{
trigger:{player:'useCard'},
forced:true,
filter:function(event,player){
if(event.card.name!='sha') return false;
var card=player.getEquip('wufengjian');
return player.countCards('he',function(cardx){
return cardx!=card;
})>0;
},
content:function(){
player.chooseToDiscard(true,'he',function(card){
return card!=_status.event.card;
}).set('card',player.getEquip('wufengjian'));
},
},
yajiaoqiang_skill:{
trigger:{player:'useCardAfter'},
filter:function(event,player){
if(_status.currentPhase==player||get.color(event.card)!='black'||event.cards.filterInD().length==0) return false;
return player.getHistory('useCard',function(evt){
return get.color(evt.card)=='black';
}).indexOf(event)==0;
},
prompt2:function(event,player){
return '获得'+get.translation(event.cards.filterInD());
},
content:function(){
player.gain(trigger.cards.filterInD(),'gain2','log');
},
},
caochuan_skill:{
trigger:{target:'useCardToBegin'},
forced:true,
priority:6,
filter:function(event,player){
if(event.directHit||!get.tag(event.card,'damage')||!['basic','trick'].contains(get.type(event.card))) return false;
return player.hasUsableCard('caochuan');
},
content:function(){
var next=player.chooseToUse();
next.set('prompt','是否使用【草船借箭】响应'+get.translation(trigger.player)+'使用的'+get.translation(trigger.card)+'');
next.set('filterCard',function(card){
if(get.name(card)!='caochuan') return false;
return lib.filter.cardEnabled(card,player,'forceEnable');
});
next.set('respondTo',[trigger.player,trigger.card]);
next.set('goon',-get.effect(player,trigger.card,trigger.player,player));
next.set('ai1',function(card){
return _status.event.goon;
})
},
},
},
translate:{
jinhe:'锦盒',
jinhe_info:'当你使用【锦盒】时,你将原有的与此牌对应的「礼」置入弃牌堆(若有),然后观看牌堆顶的两张牌并将其中一张置于游戏外与此牌对应,称之为「礼」。<br>出牌阶段,你可以将与此牌对应的「礼」置入弃牌堆,然后弃置【锦盒】以及所有与「礼」花色相同的手牌。当此牌因其他原因进入弃牌堆后,你将与此牌对应的「礼」置入弃牌堆并弃置所有手牌。',
jinhe_skill:'锦盒',
jinhe_lose:'锦盒',
yexingyi:'夜行衣',
yexingyi_info:'锁定技,你不是黑色锦囊牌的合法目标。',
nvzhuang:'女装',
nvzhuang_info:'锁定技,当此牌进入或离开你的装备区时,若你的性别为男性,你弃置一张不为此牌的牌。',
yinfengjia:'引蜂甲',
yinfengjia_info:'锁定技,当你受到锦囊牌造成的伤害时,此伤害+1。',
yinfengjia_skill:'引蜂甲',
zheji:'折戟',
zheji_info:'这是一把坏掉的武器...',
wufengjian:'无锋剑',
wufengjian_info:'锁定技,当你使用【杀】时,你弃置一张不为装备区内【无锋剑】的牌。',
wufengjian_skill:'无锋剑',
yajiaoqiang_skill:'涯角枪',
yajiaoqiang:'涯角枪',
yajiaoqiang_info:'当你于一名其他角色的回合内第一次使用的黑色牌结算完成后,你可以获得此牌对应的所有实体牌。',
numa:'驽马',
numa_info:'锁定技,当此牌进入你的装备区时,你弃置装备区内的所有其他牌。',
caochuan:'草船借箭',
caochuan_info:'当带有「伤害」标签的基本牌或普通锦囊牌对你生效前,对此牌使用。抵消此牌对你产生的效果。当此牌结算完成后,你获得此牌对应的所有实体牌。',
jiejia:'解甲归田',
jiejia_info:'出牌阶段,对一名装备区内有牌的角色使用。该角色获得其装备区内的所有牌。',
kaihua:'树上开花',
kaihua_info:'出牌阶段,对包含你自己在内的一名角色使用。目标角色弃置一至两张牌,然后摸等量的牌。若其以此法弃置了装备牌,则多摸一张牌。',
zhulu_card:'逐鹿天下',
zhulu_card_info:'出牌阶段,对所有角色使用。你从牌堆和弃牌堆亮出等同于目标角色数的装备牌,每名目标角色将其中一张牌置于自己的装备区。',
gifts_tag:'赠',
},
list:[
['diamond',3,'jiejia'],
['diamond',4,'shan'],
['diamond',5,'yajiaoqiang'],
['diamond',6,'sha'],
['diamond',8,'shan'],
['diamond',9,'kaihua'],
['diamond',10,'yinfengjia',null,['gifts']],
['diamond',11,'sha'],
['club',3,'jiejia'],
['club',4,'sha','thunder'],
['club',5,'zheji',null,['gifts']],
['club',6,'jiu'],
['club',8,'jiu'],
['club',9,'zhulu_card'],
['club',10,'jinhe',null,['gifts']],
['club',11,'sha'],
['heart',3,'sha','fire'],
['heart',4,'shan'],
['heart',5,'numa',null,['gifts']],
['heart',6,'tao'],
['heart',8,'shan'],
['heart',9,'kaihua'],
['heart',10,'nvzhuang',null,['gifts']],
['heart',11,'kaihua'],
['spade',3,'caochuan'],
['spade',4,'sha','thunder'],
['spade',5,'wufengjian',null,['gifts']],
['spade',6,'caochuan'],
['spade',8,'sha'],
['spade',9,'sha'],
['spade',10,'yexingyi'],
['spade',11,'sha'],
],
}
});

View File

@ -5,6 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
connectBanned:['diy_tianyu','diy_yangyi','diy_lukang','ns_huamulan','ns_yuji','ns_duangui','ns_liuzhang'],
character:{
ns_zhangwei:['female','wei',3,['nsqiyue','nsxuezhu']],
diy_wenyang:['male','wei','4/6',['lvli','choujue']],
key_lucia:['female','key','1/2',['lucia_duqu','lucia_zhenren']],
key_kyousuke:['male','key',4,['nk_shekong','key_huanjie']],
@ -90,12 +91,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterSort:{
diy:{
diy_tieba:["diy_wenyang","ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua"],
diy_tieba:["diy_wenyang","ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_zhangwei"],
diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","key_umi","key_rei","key_komari","key_yukine"],
},
},
characterIntro:{
ns_zhangwei:'血骑教习·张葳,三国杀集换式卡牌游戏《阵面对决》中的帝畿系列卡牌。游卡桌游官方原创的三国时期女性角色。',
diy_feishi:'字公举,生卒年不详,益州犍为郡南安县(今四川省乐山市)人。刘璋占据益州时,以费诗为绵竹县县令。刘备进攻刘璋夺取益州,费诗举城而降,后受拜督军从事,转任牂牁郡太守,再为州前部司马。',
//diy_liuyan:'字元海,新兴(今山西忻州北)人,匈奴族,匈奴首领冒顿单于之后[1] 南匈奴单于于夫罗之孙左贤王刘豹之子母呼延氏十六国时期前赵政权开国皇帝304年310年在位。',
diy_lukang:'字幼节,吴郡吴县(今江苏苏州)人。三国时期吴国名将,丞相陆逊次子。',
@ -150,6 +152,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yuji:['zuoci']
},
skill:{
nsqiyue:{
trigger:{global:['turnOverEnd','linkEnd','showCharacterEnd','hideCharacterEnd','removeCharacterEnd']},
forced:true,
content:function(){player.draw()},
},
nsxuezhu:{
trigger:{player:'damageEnd',source:'damageSource'},
filter:function(event,player){return event.player.isAlive()},
content:function(){trigger.player.draw(2);trigger.player.turnOver();},
},
yukine_wenzhou:{
trigger:{global:'phaseUseBegin'},
direct:true,
@ -4029,7 +4041,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
frequent:true,
filter:function(event){
var type=get.type(event.card,'trick');
return (type=='trick'||type=='equip')&&event.cards[0]&&event.cards[0]==event.card;
return (type=='trick'||type=='equip')&&event.card.isCard;
},
content:function(){
"step 0"
@ -5600,6 +5612,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yukine_wenzhou:'问咒',
yukine_wenzhou_info:'一名角色的出牌阶段开始时,其可以交给你一张牌。若如此做,你选择一项:交给其一张牌,或令其从牌堆中获得一张与此牌类型相同的牌,且其于此阶段内使用与此牌牌名相同的牌时无法被响应。',
ns_zhangwei:'张葳',
nsqiyue:'骑钺',
nsqiyue_info:'锁定技,当有角色的武将牌状态改变后,你摸一张牌。',
nsxuezhu:'血逐',
nsxuezhu_info:'当你受到伤害或造成伤害后,你可以令受到伤害的角色摸两张牌并翻面。',
ns_chuanshu:'传术',
ns_chuanshu_info:'<span class=yellowtext>限定技</span> 当一名其他角色进入濒死状态时你可以令其选择获得技能【雷击】或【鬼道】其回复体力至1并摸两张牌。当该被【传术】的角色造成或受到一次伤害后你摸一张牌。其阵亡后你重置技能【传术】',
ns_xiandao1:'仙道',

View File

@ -793,7 +793,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:true,
trigger:{player:'useCard'},
filter:function(event,player){
return (get.type(event.card)=='trick'&&event.cards[0]&&event.cards[0]==event.card)&&player.hasMark('renjie');
return (get.type(event.card,'trick')=='trick'&&event.card.isCard);
},
init:function(player){
player.storage.jilue_jizhi=0;
@ -2186,8 +2186,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"drlt_duorui":{
audio:2,
init:function(player){
player.storage.drlt_duorui=[];
init:function(player,skill){
if(!player.storage.drlt_duorui) player.storage.drlt_duorui=[];
},
trigger:{
source:'damageSource'
@ -2197,21 +2197,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return player!=event.player&&event.player.isAlive()&&_status.currentPhase==player;
},
check:function(event,player){
if(player.isDisabled(5)) return false;
var skills=event.player.skills.slice(0);
for(var i=0;i<skills.length;i++){
var info=get.info(skills[i])
if(info!=undefined&&!info.charlotte&&(!info.unique||info.gainable)) return true;
}
if(player.countDisabled()<5&&player.isDisabled(5)) return false;
return true;
},
bannedList:[
'bifa','buqu','gzbuqu','songci','funan','xinfu_guhuo','reguhuo','huashen','rehuashen','old_guhuo','shouxi','xinpojun','taoluan','xintaoluan','yinbing','xinfu_yingshi','zhenwei','zhengnan','xinzhengnan','zhoufu',
],
content:function(){
'step 0'
event.skills=[];
var skills=trigger.player.skills.slice(0);
for(var i=0;i<skills.length;i++){
var info=get.info(skills[i])
if(info!=undefined&&!info.charlotte&&(!info.unique||info.gainable)) event.skills.push(skills[i]);
var list=[];
var listm=[];
var listv=[];
if(trigger.player.name1!=undefined) listm=lib.character[trigger.player.name1][3];
else listm=lib.character[trigger.player.name][3];
if(trigger.player.name2!=undefined) listv=lib.character[trigger.player.name2][3];
listm=listm.concat(listv);
var func=function(skill){
var info=get.info(skill);
if(!info||info.charlotte||info.zhuSkill||info.juexingji||info.limited||(info.unique&&!info.gainable)||lib.skill.drlt_duorui.bannedList.contains(skill)) return false;
return true;
};
for(var i=0;i<listm.length;i++){
if(func(listm[i])) list.add(listm[i]);
}
event.skills=list;
if(player.countDisabled()<5){
player.chooseToDisable().ai=function(event,player,list){
if(list.contains('equip5')) return 'equip5';
@ -2353,7 +2362,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"_drlt_zhiti":{
mod:{
maxHandcard:function (player,num){
if(player.maxHp>player.hp&&game.countPlayer(function(current){return current!=player&&current.hasSkill('drlt_zhiti')&&get.distance(current,player,'attack')<=1})) return num-1;
if(player.maxHp>player.hp&&game.countPlayer(function(current){
return current!=player&&current.hasSkill('drlt_zhiti')&&current.inRange(player);
})) return num-1;
},
},
},
@ -2642,7 +2653,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbaiyin:'拜印',
sbaiyin_info:'觉醒技准备阶段开始时若你的“忍”标记数不小于4你减1点体力上限然后获得〖极略〗',
jilue:'极略',
jilue_info:'当一名角色的判定牌生效前你可以弃1枚“忍”标记并发动〖鬼才〗每当你受到伤害后你可以弃1枚“忍”标记并发动〖放逐〗当你使用普通锦囊牌时你可以弃1枚“忍”标记并发动〖集智〗出牌阶段限一次你可以弃1枚“忍”标记并发动〖制衡〗出牌阶段你可以弃1枚“忍”标记并获得〖完杀〗直到回合结束。',
jilue_info:'当一名角色的判定牌生效前你可以弃1枚“忍”标记并发动〖鬼才〗每当你受到伤害后你可以弃1枚“忍”标记并发动〖放逐〗当你使用锦囊牌时你可以弃1枚“忍”标记并发动〖集智〗出牌阶段限一次你可以弃1枚“忍”标记并发动〖制衡〗出牌阶段你可以弃1枚“忍”标记并获得〖完杀〗直到回合结束。',
jilue_guicai:'鬼才',
jilue_fangzhu:'放逐',
jilue_wansha:'完杀',

View File

@ -7,7 +7,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{
mobile:{
mobile_default:["miheng","taoqian","liuzan","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding"],
mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","old_yuanshao","old_liushan"],
mobile_others:["re_jikang","old_bulianshi","old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","xin_yuanshao","re_liushan"],
mobile_sunben:["re_sunben"],
},
},
@ -39,8 +39,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_xugong:['male','wu',3,['rebiaozhao','yechou']],
re_weiwenzhugezhi:['male','wu',4,['refuhai']],
old_yuanshao:['male','qun',4,['reluanji','xueyi'],['zhu']],
old_liushan:['male','shu',3,['xiangle','refangquan','ruoyu'],['zhu']],
xin_yuanshao:['male','qun',4,['reluanji','xueyi'],['zhu']],
re_liushan:['male','shu',3,['xiangle','refangquan','ruoyu'],['zhu']],
re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']],
},
characterIntro:{
@ -1180,7 +1180,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
else list2=targets[1];
targets[0].useCard({name:name},list2,'noai');
targets[0].useCard({name:name,isCard:true},list2,'noai');
game.delay(0.5);
},
ai:{
@ -1685,8 +1685,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
translate:{
old_liushan:'手杀刘禅',
old_yuanshao:'手杀袁绍',
re_jikang:"手杀嵇康",
old_bulianshi:'手杀步练师',
old_caochun:'旧曹纯',
@ -1763,7 +1761,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rezhennan_info:'当你成为其他角色使用的牌的目标后若此牌的目标数大于该角色的体力值则你可以弃置一张牌并对其造成1点伤害。',
hujinding:'胡金定',
re_liushan:'刘禅',
re_liushan:'手杀刘禅',
re_sunben:'界孙笨',
re_zhangzhang:'界张昭张纮',
rehunzi:'魂姿',

View File

@ -12,11 +12,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan","ol_wuyi"],
old_yijiang5:["old_caoxiu","old_quancong","old_zhuzhi"],
old_yijiang67:["ol_xinxianying","ol_zhangrang","ol_liuyu"],
old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong"],
old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","ol_maliang"],
old_mobile:["old_caochun","old_majun"],
},
},
character:{
ol_maliang:['male','shu',3,['zishu','yingyuan']],
old_huangfusong:['male','qun',4,['fenyue']],
old_majun:["male","wei",3,["xinfu_jingxie1","xinfu_qiaosi"],[]],
old_zhangxingcai:['female','shu',3,['oldshenxian','qiangwu']],
@ -539,11 +540,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
trigger.untrigger();
trigger.responded=true;
if(trigger.filterCard({name:'shan'})){
trigger.result={bool:true,card:{name:'shan'}}
if(trigger.filterCard({name:'shan',isCard:true})){
trigger.result={bool:true,card:{name:'shan',isCard:true}}
}
else{
trigger.result={bool:true,card:{name:'sha'}}
trigger.result={bool:true,card:{name:'sha',isCard:true}}
}
player.logSkill('zhenshan',result.targets);
player.addTempSkill('zhenshan2');
@ -608,7 +609,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
backup:function(links,player){
return {
filterCard:function(){return false},
viewAs:{name:links[0][2],nature:links[0][3]},
viewAs:{name:links[0][2],nature:links[0][3],isCard:true},
selectCard:-1,
popname:true,
log:false,
@ -685,16 +686,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return event.judge(player.judging[0])<0;
},
content:function(){
"step 0"
var card=get.cards()[0];
event.card=card;
game.cardsGotoOrdering(card).relatedEvent=trigger;
"step 1"
player.$throw(card);
card.clone.classList.add('thrownhighlight');
if(trigger.player.judging[0].clone){
trigger.player.judging[0].clone.classList.remove('thrownhighlight');
game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone]));
}
trigger.player.judging[0].discard();
game.cardsDiscard(trigger.player.judging[0]);
trigger.player.judging[0]=card;
trigger.position.appendChild(card);
game.log(trigger.player,'的判定牌改为',card);
game.delay(2);
},
@ -817,7 +821,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
}
else{
player.useCard({name:'sha'},target,false).animate=false;
player.useCard({name:'sha',isCard:true},target,false).animate=false;
game.delay();
event.finish();
}
@ -828,7 +832,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 2"
var target=event.target;
if(result.control=='出杀'){
player.useCard({name:'sha'},target,false).animate=false;
player.useCard({name:'sha',isCard:true},target,false).animate=false;
game.delay();
}
else{
@ -886,6 +890,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_caochong:'旧曹冲',
old_guanqiujian:'旧毌丘俭',
old_huangfusong:'旧皇甫嵩',
ol_maliang:'旧马良',
old_fuhun:'父魂',
old_fuhun_info:'摸牌阶段开始时,你可以放弃摸牌,改为从牌堆顶亮出两张牌并获得之,若亮出的牌颜色不同,你获得技能“武圣”、“咆哮”,直到回合结束。',

View File

@ -6,9 +6,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh:{
refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_gongsunzan","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"],
refresh_feng:['caoren','re_xiahouyuan','re_huangzhong','re_weiyan','re_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'],
refresh_huo:["re_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","re_pangtong","xin_yuanshao","re_pangde"],
refresh_huo:["re_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","re_pangtong","ol_yuanshao","re_pangde"],
refresh_lin:['re_zhurong','re_menghuo','re_dongzhuo','re_sunjian','re_caopi','re_xuhuang'],
refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','re_liushan','re_zhangzhang','re_zuoci','re_sunce'],
refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'],
},
},
connect:true,
@ -60,7 +60,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_dianwei:["male","wei",4,["reqiangxi"],[]],
re_yanwen:["male","qun",4,["reshuangxiong"],[]],
re_pangtong:['male','shu',3,['xinlianhuan','niepan'],[]],
xin_yuanshao:['male','qun',4,['olluanji','olxueyi'],['zhu']],
ol_yuanshao:['male','qun',4,['olluanji','olxueyi'],['zhu']],
re_zhurong:['female','shu',4,['juxiang','relieren']],
re_menghuo:['male','shu',4,['huoshou','rezaiqi']],
re_dongzhuo:['male','qun',8,['rejiuchi','roulin','benghuai','baonue'],['zhu']],
@ -69,7 +69,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_dengai:['male','wei',4,['retuntian','zaoxian']],
re_jiangwei:['male','shu',4,['retiaoxin','zhiji']],
re_caiwenji:['female','qun',3,['rebeige','duanchang']],
re_liushan:['male','shu',3,['xiangle','olfangquan','olruoyu'],['zhu']],
ol_liushan:['male','shu',3,['xiangle','olfangquan','olruoyu'],['zhu']],
re_zhangzhang:['male','wu',3,['rezhijian','guzheng']],
re_sunce:['male','wu',4,['jiang','olhunzi','olzhiba'],['zhu']],
@ -89,6 +89,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
skill:{
sishu:{
audio:2,
trigger:{player:'phaseUseBegin'},
direct:true,
content:function(){
@ -167,7 +168,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
olfangquan:{
audio:'refangquan',
audio:2,
trigger:{player:'phaseUseBefore'},
filter:function(event,player){
return player.countCards('h')>0&&!player.hasSkill('olfangquan3');
@ -190,7 +191,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
player.logSkill('olfangquan');
trigger.cancel();
player.addSkill('olfangquan2');
player.addTempSkill('olfangquan2');
player.addMark('olfangquan2',1,false);
}
}
@ -204,6 +205,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
"step 0"
event.count=player.countMark(event.name);
player.removeMark(event.name,event.count,false);
"step 1"
event.count--;
player.chooseToDiscard('是否弃置一张牌并令一名其他角色进行一个额外回合?').set('logSkill','olfangquan').ai=function(card){
@ -241,7 +243,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
olluanji:{
inherit:'luanji',
audio:'luanji',
audio:2,
line:false,
group:'olluanji_remove',
check:function(card){
@ -271,7 +273,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
olxueyi:{
audio:'xueyi',
audio:2,
trigger:{global:'phaseBefore'},
forced:true,
zhuSkill:true,
@ -299,7 +301,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'olxueyi_draw',
},
olxueyi_draw:{
audio:'xueyi',
audio:'olxueyi',
trigger:{player:'phaseBegin'},
prompt2:'弃置一枚「裔」标记,然后摸一张牌',
check:function(event,player){
@ -314,7 +316,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
olhunzi:{
audio:'hunzi',
audio:2,
inherit:'hunzi',
content:function(){
player.loseMaxHp();
@ -327,7 +329,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
olzhiba:{
audio:'zhiba',
audio:2,
unique:true,
zhuSkill:true,
global:'olzhiba2',
@ -1263,7 +1265,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterTarget:function (card,player,target){
if(player==target) return false;
if(target.hasSkill('reqiangxi_off')) return false;
return get.distance(player,target,'attack')<=1;
return player.inRange(target);
},
content:function (){
"step 0"
@ -1645,7 +1647,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else event.finish();
'step 2'
if(result.targets){
player.useCard({name:'juedou'},result.targets[0],'noai');
player.useCard({name:'juedou',isCard:true},result.targets[0],'noai');
}
},
ai:{
@ -2749,7 +2751,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'useCard'},
frequent:true,
filter:function(event){
return (get.type(event.card)=='trick');
return (get.type(event.card,'trick')=='trick'&&event.card.isCard);
},
init:function(player){
player.storage.rejizhi=0;
@ -2811,13 +2813,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
rerende:{
audio:2,
group:['rerende1'],
audioname:['gz_jun_liubei'],
enable:'phaseUse',
filterCard:true,
selectCard:[1,Infinity],
discard:false,
prepare:'give2',
lose:false,
delay:0,
filterTarget:function(card,player,target){
if(player.storage.rerende2&&player.storage.rerende2.contains(target)) return false;
return player!=target;
@ -2847,11 +2849,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
var evt=_status.event.getParent('phaseUse');
if(evt&&evt.name=='phaseUse'&&!evt.rerende){
var next=game.createEvent('rerende_clear');
_status.event.next.remove(next);
evt.after.push(next);
evt.rerende=true;
next.player=player;
next.setContent(lib.skill.rerende1.content);
}
if(!Array.isArray(player.storage.rerende2)){
player.storage.rerende2=[];
}
player.storage.rerende2.push(target);
target.gain(cards,player);
target.gain(cards,player,'giveAuto');
if(typeof player.storage.rerende!='number'){
player.storage.rerende=0;
}
@ -2998,7 +3009,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
'step 2'
if(event.target){
player.useCard({name:'juedou'},event.target,'noai');
player.useCard({name:'juedou',isCard:true},event.target,'noai');
}
},
ai:{
@ -3305,7 +3316,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
reyingzi:{
audio:2,
audioname:['heqi','sunce','gexuan','re_sunben'],
audioname:['heqi','sunce','gexuan','re_sunben','re_sunce'],
trigger:{player:'phaseDrawBegin2'},
forced:true,
content:function(){
@ -4116,7 +4127,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
order:9,
result:{
player:2
player:function(player){
if(game.hasPlayer(function(current){
return current.sex=='male'&&get.attitude(player,current)>0;
})) return 2;
return 0;
},
},
threaten:1.2
}
@ -4355,16 +4371,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"re_dianwei":"界典韦",
"re_yanwen":"界颜良文丑",
re_pangtong:"界庞统",
xin_yuanshao:"袁绍",
xin_yuanshao:"手杀袁绍",
re_zhangjiao:'界张角',
re_sunce:'界孙策',
ol_yuanshao:'界袁绍',
ol_liushan:'界刘禅',
olfangquan:'放权',
olfangquan_info:'出牌阶段开始前,你可以跳过此阶段。若如此做,弃牌阶段开始时,你可以弃置一张手牌,令一名其他角色进行一个额外回合。',
olruoyu:'若愚',
olruoyu_info:'主公技觉醒技准备阶段若你的体力值为全场最少则你加1点体力上限并回复1点体力然后获得技能〖思蜀〗和〖激将〗。',
sishu:'思蜀',
sishu_info:'出牌阶段开始时,你可以选择一名角色。该角色本回合内【乐不思蜀】的判定效果反转。',
sishu_info:'出牌阶段开始时,你可以选择一名角色。该角色本局游戏内【乐不思蜀】的判定效果反转。',
olluanji:'乱击',
olluanji_info:'你可以将两张花色相同的手牌当做【万箭齐发】使用。当你使用【万箭齐发】选择目标后,你可以为此牌减少一个目标。',
olluanji_remove:'乱击',
@ -4372,7 +4390,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olxueyi_info:'锁定技游戏开始时你获得X个“裔”标记。回合开始时你可以移去一个“裔”标记然后摸一张牌。你每有一个“裔”标记手牌上限便+2。X为场上群势力角色的数目',
olxueyi_draw:'血裔',
olhunzi:'魂姿',
olhunzi_info:'觉醒技,准备阶段,若你的体力上限为1你减1点体力上限并回复1点体力然后获得技能〖英姿〗和〖英魂〗。',
olhunzi_info:'觉醒技,准备阶段,若你的体力为1你减1点体力上限并回复1点体力然后获得技能〖英姿〗和〖英魂〗。',
olzhiba:'制霸',
olzhiba_info:'主公技,其他吴势力的角色的出牌阶段限一次,其可以与你拼点(你可拒绝此拼点)。若其没赢,你可以获得两张拼点牌。你的出牌阶段限一次,你可以和一名吴势力角色拼点,若你赢,你获得两张拼点牌。',
olzhiba2:'制霸',
@ -4403,7 +4421,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rebiyue:'闭月',
rebiyue_info:'结束阶段,你可以摸一张牌,若你没有手牌,则改为摸两张牌。',
rejizhi:'集智',
rejizhi_info:'当你使用非延时锦囊牌时,你可以摸一张牌。若此牌为基本牌,则你可以弃置之,然后令本回合手牌上限+1。',
rejizhi_info:'当你使用锦囊牌时,你可以摸一张牌。若此牌为基本牌,则你可以弃置之,然后令本回合手牌上限+1。',
reqicai:'奇才',
reqicai_info:'锁定技,你使用锦囊牌无距离限制,你装备区内的防具牌和宝物牌不能被其他角色弃置。',
rezhiheng:'制衡',

View File

@ -177,6 +177,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!player.storage.zhengrong) player.storage.zhengrong=[];
player.storage.zhengrong.push(card);
player.markSkill('zhengrong');
game.delayx();
}
},
marktext:'荣',
@ -261,7 +262,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
audio:'drlt_qingce',
filter:function(event,player){
return player.storage.zhengrong&&player.storage.zhengrong.length>0;
return player.storage.zhengrong&&player.storage.zhengrong.length>0&&player.countCards('h')>0;
},
chooseButton:{
dialog:function(event,player){
@ -270,11 +271,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
backup:function(links,player){
return {
card:links[0],
filterCard:true,
filterTarget:function(card,player,target){
return target.countDiscardableCards(player,'ej')>0;
},
delay:0,
audio:'drlt_zhengrong',
content:lib.skill.qingce.contentx,
ai:{
result:{
target:function(player,target){
var att=get.attitude(player,target);
if(att>0&&(target.countCards('j')>0||target.countCards('e',function(card){
return get.value(card,target)<0;
}))) return 2;
if(att<0&&target.countCards('e')>0&&!target.hasSkillTag('noe')) return -1;
return 0;
},
},
},
}
}
},
prompt:function(links,player){
return '选择弃置一张牌,获得'+get.translation(links[0])+'并弃置一名角色装备区或判定区内的一张牌';
},
},
contentx:function(){
'step 0'
@ -283,24 +303,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.zhengrong.remove(card);
player[player.storage.zhengrong.length>0?'markSkill':'unmarkSkill']('zhengrong');
'step 1'
if(player.countCards('h')>0) player.chooseToDiscard('h',true);
else event.finish();
'step 2'
var targets=game.filterPlayer(function(current){
return result&&result.bool&&current.countCards('ej')>0;
})
if(!targets.length){event.finish();return}
player.chooseTarget(true,'请选择一名目标角色,弃置其装备区或判定区内的一张牌',function(card,player,target){
return _status.event.targets.contains(target);
}).set('targets',targets).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(target.countCards('j')>0&&att>0) return 2*att;
return target.countCards('e')>0?-att:0;
});
'step 3'
if(result.bool){
player.line(result.targets[0],'thunder');
player.discardPlayerCard('ej',true,result.targets[0]);
if(target.countDiscardableCards(player,'ej')>0){
player.discardPlayerCard('ej',true,target);
}
},
ai:{
@ -1551,7 +1555,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mod:{
playerEnabled:function(card,player,target){
var info=get.info(card);
if(target!=player&&(!info||!info.singleCard||!ui.selected.targets.length)&&player.isPhaseUsing()&&get.distance(target,player,'attack')>1) return false;
if(target!=player&&(!info||!info.singleCard||!ui.selected.targets.length)&&player.isPhaseUsing()&&!target.inRange(player)) return false;
},
},
trigger:{
@ -1561,14 +1565,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function (event,player){
return (player.getHistory('useCard',function(evt){
return evt.getParent('phaseUse')==event;
}).length<game.countPlayer(function(current){return get.distance(current,player,'attack')>1}))&&game.hasPlayer(function(target){
return get.distance(target,player,'attack')>1&&target.countDiscardableCards(player,'he');
}).length<game.countPlayer(function(current){return !current.inRange(player)}))&&game.hasPlayer(function(target){
return !target.inRange(player)&&target.countDiscardableCards(player,'he');
});
},
content:function(){
'step 0'
player.chooseTarget("请选择〖掣政〗的目标","弃置一名攻击范围内不包含你的角色的一张牌",true,function(card,player,target){
return get.distance(target,player,'attack')>1&&target.countDiscardableCards(player,'he');
return !target.inRange(player)&&target.countDiscardableCards(player,'he');
}).ai=function(target){
return -get.attitude(player,target);
};
@ -1715,7 +1719,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
effect:{
target:function(card,player,target){
if(get.type(card)=='equip'&&!player.getHistory('useCard',function(evt){
if(player==target&&get.type(card)=='equip'&&!player.getHistory('useCard',function(evt){
return get.type(evt.card)=='equip'
}).length==0) return [1,3];
},
@ -1885,7 +1889,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
return game.hasPlayer(function(current){
return current!=player&&
get.distance(player,current,'attack')<=1&&
player.inRange(current)&&
player.storage.nzry_mingren!=undefined&&
player.countCards('he',{color:get.color(player.storage.nzry_mingren[0])})>=Math.max(Math.abs(current.hp-player.hp),1);
})&&player.storage.nzry_zhenliang!=true;
@ -1893,7 +1897,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
return player.storage.nzry_mingren!=undefined&&
target!=player&&
get.distance(player,target,'attack')<=1&&
player.inRange(target)&&
player.countCards('he',{color:get.color(player.storage.nzry_mingren[0])})>=Math.max(Math.abs(target.hp-player.hp),1);
},
content:function(){
@ -2173,7 +2177,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
player.discardPlayerCard(trigger.target,get.prompt('jianchu',trigger.target)).set('ai',function(button){
if(!_status.event.att) return 0;
if(get.position(button.link)=='e') return get.value(button.link);
if(get.position(button.link)=='e'){
if(get.subtype(button.link)=='equip2') return 2*get.value(button.link);
return get.value(button.link);
}
return 1;
}).set('logSkill',['jianchu',trigger.target]).set('att',get.attitude(player,trigger.target)<=0);
'step 1'
@ -2189,8 +2196,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(list.length) trigger.target.gain(list,'gain2','log');
}
}
},
ai:{
unequip_ai:true,
skillTagFilter:function(player,tag,arg){
if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true;
return false;
}
},
},
redimeng:{
audio:'dimeng',
enable:'phaseUse',
@ -2403,7 +2417,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lianhuan3:{
audio:['xinlianhuan',1],
audioname:['xinlianhuan'],
enable:'phaseUse',
enable:'chooseToUse',
filter:function(event,player){
return player.countCards('h',{suit:'club'})>0;
},
@ -2681,7 +2695,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return target!=player&&lib.filter.targetInRange({name:'sha'},target,player)&&target.countCards('he');
return target!=player&&target.inRange(player)&&target.countCards('he')>0;
},
content:function(){
"step 0"
@ -2742,7 +2756,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
xiangle:{
audio:2,
audioname:['re_liushan'],
audioname:['re_liushan','ol_liushan'],
trigger:{target:'useCardToTargeted'},
forced:true,
filter:function(event,player){
@ -2810,7 +2824,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
player.logSkill('fangquan');
trigger.cancel();
player.addSkill('fangquan2');
player.addTempSkill('fangquan2');
player.addMark('fangquan2',1,false);
//player.storage.fangquan=result.targets[0];
}
@ -2826,6 +2840,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
"step 0"
event.count=player.countMark(event.name);
player.removeMark(event.name,event.count);
"step 1"
event.count--;
player.chooseToDiscard('是否弃置一张牌并令一名其他角色进行一个额外回合?').set('logSkill',player.name=='re_liushan'?'refangquan':'fangquan').ai=function(card){
@ -3257,7 +3272,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
jiang:{
audio:2,
audioname:['sp_lvmeng','re_sunben'],
audioname:['sp_lvmeng','re_sunben','re_sunce'],
trigger:{
player:'useCardToPlayered',
target:'useCardToTargeted',
@ -3456,7 +3471,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
order:10
},
result:{
target:3,
target:function(player,target){
var card=ui.selected.cards[0];
if(card) return get.effect(target,card,target,target);
return 0;
},
},
threaten:1.3
}
@ -4455,7 +4474,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
yinghun:{
audio:2,
audioname:['re_sunjian','sunce','re_sunben'],
audioname:['re_sunjian','sunce','re_sunben','re_sunce'],
trigger:{player:'phaseZhunbeiBegin'},
filter:function(event,player){
return player.hp<player.maxHp;
@ -4532,7 +4551,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
gzyinghun:{
audio:'yinghun',
audioname:['re_sunjian','sunce','re_sunben'],
audioname:['re_sunjian','sunce','re_sunben','re_sunce'],
trigger:{player:'phaseZhunbeiBegin'},
filter:function(event,player){
return player.getDamagedHp()>0;
@ -4899,7 +4918,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lianhuan1:{
audio:2,
audioname:['re_pangtong'],
enable:'phaseUse',
enable:'chooseToUse',
filter:function(event,player){
return player.countCards('h',{suit:'club'})>0;
},
@ -4974,15 +4993,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.niepan=true;
player.discard(player.getCards('hej'));
'step 1'
player.link(false);
'step 2'
player.turnOver(false);
'step 3'
player.draw(3);
'step 4'
if(player.hp<3){
player.recover(3-player.hp);
}
'step 2'
player.draw(3);
'step 3'
player.link(false);
'step 4'
player.turnOver(false);
},
ai:{
order:0.5,
@ -4993,7 +5012,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
save:true,
result:{
player:function(player){
if(player.hp==0) return 10;
if(player.hp<=0) return 10;
if(player.hp<=1&&player.countCards('he')<=1) return 10;
return 0;
}
@ -5032,15 +5051,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.oldniepan=true;
player.discard(player.getCards('hej'));
'step 1'
player.link(false);
'step 2'
player.turnOver(false);
'step 3'
player.draw(3);
'step 4'
if(player.hp<3){
player.recover(3-player.hp);
}
'step 2'
player.draw(3);
'step 3'
player.link(false);
'step 4'
player.turnOver(false);
},
ai:{
order:1,
@ -5051,7 +5070,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
save:true,
result:{
player:function(player){
if(player.hp==0) return 10;
if(player.hp<=0) return 10;
if(player.hp<=2&&player.countCards('he')<=1) return 10;
return 0;
}
@ -5084,11 +5103,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
if(game.hasPlayer(function(player){
return player!=target&&get.distance(target,player,'attack')<=1;
return player!=target&&target.inRange(player)<=1;
})){
player.chooseTarget(function(card,player,target){
var source=_status.event.source;
return target!=source&&get.distance(source,target,'attack')<=1;
return target!=source&&source.inRange(target)<=1;
},true).set('ai',function(target){
return get.damageEffect(target,_status.event.source,player);
}).set('source',target);
@ -5117,7 +5136,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i]!=target&&players[i]!=player&&
get.distance(target,players[i],'attack')<=1){
target.inRange(players[i])){
if(get.damageEffect(players[i],target,player)>0){
return att>0?att/2:att-(oc?5:0);
}
@ -5228,7 +5247,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
selectCard:[0,1],
filterTarget:function(card,player,target){
if(player==target) return false;
return get.distance(player,target,'attack')<=1;
return player.inRange(target);
},
content:function(){
"step 0"
@ -5291,7 +5310,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
filterTarget:function(card,player,target){
if(player==target) return false;
return get.distance(player,target,'attack')<=1;
return player.inRange(target);
},
content:function(){
"step 0"
@ -5687,7 +5706,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
player.logSkill('shensu1',result.targets);
player.useCard({name:'sha'},result.targets[0],false);
player.useCard({name:'sha',isCard:true},result.targets[0],false);
trigger.cancel();
player.skip('phaseDraw');
}
@ -5729,7 +5748,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
player.logSkill('shensu2',result.targets);
player.discard(result.cards[0]);
player.useCard({name:'sha'},result.targets[0]);
player.useCard({name:'sha',isCard:true},result.targets[0]);
trigger.cancel();
}
}
@ -5753,7 +5772,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
player.logSkill('shensu4',result.targets);
player.turnOver();
player.useCard({name:'sha'},result.targets[0],false);
player.useCard({name:'sha',isCard:true},result.targets[0],false);
trigger.cancel();
}
}

View File

@ -81,7 +81,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_caoren:['male','wei',4,['weikui','lizhan']],
zhangbao:['male','qun',3,['zhoufu','yingbin']],
huangjinleishi:['female','qun',3,['fulu','fuji']],
maliang:['male','shu',3,['zishu','yingyuan']],
maliang:['male','shu',3,['zishu','xinyingyuan']],
sp_pangtong:['male','qun',3,['xinmanjuan','zuixiang']],
zhugedan:['male','wei',4,['gongao','juyi']],
sp_jiangwei:['male','wei',4,['kunfen','fengliang']],
@ -667,7 +667,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool&&result.cards&&result.cards.length){
var name=get.type(result.cards[0])=='basic'?'neifa_basic':'neifa_nobasic';
player.addTempSkill(name);
player.addMark(name,1,false);
var num=Math.min(5,player.countCards('h',function(cardx){
return !lib.filter.cardEnabled(cardx,player);
}));
player.addMark(name,num,false);
}
},
},
@ -677,7 +680,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
onremove:true,
intro:{
name:'内伐 - 基本牌',
content:'本回合内不能使用锦囊牌和装备牌,且使用【杀】选择目标时可以多选择#个目标,且使用【杀】的目标次数上限+X。X为手牌中不能使用的牌且最多为5',
content:'本回合内不能使用锦囊牌和装备牌,且使用【杀】选择目标时可以多选择1个目标且使用【杀】的目标次数上限+#。',
},
mod:{
cardEnabled:function(card,player){
@ -688,9 +691,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
cardUsable:function(card,player,num){
if(card.name=='sha'){
return num+player.countMark('neifa_basic')*Math.min(5,player.countCards('h',function(cardx){
return !lib.filter.cardEnabled(cardx,player);
}));
return num+player.countMark('neifa_basic');
}
},
},
@ -704,7 +705,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('neifa'),'为'+get.translation(trigger.card)+'增加至多'+get.cnNumber(player.countMark('neifa_basic'))+'个目标',[1,player.countMark('neifa_basic')],function(card,player,target){
player.chooseTarget(get.prompt('neifa'),'为'+get.translation(trigger.card)+'额外指定一个目标',function(card,player,target){
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;
@ -719,7 +720,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
}
'step 2'
player.logSkill('neifa',event.target);
player.logSkill('neifa',event.targets);
trigger.targets.addArray(event.targets);
},
},
@ -739,7 +740,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
intro:{
name:'内伐 - 非基本牌',
content:'本回合内不能使用基本牌,且使用普通锦囊牌选择目标时可以多选择#个目标且本回合的出牌阶段内前两次使用装备牌时摸X张牌X为手牌中不能使用的牌且最多为5。'
content:'本回合内不能使用基本牌,且使用普通锦囊牌选择目标时可以多选择1个目标且本回合的出牌阶段内前两次使用装备牌时摸#张牌。'
},
filter:function(event,player){
if(get.type(event.card)!='trick') return false;
@ -756,11 +757,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
var prompt2='为'+get.translation(trigger.card)+'额外指定'+get.cnNumber(player.countMark(event.name))+'名目标'
player.chooseTarget([1,player.countMark(event.name)],get.prompt('neifa'),function(card,player,target){
var prompt2='为'+get.translation(trigger.card)+'额外指定一个目标'
player.chooseTarget(get.prompt('neifa'),function(card,player,target){
var player=_status.event.player;
if(_status.event.targets.contains(target)) return false;
return lib.filter.targetEnabled2(_status.event.card,player,target);
return lib.filter.targetEnabled2(_status.event.card,player,target)&&lib.filter.targetInRange(_status.event.card,player,target);
}).set('prompt2',prompt2).set('ai',function(target){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
@ -784,19 +785,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
neifa_use:{
audio:'neifa',
usable:2,
trigger:{player:'useCard'},
forced:true,
filter:function(event,player){
return get.type(event.card)=='equip'&&player.getHistory('useCard',function(evt){
return get.type(evt.card)=='equip'&&evt.isPhaseUsing();
}).indexOf(event)<2&&player.countMark('neifa_nobasic')*Math.min(5,player.countCards('h',function(cardx){
return !lib.filter.cardEnabled(cardx,player);
}))>0;
return get.type(event.card)=='equip'&&player.countMark('neifa_nobasic')>0;
},
content:function(){
player.draw(player.countMark('neifa_nobasic')*Math.min(5,player.countCards('h',function(cardx){
return !lib.filter.cardEnabled(cardx,player);
})));
player.draw(player.countMark('neifa_nobasic'));
},
},
//花鬘
@ -1024,6 +1020,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
return player.countCards('he')>0;
},
initList:function(){
var list=[];
for(var i in lib.character){
if(lib.filter.characterDisabled2(i)||lib.filter.characterDisabled(i)) continue;
list.push(i);
}
game.countPlayer2(function(current){
list.remove(current.name);
list.remove(current.name1);
list.remove(current.name2);
if(current.storage.rehuashen&&current.storage.rehuashen.character) list.removeArray(current.storage.rehuashen.character)
});
_status.characterlist=list;
},
content:function(){
'step 0'
if(!player.storage.pingjian) player.storage.pingjian=[];
@ -1032,6 +1042,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
};
'step 1'
if(result.bool){
if(!_status.characterlist){
lib.skill.pingjian.initList();
}
var list=[];
var skills=[];
var map=[];
@ -1094,6 +1107,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var list=[];
var skills=[];
var map=[];
if(!_status.characterlist){
lib.skill.pingjian.initList();
}
_status.characterlist.randomSort();
for(var i=0;i<_status.characterlist.length;i++){
var name=_status.characterlist[i];
@ -1369,9 +1385,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
trigger.target.gain(trigger.cards.filterInD(),'gain2','log');
trigger.target.loseHp();
trigger.target.loseHp().set('source',player);
},
ai:{
jueqing:true,
unequip_ai:true,
skillTagFilter:function(player,tag,arg){
if(tag=='unequip_ai'){
if(arg&&arg.name=='sha'&&get.color(arg.card)=='black') return true;
return false;
}
}
},
ai:{jueqing:true},
},
pyzhuren_shandian:{
audio:true,
@ -1534,7 +1559,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var bool=player.storage.lslixun>0!==true;
player.chooseTarget(bool,'令'+get.translation(target)+'对其攻击范围内的一名角色造成1点伤害'+(bool?'':',或点「取消」移去一个“珠”'),function(card,player,target){
var source=_status.event.source;
return target!=source&&get.distance(source,target,'attack')<=1;
return target!=source&&source.inRange(target);
}).set('source',target).set('ai',function(target){
return get.damageEffect(target,_status.event.source,_status.event.player);
});
@ -1721,7 +1746,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.effect(player,{name:'sha'},target,target)>=get.effect(player,{name:'juedou'},target,target)?'sha':'juedou';
};
'step 3'
target.useCard({name:result.control},player);
target.useCard({name:result.control,isCard:true},player);
},
ai:{
order:7,
@ -3173,7 +3198,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reverseEquip:true,
effect:{
target:function (card,player,target,current){
if(get.type(card)=='equip') return [1,3];
if(player==target&&get.type(card)=='equip') return [1,3];
},
},
},
@ -3427,7 +3452,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(bool){
player.chooseUseTarget({name:'sha'},'是否视为使用一张【杀】?',false);
}
}
},
ai:{
threaten:3,
noe:true,
reverseOrder:true,
skillTagFilter:function(player){
if(player.storage.xinshanjia>2) return false;
},
effect:{
target:function(card,player,target){
if(player.storage.xinshanjia<3&&get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3];
},
},
},
},
//OL马超
ol_shichou:{
@ -3596,7 +3634,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
global:"phaseUseBegin",
},
filter:function (event,player){
return event.player!=player&&event.player.isAlive()&&get.distance(event.player,player,'attack')<=1;
return event.player!=player&&event.player.isAlive()&&event.player.inRange(player);
},
direct:true,
derivation:["new_zhixi"],
@ -3824,7 +3862,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sha:{
audio:'qingzhong',
enable:'chooseToUse',
viewAs:{name:'sha'},
viewAs:{name:'sha',isCard:true},
filterCard:function(){return false},
viewAsFilter:function(player){
if(player.hasSkill('weijing_disable')) return false;
@ -3855,7 +3893,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shan:{
audio:'qingzhong',
enable:'chooseToUse',
viewAs:{name:'shan'},
viewAs:{name:'shan',isCard:true},
mark:false,
filterCard:function(){return false},
viewAsFilter:function(player){
@ -4002,6 +4040,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
baijia:{
audio:2,
audioname:['tw_beimihu'],
unique:true,
derivation:'bmcanshi',
juexingji:true,
@ -4032,6 +4071,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
bmcanshi:{
audio:2,
audioname:['tw_beimihu'],
group:['bmcanshi_add','bmcanshi_remove'],
subSkill:{
add:{
@ -4099,8 +4139,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
guju:{
audio:2,
audioname:['tw_beimihu'],
init:function(player){
player.storage.guju=0;
if(!player.storage.guju) player.storage.guju=0;
},
intro:{
content:'已因此技能获得#张牌'
@ -4138,6 +4179,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseBefore',global:'roundStart'},
direct:true,
audio:2,
audioname:['tw_beimihu'],
filter:function(event,player){
return game.hasPlayer(function(current){
if(event.name=='roundStart'&&!current.isMinHp()) return false;
@ -4234,6 +4276,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
group:['zishu_draw','zishu_discard',]
},
xinyingyuan:{
audio:'yingyuan',
trigger:{player:'useCardAfter'},
direct:true,
filter:function(event,player){
if(_status.currentPhase!=player) return false;
var type=get.type(event.card,'trick');
return player.getHistory('custom',function(evt){
return evt.xinyingyuan_name==type;
}).length==0;
},
content:function(){
'step 0'
event.type=get.type(trigger.card,'trick');
player.chooseTarget(get.prompt('xinyingyuan'),'令一名其他角色从牌堆中获得一张'+get.translation(event.type)+'牌',function(card,player,target){
return target!=player;
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(att<3) return 0;
if(target.hasJudge('lebu')) att/=2;
return att/(1+get.distance(player,target,'absolute'));
});
'step 1'
if(result.bool){
player.logSkill('xinyingyuan',result.targets[0]);
var card=get.cardPile2(function(cardx){
return get.type(cardx,'trick')==event.type;
});
if(card) result.targets[0].gain(card,'log','gain2');
player.getHistory('custom').push({xinyingyuan_name:event.type});
}
},
},
yingyuan:{
audio:2,
trigger:{player:'useCardAfter'},
@ -4263,15 +4338,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('sha',trigger.cards[0].name=='sha').set('wuxie',trigger.cards[0].name=='wuxie');
'step 1'
if(result.bool){
var list=trigger.cards.filterInD();
player.logSkill('yingyuan',result.targets[0]);
result.targets[0].gain(list,'gain2');
result.targets[0].gain(trigger.cards.filterInD(),'gain2');
player.getHistory('custom').push({yingyuan_name:trigger.card.name});
}
},
ai:{
threaten:1.8
}
},
choulve:{
audio:2,
@ -4413,10 +4484,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
'step 2'
if(result.bool){
player.chooseUseTarget({name:'wuzhong'},true);
player.chooseUseTarget({name:'wuzhong',isCard:true},true);
}
else{
event.target.useCard({name:'guohe'},player);
event.target.useCard({name:'guohe',isCard:true},player);
}
}
},
@ -4946,14 +5017,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
});
}).set('ai',function(button){
var player=_status.event.player;
var name=button.link[2];
if(game.hasPlayer(function(current){
return player.canUse(name,current)&&get.effect(current,{name:name},player,player)>0;
})){
if(name=='wy_meirenji'||name=='wy_xiaolicangdao') return Math.random()+0.5;
return Math.random();
}
return 0;
return player.getUseValue(button.link[2]);
});
'step 1'
if(result.bool){
@ -5021,7 +5085,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(target.countCards('h','shan')){
player.viewHandcards(target);
player.useCard({name:'sha'},target,false);
player.useCard({name:'sha',isCard:true},target,false);
player.storage.weikui2=target;
player.addTempSkill('weikui2');
}
@ -5317,7 +5381,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 4'
if(num<=13){
var card={name:'sha',nature:'thunder'};
if(player.canUse(card,target)) player.useCard(card,target,false);
if(player.canUse(card,target,false)) player.useCard(card,target,false);
}
},
ai:{
@ -5398,7 +5462,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.addTempSkill('fenyue2');
}
else{
player.useCard({name:'sha'},target,false);
player.useCard({name:'sha',isCard:true},target,false);
}
}
},
@ -5784,7 +5848,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('identity',target.identity);
}
else{
player.useCard({name:'sha'},target,false);
player.useCard({name:'sha',isCard:true},target,false);
event.finish();
}
}
@ -5794,7 +5858,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
'step 3'
if(result.bool&&result.targets&&result.targets.length){
player.useCard({name:'sha'},result.targets[0],false);
player.useCard({name:'sha',isCard:true},result.targets[0],false);
}
}
},
@ -6248,7 +6312,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
usable:1,
filterCard:{color:'red',type:'basic'},
filterTarget:function(card,player,target){
return target!=player&&target.countCards('he')&&get.distance(player,target,'attack')<=1;
return target!=player&&target.countCards('he')&&player.inRange(target);
},
check:function(card){
return 6-get.value(card);
@ -7114,7 +7178,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
player.chooseTarget(get.prompt2('zhaolie'),function(card,player,target){
return target!=player&&get.distance(player,target,'attack')<=1;
return target!=player&&player.inRange(target);
}).set('ai',function(target){
var player=_status.event.player;
if(get.attitude(player,target)>0) return 0;
@ -7235,7 +7299,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var num;
var mode=get.mode();
if(mode=='identity'){
num=get.population('fan');
if(_status.mode=='purple') num=player.getEnemies().length;
else num=get.population('fan');
}
else if(mode=='versus'){
num=player.getEnemies().length;
@ -7718,9 +7783,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
order:7,
result:{
target:function(player,target){
var num=game.countPlayer(function(current){
return get.attitude(player,current)<0&&current!=player&&current.countCards('h');
});
var num=ui.selected.targets.length+1;
if(num>3) num=3;
var hs=player.getCards('h');
for(var i=0;i<hs.length;i++){
@ -7768,7 +7831,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.chooseToDiscard('he',true);
'step 1'
if(target.hp>=player.hp&&result.bool&&result.cards[0].name!='sha'){
player.useCard({name:'juedou'},target);
player.useCard({name:'juedou',isCard:true},target);
}
},
ai:{
@ -9636,7 +9699,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
if(player.countCards('h')>=player.hp) return false;
return game.hasPlayer(function(current){
return player!=current&&get.distance(player,current,'attack')<=1&&current.countCards('he');
return player!=current&&player.inRange(current)&&current.countCards('he');
});
},
intro:{
@ -9656,7 +9719,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
player.chooseTarget('焚天:选择一名攻击范围内的角色,将其一张牌置于你的武将牌上',true,function(card,player,target){
return player!=target&&get.distance(player,target,'attack')<=1&&target.countCards('he')>0;
return player!=target&&player.inRange(target)&&target.countCards('he')>0;
}).set('ai',function(target){
return -get.attitude(_status.event.player,target)
});
@ -9980,6 +10043,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
fenxin:{
mode:['identity'],
available:function(mode){
if(mode=='identity'&&_status.mode=='purple') return false;
},
trigger:{global:'dieAfter'},
filter:function(event,player){
return ['fan','zhong','nei'].contains(event.player.identity)&&!player.hasSkill('fenxin_'+event.player.identity);
@ -10119,7 +10185,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
player.logSkill('qingyi',result.targets);
player.useCard({name:'sha'},result.targets[0],false);
player.useCard({name:'sha',isCard:true},result.targets[0],false);
trigger.cancel();
player.skip('phaseDraw');
}
@ -10143,7 +10209,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
player.logSkill('qingyi1',result.targets);
player.useCard({name:'sha'},result.targets[0],false);
player.useCard({name:'sha',isCard:true},result.targets[0],false);
player.skip('phaseJudge');
player.skip('phaseDraw');
}
@ -10185,7 +10251,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
player.logSkill('qingyi2',result.targets);
player.discard(result.cards[0]);
player.useCard({name:'sha'},result.targets[0]);
player.useCard({name:'sha',isCard:true},result.targets[0]);
trigger.cancel();
}
player.removeSkill('qingyi3');
@ -10254,7 +10320,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
effect:{
target:function(card,player,target,current){
if(get.type(card)=='equip') return [1,3];
if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3];
}
},
threaten:1.3
@ -10349,8 +10415,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(var i=0;i<result.cards.length;i++){
suits.add(get.suit(result.cards[i]));
}
if(suits.length==4&&game.checkMod({name:'tao'},player,'unchanged','cardSavable',player)){
event.target.useCard({name:'tao'},trigger.player);
if(suits.length==4&&game.checkMod({name:'tao',isCard:true},player,'unchanged','cardSavable',player)){
event.target.useCard({name:'tao',isCard:true},trigger.player);
}
}
},
@ -10957,7 +11023,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'oldcihuai3',
prompt:'视为使用一张杀',
enable:'chooseToUse',
viewAs:{name:'sha'},
viewAs:{name:'sha',isCard:true},
filterCard:function(){return false},
selectCard:-1,
ai:{
@ -10989,16 +11055,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
"step 0"
player.chooseTarget(get.prompt2('cihuai'),function(card,player,target){
return player.canUse({name:'sha'},target);
return player.canUse({name:'sha',isCard:true},target);
}).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,{name:'sha'},player,player);
return get.effect(target,{name:'sha',isCard:true},player,player);
});
"step 1"
if(result.bool){
player.logSkill('cihuai');
player.showHandcards();
player.useCard({name:'sha'},result.targets);
player.useCard({name:'sha',isCard:true},result.targets);
}
},
ai:{
@ -11102,7 +11168,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
player.loseHp();
"step 1"
player.useCard({name:'sha'},target,false);
player.useCard({name:'sha',isCard:true},target,false);
},
ai:{
order:1,
@ -11563,7 +11629,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
expose:0.1,
order:1,
result:{
player:1
target:-1
}
}
},
@ -11698,10 +11764,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tongji:{
global:'tongji_disable',
audio:2,
trigger:{global:"useCard"},
trigger:{global:"useCard1"},
forced:true,
filter:function (event,player){
return get.distance(event.player,player,'attack')<=1&&player!=event.player&&event.card.name=='sha'&&player.hp<player.countCards('h');
return event.targets.contains(player)&&player!=event.player&&event.card.name=='sha'&&player.hp<player.countCards('h');
},
content:function(){},
unique:true,
@ -11710,12 +11776,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
disable:{
mod:{
targetEnabled:function(card,player,target){
if(player.hasSkill('tongji')) return;
if(card.name=='sha'){
if(player.hasSkill('tongji')) return;
if(target.hasSkill('tongji')) return;
if(game.hasPlayer(function(current){
return current.hasSkill('tongji')&&current.hp<current.countCards('h')&&
get.distance(player,current,'attack')<=1;
player.inRange(current);
})){
return false;
}
@ -13318,7 +13384,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
complexSelect:true,
complexCard:true,
filterTarget:function(card,player,target){
return target!=player&&get.distance(player,target,'attack')<=1&&ui.selected.cards.length==target.hp;
return target!=player&&player.inRange(target)&&ui.selected.cards.length==target.hp;
},
check:function(card){
switch(ui.selected.cards.length){
@ -13906,11 +13972,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
"step 3"
if(!result.tie){
if(result.bool&&event.target1.canUse({name:'sha'},event.target2,false)){
event.target1.useCard({name:'sha'},event.target2);
if(result.bool&&event.target1.canUse({name:'sha',isCard:true},event.target2,false)){
event.target1.useCard({name:'sha',isCard:true},event.target2);
}
else if(event.target2.canUse({name:'sha'},event.target1,false)){
event.target2.useCard({name:'sha'},event.target1);
else if(event.target2.canUse({name:'sha',isCard:true},event.target1,false)){
event.target2.useCard({name:'sha',isCard:true},event.target1);
}
}
}
@ -14256,7 +14322,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xinfenyue:'奋钺',
xinfenyue_info:'出牌阶段限X次X为与你不同阵营的存活角色数你可以与一名其他角色拼点若你赢根据你拼点牌的点数依次执行以下效果不大于5你获得其一张牌不大于9你获得牌堆里的一张【杀】; 不大于K视为你对其使用一张雷【杀】。',
neifa:'内伐',
neifa_info:'出牌阶段开始时,你可以摸一张牌,然后弃置一张牌。若弃置的牌是基本牌,本回合你不能使用锦囊和装备牌,且【杀】的使用次数+X且目标+1若弃置的不是基本牌本回合你不能使用基本牌且普通锦囊牌的目标+1前两次使用装备牌时摸X张牌X为手牌中不能使用的牌且最多为5。',
neifa_info:'出牌阶段开始时,你可以摸一张牌,然后弃置一张牌。若弃置的牌是基本牌,本回合你不能使用锦囊和装备牌,且【杀】的使用次数+X且目标+1若弃置的不是基本牌本回合你不能使用基本牌且普通锦囊牌的目标+1前两次使用装备牌时摸X张牌X为你发动〖内伐〗弃牌后手牌中不能使用的牌的数量且最多为5。',
neifa_use:'内伐',
hmmanyi:'蛮裔',
hmmanyi_info:'锁定技,【南蛮入侵】对你无效。',
@ -14457,6 +14523,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zishu_info:'锁定技,你的回合外,你获得的牌均会在当前回合结束后置入弃牌堆;你的回合内,当你不因〖自书〗而获得牌时,你摸一张牌。',
yingyuan:'应援',
yingyuan_info:'当你于回合内使用的牌结算完成后,你可以将其交给一名其他角色(相同牌名的牌每回合限一次)。',
xinyingyuan:'应援',
xinyingyuan_info:'当你于回合内使用一张牌后,你可以令一名其他角色从牌堆获得一张与该牌类型相同的牌(每种类型的牌每回合限一次)。',
ly_piliche:'霹雳车',
ly_piliche_info:'当你对其他角色造成伤害后,若造成伤害的牌不为延时锦囊牌,你可以弃置其装备区里的防具牌与+1坐骑牌当你失去此装备时销毁之。',
polu:'破橹',

View File

@ -134,7 +134,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.hujiaing=false;
if(result.bool){
event.finish();
trigger.result={bool:true,card:{name:'shan'}};
trigger.result={bool:true,card:{name:'shan',isCard:true}};
trigger.responded=true;
trigger.animate=false;
if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){
@ -610,12 +610,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
rende:{
audio:2,
group:['rende1'],
enable:'phaseUse',
filterCard:true,
selectCard:[1,Infinity],
discard:false,
prepare:'give2',
lose:false,
delay:0,
filterTarget:function(card,player,target){
return player!=target;
},
@ -624,7 +624,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(ui.selected.cards.length&&ui.selected.cards[0].name=='du') return 0;
if(!ui.selected.cards.length&&card.name=='du') return 20;
var player=get.owner(card);
if(player.hp==player.maxHp||player.storage.rende<0||player.countCards('h')<=1){
var num=0;
var evt2=_status.event.getParent();
var num=0;
player.getHistory('lose',function(evt){
if(evt.getParent().skill=='rende'&&evt.getParent(3)==evt2) num+=evt.cards.length;
});
if(player.hp==player.maxHp||num>1||player.countCards('h')<=1){
if(ui.selected.cards.length){
return -1;
}
@ -645,17 +651,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 10-get.value(card);
},
content:function(){
target.gain(cards,player);
if(typeof player.storage.rende!='number'){
player.storage.rende=0;
}
if(player.storage.rende>=0){
player.storage.rende+=cards.length;
if(player.storage.rende>=2){
player.recover();
player.storage.rende=-1;
}
}
target.gain(cards,player,'giveAuto');
var evt2=event.getParent(3);
var num=0;
player.getHistory('lose',function(evt){
if(evt.getParent(2).name=='rende'&&evt.getParent(5)==evt2) num+=evt.cards.length;
});
if(num<2&&num+cards.length>1) player.recover();
},
ai:{
order:function(skill,player){
@ -706,14 +708,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
jijiang:{
audio:'jijiang1',
audioname:['liushan','re_liubei','re_liushan'],
audioname:['liushan','re_liubei','re_liushan','ol_liushan'],
unique:true,
group:['jijiang1','jijiang2'],
zhuSkill:true,
},
jijiang1:{
audio:2,
audioname:['liushan','re_liubei','re_liushan'],
audioname:['liushan','re_liubei','re_liushan','ol_liushan'],
trigger:{player:'chooseToRespondBegin'},
check:function(event){
if(event.jijiang) return false;
@ -771,7 +773,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
jijiang2:{
audio:'jijiang1',
audioname:['liushan','re_liubei','re_liushan'],
audioname:['liushan','re_liubei','re_liushan','ol_liushan'],
enable:'chooseToUse',
prompt:'选择一名目标角色。若有其他蜀势力角色打出【杀】响应,则视为你对其使用此【杀】。',
filter:function(event,player){
@ -824,10 +826,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
event.finish();
if(result.cards&&result.cards.length){
player.useCard({name:'sha'},result.cards,target).animate=false;
player.useCard({name:'sha',isCard:true},result.cards,target).animate=false;
}
else{
player.useCard({name:'sha'},target).animate=false;
player.useCard({name:'sha',isCard:true},target).animate=false;
}
if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){
event.current.ai.shown+=0.3;
@ -1505,7 +1507,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'useCard'},
frequent:true,
filter:function(event){
return (get.type(event.card)=='trick'&&(!event.cards.length||event.cards[0]&&event.cards[0]==event.card));
return (get.type(event.card)=='trick'&&event.card.isCard);
},
content:function(){
player.draw();
@ -1891,7 +1893,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(event.card.name!='sha') return false;
if(player.countCards('he')==0) return false;
return game.hasPlayer(function(current){
return get.distance(player,current,'attack')<=1&&current!=event.player&&
return player.inRange(current)&&current!=event.player&&
current!=player&&lib.filter.targetEnabled(event.card,event.player,current);
});
},
@ -1903,7 +1905,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){
var trigger=_status.event.getTrigger();
if(trigger.targets.contains(target)) return false;
if(get.distance(player,target,'attack')<=1&&
if(player.inRange(target)&&
target!=trigger.player){
if(player.canUse(trigger.card,target)) return true;
}
@ -2030,7 +2032,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reverseEquip:true,
effect:{
target:function(card,player,target,current){
if(get.type(card)=='equip') return [1,3];
if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3];
}
}
}
@ -2348,7 +2350,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
selectTarget:2,
multitarget:true,
content:function(){
targets[1].useCard({name:'juedou'},'nowuxie',targets[0],'noai').animate=false;
targets[1].useCard({name:'juedou',isCard:true},'nowuxie',targets[0],'noai').animate=false;
game.delay(0.5);
},
ai:{
@ -2572,7 +2574,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tieji_info:'当你使用【杀】指定目标时,你可以进行判定。若结果为红色,则此【杀】不可被闪避。',
jizhi_info:'当你使用一张非转化的普通锦囊牌时,你可以摸一张牌。',
xinjizhi:'集智',
xinjizhi_info:'当你使用一张非转化的普通锦囊牌,可以摸一张牌',
xinjizhi_info:'当你使用非转化的普通锦囊牌可以摸一张牌',
xinjizhi_info_alter:'每当你使用一张非转化的锦囊牌,可以摸一张牌,如果摸到的是基本牌,你可以弃置这张牌,然后本回合手牌上限+1',
xinqicai:'奇才',
xinqicai_info:'锁定技,你使用锦囊牌无距离限制。',

View File

@ -3,7 +3,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return {
name:'tw',
connect:false,
characterSort:{},
characterSort:{
tw:{
tw_mobile:['tw_beimihu','nashime'],
tw_yijiang:['tw_caoang','tw_caohong','tw_zumao','tw_dingfeng','tw_maliang','tw_xiahouba'],
tw_english:['kaisa'],
},
},
character:{
tw_beimihu:['female','qun',3,['zongkui','guju','baijia','bingzhao'],['zhu']],
nashime:['male','qun',3,['chijie','waishi','renshe']],
@ -249,15 +255,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
twxiaolian:{
audio:2,
trigger:{global:'useCard'},
trigger:{global:'useCardToPlayer'},
logTarget:'player',
filter:function(event,player){
return event.card&&event.card.name=='sha'&&event.player!=player&&
event.targets.length==1&&event.targets[0]!=player;
},
content:function(){
trigger.twxiaolian=trigger.targets[0];
trigger.targets=[player];
trigger.getParent().twxiaolian=trigger.targets[0];
trigger.targets.length=0;
trigger.targets.push(player);
},
group:'twxiaolian_damage',
subSkill:{
@ -271,6 +278,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
marktext:'马',
intro:{
content:'cards',
onunmark:'throw',
},
mod:{
globalTo:function(from,to,distance){
@ -307,10 +315,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
twtijin:{
audio:2,
trigger:{global:'useCard'},
trigger:{global:'useCardToPlayer'},
filter:function(event,player){
return event.card&&event.card.name=='sha'&&event.player!=player&&
event.targets.length==1&&event.targets[0]!=player&&get.distance(event.player,player,'attack')<=1;
return event.card&&event.card.name=='sha'&&event.player!=player&&event.target!=player&&
event.targets.length==1&&event.player.inRange(player)<=1;
},
logTarget:'player',
check:function(event,player){
@ -318,8 +326,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
trigger.targets=[player];
var next=game.createEvent('twtijin_discard',null,trigger.getParent());
trigger.targets.length=0;
trigger.targets.push(player);
var next=game.createEvent('twtijin_discard',null,trigger.getParent(2));
next.player=player;
next.target=trigger.player;
next.setContent(function(){
@ -377,6 +386,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
renshe:{
audio:2,
trigger:{player:'damageEnd'},
direct:true,
content:function(){
@ -421,6 +431,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
waishi:{
audio:2,
group:'waishi_afterstory',
subSkill:{
afterstory:{
@ -436,12 +447,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
enable:'phaseUse',
filter:function(event,player){
return player.storage.waishi>0;
return typeof player.storage.waishi!='number'||player.storage.waishi>0;
},
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>=ui.selected.cards.length;
},
filterCard:true,
position:'he',
check:function(card){
if(!game.hasPlayer(function(current){
return current!=_status.event.player&&current.countCards('h')>ui.selected.cards.length;
@ -457,9 +469,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
delay:0,
content:function(){
'step 0'
if(typeof player.storage.waishi!='number') player.storage.waishi=1;
player.storage.waishi--;
player.lose(cards,ui.special);
player.gainPlayerCard(target,true,'h',cards.length).chooseonly=true;
player.choosePlayerCard(target,true,'h',cards.length).chooseonly=true;
'step 1'
event.cards2=result.cards;
target.lose(event.cards2,ui.special);
@ -483,6 +496,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
chijie:{
audio:true,
forbid:['guozhan'],
trigger:{global:'gameDrawAfter'},
direct:true,
@ -545,6 +559,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
waishi_info:' 出牌阶段限一次你可以用至多X张牌交换一名其他角色等量的手牌X为现存势力数然后若其与你势力相同或手牌多于你你摸一张牌。',
renshe:'忍涉',
renshe_info:'当你受到伤害后,你可以选择一项:将势力改为现存的另一个势力;或可以额外发动一次“外使”直到你的下个出牌阶段结束;或与另一名其他角色各摸一张牌。',
tw_mobile:'移动版',
tw_yijiang:'一将成名TW',
tw_english:'英文版',
}
};
});

View File

@ -51,7 +51,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true,
content:function (){
"step 0"
player.chooseTarget(get.prompt('xinfu_langxi'),'对一名其他角色造成0-2点随机伤害',function(card,player,target){
player.chooseTarget(get.prompt('xinfu_langxi'),'对一名体力值不大于你的其他角色造成0-2点随机伤害',function(card,player,target){
return target.hp<=player.hp&&target!=player;
}).set('ai',function(target){
var player=_status.event.player;
@ -387,7 +387,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.directindex=result.index;
}
if(event.directindex==1){
target.chooseUseTarget({name:'sha'},cards,true,false)
target.chooseUseTarget({name:'sha'},cards,true,false).viewAs=true;
}
else{
target.chooseUseTarget(card,true,false,'nodistance');
@ -1146,7 +1146,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function (){
'step 0'
trigger.player.removeMark('xionghuo',1);
trigger.player.removeMark('xionghuo',trigger.player.countMark('xionghuo'));
var list=[1,2,3];
var num=list.randomGet();
event.goto(num);
@ -1749,7 +1749,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.line(target,'fire');
event.draws=game.filterPlayer(function(current){
if(current==target) return true;
return current.name=='guansuo'||current.name2=='guansuo';
return ['guansuo','old_guansuo'].contains(current.name)||['guansuo','old_guansuo'].contains(current.name2);
});
player.gainPlayerCard(target,'he',true);
}
@ -3647,7 +3647,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_limu":{
mod:{
targetInRange:function (card,player,target){
if(player.countCards('j')&&get.distance(player,target,'attack')<=1){
if(player.countCards('j')&&target.inRange(player)){
return true;
}
},
@ -4069,7 +4069,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"wolong_card":function (){
'step 0'
var ingame=game.hasPlayer(function(current){
return current.name=='sp_zhugeliang'||current.name2=='sp_zhugeliang';
return ['sp_zhugeliang','re_zhugeliang'].contains(current.name)||['sp_zhugeliang','re_zhugeliang'].contains(current.name2);
})?true:false;
var prompt='请选择';
prompt+=ingame?'至多两名':'一名';
@ -4090,7 +4090,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"fengchu_card":function (){
'step 0'
var ingame=game.hasPlayer(function(current){
return current.name=='pangtong'||current.name2=='pangtong';
return ['re_pangtong','pangtong'].contains(current.name)||['re_pangtong','pangtong'].contains(current.name2);
})?true:false;
var prompt='请选择';
prompt+=ingame?'至多四名':'至多三名';
@ -4111,7 +4111,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xuanjian_card":function (){
'step 0'
event.ingame=game.hasPlayer(function(current){
return current.name=='xin_xushu'||current.name2=='xin_xushu'||current.name=='re_xushu'||current.name2=='re_xushu';
return ['re_xushu','xin_xushu','xushu'].contains(current.name)||['re_xushu','xin_xushu','xushu'].contains(current.name2);
})?true:false;
var prompt='请选择一名角色,令其回复一点体力并摸一张牌';
prompt+=event.ingame?',然后你摸一张牌。':'。';
@ -4888,7 +4888,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
filter:function (event,player){
if(!player.storage.xinfu_zhaoxin.length) return false;
return get.distance(player,event.player,'attack')<=1
return player.inRange(event.player);
},
direct:true,
content:function (){
@ -5216,25 +5216,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_tunan":"图南",
"xinfu_tunan_info":"出牌阶段限一次,你可以展示牌堆顶的一张牌并选择一名其他角色,然后该角色选择一项:使用此牌(无距离限制);或将此牌当普通【杀】使用。",
"xinfu_bijing":"闭境",
"xinfu_bijing_info":"结束阶段,你可以展示一张手牌并标记为“闭境”。若你于回合外失去“闭境”牌,则当前回合角色的弃牌阶段开始时其需弃置两张牌。你的准备阶段,弃置手牌中的“闭境”牌。",
"xinfu_bijing_info":"结束阶段,你可以展示一张手牌并标记为“闭境”。若你于回合外失去“闭境”牌,则当前回合角色的弃牌阶段开始时其需弃置两张牌。你的准备阶段,弃置手牌中的“闭境”牌。",
"xinfu_zhenxing":"镇行",
"xinfu_zhenxing_info":"结束阶段开始时或当你受到伤害后,你可以观看牌堆顶的至多三张牌,然后你获得其中与其余牌花色均不相同的一张牌。",
"xinfu_qianxin":"遣信",
"xinfu_qianxin_info":"出牌阶段限一次若牌堆中没有“信”你可以选择一名角色并将任意张手牌放置于牌堆中X倍数的位置X为存活人数称为“信”。该角色的弃牌阶段开始时若其本回合内获得过“信”,其选择一项:令你将手牌摸至四张;本回合手牌上限-2。",
"xinfu_qianxin_info":"出牌阶段限一次若牌堆中没有“信”你可以选择一名角色并将任意张手牌放置于牌堆中X倍数的位置X为存活人数称为“信”。该角色的弃牌阶段开始时若其手牌区内有于本回合内获得过“信”,其选择一项:令你将手牌摸至四张;本回合手牌上限-2。",
"qianxin_effect":"遣信",
"qianxin_effect_info":"",
"xinfu_qianxin2":"遣信",
"xinfu_qianxin2_info":"",
"xinfu_fuhai":"浮海",
"xinfu_fuhai_info":"出牌阶段对每名角色限一次,你可以展示一张手牌并选择上家或下家。该角色展示一张手牌,若你的牌点数大于等于他的牌点数你弃置你展示的牌然后继续对其上家或下家重复此流程你的牌点数小于该角色牌的点数则该角色弃置其展示的牌然后你与其各摸X张牌X为你此回合内发动此技能选择的角色数且你此阶段内不能再发动“浮海”。",
"xinfu_fuhai_info":"出牌阶段每个方向限一次,你可以展示一张手牌并选择上家或下家。该角色展示一张手牌,若你展示的牌点数大于等于其展示的牌点数,你弃置你展示的牌,然后继续对其上家或下家重复此流程;展示的牌点数小于该展示角色牌的点数则该角色弃置其展示的牌然后你与其各摸X张牌X为你此回合内发动此技能选择的角色数且你此阶段内不能再发动〖浮海〗。",
"fuhai_clear":"浮海",
"fuhai_clear_info":"",
"xz_xunxun":"恂恂",
"xz_xunxun_info":"摸牌阶段,你可以观看牌堆顶的四张牌,然后将其中的两张牌置于牌堆顶,并将其余的牌以任意顺序置于牌堆底。",
"xinfu_xingzhao":"兴棹",
"xinfu_xingzhao_info":"锁定技若场上的已受伤角色合计为1个以上你视为拥有技能〖恂恂〗2个以上当你使用装备牌时摸一张牌3个以上你跳过弃牌阶段。",
"xinfu_xingzhao_info":"锁定技若场上的已受伤角色合计为1个以上你视为拥有技能〖恂恂〗2个以上当你使用装备牌时摸一张牌3个以上弃牌阶段开始时,你跳过此阶段。",
"xinfu_xingzhao2":"兴棹",
"xinfu_xingzhao2_info":"",
"xinfu_dianhu":"点虎",
@ -5242,12 +5242,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_dianhu2":"点虎",
"xinfu_dianhu2_info":"",
"xinfu_jianji":"谏计",
"xinfu_jianji_info":"出牌阶段限一次,你可以令一名其他角色摸一张牌。然后该角色可以使用此牌。",
"xinfu_jianji_info":"出牌阶段限一次,你可以令一名其他角色摸一张牌。然后该角色可以使用此牌。",
"xinfu_lianpian":"联翩",
"xinfu_lianpian_info":"出牌阶段限三次。当你对一名角色连续使用牌时,你可以摸一张牌,然后可以将一张牌交给该角色。",
"xinfu_lingren":"凌人",
"xinfu_lingren_info":"每回合限一次。当你于出牌阶段使用带有“伤害”这一标签的基本牌或普通锦囊牌指定目标后你可以猜测其中的一个目标的手牌中是否有基本牌锦囊牌或装备牌。若你猜中的项目数≥1此牌对该角色的伤害+1≥2你摸两张牌≥3你获得技能〖奸雄〗和〖行殇〗直到下回合开始。",
"xinfu_lingren_info":"每回合限一次。当你于出牌阶段使用带有「伤害」这一标签的基本牌或普通锦囊牌指定目标后你可以猜测其中的一个目标的手牌中是否有基本牌锦囊牌或装备牌。若你猜中的项目数≥1此牌对该角色的伤害+1≥2你摸两张牌≥3你获得技能〖奸雄〗和〖行殇〗直到下回合开始。",
"lingren_adddamage":"凌人",
"lingren_adddamage_info":"",
"lingren_jianxiong":"奸雄",
@ -5255,9 +5255,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"lingren_xingshang":"行殇",
"lingren_xingshang_info":"当有角色死亡后你可以选择一项1.回复一点体力。2.获得该角色的所有牌。",
"xinfu_fujian":"伏间",
"xinfu_fujian_info":"锁定技,结束阶段你观看一名随机的其他角色的随机X张手牌。(X为场上手牌最少的角色的手牌数)",
"xinfu_fujian_info":"锁定技,结束阶段开始时你观看一名随机的其他角色的随机X张手牌。(X为场上手牌最少的角色的手牌数)",
"xinfu_xionghuo":"凶镬",
"xinfu_xionghuo_info":"游戏开始时你获得3个“暴戾”标记。出牌阶段你可以交给一名其他角色一个“暴戾”标记你对有此标记的角色造成的伤害+1且其出牌阶段开始时移去“暴戾”并随机执行一项1.受到1点火焰伤害且本回合不能对你使用【杀】2.失1点体力且本回合手牌上限-13.你随机获得其一张手牌和一张装备区的牌。",
"xinfu_xionghuo_info":"游戏开始时你获得3个“暴戾”标记。出牌阶段你可以交给一名其他角色一个“暴戾”标记你对有“暴戾”标记的角色造成伤害时,此伤害+1。有“暴戾”的其他角色的出牌阶段开始时其移去所有“暴戾”标记并随机执行一项1.受到1点火焰伤害且本回合不能对你使用【杀】2.失1点体力且本回合手牌上限-13.你随机获得其一张手牌和一张装备区的牌。",
xionghuo:"凶镬",
"xionghuo_info":"",
"xionghuo_disable":"凶镬",
@ -5265,7 +5265,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xionghuo_low":"凶镬",
"xionghuo_low_info":"",
"xinfu_shajue":"杀绝",
"xinfu_shajue_info":"锁定技,其他角色进入濒死状态时,若其需要超过一张【桃】或【酒】救回,则你获得一个“暴戾”标记,并获得使其进入濒死状态的牌。",
"xinfu_shajue_info":"锁定技,其他角色进入濒死状态时,若其体力值小于0,则你获得一个“暴戾”标记,并获得使其进入濒死状态的牌。",
"xinfu_jianjie":"荐杰",
"xinfu_jianjie_info":"你的第一个准备阶段,你令两名其他角色分别获得龙印与凤印;出牌阶段限一次(你的第一个回合除外),或当拥有龙印、凤印的角色死亡时,你可以转移龙印、凤印。",
"xinfu_jianjie1":"荐杰",
@ -5281,23 +5281,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"smh_yeyan":"业炎",
"smh_yeyan_info":"",
"xinfu_yinshi":"隐士",
"xinfu_yinshi_info":"锁定技,若你没有龙印、凤印且没装备防具,防止你受到的属性伤害和锦囊牌造成的伤害。",
"xinfu_yinshi_info":"锁定技,若你没有龙印、凤印且装备区的防具栏为空,则当你受到的属性伤害火锦囊牌造成的伤害时,防止此伤害。",
"xinfu_chenghao":"称好",
"xinfu_chenghao_info":"当一名角色受到属性伤害后,若其存活且处于“连环状态”且是伤害传导的起点,你可以观看牌堆顶的X张牌并分配给任意角色X为横置的角色数量且包含该角色",
"xinfu_chenghao_info":"当一名角色受到属性伤害后,若其存活且其武将牌横置且是伤害传导的起点,则你可以观看牌堆顶的X张牌并分配给任意角色X为横置的角色数量且包含该角色",
"jianjie_faq":"关于龙凤印",
"jianjie_faq_info":"龙印效果:获得“火计”。凤印效果:获得“连环”。(均一回合限使用三次) 龙凤印齐全:获得“业炎”,“业炎”发动后移除龙凤印。",
"jianjie_faq_info":"龙印效果:视为拥有〖火计〗。凤印效果:视为拥有〖连环〗。(均一回合限使用三次) 龙凤印齐全:视为拥有〖业炎〗,〖业炎〗发动后移除龙凤印。",
"xinfu_wuniang":"武娘",
"xinfu_wuniang_info":"当你使用或打出〖杀〗时,你可以获得一名其他角色的一张牌。若如此做,该角色和场上所有的“关索”各摸一张牌。",
"xinfu_wuniang_info":"当你使用或打出【杀】时,你可以获得一名其他角色的一张牌。若如此做,该角色和场上所有的“关索”各摸一张牌。",
"xinfu_xushen":"许身",
"xinfu_xushen_info":"限定技,当一名男性角色使用【桃】令你脱离濒死状态时,若场上没有“关索”,则其可以将自己的一张武将牌变更为“关索”。然后你回复一点体力,并获得技能〖镇南〗。",
"xinfu_zhennan":"镇南",
"xinfu_zhennan_info":"当你成为【南蛮入侵】的目标时你可以对一名其他角色造成1-3点随机伤害。",
"xinfu_falu":"法箓",
"xinfu_falu_info":"锁定技,游戏开始时,你获得“紫薇”,“后土”,“玉清”,“勾陈”标记各一个。当你的牌因弃置而进入弃牌堆后根据这些牌的花色你获得对应的标记黑桃你获得1枚“紫薇”梅花你获得1枚“后土”红桃你获得1枚“玉清”方块你获得1枚“勾陈”每种标记限拥有1个",
"xinfu_falu_info":"锁定技,游戏开始时,你获得「紫薇」「后土」「玉清」「勾陈」标记各一个。当你的牌因弃置而进入弃牌堆后根据这些牌的花色你获得对应的标记黑桃你获得1枚「紫薇」梅花你获得1枚「后土」红桃你获得1枚「玉清」方块你获得1枚「勾陈」每种标记限拥有1个",
"xinfu_dianhua":"点化",
"xinfu_dianhua_info":"准备阶段或结束阶段你可以观看牌堆顶的X张牌X为你的标记数)。若如此做,你将这些牌以任意顺序放回牌堆顶。",
"xinfu_dianhua_info":"准备阶段或结束阶段你可以观看牌堆顶的X张牌X为你的「紫薇」「后土」「玉清」「勾陈」标记数的总和)。若如此做,你将这些牌以任意顺序放回牌堆顶。",
"xinfu_zhenyi":"真仪",
"xinfu_zhenyi_info":"你可以在以下时机弃置相应的标记来发动以下效果:当一张判定牌生效前你可以弃置“紫微”然后将判定结果改为黑桃5或红桃5当你处于濒死状态时你可以弃置“后土”然后将你的一张手牌当【桃】使用当你造成伤害时你可以弃置“玉清”,然后你进行一次判定。若结果为黑色,此伤害+1当你受到属性伤害后你可以弃置“勾陈”,然后你从牌堆中随机获得三种类型的牌各一张。",
"xinfu_zhenyi_info":"你可以在以下时机弃置相应的标记来发动以下效果:一名角色的判定牌生效前你可以弃置一枚「紫薇」然后将判定结果改为黑桃5或红桃5当你处于濒死状态时你可以弃置一枚「后土」然后将你的一张手牌当【桃】使用当你造成伤害时你可以弃置一枚「玉清」,然后你进行一次判定。若结果为黑色,此伤害+1当你受到属性伤害后你可以弃置一张「勾陈」,然后你从牌堆中随机获得三种类型的牌各一张。",
"zhenyi_spade":"真仪",
"zhenyi_spade_info":"",
"zhenyi_club":"真仪",
@ -5305,11 +5305,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"zhenyi_heart":"真仪",
"zhenyi_heart_info":"",
"xinfu_yanyu":"燕语",
"xinfu_yanyu_info":"任意一名角色的出牌阶段开始时,你可以弃置一张牌。若如此做,则该出牌阶段内,当与你弃置的牌类别相同的其他牌进入弃牌堆时,你可令任意一名角色获得此牌。每阶段以此法获得的牌不能超过三张。",
"xinfu_yanyu_info":"一名角色的出牌阶段开始时,你可以弃置一张牌。若如此做,则该出牌阶段内,当与你弃置的牌类别相同的其他牌进入弃牌堆时,你可令任意一名角色获得此牌。每阶段以此法获得的牌不能超过三张。",
"xinfu_yanyu2":"燕语",
"xinfu_yanyu2_info":"",
"xinfu_xiaode":"孝德",
"xinfu_xiaode_info":"每当有其他角色阵亡后,你可以声明该武将牌的一项技能。若如此做,你获得此技能且不能再发动〖孝德〗直到你的回合结束。(你不能声明觉醒技或主公技)",
"xinfu_xiaode_info":"其他角色死亡后,你可以声明该角色武将牌上的一个不为主公技或觉醒技的技能。若如此做,你获得此技能且不能再发动〖孝德〗直到你的回合结束。",
"sp_taishici":"SP太史慈",
wangcan:"王粲",
@ -5324,13 +5324,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liuyao:"刘繇",
liuyan:"刘焉",
"xinfu_guolun":"过论",
"xinfu_guolun_info":"出牌阶段限一次,你可以展示一名其他角色的手牌,然后展示你的一张牌。你与其交换这两张牌,然后展示的牌点数小的角色摸一张牌。",
"xinfu_guolun_info":"出牌阶段限一次,你可以展示一名其他角色的手牌,然后展示你的一张牌。你与其交换这两张牌,然后展示的牌点数小的角色摸一张牌。",
"xinfu_zhanji":"展骥",
"xinfu_zhanji_info":"锁定技,你的出牌阶段内,当你因摸牌且不是因为此技能效果获得牌时,你额外摸一张牌。",
"xinfu_zhanji_info":"锁定技,你的出牌阶段内,当你因摸牌且不是因为此技能效果获得牌时,你额外摸一张牌。",
"xinfu_songsang":"送丧",
"xinfu_songsang_info":"限定技,当场上有角色死亡时,你可以回复一点体力(若你未受伤,则改为加一点体力上限);然后获得技能〖展骥〗。",
"xinfu_songsang_info":"限定技,其他角色死亡时,你可以回复一点体力(若你未受伤,则改为加一点体力上限);然后获得技能〖展骥〗。",
"xinfu_jixu":"击虚",
"xinfu_jixu_info":"出牌阶段限一次,若你有手牌,你可以令任意数量的体力值相等的其他角色猜测你的手牌中是否有【杀】。然后你摸X张牌X为猜错的角色数。若你有【杀】则你本回合内使用【杀】时所有这些角色均成为【杀】的目标若你没有【杀】则你弃置所有这些角色的各一张牌。若X为零你结束出牌阶段。",
"xinfu_jixu_info":"出牌阶段限一次,若你有手牌,你可以令任意体力值相等的其他角色猜测你的手牌中是否有【杀】。然后你摸X张牌X为猜错的角色数。若你有【杀】则你本回合内使用【杀】时所有这些角色均成为【杀】的目标若你没有【杀】则你弃置所有这些角色的各一张牌。若X为零你结束出牌阶段。",
"jixu_sha":"击虚",
"jixu_sha_info":"",
"xinfu_sanwen":"散文",
@ -5342,11 +5342,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"qinguo_use":"勤国",
"qinguo_use_info":"",
"xinfu_qinguo":"勤国",
"xinfu_qinguo_info":"当你使用的装备牌结算完成后,你可以视为使用了一张【杀】当你因使用或失去装备牌导致装备区内牌的数量发生变化后若你装备区内牌的数量等于你的体力值则你回复1点体力。",
"xinfu_qinguo_info":"当你使用的装备牌结算完成时,你可以视为使用一张【杀】当你因使用或失去装备牌导致装备区内牌的数量发生变化后若你装备区内牌的数量等于你的体力值则你回复1点体力。",
"qinguo_lose":"勤国",
"qinguo_lose_info":"",
"xinfu_jijun":"集军",
"xinfu_jijun_info":"当你于回合内使用非装备牌或武器牌指定了自己为目标时,你可以进行一次判定。然后,你将判定牌置于自己的武将牌上,称之为「方」。",
"xinfu_jijun_info":"当你于回合内使用非装备牌或武器牌指定目标后,若你是此牌的目标,你可以进行一次判定。然后,你将判定牌置于自己的武将牌上,称之为「方」。",
"xinfu_fangtong":"方统",
"xinfu_fangtong_info":"结束阶段你可以弃置总点数之和为36的一张牌与任意张「方」并对一名其他角色造成3点雷电伤害。",
"xinfu_weilu":"威虏",
@ -5356,15 +5356,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"weilu_effect2":"威虏",
"weilu_effect2_info":"",
"xinfu_zengdao":"赠刀",
"xinfu_zengdao_info":"限定技,出牌阶段,你可以将装备牌内的任意张牌置于一名其他角色的武将牌旁,称之为「刀」。该角色造成伤害时,其须移去一张「刀」,使此伤害+1。",
"xinfu_zengdao_info":"限定技,出牌阶段,你可以将装备牌内的任意张牌置于一名其他角色的武将牌旁,称之为「刀」。该角色造成伤害时,其须移去一张「刀」,然后此伤害+1。",
"xinfu_zengdao2":"赠刀",
"xinfu_zengdao2_info":"",
"xinfu_guanwei":"观微",
"xinfu_guanwei_info":"每回合限一次。一名角色的出牌阶段结束时,若其于出牌阶段内使用过的牌的数目>1且花色皆相同,则你可以弃置一张牌,令其摸两张牌并进行一个额外的出牌阶段。",
"xinfu_guanwei_info":"每回合限一次。一名角色的出牌阶段结束时,若其于出牌阶段内使用过两张以上的牌且花色均相同,则你可以弃置一张牌,令其摸两张牌并进行一个额外的出牌阶段。",
"xinfu_gongqing":"公清",
"xinfu_gongqing_info":"锁定技。当你受到伤害时,若伤害来源的攻击范围:<3则你令此伤害的数值减为1。>3你令此伤害+1。",
"xinfu_andong":"安东",
"xinfu_andong_info":"当你受到伤害时,若伤害来源有手牌,则你可以令伤害来源选择一项1.令你观看其的手牌并获得其中的所有红桃牌2.防止此伤害,然后其本回合内的红桃手牌不计入手牌上限。",
"xinfu_andong_info":"当你受到伤害时,你可以令伤害来源选择一项1.令你观看其的手牌并获得其中的所有红桃牌2.防止此伤害,然后其本回合内的红桃手牌不计入手牌上限。",
"xinfu_yingshi":"应势",
"xinfu_yingshi_info":"出牌阶段开始时,若场上的所有角色均没有「酬」,则你可以将所有的红桃牌置于一名其他角色的武将牌旁,称之为「酬」。有「酬」的角色受到「杀」的伤害/死亡时,伤害来源/你获得其中的一张/所有的「酬」。",
"yingshi_heart":"应势",
@ -5372,28 +5372,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"yingshi_die":"应势",
"yingshi_die_info":"",
"xinfu_duanfa":"断发",
"xinfu_duanfa_info":"出牌阶段,你可以弃置任意张黑色牌,然后摸等量的牌。(每回合内限X张X为你的体力上限。)",
"xinfu_duanfa_info":"出牌阶段,你可以弃置任意张黑色牌,然后摸等量的牌。每回合内限X张X为你的体力上限",
"xinfu_youdi":"诱敌",
"xinfu_youdi_info":"结束阶段开始时,你可以令一名其他角色弃置你的一张手牌,若此牌:不为黑色,你摸一张牌。不为【杀】,你获得该角色的一张牌。",
"xinfu_guanchao":"观潮",
"xinfu_guanchao_info":"出牌阶段开始时,你可以选择一项直到回合结束1.当你使用牌时若你此阶段使用过的所有牌的点数为递增你摸一张牌2.当你使用牌时,若你此阶段使用过的所有牌的点数为递减,你摸一张牌。",
"xinfu_guanchao_info":"出牌阶段开始时,你可以选择获得一项效果直到回合结束1.当你使用牌时若你此阶段使用过的所有牌的点数为递增你摸一张牌2.当你使用牌时,若你此阶段使用过的所有牌的点数为递减,你摸一张牌。",
"xinfu_xunxian":"逊贤",
"xinfu_xunxian_info":"每名其他角色的回合限一次,当你使用或打出的牌结算完成,即将置入弃牌堆时,你可以将之交给一名手牌比你多的角色。",
"xinfu_xunxian_info":"每名其他角色的回合限一次,当你使用或打出的牌结算完成后,你可以将其对应的所有实体牌交给一名手牌数大于你的角色。",
"xinfu_kannan":"戡难",
"xinfu_kannan_info":"出牌阶段限X次你可以与一名本回合内未成为过〖戡难〗目标的角色拼点。若你赢你使用的下一张【杀】的伤害值基数+1且你本回合内不能再发动〖戡难〗。若你没赢其使用的下一张【杀】的伤害值基数+1。X为你的体力值。",
"kannan_eff":"戡难",
"kannan_eff_info":"",
"xinfu_tushe":"图射",
"xinfu_tushe_info":"当你使用非装备牌指定目标若你没有基本牌则你可以摸X张牌。X为此牌指定的目标数",
"xinfu_tushe_info":"当你使用非装备牌指定目标若你没有基本牌则你可以摸X张牌。X为此牌指定的目标数",
"xinfu_limu":"立牧",
"xinfu_limu_info":"出牌阶段限一次,将一张方片花色牌当做【乐不思蜀】对自己使用然后回复1点体力。只要你的判定区内有牌你对攻击范围内的其他角色使用牌便没有次数和距离限制。",
"xinfu_limu_info":"出牌阶段限一次,你可以将一张♦牌当做【乐不思蜀】对自己使用然后回复1点体力。只要你的判定区内有牌你对攻击范围内的其他角色使用牌便没有次数和距离限制。",
"xinfu_guhuo":"蛊惑",
"xinfu_guhuo_info":"每名角色的回合限一次,你可以扣置一张手牌当一张基本牌或普通锦囊牌使用或打出。其他角色依次选择是否质疑。一旦有其他角色质疑则翻开此牌:若为假则此牌作废,若为真,则质疑角色获得技能〖缠怨〗。",
"xinfu_guhuo_info":"每名角色的回合限一次,你可以扣置一张手牌当一张基本牌或普通锦囊牌使用或打出。其他角色依次选择是否质疑。一旦有其他角色质疑则翻开此牌:若为假则此牌作废,若为真,则质疑角色获得技能〖缠怨〗。",
"guhuo_guess":"蛊惑",
"guhuo_guess_info":"",
chanyuan:"缠怨",
"chanyuan_info":"锁定技,你不能质疑于吉,只要你的体力值为1你失去你的武将技能。",
"chanyuan_info":"锁定技,你不能质疑于吉,当你的体力值为1时你的其他技能失效。",
"guhuo_respond":"蛊惑",
"guhuo_respond_info":"",
"guhuo_wuxie":"蛊惑",
@ -5402,7 +5402,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"guhuo_phase_info":"",
"xinfu_pingcai":"评才",
"xinfu_pingcai_info":"出牌阶段限一次,你可以挑选一个宝物并擦拭掉其上面的灰尘。然后,你可以根据宝物类型执行对应的效果。<br>【卧龙】对1名角色造成1点火焰伤害。若场上有存活的诸葛亮(火)则改为对至多2名角色各造成1点火焰伤害。<br>【凤雏】横置至多3名角色。若场上有存活的庞统(火)则改为横置至多4名角色。<br>【水镜】将1名角色装备区内的防具移动到另1角色对应区域。若场上有存活的司马徽则改为将1名角色装备区内的1件装备移动到另1角色对应区域。<br>【玄剑】令1名角色摸一张牌并回复1点体力。若场上有存活的徐庶(将/界)则改为令1名角色摸一张牌并回复1点体力然后你摸一张牌。",
"xinfu_pingcai_info":"出牌阶段限一次,你可以挑选一个宝物并擦拭掉其上面的灰尘。然后,你可以根据宝物类型执行对应的效果。",
"xinfu_pdgyingshi":"隐世",
"xinfu_pdgyingshi_info":"锁定技,你始终跳过准备阶段,判定阶段,结束阶段。你不能被选择为延时锦囊牌的目标。",
"pcaudio_wolong_card":"卧龙",
@ -5416,7 +5416,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"yizan_respond_sha":"翊赞",
"yizan_respond_sha_info":"",
"yizan_use":"翊赞",
"yizan_use_info":"你可以将两张牌(其中至少应有一张基本牌)当做任意基本牌使用或打出。",
"yizan_use_info":"你可以将两张牌(其中至少一张为基本牌)当做任意基本牌使用或打出。",
"yizan_respond_shan":"翊赞",
"yizan_respond_shan_info":"",
"xinfu_longyuan":"龙渊",
@ -5424,15 +5424,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"yizan_count":"翊赞",
"yizan_count_info":"",
"xinfu_jingxie1":"精械",
"xinfu_jingxie1_info":"出牌阶段,你可以展示一张未强化过的【诸葛连弩】或标准包/军争包/SP包中的防具牌然后对其进行强化。当你处于濒死状态时你可以重铸一张防具牌将体力回复至1点。",
"xinfu_jingxie1_info":"出牌阶段,你可以展示一张未强化过的【诸葛连弩】或标准包/军争包/SP包中的防具牌然后对其进行强化。当你处于濒死状态时你可以重铸一张防具牌然后将体力回复至1点。",
"xinfu_jingxie2":"精械",
"xinfu_jingxie2_info":"",
"xinfu_qiaosi":"巧思",
"xinfu_qiaosi_info":"出牌阶段限一次你可以投掷一枚六面骰子展示牌堆顶的X张牌并获得之。然后你选择一项1.交给一名其他角色X张牌。2.弃置X张牌。(X为骰子的点数)",
"xinfu_qiaosi_info":"出牌阶段限一次你可以投掷一枚六面骰子展示牌堆顶的X张牌并获得之。然后你选择一项1.交给一名其他角色X张牌。2.弃置X张牌。X为骰子的点数",
"xinfu_jijie":"机捷",
"xinfu_jijie_info":"出牌阶段限一次。你可以观看牌堆底的一张牌,然后将其交给一名角色。",
"xinfu_jiyuan":"急援",
"xinfu_jiyuan_info":"当一名角色进入濒死状态时,或你交给一名其他角色牌时,你可以令其摸一张牌。",
"xinfu_jiyuan_info":"当一名角色进入濒死状态时,或你交给一名其他角色牌时,你可以令其摸一张牌。",
"xinfu_daigong":"怠攻",
"xinfu_daigong_info":"每回合限一次。当你受到伤害时,你可以展示所有手牌,然后令伤害来源选择一项:交给你一张与你所有手牌花色均不相同的一张牌,或防止此伤害。",
"xinfu_zhaoxin":"昭心",
@ -5446,11 +5446,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"qc_mingzhe":"明哲",
"qc_mingzhe_info":"",
"xinfu_shangjian":"尚俭",
"xinfu_shangjian_info":"一名角色的结束阶段开始时,若你于此回合内失去了x张或更少的牌则你可以摸等量的牌。x为你的体力值",
"xinfu_shangjian_info":"一名角色的结束阶段开始时,若你于此回合内失去了X张或更少的牌则你可以摸等量的牌。X为你的体力值",
"rw_bagua_skill":"先天八卦阵",
"rw_bagua_skill_info":"当你需要使用或打出一张【闪】时,你可以进行一次判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。",
"rw_bagua_skill_info":"当你需要使用或打出一张【闪】时,你可以进行判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。",
"rw_baiyin_skill":"玉照狮子盔",
"rw_baiyin_skill_info":"锁定技,你每次受到伤害时最多承受1点伤害防止多余的伤害当你失去装备区里的【玉照狮子盔】时你回复1点体力并摸两张牌。",
"rw_baiyin_skill_info":"锁定技,当你受到大于1的伤害时你将伤害值改为1当你失去装备区里的【玉照狮子盔】时你回复1点体力并摸两张牌。",
"rw_lanyinjia":"精银甲",
"rw_lanyinjia_info":"你可以将一张手牌当做【闪】使用或打出。锁定技,【精银甲】不会无效。",
"rw_minguangkai_cancel":"耀光铠",
@ -5458,37 +5458,37 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"rw_minguangkai_link":"耀光铠",
"rw_minguangkai_link_info":"锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。",
"rw_renwang_skill":"仁王金刚盾",
"rw_renwang_skill_info":"有花色且不为方片的杀对你无效。",
"rw_renwang_skill_info":"黑色【杀】和红桃【杀】对你无效。",
"rw_tengjia1":"桐油百炼甲",
"rw_tengjia1_info":"锁定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。",
"rw_tengjia1_info":"锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时取消之。",
"rw_tengjia2":"桐油百炼甲",
"rw_tengjia2_info":"锁定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。",
"rw_tengjia2_info":"锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时取消之。",
"rw_tengjia3":"桐油百炼甲",
"rw_tengjia3_info":"锁定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。",
"rw_tengjia3_info":"锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时取消之。",
"rw_tengjia4":"桐油百炼甲",
"rewrite_bagua":"先天八卦阵",
"rewrite_bagua_info":"当你需要使用或打出一张【闪】时,你可以进行一次判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。",
"rewrite_bagua_info":"当你需要使用或打出一张【闪】时,你可以进行判定,若判定结果不为黑桃,视为你使用或打出了一张【闪】。",
"rewrite_baiyin":"玉照狮子盔",
"rewrite_baiyin_info":"锁定技,你每次受到伤害时最多承受1点伤害防止多余的伤害当你失去装备区里的【玉照狮子盔】时你回复1点体力并摸两张牌。",
"rewrite_baiyin_info":"锁定技,当你受到大于1的伤害时你将伤害值改为1当你失去装备区里的【玉照狮子盔】时你回复1点体力并摸两张牌。",
"rewrite_lanyinjia":"精银甲",
"rewrite_lanyinjia_info":"你可以将一张手牌当做【闪】使用或打出。锁定技,【精银甲】不会无效。",
"rewrite_minguangkai":"耀光铠",
"rewrite_minguangkai_info":"锁定技,当你成为【火烧连营】、【火攻】或火【杀】的目标时,或即将被横置时,取消之。",
"rewrite_renwang":"仁王金刚盾",
"rewrite_renwang_info":"有花色且不为方片的杀对你无效。",
"rewrite_renwang_info":"黑色【杀】和红桃【杀】对你无效。",
"rewrite_tengjia":"桐油百炼甲",
"rewrite_tengjia_info":"锁定技,【南蛮入侵】、【万箭齐发】和普通【杀】对你无效。你每次受到火焰伤害时,该伤害+1。你不会被横置。",
"rewrite_tengjia_info":"锁定技,【南蛮入侵】、【万箭齐发】和普【杀】对你无效。当你受到火焰伤害时,此伤害+1。当你即将被横置时取消之。",
"rewrite_zhuge":"元戎精械弩",
"rewrite_zhuge_info":"你于出牌阶段内使用【杀】无次数限制。",
takaramono:"宝物",
"wolong_card":"卧龙",
"wolong_card_info":"对1名角色造成1点火焰伤害。若场上有存活的诸葛亮(火)则改为对至多2名角色各造成1点火焰伤害。",
"wolong_card_info":"对一名角色造成1点火焰伤害。若场上有存活的诸葛亮(火),则改为对至多两名角色各造成两点火焰伤害。",
"fengchu_card":"凤雏",
"fengchu_card_info":"横置至多3名角色。若场上有存活的庞统(火)则改为横置至多4名角色。",
"fengchu_card_info":"横置至多三名角色。若场上有存活的庞统(火),则改为横置至多四名角色。",
"xuanjian_card":"玄剑",
"xuanjian_card_info":"令1名角色摸一张牌并回复1点体力。若场上有存活的徐庶(将/界)则改为令1名角色摸一张牌并回复1点体力然后你摸一张牌。",
"xuanjian_card_info":"令一名角色摸一张牌并回复1点体力。若场上有存活的徐庶(将/界),则改为令一名角色摸一张牌并回复1点体力然后你摸一张牌。",
"shuijing_card":"水镜",
"shuijing_card_info":"将1名角色装备区内的防具移动到另1角色对应区域。若场上有存活的司马徽则改为将1名角色装备区内的1件装备移动到另1角色对应区域。",
"shuijing_card_info":"将一名角色装备区内的防具牌移动到另一名角色对应区域。若场上有存活的司马徽则改为将1名角色装备区内的1件装备移动到另1角色对应区域。",
},
};
});

View File

@ -413,7 +413,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
subSkill:{
damage:{
sub:true,
trigger:{source:'damage'},
trigger:{global:'damage'},
audio:'benxi',
forced:true,
filter:function(event,player){
@ -582,7 +582,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
else{
player.chooseTarget('是否对'+get.translation(target)+'或其攻击范围内的一名角色造成1点伤害',function(card,player,target){
return target==_status.event.targetx||get.distance(_status.event.targetx,target,'attack')<=1;
return target==_status.event.targetx||_status.event.targetx.inRange(target);
}).set('targetx',event.target).ai=function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player)
@ -744,10 +744,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
targetprompt:['出杀人','出杀目标'],
filterTarget:function(card,player,target){
if(ui.selected.targets.length==0){
return target!=player&&lib.filter.targetInRange({name:'sha'},target,player);
return target!=player&&target.inRange(player);
}
else{
return lib.filter.targetInRange({name:'sha'},ui.selected.targets[0],target);
return ui.selected.targets[0].inRange(target);
}
},
content:function(){
@ -764,7 +764,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.gain(result.cards,targets[0],'give');
}
else{
if(targets[0].canUse('sha',targets[1])) targets[0].useCard({name:'sha'},targets[1]);
if(targets[0].canUse('sha',targets[1])) targets[0].useCard({name:'sha',isCard:true},targets[1]);
}
},
ai:{
@ -882,6 +882,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
position:'he',
viewAs:{name:links[0][2],nature:links[0][3]},
onuse:function(result,player){
var evt=_status.event.getParent('phase');
if(evt&&evt.name=='phase'&&!evt.xintaoluan){
evt.xintaoluan=true;
var next=game.createEvent('taoluan_clear');
_status.event.next.remove(next);
evt.after.push(next);
next.player=player;
next.setContent(function(){
game.broadcastAll(function(player){
player.storage.xintaoluan=[];
delete player.storage.xintaoluan2;
},player);
});
}
player.storage.xintaoluan.add(result.card.name);
},
}
@ -906,7 +920,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
threaten:1.9,
},
group:['xintaoluan2','xintaoluan4','xintaoluan5','xintaoluan6']
group:['xintaoluan2','xintaoluan4','xintaoluan5']
},
xintaoluan2:{
trigger:{player:['useCardAfter','respondAfter']},
@ -965,6 +979,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return !player.storage.xintaoluan.contains('shan')&&!player.hasSkill('xintaoluan3')&&!_status.dying.length;
},
onuse:function(result,player){
var evt=_status.event.getParent('phase');
if(evt&&evt.name=='phase'&&!evt.xintaoluan){
var next=game.createEvent('taoluan_clear');
_status.event.next.remove(next);
evt.after.push(next);
evt.xintaoluan=true;
next.player=player;
next.setContent(function(){
game.broadcastAll(function(player){
player.storage.xintaoluan=[];
delete player.storage.xintaoluan2;
},player);
});
}
player.storage.xintaoluan.add('shan');
},
filterCard:true,
@ -997,10 +1025,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'taoluan',
enable:'chooseToUse',
prompt:'将一张牌当做无懈可击使用',
filter:function(event,player){
return (!player.storage.xintaoluan.contains('wuxie'))&&!player.hasSkill('xintaoluan3')&&!_status.dying.length;
},
viewAsFilter:function(player){
return !player.storage.xintaoluan.contains('wuxie');
return (!player.storage.xintaoluan.contains('wuxie'))&&!player.hasSkill('xintaoluan3')&&!_status.dying.length;
},
onuse:function(result,player){
var evt=_status.event.getParent('phase');
if(evt&&evt.name=='phase'&&!evt.xintaoluan){
evt.xintaoluan=true;
var next=game.createEvent('taoluan_clear');
_status.event.next.remove(next);
evt.after.push(next);
next.player=player;
next.setContent(function(){
game.broadcastAll(function(player){
player.storage.xintaoluan=[];
delete player.storage.xintaoluan2;
},player);
});
}
player.storage.xintaoluan.add('wuxie');
},
filterCard:true,
@ -1681,16 +1726,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
funan:{
audio:2,
trigger:{global:['respondAfter','useCardAfter']},
trigger:{global:['respond','useCard']},
filter:function(event,player){
if(!event.respondTo) return false;
if(event.player==player) return false;
if(player!=event.respondTo[0]) return false;
if(get.itemtype(event.cards)!='cards') return false;
if(['h','e','j'].contains(get.position(event.cards[0]))) return false;
if(get.itemtype(event.respondTo[1])!='card') return false;
if(['h','e','j'].contains(get.position(event.respondTo[1]))) return false;
return true;
if(!player.hasSkill('funan_jiexun')){
var cards=[]
if(get.itemtype(event.respondTo[1])=='card') cards.push(event.respondTo[1]);
else if(event.respondTo[1].cards) cards.addArray(event.respondTo[1].cards);
return cards.filterInD('od').length>0;
}
else return event.cards.filterInD('od').length>0;
},
logTarget:'player',
check:function(event,player){
@ -1702,18 +1749,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
if(!player.hasSkill('funan_jiexun')){
trigger.player.gain(trigger.respondTo[1],'gain2');
var cards=[]
if(get.itemtype(trigger.respondTo[1])=='card') cards.push(trigger.respondTo[1]);
else if(trigger.respondTo[1].cards) cards.addArray(trigger.respondTo[1].cards);
cards=cards.filterInD('od');
trigger.player.gain(cards,'gain2','log');
trigger.player.addTempSkill('funan_use');
if(!trigger.player.storage.funan_use){
trigger.player.storage.funan_use=[];
}
trigger.player.storage.funan_use.add(trigger.respondTo[1]);
trigger.player.storage.funan_use.addArray(cards);
}
'step 1'
player.gain(trigger.cards,'gain2');
var cards=trigger.cards.filterInD('od');
player.gain(cards,'log','gain2');
},
subSkill:{
jiexun:{
charlotte:true,
mark:true,
intro:{
content:'你发动“复难”时,无须令其他角色获得你使用的牌'
@ -1722,7 +1775,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
use:{
onremove:true,
mod:{
cardEnabled:function(card,player){
cardEnabled2:function(card,player){
if(player.storage.funan_use&&player.storage.funan_use.contains(card)){
return false;
}
@ -1887,7 +1940,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
if(!player.countCards('h')) return false;
return event.player!=player&&event.card.name=='sha'&&!event.targets.contains(player)&&
get.distance(event.player,player,'attack')<=1;
event.player.inRange(player);
},
direct:true,
content:function(){
@ -1936,19 +1989,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 3"
if(event.card){
player.logSkill('jianzheng',trigger.player);
player.lose(event.card,ui.special);
game.broadcastAll(function(player){
var cardx=ui.create.card();
cardx.classList.add('infohidden');
cardx.classList.add('infoflip');
player.$throw(cardx,1000,'nobroadcast');
},player);
player.lose(event.card,ui.special,'visible');
player.$throw(event.card,1000);
}
"step 4"
if(event.card){
event.card.fix();
ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild);
game.updateRoundNumber();
game.log(player,'将',card,'置于牌堆顶');
}
"step 5"
if(get.color(trigger.card)!='black'){
@ -2536,7 +2585,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!player.storage.shouxi) player.storage.shouxi=[];
},
filter:function(event,player){
return event.card.name=='sha';
return event.card.name=='sha'&&event.player.isAlive();
},
content:function(){
'step 0'
@ -2698,7 +2747,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
game.log(event.current,'选择了',card);
game.delay();
event.goto(5);
if(event.togain.length) event.goto(5);
}
},
fuzhu:{
@ -3097,7 +3146,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
discard:false,
lose:false,
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>target.hp;
return target!=player;
},
content:function(){
'step 0'
@ -3105,8 +3154,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
var num=target.countCards('h')-target.hp;
if(num<=0){
event.finish();
return;
num=1;
}
var hs=target.getCards('h').randomGets(num);
target.showCards(hs);
@ -3177,7 +3225,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
order:8,
result:{
player:function(player,target){
var num=target.countCards('h')-target.hp;
var num=Math.max(1,target.countCards('h')-target.hp);
if(get.attitude(player,target)<0) return 1.5*num;
return num;
}
@ -3363,7 +3411,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{global:'phaseUseBegin'},
direct:true,
filter:function(event,player){
if(event.player==player) return false;
if(event.player==player||event.player.isDead()) return false;
return player.countCards('e')>0;
},
content:function(){
@ -3401,25 +3449,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
xinsidi2:{
mark:true,
group:['xinsidi2_sha','xinsidi2_end'],
group:['xinsidi2_end'],
subSkill:{
sha:{
trigger:{player:'shaBegin'},
forced:true,
popup:false,
content:function(){
player.storage.xinsidi3=true;
}
},
end:{
trigger:{player:'phaseUseAfter'},
trigger:{player:'phaseUseEnd'},
forced:true,
popup:false,
audio:false,
content:function(){
if(!player.storage.xinsidi3&&player.storage.xinsidi4.isAlive()){
if(player.storage.xinsidi4.isAlive()&&!player.getHistory('useCard',function(evt){
return evt.card.name=='sha';
})){
player.storage.xinsidi4.logSkill('xinsidi',player);
player.storage.xinsidi4.useCard({name:'sha'},player);
player.storage.xinsidi4.useCard({name:'sha',isCard:true},player);
}
delete player.storage.xinsidi2;
delete player.storage.xinsidi3;
@ -3779,6 +3821,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mode:['identity','versus'],
available:function(mode){
if(mode=='versus'&&_status.mode!='four') return false;
if(mode=='identity'&&_status.mode=='purple') return false;
},
trigger:{player:'phaseJieshuBegin'},
direct:true,
@ -3786,7 +3829,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var zhu=get.zhu(player);
if(!zhu||!zhu.isZhu) return false;
return game.hasPlayer(function(current){
return current!=zhu&&get.distance(current,zhu,'attack')<=1;
return current!=zhu&&current.inRange(zhu);
});
},
content:function(){
@ -3794,7 +3837,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseTarget(get.prompt2('qinqing'),[1,Infinity],function(card,player,target){
var zhu=get.zhu(player);
if(target==zhu) return false;
return get.distance(target,zhu,'attack')<=1;
return target.inRange(zhu);
}).set('ai',function(target){
var he=target.countCards('he')
if(get.attitude(_status.event.player,target)>0){
@ -3872,7 +3915,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
locked:false,
filter:function(event,player){
if(!player.getStat().skill.jiyu) return true;
if(!player.getStat().skill.jiyu||!player.storage.jiyu2) return true;
var hs=player.getCards('h');
for(var i=0;i<hs.length;i++){
if(!player.storage.jiyu2.contains(get.suit(hs[i]))){
@ -3882,10 +3925,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return false;
},
filterTarget:function(card,player,target){
return target.countCards('h')&&!player.storage.jiyu.contains(target);
return target.countCards('h')&&(!player.storage.jiyu||!player.storage.jiyu.contains(target));
},
content:function(){
'step 0'
var evt=_status.event.getParent('phaseUse');
if(evt&&evt.name=='phaseUse'&&!evt.jiyu){
evt.jiyu=true;
var next=game.createEvent('jiyu_clear');
_status.event.next.remove(next);
evt.after.push(next);
next.player=player;
next.setContent(function(){
game.broadcastAll(function(player){
delete player.storage.jiyu;
delete player.storage.jiyu2;
},player);
});
}
if(!player.storage.jiyu) player.storage.jiyu=[];
player.storage.jiyu.push(target);
var spade=true;
if(player.isTurnedOver()||get.attitude(target,player)>0||target.hp<=2){
@ -3900,7 +3958,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return -10-get.value(card);
}
}
if(_status.event.getParent().player.storage.jiyu2.contains(get.suit(card))){
if(_status.event.getParent().player.storage.jiyu2&&_status.event.getParent().player.storage.jiyu2.contains(get.suit(card))){
return -3-get.value(card);
}
return -get.value(card);
@ -3912,8 +3970,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.turnOver();
target.loseHp();
}
if(!player.storage.jiyu2) player.storage.jiyu2=[];
player.storage.jiyu2.add(get.suit(card));
},
onremove:['jiyu','jiyu2'],
ai:{
order:9,
result:{
@ -3923,7 +3983,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
},
group:'jiyu2',
mod:{
cardEnabled:function(card,player){
if(player.storage.jiyu2&&player.storage.jiyu2.contains(get.suit(card))) return false;
@ -5101,8 +5160,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.$throw(result.links);
player.storage.chunlao.remove(result.links[0]);
game.cardsDiscard(result.links[0]);
player.syncStorage('chunlao');
target.useCard({name:'jiu'},target);
player.syncStorage('chunlao')
event.type='dying';
target.useCard({name:'jiu',isCard:true},target);
if(!player.storage.chunlao.length){
player.unmarkSkill('chunlao');
}
@ -5144,7 +5204,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.chunlao.remove(result.links[0]);
result.links[0].discard();
player.syncStorage('chunlao');
trigger.player.useCard({name:'jiu'},trigger.player);
trigger.player.useCard({name:'jiu',isCard:true},trigger.player);
if(!player.storage.chunlao.length){
player.unmarkSkill('chunlao');
}
@ -5238,7 +5298,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{global:'phaseJudgeBegin'},
direct:true,
filter:function(event,player){
return event.player!=player&&event.player.countCards('j')>0&&get.distance(player,event.player,'attack')<=1;
return event.player!=player&&event.player.countCards('j')>0&&player.inRange(event.player)<=1;
},
content:function(){
'step 0'
@ -5262,8 +5322,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('att',att).set('nh',nh).set('eff',eff).set('logSkill',['yonglve',trigger.player]);
'step 1'
if(result.bool){
if(player.canUse({name:'sha'},trigger.player)){
event.related=player.useCard({name:'sha'},trigger.player);
if(player.canUse({name:'sha',isCard:true},trigger.player)){
event.related=player.useCard({name:'sha',isCard:true},trigger.player);
}
}
else{
@ -5522,7 +5582,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 3"
if(event.useSha){
event.target.chooseToUse('是否使用一张杀?',{name:'sha'}).set('filterTarget',function(card,player,target){
return target!=_status.event.sourcex&&get.distance(_status.event.sourcex,target,'attack')<=1&&lib.filter.targetEnabled.apply(this,arguments);
return target!=_status.event.sourcex&&_status.event.sourcex.inRange(target)&&lib.filter.targetEnabled.apply(this,arguments);
}).set('sourcex',player);
}
}
@ -5699,7 +5759,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.discardPlayerCard(target,'he',true);
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:{name:'shan'}}
trigger.result={bool:true,card:{name:'shan',isCard:true}}
}
},
ai:{
@ -5839,7 +5899,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.links){
var num=0,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(get.distance(target,players[i],'attack')<=1){
if(target.inRange(players[i])){
num++;
}
}
@ -5852,7 +5912,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 2'
var num2=0,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(get.distance(target,players[i],'attack')<=1){
if(target.inRange(players[i])<=1){
num2++;
}
}
@ -6407,11 +6467,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
event.finish();
event.current.draw();
if(result.cards&&result.cards.length==1&&result.cards[0].name=='sha'){
player.useCard(result.cards[0],target).animate=false;
if(result.cards&&result.cards.length){
player.useCard({name:'sha',isCard:true},result.cards,target).animate=false;
}
else{
player.useCard({name:'sha'},target).animate=false;
player.useCard({name:'sha',isCard:true},target).animate=false;
}
if(typeof event.current.ai.shown=='number'&&event.current.ai.shown<0.95){
event.current.ai.shown+=0.3;
@ -6556,7 +6616,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:function(card){
return get.type(card)!='basic'&&get.color(card)=='black';
},
viewAs:{name:links[0][2],nature:links[0][3],suit:null,number:null},
viewAs:{name:links[0][2],nature:links[0][3],suit:null,number:null,isCard:true},
position:'he',
popname:true,
ignoreMod:true,
@ -6767,18 +6827,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.damages.push(event.current);
event.current.line(player,'green');
game.log(event.current,'令',player,'回复一点体力');
player.recover();
}
if(event.targets.length){
event.goto(1);
}
'step 3'
if(event.damages.length){
player.recover(event.damages.length);
}
'step 4'
if(event.damages.length){
event.damages.shift().damage('nosource');
event.redo();
var next=game.createEvent('xingshuaI_next');
event.next.remove(next);
trigger.after.push(next);
next.targets=event.damages;
next.setContent(function(){
targets.shift().damage();
if(targets.length) event.redo();
});
}
}
},
@ -6971,8 +7034,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
forced:true,
filter:function(event,player){
return event.card&&event.card.name=='sha'&&get.distance(event.player,player,'attack')>1&&
event.parent.name!='_lianhuan'&&event.parent.name!='_lianhuan2';
return event.getParent().name=='sha'&&!event.player.inRange(player);
},
content:function(){
trigger.num++;
@ -7382,7 +7444,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.awakenSkill('jiefan');
player.storage.jiefan=true;
event.players=game.filterPlayer(function(current){
return current!=target&&get.distance(current,target,'attack')<=1;
return current!=target&&current.inRange(target);
});
event.players.sortBySeat(target);
"step 1"
@ -7420,7 +7482,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
var num=0,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i]!=target&&get.distance(players[i],target,'attack')<=1){
if(players[i]!=target&&players[i].inRange(target)){
num++;
}
}
@ -8071,15 +8133,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
"step 0"
player.draw(trigger.num);
event.count=trigger.num;
"step 1"
event.count--;
player.draw();
"step 2"
if(player.countCards('he')){
player.chooseCard('将'+get.cnNumber(trigger.num)+'张手牌置于武将牌上作为“权”',trigger.num,true);
player.chooseCard('将一张手牌置于武将牌上作为“权”',true);
}
else{
event.finish();
event.goto(4);
}
"step 2"
"step 3"
if(result.cards&&result.cards.length){
player.lose(result.cards,ui.special,'toStorage');
player.storage.quanji=player.storage.quanji.concat(result.cards);
@ -8087,6 +8152,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.markSkill('quanji');
game.log(player,'将',result.cards,'置于武将牌上作为“权”');
}
"step 4"
if(event.count>0){
player.chooseBool(get.prompt2('quanji')).set('frequentSkill','quanji');
}
else event.finish();
"step 5"
if(result.bool){
player.logSkill('quanji');
event.goto(1);
}
},
intro:{
content:'cards',
@ -8149,18 +8224,43 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
usable:1,
audio:2,
filterTarget:true,
filter:function(event,player){
return player.storage.quanji.length>0;
return player.storage.quanji&&player.storage.quanji.length>0;
},
content:function(){
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('排异',player.storage.quanji,'hidden')
},
backup:function(links,player){
return {
audio:'paiyi',
filterTarget:true,
filterCard:function(){return false},
selectCard:-1,
card:links[0],
delay:0,
content:lib.skill.paiyi.contentx,
ai:{
order:10,
result:{
target:function(player,target){
if(player!=target) return 0;
if(player.countCards('h')+2<=player.hp+player.storage.quanji.length) return 1;
return 0;
}
},
},
}
},
prompt:function(){return '请选择〖排异〗的目标'},
},
contentx:function(){
"step 0"
player.chooseCardButton(player.storage.quanji,true);
"step 1"
var card=result.links[0];
var card=lib.skill.paiyi_backup.card;
game.cardsDiscard(card);
player.$throw(card);
player.storage.quanji.remove(card);
game.log(card,'进入了弃牌堆');
if(!player.storage.quanji.length){
player.unmarkSkill('quanji');
}
@ -8168,6 +8268,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.markSkill('quanji');
}
player.syncStorage('quanji');
game.delayx();
"step 2"
target.draw(2);
"step 3"
@ -8178,11 +8279,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
order:1,
result:{
target:function(player,target){
if(player!=target) return 0;
if(player.countCards('h')+2<=player.hp+player.storage.quanji.length) return 1;
return 0;
}
player:1,
}
}
},
@ -8214,7 +8311,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
target.chooseTarget([1,event.num],'令'+get.translation(player)+'回复'+
event.num+'点体力,或对攻击范围内的'+event.num+'名角色造成一点伤害',function(card,player,target2){
return get.distance(_status.event.player,target2,'attack')<=1;
return _status.event.player.inRange(target2);
}).set('ai',function(target2){
var target=_status.event.player;
var player=_status.event.getParent().player;
@ -8719,14 +8816,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return player!=target;
}
else{
return lib.filter.filterTarget({name:'sha'},ui.selected.targets[0],target);
return ui.selected.targets[0].inRange(target);
}
},
content:function(){
"step 0"
targets[0].gain(cards,player);
"step 1"
targets[0].chooseControl('draw_card','出杀',function(){
if(!lib.filter.filterTarget({name:'sha',isCard:true},targets[0],targets[1])) event._result={control:'draw_card'};
else targets[0].chooseControl('draw_card','出杀',function(){
var player=_status.event.player;
var target=_status.event.target;
if(get.effect(_status.event.target,{name:'sha'},player,player)>0){
@ -8739,7 +8837,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
targets[0].draw();
}
else{
targets[0].useCard({name:'sha'},targets[1]);
targets[0].useCard({name:'sha',isCard:true},targets[1]);
}
},
ai:{
@ -9339,9 +9437,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
if(_status.event.getParent(2).type=='dying'){
event.dying=player;
event.type='dying';
}
player.turnOver();
player.useCard({name:'jiu'},player);
player.useCard({name:'jiu',isCard:true},player);
},
ai:{
save:true,
@ -9422,7 +9521,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
jiushi3:{
audio:2,
trigger:{player:'damageAfter'},
trigger:{player:'damageEnd'},
check:function(event,player){
return player.isTurnedOver();
},
@ -9525,7 +9624,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
num=1;
}
if(num<=2&&!target.countCards('he')) return false;
return get.distance(player,target,'attack')<=1;
return player.inRange(target)<=1;
},
content:function(){
'step 0'
@ -9720,7 +9819,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
effect:{
target:function(card,player,target,current){
if(get.type(card)=='equip') return [1,3];
if(get.type(card)=='equip'&&!get.cardtag(card,'gifts')) return [1,3];
}
},
reverseEquip:true,
@ -10405,7 +10504,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xiansi2:{
enable:'chooseToUse',
audio:2,
viewAs:{name:'sha'},
viewAs:{name:'sha',isCard:true},
filter:function(event,player){
return game.hasPlayer(function(current){
return current.hasSkill('xiansi')&&current.storage.xiansi.length>1&&event.filterTarget({name:'sha'},player,current);
@ -10602,6 +10701,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shibei2:{},
jianying:{
audio:2,
locked:false,
mod:{
aiOrder:function(player,card,num){
if(typeof card=='object'&&player.isPhaseUsing()){
var evt=player.getLastUsed();
if(evt&&evt.card&&(get.suit(evt.card)&&get.suit(evt.card)==get.suit(card)||evt.card.number&&evt.card.number==card.number)){
return num+10;
}
}
},
},
trigger:{player:'useCard'},
frequent:true,
filter:function(event,player){
@ -10973,7 +11083,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tianbian:'天辩',
tianbian_info:'你拼点时可以改为用牌堆顶的一张牌进行拼点当你拼点的牌亮出后若此牌花色为红桃则此牌的点数视为K。',
funan:'复难',
funan_info:'其他角色使用或打出牌响应你使用的牌时,你可令其获得你使用的牌(其本回合不能使用或打出这张牌),然后你获得其使用或打出的牌',
funan_info:'其他角色使用或打出牌响应你使用的牌时,你可令其获得你使用的牌(其本回合不能使用或打出这些牌),然后你获得其使用或打出的牌。',
jiexun:'诫训',
jiexun_info:'结束阶段你可令一名其他角色摸等同于场上方块牌数的牌然后弃置X张牌X为此前该技能发动过的次数。若有角色因此法弃置了所有牌则你失去〖诫训〗然后你发动〖复难〗时无须令对方获得你使用的牌',
shouxi:'守玺',
@ -10995,7 +11105,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhongjian_bg:'鉴',
zhongjian3:'忠鉴',
zhongjian3_bg:'鉴',
zhongjian_info:'出牌阶段限一次你可以展示一张手牌然后展示手牌数大于体力值的一名其他角色X张手牌X为其手牌数和体力值之差)。若以此法展示的牌与你展示的牌:有颜色相同的,你摸一张牌或弃置其一张牌;有点数相同的,本回合此技能改为“出牌阶段限两次”;均不同,你的手牌上限-1',
zhongjian_info:'出牌阶段限一次你可以展示一张手牌然后展示手牌数大于体力值的一名其他角色X张手牌X为其手牌数和体力值之差且至少为1)。若以此法展示的牌与你展示的牌:有颜色相同的,你摸一张牌或弃置其一张牌;有点数相同的,本回合此技能改为“出牌阶段限两次”;均不同,你的手牌上限-1',
caishi:'才识',
caishi_info:'摸牌阶段开始时你可以选择一项1.手牌上限+1然后本回合你的牌不能对其他角色使用2.回复1点体力然后本回合你的牌不能对自己使用',
xincaishi:'才识',
@ -11278,6 +11388,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
quanji:'权计',
zili:'自立',
paiyi:'排异',
paiyi_backup:'排异',
sanyao:'散谣',
zhiman:'制蛮',
qianxi:'潜袭',

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'1.9.98',
'1.9.98.1',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -536,6 +536,14 @@ window.noname_asset_list=[
'audio/die/zhugezhan.mp3',
'audio/die/zhuling.mp3',
'audio/die/nashime.mp3',
'audio/die/ol_liushan.mp3',
'audio/die/ol_yuanshao.mp3',
'audio/die/re_sunce.mp3',
'audio/die/tw_beimihu.mp3',
'audio/die/yuantanyuanshang.mp3',
'audio/die/shenpei.mp3',
'audio/skill/anguo1.mp3',
'audio/skill/anguo2.mp3',
'audio/skill/anjian1.mp3',
@ -2287,6 +2295,46 @@ window.noname_asset_list=[
'audio/skill/zuoding1.mp3',
'audio/skill/zuoding2.mp3',
'audio/skill/baijia_tw_beimihu1.mp3',
'audio/skill/baijia_tw_beimihu2.mp3',
'audio/skill/bmcanshi_tw_beimihu1.mp3',
'audio/skill/bmcanshi_tw_beimihu2.mp3',
'audio/skill/chijie.mp3',
'audio/skill/guju_tw_beimihu1.mp3',
'audio/skill/guju_tw_beimihu2.mp3',
'audio/skill/jiang_re_sunce1.mp3',
'audio/skill/jiang_re_sunce2.mp3',
'audio/skill/jijiang1_ol_liushan1.mp3',
'audio/skill/jijiang1_ol_liushan2.mp3',
'audio/skill/liezhi1.mp3',
'audio/skill/liezhi2.mp3',
'audio/skill/neifa1.mp3',
'audio/skill/neifa2.mp3',
'audio/skill/olfangquan1.mp3',
'audio/skill/olfangquan2.mp3',
'audio/skill/olhunzi1.mp3',
'audio/skill/olhunzi2.mp3',
'audio/skill/olluanji1.mp3',
'audio/skill/olluanji2.mp3',
'audio/skill/olruoyu1.mp3',
'audio/skill/olruoyu2.mp3',
'audio/skill/olxueyi1.mp3',
'audio/skill/olxueyi2.mp3',
'audio/skill/olzhiba1.mp3',
'audio/skill/olzhiba2.mp3',
'audio/skill/renshe1.mp3',
'audio/skill/renshe2.mp3',
'audio/skill/shouye1.mp3',
'audio/skill/shouye2.mp3',
'audio/skill/sishu1.mp3',
'audio/skill/sishu2.mp3',
'audio/skill/waishi1.mp3',
'audio/skill/waishi2.mp3',
'audio/skill/xiangle_ol_liushan1.mp3',
'audio/skill/xiangle_ol_liushan2.mp3',
'audio/skill/zongkui_tw_beimihu1.mp3',
'audio/skill/zongkui_tw_beimihu2.mp3',
'font/huangcao.ttf',
'font/shousha.ttf',
'font/xiaozhuan.ttf',
@ -2316,7 +2364,7 @@ window.noname_asset_list=[
'image/background/zhanyun_bg.jpg',
'image/background/xinsha_bg.jpg',
'image/card/mingguangkai.png',
'image/card/minguangkai.png',
'image/card/db_atk1.jpg',
'image/card/db_atk2.jpg',
'image/card/db_def1.jpg',
@ -2662,6 +2710,18 @@ window.noname_asset_list=[
'image/card/ziyangdan.png',
'image/card/zong.png',
'image/card/caochuan.png',
'image/card/jiejia.png',
'image/card/jinhe.png',
'image/card/kaihua.png',
'image/card/numa.png',
'image/card/nvzhuang.png',
'image/card/wufengjian.png',
'image/card/yajiaoqiang.png',
'image/card/yexingyi.png',
'image/card/yinfengjia.png',
'image/card/zheji.png',
'image/card/zhulu_card.png',
'image/card/qiaosi_card1.png',
'image/card/qiaosi_card2.png',
'image/card/qiaosi_card3.png',
@ -2744,9 +2804,11 @@ window.noname_asset_list=[
'image/character/key_yukine.jpg',
'image/character/old_guanqiujian.jpg',
'image/character/old_huangfusong.jpg',
'image/character/old_liushan.jpg',
'image/character/old_yuanshao.jpg',
'image/character/ol_liushan.jpg',
'image/character/ol_yuanshao.jpg',
'image/character/re_sunce.jpg',
'image/character/ol_maliang.jpg',
'image/character/ns_zhangwei.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -3423,7 +3423,7 @@
},
import_music:{
name:'<div style="white-space:nowrap;width:calc(100% - 5px)">'+
'<input type="file" style="width:calc(100% - 40px)" accept="audio/ogg,audio/mpeg">'+
'<input type="file" style="width:calc(100% - 40px)" accept="audio/*">'+
'<button style="width:40px">确定</button></div>',
clear:true,
},
@ -4083,8 +4083,18 @@
map.connect_double_nei.hide();
map.connect_zhong_card.show();
map.connect_special_identity.hide();
map.connect_double_character.show();
}
else if(config.connect_identity_mode=='purple'){
map.connect_player_number.hide();
map.connect_enhance_zhu.hide();
map.connect_double_nei.hide();
map.connect_zhong_card.hide();
map.connect_special_identity.hide();
map.connect_double_character.hide();
}
else{
map.connect_double_character.show();
map.connect_player_number.show();
map.connect_enhance_zhu.show();
if(config.connect_player_number!='2'){
@ -4108,11 +4118,12 @@
init:'normal',
item:{
normal:'标准',
zhong:'明忠'
zhong:'明忠',
purple:'3v3v2',
},
restart:true,
frequent:true,
intro:'明忠模式详见帮助'
intro:'明忠模式和3v3v2模式详见帮助'
},
connect_player_number:{
name:'游戏人数',
@ -4194,6 +4205,40 @@
map.ban_identity3.hide();
map.zhong_card.show();
map.special_identity.hide();
map.choose_group.show();
map.change_choice.show();
map.auto_mark_identity.show();
map.double_character.show();
map.free_choose.show();
map.change_identity.show();
if(config.double_character){
map.double_hp.show();
}
else{
map.double_hp.hide();
}
}
else if(config.identity_mode=='purple'){
map.player_number.hide();
map.enhance_zhu.hide();
map.double_nei.hide();
map.auto_identity.hide();
map.choice_zhu.hide();
map.choice_zhong.hide();
map.choice_nei.hide();
map.choice_fan.hide();
map.ban_identity.hide();
map.ban_identity2.hide();
map.ban_identity3.hide();
map.zhong_card.hide();
map.special_identity.hide();
map.double_character.hide();
map.double_hp.hide();
map.choose_group.hide();
map.auto_mark_identity.hide();
map.change_choice.hide();
map.free_choose.hide();
map.change_identity.hide();
}
else{
map.player_number.show();
@ -4223,26 +4268,33 @@
map.ban_identity3.show();
}
map.zhong_card.hide();
map.choose_group.show();
map.auto_mark_identity.show();
map.change_choice.show();
map.free_choose.show();
map.change_identity.show();
if(config.player_number=='8'){
map.special_identity.show();
}
else{
map.special_identity.hide();
}
}
map.double_character.show();
if(config.double_character){
map.double_hp.show();
}
else{
map.double_hp.hide();
}
}
},
identity_mode:{
name:'游戏模式',
init:'normal',
item:{
normal:'标准',
zhong:'明忠'
zhong:'明忠',
purple:'3v3v2',
},
restart:true,
frequent:true,
@ -6551,7 +6603,7 @@
if(!pos) pos='o';
var list=[];
for(var i=0;i<this.length;i++){
if(get.position(this[i],true)==pos) list.push(this[i]);
if(pos.indexOf(get.position(this[i],true))!=-1) list.push(this[i]);
}
return list;
};
@ -6792,6 +6844,10 @@
if(evt.card){
str+='\ncard: ' + evt.card.name;
}
str+='\n-------------';
str+='\n'+line;
str+='\n'+column;
str+='\n'+err.stack;
alert(str);
window.ea=Array.from(arguments);
window.em=msg;
@ -7308,6 +7364,7 @@
},onerror);
};
game.writeFile=function(data,path,name,callback){
game.ensureDirectory(path,function(){});
if(Object.prototype.toString.call(data)=='[object File]'){
var fileReader = new FileReader();
fileReader.onload = function(e){
@ -7495,6 +7552,7 @@
});
};
game.writeFile=function(data,path,name,callback){
game.ensureDirectory(path,function(){});
if(Object.prototype.toString.call(data)=='[object File]'){
var fileReader = new FileReader();
fileReader.onload = function(e){
@ -9683,6 +9741,7 @@
},
chooseUseTarget:function(){
'step 0'
if(get.is.object(card)&&!event.viewAs) card.isCard=true;
if(cards&&get.itemtype(card)!='card'){
card=get.copy(card);
card.cards=cards.slice(0);
@ -9943,7 +10002,7 @@
for(var i=0;i<cards.length;i++){
cards[i].goto(ui.ordering);
}
var evt=event.getParent();
var evt=event.relatedEvent||event.getParent();
if(!evt.orderingCards) evt.orderingCards=[];
if(!event.noOrdering&&!event.cardsOrdered){
event.cardsOrdered=true;
@ -10130,7 +10189,7 @@
game.log();
game.log(player,'的回合开始');
player._noVibrate=true;
if(get.config('identity_mode')!='zhong'&&!_status.connectMode){
if(get.config('identity_mode')!='zhong'&&get.config('identity_mode')!='purple'&&!_status.connectMode){
var num;
switch(get.config('auto_identity')){
case 'one':num=1;break;
@ -11641,10 +11700,10 @@
}
if(!game.online){
if(typeof event.delay=='boolean'){
player.discard(event.result.cards).set('delay',event.delay);
event.done=player.discard(event.result.cards).set('delay',event.delay);
}
else{
player.discard(event.result.cards);
event.done=player.discard(event.result.cards);
}
}
if(event.dialog&&event.dialog.close) event.dialog.close();
@ -12945,6 +13004,7 @@
}
if(!event.chooseonly){
var next=target.discard(event.cards,'notBySelf');
event.done=next;
if(event.delay===false){
next.set('delay',false);
}
@ -13092,9 +13152,11 @@
if(!event.chooseonly){
if(event.delay!==false){
var next=player.gain(event.cards,target,event.visibleMove?'give':'giveAuto','bySelf');
event.done=next;
}
else{
var next=player.gain(event.cards,target,'bySelf');
event.done=next;
target[event.visibleMove?'$give':'$giveAuto'](cards,player);
if(event.visibleMove) next.visible=true;
}
@ -13500,7 +13562,7 @@
str+='</span>'
}
str+='使用了';
if(cards.length&&(cards.length>1||cards[0]!=card)){
if(cards.length&&!card.isCard){
if(event.addedTarget){
game.log(player,str,card,'',cards,',指向',event.addedTargets,'');
}
@ -14042,7 +14104,7 @@
discard:function(){
"step 0"
game.log(player,'弃置了',cards);
player.lose(cards,event.position,'visible').type='discard';
event.done=player.lose(cards,event.position,'visible').type='discard';
"step 1"
event.trigger('discard');
},
@ -14450,7 +14512,7 @@
event.js=js;
"step 2"
if(num<cards.length){
if(cards[num].original=='e'){
if(event.es.contains(cards[num])){
event.loseEquip=true;
player.removeEquipTrigger(cards[num]);
var info=get.info(cards[num]);
@ -15261,6 +15323,36 @@
},
player:{
//新函数
hasUsableCard:function(name){
var player=this;
if(player.countCards('h',name)) return true;
var skills=player.getSkills(true).concat(lib.skill.global);
game.expandSkills(skills);
for(var i=0;i<skills.length;i++){
var ifo=get.info(skills[i]);
if(ifo.viewAs&&ifo.viewAs.name==name){
if(!ifo.viewAsFilter||ifo.viewAsFilter(player)){
return true;
}
}
else{
var hiddenCard=get.info(skills[i]).hiddenCard;
if(typeof hiddenCard=='function'&&hiddenCard(player,name)){
return true;
}
}
}
},
inRange:function(target){
var player=this;
if(player==target||player.hasSkill('undist')||target.hasSkill('undist')) return false;
var range2=player.getAttackRange();
var distance=get.distance(player,target);
return distance<=range2;
},
inRangeOf:function(source){
return source.inRange(this);
},
getDamagedHp:function(){
return this.maxHp-Math.max(0,this.hp);
},
@ -17924,7 +18016,7 @@
next.addedTarget=next.addedTargets[0];
}
}
if(get.itemtype(next.card)!='card'&&next.cards.length){
if(!next.card.isCard&&next.cards.length){
next.card.cards=next.cards.slice(0);
}
}
@ -18652,6 +18744,7 @@
next.draw=true;
}
next.setContent(lib.element.content.equip);
if(get.is.object(next.card)&&next.card.cards) next.card=next.card.cards[0];
return next;
},
addJudge:function(card,cards){
@ -19144,7 +19237,7 @@
if(info&&info.intro&&info.intro.onunmark){
if(info.intro.onunmark=='throw'){
if(get.itemtype(this.storage[name])=='cards'){
this.$throw(this.storage[name]);
this.$throw(this.storage[name],1000);
game.cardsDiscard(this.storage[name]);
game.log(this.storage[name],'进入了弃牌堆');
this.storage[name].length=0;
@ -20118,6 +20211,23 @@
var targets;
var mode=get.mode();
if(mode=='identity'){
if(_status.mode=='purple'){
switch(player.identity){
case 'bZhu':case 'bZhong':case 'rNei':targets=game.filterPlayer(function(target){
if(func&&!func(target)) return false;
return ['rZhu','rZhong','bNei'].contains(target.identity);
});break;
case 'rZhu':case 'rZhong':case 'bNei':targets=game.filterPlayer(function(target){
if(func&&!func(target)) return false;
return ['bZhu','bZhong','rNei'].contains(target.identity);
});break;
case 'rYe':case 'bYe':targets=game.filterPlayer(function(target){
if(func&&!func(target)) return false;
return !['rYe','bYe'].contains(target.identity);
});break;
}
}
else{
var num=get.population('fan');
switch(player.identity){
case 'zhu':case 'zhong':case 'mingzhong':targets=game.filterPlayer(function(target){
@ -20137,6 +20247,7 @@
});break;
}
}
}
else if(mode=='guozhan'){
if(player.identity=='ye'){
targets=game.filterPlayer(function(target){
@ -20177,6 +20288,23 @@
self=true;
}
if(mode=='identity'){
if(_status.mode=='purple'){
switch(player.identity){
case 'rZhu':case 'rZhong':case 'bNei':targets=game.filterPlayer(function(target){
if(func&&!func(target)) return false;
return ['rZhu','rZhong','bNei'].contains(target.identity);
});break;
case 'bZhu':case 'bZhong':case 'rNei':targets=game.filterPlayer(function(target){
if(func&&!func(target)) return false;
return ['bZhu','bZhong','rNei'].contains(target.identity);
});break;
case 'rYe':case 'bYe':targets=game.filterPlayer(function(target){
if(func&&!func(target)) return false;
return ['rYe','bYe'].contains(target.identity);
});break;
}
}
else{
switch(player.identity){
case 'zhu':case 'zhong':case 'mingzhong':targets=game.filterPlayer(function(target){
if(func&&!func(target)) return false;
@ -20189,6 +20317,7 @@
});break;
}
}
}
else if(mode=='guozhan'){
if(player.identity=='ye'){
targets=[];
@ -20500,6 +20629,9 @@
if(mode!='identity'){
if(player&&this.side!=player.side) return false;
}
if(_status.mode=='purple'){
if(player&&this.identity.slice(0,1)!=player.identity.slice(0,1)) return false;
}
if(this.isZhu==true) return true;
for(var i in this.storage){
if(i.indexOf('zhuSkill_')==0&&this.storage[i].contains(skill)) return true;
@ -23658,7 +23790,7 @@
if(info[4].contains('hiddenboss')) return true;
if(info[4].contains('minskin')) return true;
if(info[4].contains('unseen')) return true;
if(info[4].contains('forbidai')&&!_status.event.isMine()) return true;
if(info[4].contains('forbidai')&&(!_status.event.isMine||!_status.event.isMine())) return true;
if(lib.characterFilter[i]&&!lib.characterFilter[i](get.mode())) return true;
}
return false;
@ -23672,11 +23804,11 @@
return true;
},
cardEnabled:function(card,player,event){
card=get.autoViewAs(card,null,player);
if(player==undefined) player=_status.event.player;
if(!player) return false;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
card=get.autoViewAs(card,null,player);
if(event==='forceEnable'){
var mod=game.checkMod(card,player,'unchanged','cardEnabled',player);
if(mod!='unchanged') return mod;
@ -23812,13 +23944,29 @@
if(range==undefined&&outrange==undefined) return true;
for(var i in range){
if(i=='attack'){
var range2=player.getAttackRange();
if(range2<=0) return false;
var distance=get.distance(player,target)+extra;
if(range[i]<=distance-range2) return false;
}
else{
var distance=get.distance(player,target,i)+extra;
if(range[i]<distance) return false;
}
}
for(var i in outrange){
if(i=='attack'){
var range2=player.getAttackRange();
if(range2<=0) return false;
var distance=get.distance(player,target)+extra;
if(outrange[i]>distance-range2) return false;
}
else{
var distance=get.distance(player,target,i)+extra;
if(outrange[i]>distance) return false;
}
}
return true;
},
filterTarget:function(card,player,target){
@ -24009,10 +24157,10 @@
charlotte:true,
mod:{
targetEnabled:function(card){
if(card.name=='tao'&&get.itemtype(card)=='card') return false;
if(card.name=='tao'&&(card.isCard&&card.cardid||get.itemtype(card)=='card')) return false;
},
cardSavable:function(card){
if(card.name=='tao'&&get.itemtype(card)=='card') return false;
if(card.name=='tao'&&(card.isCard&&card.cardid||get.itemtype(card)=='card')) return false;
},
},
group:["aozhan_sha","aozhan_shan"],
@ -31759,7 +31907,7 @@
if(method=='raw') return equipValue;
return equipValue-value;
}
card.ai.result.target=(function(name){
if(!card.ai.result.target) card.ai.result.target=(function(name){
return (function(player,target){
return get.equipResult(player,target,name);
});
@ -39537,7 +39685,7 @@
node.link=page;
page.classList.add('menu-sym');
menuUpdates.push(function(){
if(_status.connectMode&&!lib.config.debug){
if(false){
node.classList.add('off');
if(node.classList.contains('active')){
node.classList.remove('active');
@ -44873,7 +45021,7 @@
}
else{
if(lib.configOL.mode=='versus'||lib.configOL.mode=='doudizhu'||lib.configOL.mode=='single') return;
if(lib.configOL.mode=='identity'&&lib.configOL.identity_mode=='zhong') return;
if(lib.configOL.mode=='identity'&&(lib.configOL.identity_mode=='zhong'||lib.configOL.identity_mode=='purple')) return;
if(!this.classList.contains('unselectable2')&&lib.configOL.number<=2) return;
this.classList.toggle('unselectable2')
if(this.classList.contains('unselectable2')){
@ -46415,7 +46563,7 @@
},
is:{
converted:function(event){
return !(event.cards&&event.card&&event.cards.length==1&&event.cards[0]==event.card);
return !(event.card&&event.card.isCard);
},
safari:function(){
var ua=navigator.userAgent.toLowerCase();
@ -46687,14 +46835,17 @@
}
}
else{
if(card.name!=get.name(card)||card.nature!=get.nature(card)||card.suit!=get.suit(card)){
if(card.isCard||get.itemtype(card)=='card'){
var next={
name:get.name(card),
suit:get.suit(card),
number:card.number,
nature:get.nature(card),
isCard:true,
cardid:card.cardid,
};
if(get.itemtype(cards)=='cards'&&!card.cards) next.cards=cards.slice(0);
else next.cards=[card];
return next;
}
else if(get.is.object(card)&&get.itemtype(cards)=='cards'&&!card.cards){
@ -47116,7 +47267,6 @@
},
modetrans:function(config,server){
if(config.mode=='doudizhu') return '欢乐斗地主';
if(config.mode=='stone') return '炉石传说';
if(config.mode=='versus'){
switch(config.versus_mode){
case '1v1':return '单人对决';
@ -47132,8 +47282,11 @@
case 'dianjiang':return '点将单挑';
}
}
else if(config.mode=='identity'&&config.identity_mode=='zhong'){
return '忠胆英杰';
else if(config.mode=='identity'){
switch(config.identity_mode){
case 'purple':return '三对三对二';
case 'zhong':return '忠胆英杰';
}
}
else{
if(server){
@ -48149,7 +48302,7 @@
str2='雷'+str2;
}
}
if(get.itemtype(str)=='card'){
if(get.itemtype(str)=='card'||str.isCard){
if(_status.cardtag&&str.cardid){
var tagstr='';
for(var i in _status.cardtag){
@ -48484,6 +48637,12 @@
}
return num;
},
cardtag:function(item,tag){
if(item.cardid&&_status.cardtag&&_status.cardtag[tag]&&_status.cardtag[tag].contains(item.cardid)){
return true;
}
return false;
},
tag:function(item,tag,item2){
var result;
if(get.info(item)&&get.info(item).ai&&get.info(item).ai.tag){
@ -49935,15 +50094,22 @@
return 1;
},
order:function(item){
var aii=get.info(item).ai;
var info=get.info(item);
if(!info) return -1;
var aii=info.ai;
var order;
if(aii&&aii.order) order=aii.order;
else if(aii&&aii.basic) order=aii.basic.order;
if(order==undefined) return -1;
var num=order;
if(typeof(order)=='function'){
return order(item,_status.event.player);
num=order(item,_status.event.player);
}
return order;
if(typeof item=='object'&&_status.event.player){
var player=_status.event.player;
num=game.checkMod(player,item,num,'aiOrder',player);
}
return num;
},
result:function(item,skill){
var result;

View File

@ -25,6 +25,7 @@ window.noname_package={
extra:'军争',
sp:'SP',
guozhan:'国战',
zhulu:'逐鹿天下',
zhenfa:'阵法',
yunchou:'运筹帷幄',
swd:'轩辕剑',
@ -46,17 +47,18 @@ window.noname_package={
versus:'对决',
connect:'联机',
boss:'挑战',
doudizhu:'斗地主',
single:'单挑',
chess:'战棋',
tafang:'塔防',
stone:'炉石',
brawl:'乱斗',
doudizhu:'斗地主',
single:'单挑',
},
submode:{
identity:{
normal:'身份模式',
zhong:'忠胆英杰'
zhong:'忠胆英杰',
purple:'3v3v2',
},
guozhan:{
normal:'国战模式',
@ -87,8 +89,6 @@ window.noname_package={
key_bg:'键社',
zhulin_bg:'竹林',
shengshi_bg:'盛世',
noname_bg:'璀璨',
wuming_bg:'无名',
taoyuan_bg:'桃园',
zhanhuo_bg:'战火',
huangtian_bg:'黄天',
@ -102,6 +102,8 @@ window.noname_package={
wangshi_bg:'往事',
xiongxin_bg:'雄心',
xinsha_bg:'新杀',
noname_bg:'璀璨',
wuming_bg:'无名',
},
music:{
music_phliosophy:'Philosophy of ours',

View File

@ -1,20 +1,21 @@
window.noname_update={
version:'1.9.98',
update:'1.9.97.9',
version:'1.9.98.2',
update:'1.9.98.1',
changeLog:[
'新界孙策,界刘禅,界袁绍,新皇甫嵩,新毌丘俭',
'BUG修复',
'3v3v2模式',
'逐鹿中原卡牌包',
],
files:[
'card/extra.js',
//'card/huanlekapai.js',
'card/huanlekapai.js',
//'card/sp.js',
'card/standard.js',
//'card/swd.js',
'card/mtg.js',
//'card/mtg.js',
'card/guozhan.js',
//'card/gwent.js',
//'character/diy.js',
'card/zhulu.js',
'character/diy.js',
'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
@ -33,21 +34,21 @@ window.noname_update={
'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
//'layout/default/layout.css',
'layout/default/layout.css',
'mode/identity.js',
'mode/doudizhu.js',
//'mode/doudizhu.js',
'mode/guozhan.js',
'mode/chess.js',
'mode/tafang.js',
//'mode/chess.js',
//'mode/tafang.js',
//'mode/single.js',
//'mode/stone.js',
'mode/brawl.js',
'mode/versus.js',
//'mode/versus.js',
'mode/boss.js',
'game/game.js',
//'game/NoSleep.js',
//'game/config.js',
//'game/package.js',
'game/package.js',
//'game/asset.js',
//'game/source.js',
]

BIN
image/card/caochuan.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
image/card/jiejia.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
image/card/jinhe.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
image/card/kaihua.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
image/card/numa.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 KiB

BIN
image/card/nvzhuang.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
image/card/wufengjian.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

BIN
image/card/yajiaoqiang.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

BIN
image/card/yexingyi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
image/card/yinfengjia.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

BIN
image/card/zheji.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

BIN
image/card/zhulu_card.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 179 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 168 KiB

View File

@ -3709,6 +3709,10 @@ span[data-nature='firemm'] {
}
.player .identity[data-color="mingzhong"],
.player .identity[data-color="rZhu"],
.player .identity[data-color="rZhong"],
.player .identity[data-color="rNei"],
.player .identity[data-color="cai2"],
div[data-nature='orange'],
span[data-nature='orange'] {
text-shadow: rgba(255, 120, 0,1) 0 0 2px,rgba(255, 120, 0,1) 0 0 5px,rgba(255, 120, 0,1) 0 0 10px,
@ -3769,6 +3773,8 @@ span[data-nature='keymm'] {
.player .identity[data-color="nei"],
.player .identity[data-color="ye"],
.player .identity[data-color="rYe"],
.player .identity[data-color="bYe"],
div[data-nature='thunder'],
span[data-nature='thunder'] {
text-shadow: rgba(100, 74, 139,1) 0 0 2px,rgba(100, 74, 139,1) 0 0 5px,rgba(100, 74, 139,1) 0 0 10px,
@ -3804,6 +3810,9 @@ span[data-nature='woodmm'] {
}
.player .identity[data-color="cai"],
.player .identity[data-color="bZhu"],
.player .identity[data-color="bZhong"],
.player .identity[data-color="bNei"],
.player .identity[data-color="wei"],
.player .identity[data-color="falsezhu"],
.player .identity[data-color="friend"],

View File

@ -7482,7 +7482,19 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
player.chooseTarget(get.prompt('tashui'),function(card,player,target){
return player!=target;
}).ai=function(target){
if(target.isTurnedOver()) return -1;
// if(target.isTurnedOver()) return -1;
var player=_status.event.player;
if(get.attitude(_status.event.player,target)==0) return 0;
if(get.attitude(_status.event.player,target)>0){
if(target.classList.contains('turnedover')) return 3;
if(target.hasSkillTag('noturn')) return 1;
return -1;
}
else{
if(target.hasSkillTag('noturn')) return 0;
if(target.classList.contains('turnedover')) return -1;
return 5-target.getDamagedHp();
}
return 1;
}
"step 1"

View File

@ -2115,14 +2115,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
player1.style.left='20px';
player1.style.top='20px';
player1.style.transform='scale(0.9)';
player1.node.count.innerHTML='2';
player1.node.count.dataset.condition='mid';
player1.node.count.remove();
player2.style.left='auto';
player2.style.right='20px';
player2.style.top='20px';
player2.style.transform='scale(0.9)';
player2.node.count.innerHTML='2';
player2.node.count.dataset.condition='mid';
player2.node.count.remove();
this.appendChild(player1);
this.appendChild(player2);
this.player1=player1;
@ -2247,7 +2245,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var info1=lib.character[name1];
var info2=lib.character[name2];
if(!info1||!info2) return;
return info1[0]==info2[0]||get.infoMaxHp(info1[2])==get.infoMaxHp(info2[2])||info1[3].length==info2[3].length;
var num=0;
if(info1[0]==info2[0]) num++;
if(get.infoMaxHp(info1[2])==get.infoMaxHp(info2[2])) num++;
if(info1[3].length==info2[3].length) num++;
return num>1;
};
var list2=list.randomGets(8);
var next=game.me.chooseButton(2,true,['请选择您的武将牌',[list2,'character']]);

View File

@ -1121,7 +1121,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
filter2:function(event,player){
if(!get.zhu(player,'jianan')) return false;
if(!player.countCards('he')) return false;
if(get.is.jun(player)&&player.isUnseen(1)) return false;
return !player.isUnseen();
},
direct:true,
@ -1144,15 +1143,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(!skills.length) event.finish();
else{
event.skills=skills;
var next=player.chooseToDiscard();
var next=player.chooseToDiscard('he');
var str='';
for(var i=0;i<skills.length;i++){
str+='、【';
str+=get.translation(skills[i]);
str+='】';
}
next.prompt='是否发动【五子良将纛】?'
next.prompt2=get.translation('弃置一张牌并暗置一张武将牌,获得以下技能中的一个直到下回合开始:'+str.slice(1));
next.set('prompt','是否发动【五子良将纛】?')
next.set('prompt2',get.translation('弃置一张牌并暗置一张武将牌,获得以下技能中的一个直到下回合开始:'+str.slice(1)));
next.logSkill='g_jianan';
next.skills=skills;
next.ai=function(card){
@ -1176,7 +1175,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var list=["主将","副将"];
if(player.isUnseen(0)||get.is.jun(player)) list.remove("主将");
if(player.isUnseen(1)) list.remove("副将");
if(!list.length) event.finish();
if(!list.length) event.goto(3);
else if(list.length<2) event._result={control:list[0]};
else{
player.chooseControl(list).set('ai',function(){
@ -1189,6 +1188,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else{
var num=result.control=='主将'?0:1;
player.hideCharacter(num);
}
'step 3'
player.chooseControl(event.skills).set('ai',function(){
var skills=event.skills;
if(skills.contains('qiaobian')&&player.countCards('h')>3) return 'qiaobian';
@ -1197,9 +1198,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
})) return 'gzjieyue';
if(skills.contains('new_retuxi')) return 'new_retuxi';
return skills.randomGet();
}).prompt="选择获得其中的一个技能直到下回合开始";
}
'step 3'
}).set("prompt","选择获得其中的一个技能直到君主的回合开始");
'step 4'
var link=result.control;
player.addTempSkill(link,"jiananUpdate");
player.addTempSkill("jianan_eff","jiananUpdate");
@ -7006,7 +7006,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
tongshimingzhi:'同时明置',
mode_guozhan_character_config:'国战武将',
_zhenfazhaohuan:'阵法召唤',
_zhenfazhaohuan_info:'由拥有阵法技的角色发起,满足此阵法技条件的未确定势力角色均可按逆时针顺序依次明置其一张武将牌(响应阵法召唤),以发挥阵法技的效果',
_zhenfazhaohuan_info:'由拥有阵法技的角色发起,满足此阵法技条件的未确定势力角色均可按逆时针顺序依次明置其一张武将牌(响应阵法召唤),以发挥阵法技的效果',
junling:'军令',
@ -7038,35 +7038,35 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gzfengying_info:'限定技,你可以将所有手牌当【挟天子以令诸侯】使用(无视大势力限制),然后所有与你势力相同的角色将手牌补至体力上限。',
gz_yujin:'于禁',
gzjieyue:'节钺',
gzjieyue_info:'准备阶段开始时,你可以将一张手牌交给一名非魏势力角色,然后选择一个“军令”,然后令其选择一项:执行该军令,然后你摸一张牌;或令你于此回合摸牌阶段摸牌时,额外摸三张牌。',
gzjieyue_info:'准备阶段开始时,你可以将一张手牌交给一名非魏势力角色,然后选择一个“军令”令其选择一项:执行该军令,然后你摸一张牌;或令你于此回合摸牌阶段额外摸三张牌。',
gz_wangping:'王平',
jianglue:'将略',
jianglue_info:'限定技,出牌阶段,你可以选择一个“军令”,然后与你势力相同的其他角色可以执行该军令(未确定势力角色可以在此时明置一张武将牌)。你与每名执行该军令的角色增加一点体力上限然后回复一点体力然后你摸X张牌X为以此法回复了体力的角色数。',
jianglue_info:'限定技,出牌阶段,你可以选择一个“军令”,然后与你势力相同的其他角色可以执行该军令(未确定势力角色可以在此时明置一张武将牌)。你与所有执行该军令的角色增加一点体力上限然后回复一点体力然后你摸X张牌X为以此法回复了体力的角色数。',
gz_fazheng:'法正',
gzxuanhuo:'眩惑',
gzxuanhuo_info:'与你势力相同的其他角色的出牌阶段限一次,该角色可以交给你一张牌并弃置一张牌,然后获得以下一项场上没有的技能直到回合结束:“武圣”、“咆哮”、“龙胆”、“铁骑”、“烈弓”、“狂骨”。',
gzxuanhuo_info:'与你势力相同的其他角色的出牌阶段限一次,该角色可以交给你一张牌并弃置一张牌,然后获得以下一项场上没有的技能直到回合结束:〖武圣〗、〖咆哮〗、〖龙胆〗、〖铁骑〗、〖烈弓〗、〖狂骨〗。',
gzenyuan:'恩怨',
gzenyuan_info:'锁定技当其他角色对你使用【桃】时该角色摸一张牌当你受到伤害后伤害来源须交给你一张手牌或失去1点体力。',
gzbuyi:'补益',
gzbuyi_info:'每名角色的回合限一次,当一名与你势力相同的角色脱离濒死状态后,你可以选择一个“军令”,令伤害来源选择一项:执行该军令,或令该脱离濒死状态的角色回复一点体力。',
gzbuyi_info:'每回合限一次,当一名与你势力相同的角色脱离濒死状态后,你可以选择一个“军令”,令伤害来源选择一项:执行该军令,或令该脱离濒死状态的角色回复一点体力。',
gz_lukang:'陆抗',
keshou:'恪守',
keshou_info:'当你受到伤害时,你可以弃置两张颜色相同的牌。若如此做,此伤害-1,然后若没有与你势力相同的其他角色,你进行一次判定,若结果为红色,你摸一张牌。',
keshou_info:'当你受到伤害时,你可以弃置两张颜色相同的牌。若如此做,此伤害-1。然后若场上没有与你势力相同的其他角色,则你进行判定,若结果为红色,你摸一张牌。',
zhuwei:'筑围',
zhuwei_info:'当你的判定牌生效后,若此牌为【杀】或【决斗】,你可以获得之,然后你可令当前回合角色本回合可额外使用一张【杀】,且手牌上限+1。',
zhuwei_info:'当你的判定牌生效后,若此牌为【杀】或【决斗】,你可以获得之。然后,你可令当前回合角色本回合内使用【杀】的次数上限和手牌上限+1。',
gz_yuanshu:'袁术',
gzweidi:'伪帝',
gzweidi_info:'出牌阶段限一次,你可以指定一名本回合从牌堆获得过牌的其他角色,然后选择一个“军令”,令其选择一项:执行该军令;或令你获得其所有手牌,然后交给其等量的牌。',
gzweidi_info:'出牌阶段限一次,你可以指定一名本回合从牌堆获得过牌的其他角色选择一个“军令”,令其选择一项:执行该军令;或令你获得其所有手牌,然后交给其等量的牌。',
gzyongsi:'庸肆',
gzyongsi_info:'锁定技,若场上没有【玉玺】,视为你装备之;当你成为【知己知彼】的目标时,你展示你的所有手牌。',
gzyongsi_info:'锁定技,若场上没有【玉玺】,则视为你装备了【玉玺】;当你成为【知己知彼】的目标时,你展示你的所有手牌。',
//gzyongsi_eff1:'玉玺',
//gzyongsi_eff2:'玉玺',
gz_zhangxiu:'张绣',
gzfudi:'附敌',
gzfudi_info:'当你受到伤害后,你可以交给伤害来源一张手牌。若如此做,你对其势力中体力值最大且不小于你的一名角色造成一点伤害。',
gzfudi_info:'当你受到伤害后,你可以交给伤害来源一张手牌。若如此做,你对其势力中体力值最大且不小于你的一名角色造成一点伤害。',
congjian:'从谏',
congjian_info:'锁定技,你于回合外造成的伤害,于回合内受到的伤害+1。',
congjian_info:'锁定技,当你于回合外造成伤害,或于回合内受到伤害时,此伤害+1。',
gz_jun_caocao:'君曹操',
jianan:'建安',
jianan_info:'君主技,只要此武将处于明置状态,你便拥有“五子良将纛”。',
@ -7074,22 +7074,22 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
wuziliangjiangdao:'五子良将纛',
wuziliangjiangdao_ab:'将纛',
wuziliangjiangdao_bg:'纛',
wuziliangjiangdao_info:'魏势力角色的准备阶段开始时,其可以弃置一张牌。若如此做,其选择一张暗置的武将牌(若没有,则选择一张暗置),然后获得下列技能中的一项(其他角色已有的技能无法选择)且不能明置选择的武将牌直到你的下个回合开始:“突袭”,“巧变”,“骁果”,“节钺”,“断粮”。',
wuziliangjiangdao_info:'魏势力角色的准备阶段开始时,其可以弃置一张牌。若如此做,其选择一张暗置的武将牌(若没有,则选择一张暗置),然后获得下列技能中的一项(其他角色已有的技能无法选择)且不能明置选择的武将牌直到你的下个回合开始:〖突袭〗,〖巧变〗,〖骁果〗,〖节钺〗,〖断粮〗。',
huibian:'挥鞭',
huibian_info:'出牌阶段限一次,你可以选择一名魏势力角色和另一名已受伤的魏势力角色。若如此做,你对前者造成一点伤害,然后其摸两张牌,然后后者回复一点体力。',
gzzongyu:'总御',
gzzongyu_info:'当【六龙骖驾】进入其他角色的装备区后,你可以你装备区内所有坐骑牌(至少一张)与【六龙骖驾】交换位置。锁定技,当你使用一张坐骑牌后,若场上或弃牌堆中有【六龙骖驾】,则将【六龙骖驾】置入你的装备区。',
gzzongyu_info:'当【六龙骖驾】进入其他角色的装备区后,你可以你装备区内所有坐骑牌(至少一张)与【六龙骖驾】交换位置。锁定技,当你使用坐骑牌后,若场上或弃牌堆中有【六龙骖驾】,则将【六龙骖驾】置入你的装备区。',
xindiaodu:"调度",
"xindiaodu_info":"当与你势力相同的角色使用装备牌时,该角色可以摸一张牌;出牌阶段开始时,你可以获得与你势力相同的一名角色装备区的一张牌,然后你可以将此牌交给另一名与你势力相同的其他角色。",
"xindiaodu_info":"当与你势力相同的角色使用装备牌时,可以摸一张牌;出牌阶段开始时,你可以获得与你势力相同的一名角色装备区的一张牌,然后你可以将此牌交给另一名与你势力相同的其他角色。",
yigui:"役鬼",
"yigui_info":"当你第一次明置此武将牌时,你将剩余武将牌堆的两张牌扣置于游戏外,称为“魂”;你可以将一张“魂”亮出并置入剩余武将牌堆,视为你使用一张本回合你未以此法使用过的基本牌或普通锦囊牌,且目标须为与此“魂”势力相同或未确定势力的角色。 ",
"yigui_info":"当次明置此武将牌时,你将剩余武将牌堆的两张牌扣置于游戏外,称为“魂”;你可以展示一张“魂”并将其置入剩余武将牌堆,视为使用了一张本回合内未以此法使用过的基本牌或普通锦囊牌(此牌目标须为与此“魂”势力相同或未确定势力的角色。 ",
"yigui_init":"役鬼",
"yigui_init_info":"",
"yigui_refrain":"役鬼",
"yigui_refrain_info":"",
jihun:"汲魂",
jihun_info:"当你受到伤害后,或与你势力不同的角色进入濒死状态被救回后,你可以将剩余武将牌堆的一张牌当“魂”扣置于游戏外。",
jihun_info:"当你受到伤害后,或与你势力不同的角色脱离濒死状态后,你可以将剩余武将牌堆的一张牌当“魂”扣置于游戏外。",
"xianqu_skill":"先驱",
@ -7110,43 +7110,43 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
"yinyang_add_info":"",
"new_jushou":"据守",
"new_jushou_info":"结束阶段你可以摸X张牌X为亮明势力数然后弃置一张手牌,若以此法弃置的是装备牌,则改为你使用之。若X大于2则你将武将牌叠置。",
"new_jushou_info":"结束阶段你可以摸X张牌X为亮明势力数然后弃置一张手牌。若以此法弃置的牌为装备牌,则改为使用此牌。若X大于2则你将武将牌叠置。",
"new_duanliang":"断粮",
"new_duanliang_info":"出牌阶段,你可以将一张黑色基本牌或黑色装备牌当做一张【兵粮寸断】使用。你使用【兵粮寸断】没有距离限制。若你对距离超过2的角色发动了“断粮”,则本回合不能再发动“断粮”。",
"new_duanliang_info":"出牌阶段,你可以将一张黑色基本牌或黑色装备牌当做【兵粮寸断】使用。你使用【兵粮寸断】没有距离限制。若你对距离超过2的角色发动了〖断粮〗,则本回合不能再发动〖断粮〗。",
"new_shushen":"淑慎",
"new_shushen_info":"当你回复1点体力后你可令一名其他角色摸一张牌。",
"new_fenji":"奋激",
"new_fenji_info":"一名角色的结束阶段,若其没有手牌,你可以令其摸两张牌然后你失去1点体力。",
"new_fenji_info":"一名角色的结束阶段开始时若其没有手牌你可以令其摸两张牌然后你失去1点体力。",
"new_luanji":"乱击",
"new_luanji_info":"你可以将两张与你本回合以此法转化的花色均不相同的手牌当【万箭齐发】使用,然后当一名与你势力相同的角色因响应此牌而打出【闪】时,该角色摸一张牌",
"new_luanji_info":"你可以将两张与你本回合以此法转化的花色均不相同的手牌当【万箭齐发】使用当一名与你势力相同的角色因响应此牌而打出【闪】时,该角色摸一张牌",
"new_qingcheng":"倾城",
"new_qingcheng_info":"出牌阶段,你可以弃置一张黑色牌并选择一名武将牌均明置的其他角色,然后你暗置其一张武将牌。若此牌为装备牌,则你可以再选择一名角色并重复同样的操作。",
"new_qingcheng_info":"出牌阶段,你可以弃置一张黑色牌并选择一名武将牌均明置的其他角色,然后你暗置其一张武将牌。若你以此法弃置的牌为装备牌,则你可以暗置另一名武将牌均明置的角色的一张武将牌。",
"new_kongcheng":"空城",
"new_kongcheng_info":"锁定技若你没有手牌1.当你成为【杀】或【决斗】的目标时取消之2.你的回合外,其他角色交给你的牌置于你的武将牌上,摸牌阶段你获得武将牌上的牌。",
"new_kongcheng_info":"锁定技若你没有手牌1.当你成为【杀】或【决斗】的目标时取消之2.你的回合外,其他角色交给你牌后,你将这些牌置于你的武将牌上。摸牌阶段开始时,你获得武将牌上的这些牌。",
"new_keji":"克己",
"new_keji_info":"锁定技,若你没有在出牌阶段内使用过颜色不同的牌,则你本回合手牌上限+4。",
"new_keji_info":"锁定技,若你没有在出牌阶段内使用过颜色不同的牌,则你本回合手牌上限+4。",
"keji_add":"克己",
"keji_add_info":"",
"new_mouduan":"谋断",
"new_mouduan_info":"结束阶段,若你于本回合内使用过四种花色或三种类别的牌,则你可以移动场上的一张牌。",
"new_longdan":"龙胆",
"new_longdan_info":"你可以将【杀】当【闪】,【闪】当【杀】使用或打出。你发动龙胆时若你的杀被【闪】抵消则你可以对另一名角色造成1点伤害若你的【闪】抵消了【杀】则你可以令一名其他角色回复1点体力。不能是【杀】的使用者",
"new_longdan_info":"你可以将【杀】当【闪】,【闪】当【杀】使用或打出。当你发动〖龙胆〗使用的【杀】被【闪】抵消时你可以对另一名角色造成1点伤害当你发动〖龙胆〗使用的【闪】抵消了【杀】时你可以令一名其他角色回复1点体力不能是【杀】的使用者",
"new_paoxiao":"咆哮",
"new_paoxiao_info":"锁定技,你使用【杀】无数量限制;你在一回合内使用第二张【杀】时,摸一张牌。",
"new_paoxiao_info":"锁定技,你使用【杀】无数量限制;当你于一回合内使用第二张【杀】时,摸一张牌。",
"new_kurou":"苦肉",
"new_kurou_info":"出牌阶段限一次你可以弃置一张牌然后失去1点体力并摸三张牌本回合你可以多使用一张【杀】。",
"new_kurou_info":"出牌阶段限一次你可以弃置一张牌然后失去1点体力并摸三张牌本回合使用【杀】的次数上限+1。",
"kurou_effect":"苦肉",
"kurou_effect_info":"",
"new_chuli":"除疠",
"new_chuli_info":"出牌阶段限一次,若你有牌,你可以选择至多三名势力各不相同或未确定势力的其他角色,你弃置你和这些角色的各一张牌。然后以此法弃置黑桃牌的角色各摸一张牌。",
"new_chuli_info":"出牌阶段限一次,若你有牌,你可以选择至多三名势力各不相同或未确定势力的其他角色,你弃置你和这些角色的各一张牌。然后所有以此法弃置黑桃牌的角色各摸一张牌。",
"baka_hunshang":"魂殇",
"baka_hunshang_info":"副将技此武将牌减少半个阴阳鱼准备阶段若你的体力值不大于1则你本回合获得“英姿”和“英魂”",
"baka_hunshang_info":"副将技此武将牌减少半个阴阳鱼准备阶段若你的体力值不大于1则你获得〖英姿〗和〖英魂〗直到回合结束。",
"baka_yinghun":"英魂",
"baka_yinghun_info":"准备阶段开始时若你已受伤你可令一名其他角色执行一项摸X张牌然后弃置一张牌或摸一张牌然后弃置X张牌X为你已损失的体力值",
"baka_yingzi":"英姿",
"baka_yingzi_info":"锁定技,摸牌阶段摸牌时,你额外摸一张牌;你的手牌上限不会因体力值的减少而减少。",
"baka_yingzi_info":"锁定技,摸牌阶段摸,你多摸一张牌;你的手牌上限+XX为你已损失的体力值。",
"new_yiji":"遗计",
"new_yiji_info":"当你受到伤害后,你可以观看牌堆顶的两张牌,并将其交给任意角色",
"new_yiji_info":"当你受到伤害后,你可以观看牌堆顶的两张牌,并将其交给任意角色",
"new_jieming":"节命",
"new_jieming_info":"当你受到伤害后你可以令一名角色将手牌摸至X张X为其体力上限且最多为5。",
"new_fangzhu":"放逐",
@ -7156,7 +7156,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
"fengyin_vice":"封印[副将]",
"fengyin_vice_info":"",
"new_tieji":"铁骑",
"new_tieji_info":"当你使用【杀】指定一个目标后,你可以令其本回合一张明置的武将牌的非锁定技失效,然后你进行判定,除非该角色弃置与结果花色相同的一张牌,否则不能使用【闪】。",
"new_tieji_info":"当你使用【杀】指定目标后,你可以令其一张明置的武将牌的非锁定技于本回合内失效,然后你进行判定,除非该角色弃置与结果花色相同的一张牌,否则不能使用【闪】响应此【杀】。",
hmkyuanyu:"远域",
"hmkyuanyu_info":"锁定技,当你受到伤害时,若伤害来源与你的座次不相邻,防止此伤害。",
hmkguishu:"鬼术",
@ -7183,21 +7183,21 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
qianhuan_bg:'幻',
qianhuan_info:'当与你势力相同的一名角色受到伤害后,你可以将一张与你武将牌上花色均不同的牌置于你的武将牌上。当一名与你势力相同的角色成为基本牌或锦囊牌的唯一目标时,你可以移去一张“千幻”牌,取消之。',
gzzhiman:'制蛮',
gzzhiman_info:'当你对其他角色造成伤害时,你可以防止此伤害。若如此做,你获得其装备区或判定区里的一张牌。然后若该角色与你势力相同,该角色可以变更副将。',
gzzhiman_info:'当你对其他角色造成伤害时,你可以防止此伤害。若如此做,你获得其装备区或判定区里的一张牌。然后若该角色与你势力相同,该角色可以变更副将。',
gzdiancai:'典财',
gzdiancai_info:'其他角色的出牌阶段结束时若你于此阶段失去了x张或更多的牌则你可以将手牌摸至体力上限。若如此做你可以变更副将x为你的体力值。',
xuanlve:'旋略',
xuanlve_info:'当你失去装备区里的牌后,你可以弃置一名其他角色的一张牌。',
yongjin:'勇进',
yongjin_info:'限定技,出牌阶段,你可以移动场上的至多三张装备牌。',
yongjin_info:'限定技,出牌阶段,你可以依次移动场上的至多三张装备牌。',
lianzi:'敛资',
lianzi_info:'出牌阶段限一次你可以弃置一张手牌然后亮出牌堆顶X张牌X为吴势力角色装备区里的牌和“烽火”的总和获得其中所有与你弃置牌类别相同的牌将其余的牌置入弃牌堆一次获得的牌超过三张,则你失去技能“敛资”并获得技能“制衡”。',
lianzi_info:'出牌阶段限一次你可以弃置一张手牌然后亮出牌堆顶X张牌X为吴势力角色装备区里的牌和“烽火”的总和获得其中所有与你弃置牌类别相同的牌将其余的牌置入弃牌堆你以此法一次获得了三张或更多的牌,则你失去技能〖敛资〗并获得技能〖制衡〗。',
gzqice:'奇策',
gzqice_backup:'奇策',
gzqice_info:'出牌阶段限一次,你可以将所有手牌当任意一张普通锦囊牌使用你不能以此法使用目标数超过X的牌X为你的手牌数然后你可以变更副将。',
gzqice_info:'出牌阶段限一次,你可以将所有手牌当做任意一张普通锦囊牌使用(此牌的目标数不能超过你的手牌数)。然后,你可以变更副将。',
gzyuejian:'约俭',
gzyuejian_info:'锁定技,与你势力相同角色的弃牌阶段开始时,若其本回合未使用指定过其他势力的角色为目标,则该角色本回合手牌上限等同于其体力上限',
gzyuejian_info:'锁定技,与你势力相同角色的弃牌阶段开始时,若其本回合未使用指定过其他势力的角色为目标,则该角色本回合手牌上限+XX为其已损失的体力值',
gzxiongsuan:'凶算',
gzxiongsuan_info:'限定技出牌阶段你可以弃置一张手牌并选择与你势力相同的一名角色对其造成1点伤害然后你摸三张牌。若该角色有已发动的限定技则你选择其中一个限定技此回合结束后视为该限定技未发动过。',
gzhuashen:'化身',
@ -7206,14 +7206,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gzxinsheng_info:'当你受到伤害后,你可以从剩余武将牌堆中扣置一张牌加入到“化身”牌中。',
jubao:'聚宝',
jubao_info:'锁定技,你装备区里的宝物牌不能被其他角色获得结束阶段开始时,若场上或弃牌堆有【定澜夜明珠】,则你摸一张牌,然后获得装备区里有【定澜夜明珠】角色的一张牌。',
jubao_info:'锁定技,你装备区里的宝物牌不能被其他角色获得结束阶段开始时,若场上或弃牌堆有【定澜夜明珠】,则你摸一张牌,然后获得装备区里有【定澜夜明珠】角色的一张牌。',
jiahe:'嘉禾',
jiahe_info:'君主技,只要此武将牌处于明置状态,你便拥有“缘江烽火图”。',
jiahe_put:'烽火',
jiahe_put_info:'出牌阶段限一次,你可以将一张装备牌置于“缘江烽火图”上,称之为“烽火”。',
jiahe_skill:'缘江烽火图',
yuanjiangfenghuotu:'缘江烽火图',
yuanjiangfenghuotu_info:'每名吴势力角色的出牌阶段限一次,该角色可以将一张装备牌置于“缘江烽火图”上,称之为“烽火”。<br>根据“烽火”的数量,所有吴势力角色可于其准备阶段开始时选择并获得其中一个技能直到回合结束:一张以上~英姿;两张以上~好施;三张以上~涉猎;四张以上~度势;五张以上~可额外选择一项。<br>锁定技,当你受到【杀】或锦囊牌造成的伤害后,你将一张“烽火”置入弃牌堆。',
yuanjiangfenghuotu_info:'每名吴势力角色的出牌阶段限一次,该角色可以将一张装备牌置于“缘江烽火图”上,称之为“烽火”。<br>根据“烽火”的数量,所有吴势力角色可于其准备阶段开始时选择并获得其中一个技能直到回合结束:一张以上:〖英姿〗;两张以上:〖好施〗;三张以上:〖涉猎〗;四张以上:〖度势〗;五张以上:可额外选择一项。<br>锁定技,当你受到【杀】或锦囊牌造成的伤害后,你将一张“烽火”置入弃牌堆。',
yuanjiangfenghuotu_ab:'江图',
yuanjiangfenghuotu_bg:'图',
wuxin:'悟心',
@ -7221,66 +7221,66 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
hongfa:'弘法',
hongfa_use:'天兵',
hongfa_respond:'天兵',
hongfa_info:'君主技,锁定技,此武将牌明置时你获得“黄巾天兵符”准备阶段开始时若没有“天兵”你将牌堆顶的X张牌置于“黄巾天兵符”上称为“天兵”X为群势力角色的数量',
hongfa_info:'君主技,锁定技,此武将牌明置时你获得“黄巾天兵符”准备阶段开始时若没有“天兵”你将牌堆顶的X张牌置于“黄巾天兵符”上称为“天兵”X为群势力角色的数量',
wendao:'问道',
wendao_info:'出牌阶段限一次,你可以弃置一张不为【太平要术】的红色牌,获得弃牌堆或场上的一张【太平要术】',
wendao_info:'出牌阶段限一次,你可以弃置一张不为【太平要术】的红色牌,然后获得弃牌堆或场上的一张【太平要术】',
huangjintianbingfu:'黄巾天兵符',
huangjintianbingfu_ab:'兵符',
huangjintianbingfu_bg:'符',
huangjintianbingfu_info:'锁定技 :当你计算群势力角色数时,每一张“天兵”均可视为一名群势力角色。<br>当你失去体力时,你可改为将一张“天兵”置入弃牌堆。<br>与你势力相同的角色可将一张“天兵”当【杀】使用或打出。',
huangjintianbingfu_info:'锁定技 :当你计算群势力角色数时,每一张“天兵”均可视为一名群势力角色。<br>当你失去体力时,你可改为将一张“天兵”置入弃牌堆。<br>与你势力相同的角色可将一张“天兵”当【杀】使用或打出。',
wuhujiangdaqi:'五虎将大旗',
wuhujiangdaqi_ab:'将旗',
wuhujiangdaqi_bg:'旗',
wuhujiangdaqi_info:'存活的蜀势力角色的技能按以下规则改动:<br><strong>武圣</strong>:将“红色牌”改为“任意牌”<br><strong>咆哮</strong>:增加描述“你使用的【杀】无视其他角色的防具”<br><strong>龙胆</strong>:增加描述“你每发动一次‘龙胆’便摸一张牌”<br><strong>烈弓</strong>:增加描述“你的攻击范围+1”<br><strong>铁骑</strong>:将“一张明置的武将牌”改为“所有明置的武将牌”',
wuhujiangdaqi_info:'存活的蜀势力角色的技能按以下规则改动:<br><strong>武圣</strong>:将“红色牌”改为“任意牌”<br><strong>咆哮</strong>:增加描述“你使用的【杀】无视其他角色的防具”<br><strong>龙胆</strong>:增加描述“你发动〖龙胆〗使用或打出牌时摸一张牌”<br><strong>烈弓</strong>:增加描述“你的攻击范围+1”<br><strong>铁骑</strong>:将“一张明置的武将牌”改为“所有明置的武将牌”',
zhangwu:'章武',
zhangwu_info:'锁定技。当【飞龙夺凤】进入弃牌堆或其他角色的装备区时,你获得之。当你失去【飞龙夺风】时,展示之,然后将此牌置于牌堆底并摸两张牌',
shouyue:'授钺',
shouyue_info:'君主技。只要此武将牌处于明置状态,你便拥有“五虎将大旗”',
shouyue_info:'君主技。只要此武将牌处于明置状态,你便拥有“五虎将大旗”',
jizhao:'激诏',
jizhao_bg:'诏',
jizhao_info:'限定技。当你处于濒死状态时你可以将手牌补至体力上限体力回复至2点失去技能“授钺”并获得技能“仁德”',
jizhao_info:'限定技。当你处于濒死状态时你可以将手牌补至体力上限体力回复至2点失去技能〖授钺〗并获得技能〖仁德〗。',
gzshoucheng:'守成',
gzshoucheng_info:'当与你势力相同的一名角色于其回合外失去最后手牌时,你可以令其摸一张牌',
gzshoucheng_info:'当与你势力相同的一名角色于其回合外失去手牌时,若其没有手牌,则你可以令其摸一张牌',
gzmingshi:'名士',
gzmingshi_info:'锁定技,当你受到伤害时,若伤害来源有暗置的武将牌,此伤害-1',
gzmingshi_info:'锁定技,当你受到伤害时,若伤害来源有暗置的武将牌,此伤害-1',
fengshi:'锋矢',
fengshi_sha:'锋矢',
fengshi_info:'阵法技,在一个围攻关系中,若你是围攻角色,则你或另一名围攻角色使用【杀】指定被围攻角色为目标后,可令该角色弃置装备区里的一张牌',
fengshi_info:'阵法技,在一个围攻关系中,若你是围攻角色,则你或另一名围攻角色使用【杀】指定被围攻角色为目标后,可令该角色弃置装备区内的一张牌。',
gzsuishi:'随势',
gzsuishi_info:'锁定技,其他角色进入濒死状态时,若伤害来源与你势力相同,你摸一张牌;其他角色死亡时若其与你势力相同你失去1点体力',
gzsuishi_info:'锁定技,其他角色进入濒死状态时若伤害来源与你势力相同你摸一张牌其他角色死亡时若其与你势力相同你失去1点体力',
baoling:'暴凌',
baoling_info:'主将技锁定技出牌阶段结束时若你有副将则你移除副将然后加3点体力上限回复3点体力失去技能〖暴凌〗并获得〖崩坏〗',
yingyang:'鹰扬',
yingyang_info:'当你拼点牌亮出后,你可以令此牌的点数+3或-3至多为K至少为1',
yingyang_info:'当你拼点牌亮出后,你可以令此牌的点数+3或-3至多为K至少为1',
hunshang:'魂殇',
hunshang_info:'副将技此武将牌减少半个阴阳鱼准备阶段若你的体力值不大于1则你本回合获得“英姿”和“英魂”',
gzguixiu:'闺秀',
gzguixiu_info:'当你明置此武将牌时你可以摸两张牌当你移除此武将牌时你可以回复1点体力',
gzguixiu_info:'当你明置此武将牌时你可以摸两张牌当你移除此武将牌时你可以回复1点体力',
gzcunsi:'存嗣',
gzcunsi_info:'出牌阶段,你可以移除此武将牌并选择一名角色,然后其获得技能“勇决”,若你没有获得“勇决”,则获得“勇决”的角色摸两张牌',
gzcunsi_info:'出牌阶段,你可以移除此武将牌并选择一名角色,然后其获得技能〖勇决〗,若你选择的目标角色不是自己,则其摸两张牌。',
gzyongjue:'勇决',
gzyongjue_info:'与你势力相同的一名角色于其回合内使用的第一张牌为【杀】,则该角色可以在此【杀】结算完成后获得之',
gzyongjue_info:'与你势力相同的一名角色于其回合内使用【杀】结算完成后,若此牌是其本回合内使用的第一张牌,则其可以获得此牌对应的所有实体牌。',
gzqianxi:'潜袭',
gzqianxi_info:'准备阶段开始时你可以进行判定然后你选择距离为1的一名角色直到回合结束该角色不能使用或打出与结果颜色相同的手牌',
gzshangyi:'尚义',
gzshangyi_info:'出牌阶段限一次你可以令一名其他角色观看你的手牌。若如此做你选择一项1.观看其手牌并可以弃置其中的一张黑色牌2.观看其所有暗置的武将牌',
gzshangyi_info:'出牌阶段限一次你可以令一名其他角色观看你的手牌。若如此做你选择一项1.观看其手牌并可以弃置其中的一张黑色牌2.观看其所有暗置的武将牌',
niaoxiang:'鸟翔',
niaoxiang_sha:'鸟翔',
niaoxiang_info:'阵法技,在同一个围攻关系中,若你是围攻角色,则你或另一名围攻角色使用【杀】指定被围攻角色为目标后,你令该角色需依次使用两张【闪】才能抵消',
niaoxiang_info:'阵法技,在同一个围攻关系中,若你是围攻角色,则你或另一名围攻角色使用【杀】指定被围攻角色为目标后,该角色需依次使用两张【闪】才能抵消',
yicheng:'疑城',
yicheng_info:'当与你势力相同的一名角色成为【杀】的目标后,你可以令该角色摸一张牌然后弃置一张牌',
yicheng_info:'当与你势力相同的一名角色成为【杀】的目标后,你可以令该角色摸一张牌然后弃置一张牌',
yizhi:'遗志',
yizhi_info:'副将技,此武将牌上单独的阴阳鱼个数-1。若你的主将拥有技能“观星”则将其描述中的X改为5若你的主将没有技能“观星”则你拥有技能“观星”',
yizhi_info:'副将技,此武将牌减少半个阴阳鱼。若你的主将拥有技能〖观星〗则将其描述中的X改为5若你的主将没有技能〖观星〗则你视为拥有技能〖观星〗。',
tianfu:'天覆',
tianfu_info:'主将技,阵法技,若当前回合角色与你处于同一队列,你拥有技能“看破”',
tianfu_info:'主将技,阵法技,若当前回合角色与你处于同一队列,则你视为拥有技能〖看破〗。',
ziliang:'资粮',
ziliang_info:'副将技,当与你势力相同的一名角色受到伤害后,你可以将一张“田”交给该角色 ',
gzjixi:'急袭',
gzjixi_info:'主将技,此武将牌减少半个阴阳鱼;你可以将一张“田”当【顺手牵羊】使用',
gzjixi_info:'主将技,此武将牌减少半个阴阳鱼。你可以将一张“田”当作【顺手牵羊】使用。',
huyuan:'护援',
huyuan_info:'结束阶段开始时你可以将一张装备牌置入一名角色的装备区然后你可以弃置该角色距离为1的一名角色的一张牌',
huyuan_info:'结束阶段开始时你可以将一张装备牌置入一名角色的装备区然后你可以弃置该角色距离为1的一名角色的一张牌',
heyi:'鹤翼',
heyi_info:'阵法技,与你处于同一队列的其他角色防御距离+1',
heyi_info:'阵法技,与你处于同一队列的其他角色视为拥有技能【飞影】。',
gz_shibing1wei:'魏兵',
gz_shibing2wei:'魏兵',
gz_shibing1shu:'蜀兵',
@ -7290,29 +7290,29 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_shibing1qun:'群兵',
gz_shibing2qun:'群兵',
gzduanchang:'断肠',
gzduanchang_info:'锁定技,当你死亡时,你令杀死你的角色失去一张武将牌的所有技能',
gzduanchang_info:'锁定技,当你死亡时,你令杀死你的角色失去一张武将牌的所有技能',
gzweimu:'帷幕',
gzweimu_info:'锁定技,当你成为黑色锦囊牌的目标时,取消之',
gzweimu_info:'锁定技,当你成为黑色锦囊牌的目标时,取消之',
gzqianxun:'谦逊',
gzqianxun_info:'锁定技,当你成为顺手牵羊或乐不思蜀的目标时,取消之',
gzqianxun_info:'锁定技,当你成为顺手牵羊乐不思蜀的目标时,取消之',
gzkongcheng:'空城',
gzkongcheng_info:'锁定技,当你成为【杀】或【决斗】的目标时,若你没有手牌,则取消之',
gzxiaoji:'枭姬',
gzxiaoji_info:'当你失去装备区里的牌后,你可以摸两张牌',
gzxiaoji_info:'当你失去装备区里的牌后,你可以摸两张牌',
gzrende:'仁德',
gzrende_info:'出牌阶段你可以将任意张手牌交给其他角色然后若你于此阶段内给出第三张“仁德”牌时你回复1点体力',
gzzhiheng:'制衡',
gzzhiheng_info:'出牌阶段限一次你可以弃置至多X张牌X为你的体力上限然后摸等量的牌',
gzzhiheng_info:'出牌阶段限一次你可以弃置至多X张牌X为你的体力上限然后摸等量的牌',
duoshi:'度势',
duoshi_info:'出牌阶段限四次,你可以将一张红色手牌当【以逸待劳】使用。',
duoshi_info:'出牌阶段限四次,你可以将一张红色手牌当【以逸待劳】使用。',
gzxiaoguo:'骁果',
gzxiaoguo_info:'其他角色的结束阶段开始时你可以弃置一张基本牌令该角色选择一项1.弃置一张装备牌2.受到你对其造成的1点伤害。',
guozhan_default:"国战标准",
guozhan_zhen:"君临天下阵",
guozhan_shi:"君临天下势",
guozhan_bian:"君临天下变",
guozhan_quan:"君临天下权",
guozhan_zhen:"君临天下·阵",
guozhan_shi:"君临天下·势",
guozhan_bian:"君临天下·变",
guozhan_quan:"君临天下·权",
guozhan_jun:"君主武将",
guozhan_others:"其他",
},
@ -7833,6 +7833,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
next.target=target;
next.num=num;
next.setContent(function(){
if(!player.storage.zhibi){
player.storage.zhibi=[];
}
player.storage.zhibi.add(target);
var content,str=get.translation(target)+'的';
if(event.num==0||!target.isUnseen(1)){
content=[str+'主将',[[target.name1],'character']];

View File

@ -63,6 +63,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
game.prepareArena(8);
}
else if(_status.mode=='purple'){
game.prepareArena(8);
}
else{
game.prepareArena();
}
@ -91,7 +94,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
ui.create.control('跳过向导',function(){
clear();
clear2();
// game.resume();
game.resume();
// lib.cheat.cfg(); // owidgets
});
ui.create.control('继续',step2);
@ -197,6 +200,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
event.replacePile();
}
}
else if(_status.mode=='purple'){
lib.configOL.number=8;
}
if(lib.configOL.number<2){
lib.configOL.number=2;
}
@ -252,10 +258,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
var enhance_zhu=false;
if(_status.connectMode){
enhance_zhu=(_status.mode!='zhong'&&lib.configOL.enhance_zhu&&get.population('fan')>=3);
enhance_zhu=(_status.mode!='zhong'&&_status.mode!='purple'&&lib.configOL.enhance_zhu&&get.population('fan')>=3);
}
else{
enhance_zhu=(_status.mode!='zhong'&&get.config('enhance_zhu')&&get.population('fan')>=3);
enhance_zhu=(_status.mode!='zhong'&&_status.mode!='purple'&&get.config('enhance_zhu')&&get.population('fan')>=3);
}
if(enhance_zhu){
var skill;
@ -295,7 +301,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
_status.videoInited=true;
game.addVideo('init',null,info);
"step 6"
game.gameDraw(_status.firstAct2||game.zhong||game.zhu||_status.firstAct||game.me);
game.gameDraw(_status.firstAct2||game.zhong||game.zhu||_status.firstAct||game.me,function(player){
if(_status.mode=='purple'&&player.seatNum>5) return 5;
return 4;
});
if(_status.connectMode&&lib.configOL.change_card) game.replaceHandcards(game.players.slice(0));
"step 7"
game.phaseLoop(_status.firstAct2||game.zhong||game.zhu||_status.firstAct||game.me);
@ -307,11 +316,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var player=lib.playerOL[i];
state[i]={identity:player.identity};
if(player==game.zhu){
state[i].zhu=player.isZhu?true:false;
state[i].zhu=true;
}
if(player==game.zhong){
state[i].zhong=true;
}
if(player.isZhu){
state[i].isZhu=true;
}
if(player.special_identity){
state[i].special_identity=player.special_identity;
}
@ -324,6 +336,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
var player=lib.playerOL[i];
if(player){
player.identity=state[i].identity;
if(state[i].identity=='rZhu'||state[i].identity=='bZhu') game[state[i].identity]=player;
if(state[i].special_identity){
player.special_identity=state[i].special_identity;
if(player.node.dieidentity){
@ -331,9 +344,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
player.node.identity.firstChild.innerHTML=get.translation(state[i].special_identity+'_bg');
}
}
if(typeof state[i].zhu=='boolean'){
if(state[i].zhu){
game.zhu=player;
player.isZhu=state[i].zhu;
}
if(state[i].isZhu){
player.isZhu=true;
}
if(state[i].zhong){
game.zhong=player;
@ -366,7 +381,22 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
getIdentityList:function(player){
if(player.identityShown) return;
if(player==game.me) return;
if(_status.mode=='zhong'){
if(_status.mode=='purple'){
if(_status.yeconfirm&&['rNei','bNei'].contains(game.me.identity)&&['rNei','bNei'].contains(player.identity)) return;
if(player.identity.slice(0,1)=='r') return {
cai2:'猜',
rZhong:'忠',
rNei:'内',
rYe:'野',
}
return {
cai:'猜',
bZhong:'忠',
bNei:'内',
bYe:'野',
}
}
else if(_status.mode=='zhong'){
if(player.fanfixed) return;
if(game.zhu&&game.zhu.isZhu){
return {
@ -402,7 +432,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
case 'zhong':list[i]='忠臣';break;
case 'nei':list[i]='内奸';break;
case 'zhu':list[i]='主公';break;
case 'cai':list[i]='未知';break;
case 'cai':case 'cai2':list[i]='未知';break;
case 'rZhong':case 'bZhong':list[i]='前锋';break;
case 'rNei':case 'bNei':list[i]='细作';break;
case 'rYe':case 'bYe':list[i]='野心家';break;
}
}
},
@ -472,6 +505,64 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
_status.brawl.checkResult();
return;
}
else if(_status.mode=='purple'){
var winner=[];
var loser=[];
var ye=game.filterPlayer(function(current){
return ['rYe','bYe'].contains(current.identity);
});
var red=game.filterPlayer(function(current){
return ['rZhu','rZhong','bNei'].contains(current.identity);
});
var blue=game.filterPlayer(function(current){
return ['bZhu','bZhong','rNei'].contains(current.identity);
})
game.countPlayer2(function(current){
switch(current.identity){
case 'rZhu':
if(blue.length+ye.length==0) winner.push(current);
if(current.isDead()) loser.push(current);
break;
case 'rZhong': case 'bNei':
if(blue.length+ye.length==0) winner.push(current);
if(game.rZhu.isDead()) loser.push(current);
break;
case 'bZhu':
if(red.length+ye.length==0) winner.push(current);
if(current.isDead()) loser.push(current);
break;
case 'bZhong': case 'rNei':
if(red.length+ye.length==0) winner.push(current);
if(game.bZhu.isDead()) loser.push(current);
break;
default:
if(red.length+blue.length==0) winner.push(current);
else if(game.rZhu.isDead()&&game.bZhu.isDead()) loser.push(current);
break;
}
});
var winner2=winner.slice(0);
var loser2=loser.slice(0);
for(var i=0;i<winner.length;i++){
if(winner[i].isDead()) winner.splice(i--,1);
}
for(var i=0;i<loser.length;i++){
if(loser[i].isDead()) loser.splice(i--,1);
}
if(winner.length>0||loser.length==game.players.length){
game.broadcastAll(function(winner,loser){
_status.winner=winner;
_status.loser=loser;
},winner,loser);
if(loser.length==game.players.length) game.over('游戏平局');
else if(winner2.contains(game.me)){
if(loser2.contains(game.me)) game.over(false);
else game.over(true);
}
else game.over(false);
}
return;
}
if(!game.zhu){
if(get.population('fan')==0){
switch(game.me.identity){
@ -521,6 +612,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
checkOnlineResult:function(player){
if(_status.winner&&_status.loser){
if(_status.loser.length==game.players.length) return null;
if(_status.loser.contains(player)) return false;
if(_status.winner.contains(player)) return true;
}
if(game.zhu.isAlive()){
return (player.identity=='zhu'||player.identity=='zhong');
}
@ -531,7 +627,324 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return player.identity=='fan';
}
},
chooseCharacterPurpleOL:function(){
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
"step 0"
ui.arena.classList.add('choose-character');
"step 1"
var list=['rZhu','rZhong','rNei','rYe'];
var list2=['bZhu','bZhong','bNei','bYe'];
list.randomSort();
list2.randomSort();
var identityList=list.concat(list2);
var num=get.rand(0,7);
var players=game.players.slice(0);
for(var i=0;i<num;i++){
players.push(players.shift());
}
game.broadcastAll(function(players,identityList,list){
_status.mode='purple';
if(game.online) ui.arena.classList.add('choose-character');
for(var i=0;i<players.length;i++){
players[i].node.identity.classList.add('guessing');
players[i].identity=identityList[i];
players[i].setIdentity(list.contains(identityList[i])?'cai2':'cai');
if(['rZhu','bZhu'].contains(identityList[i])){
game[identityList[i]]=players[i];
players[i].setIdentity(identityList[i]);
players[i].identityShown=true;
players[i].node.identity.classList.remove('guessing');
}
}
game.zhu=game.rZhu;
game.rZhu.isZhu=true;
game.bZhu.isZhu=true;
game.me.setIdentity();
game.me.node.identity.classList.remove('guessing');
},players,identityList,list);
players.sortBySeat(game.zhu);
for(var i=0;i<players.length;i++){
players[i].seatNum=i;
}
"step 2"
var map={};
var map_zhu={};
var list=[];
var libCharacter={};
for(var i=0;i<lib.configOL.characterPack.length;i++){
var pack=lib.characterPack[lib.configOL.characterPack[i]];
for(var j in pack){
if(j=='zuoci') continue;
if(lib.character[j]) libCharacter[j]=pack[j];
}
}
for(var i in libCharacter){
if(lib.filter.characterDisabled(i,libCharacter)) continue;
var group=lib.character[i][1];
if(group=='shen') continue;
if(!map[group]){
map[group]=[];
list.push(group);
}
map[group].push(i);
if(lib.character[i][4]&&lib.character[i][4].contains('zhu')){
if(!map_zhu[group]){
map_zhu[group]=[];
}
map_zhu[group].push(i);
}
}
for(var i in map){
if(map[i].length<12){
delete map[i];
list.remove(i);
}
}
list.sort(function(a,b){
return lib.group.indexOf(a)-lib.group.indexOf(b);
});
event.list=list;
event.map=map;
event.map_zhu=map_zhu;
game.bZhu.chooseControl(list).set('prompt','请选择冷方武将势力').set('ai',function(){
return _status.event.choice;
}).set('choice',event.list.randomGet());
"step 3"
event.bZhu=result.control;
event.list.remove(event.bZhu);
game.rZhu.chooseControl(event.list).set('prompt','请选择暖方武将的势力').set('ai',function(){
return _status.event.choice;
}).set('choice',event.list.randomGet());
"step 4"
event.rZhu=result.control;
var players=[game.rZhu,game.bZhu];
var list=[];
for(var i=0;i<players.length;i++){
if(true){
var group=event[players[i].identity];
var str='选择角色';
var list2=event.map[group].randomGets(4);
if(event.map_zhu[group]) list2.addArray(event.map_zhu[group].randomGets(2));
event.map[players[i].playerid]=list2;
list.push([players[i],[str,[list2,'character']],true]);
}
}
game.me.chooseButtonOL(list,function(player,result){
if(game.online||player==game.me){
player.init(result.links[0]);
player.hp++;
player.maxHp++;
player.update();
}
});
"step 5"
for(var i in result){
if(result[i]=='ai'){
result[i]=event.map[i].randomGet();
}
else{
result[i]=result[i].links
}
var group=lib.character[result[i][0]][1];
event.map[group].remove(result[i][0]);
if(!lib.playerOL[i].name){
lib.playerOL[i].init(result[i][0]);
}
}
game.broadcast(function(result){
for(var i in result){
if(!lib.playerOL[i].name){
lib.playerOL[i].init(result[i][0],result[i][1]);
lib.playerOL[i].hp++;
lib.playerOL[i].maxHp++;
lib.playerOL[i].update();
}
}
},result);
var list=[];
var players=game.players.slice(0);
players.removeArray([game.rZhu,game.bZhu]);
for(var i=0;i<players.length;i++){
if(true){
var group=event[players[i].identity.slice(0,1)+'Zhu'];
var str='选择角色';
var list2=event.map[group].randomGets(5);
event.map[players[i].playerid]=list2;
list.push([players[i],[str,[list2,'character']],true]);
}
}
game.me.chooseButtonOL(list,function(player,result){
if(game.online||player==game.me){
player.init(result.links[0]);
}
});
"step 6"
for(var i in result){
if(result[i]=='ai'){
result[i]=event.map[i].randomGet();
}
else{
result[i]=result[i].links
}
var group=lib.character[result[i][0]][1];
event.map[group].remove(result[i][0]);
if(!lib.playerOL[i].name){
lib.playerOL[i].init(result[i][0]);
}
}
game.broadcast(function(result){
for(var i in result){
if(!lib.playerOL[i].name){
lib.playerOL[i].init(result[i][0],result[i][1]);
}
}
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
},result);
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
});
},
chooseCharacterPurple:function(){
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
"step 0"
ui.arena.classList.add('choose-character');
lib.init.onfree();
"step 1"
var list=['rZhu','rZhong','rNei','rYe'];
var list2=['bZhu','bZhong','bNei','bYe'];
list.randomSort();
list2.randomSort();
var identityList=list.concat(list2);
var num=get.rand(0,7);
var players=game.players.slice(0);
for(var i=0;i<num;i++){
players.push(players.shift());
}
for(var i=0;i<players.length;i++){
players[i].node.identity.classList.add('guessing');
players[i].identity=identityList[i];
players[i].setIdentity(list.contains(identityList[i])?'cai2':'cai');
if(['rZhu','bZhu'].contains(identityList[i])){
game[identityList[i]]=players[i];
players[i].setIdentity(identityList[i]);
players[i].identityShown=true;
players[i].node.identity.classList.remove('guessing');
}
}
game.zhu=game.rZhu;
game.rZhu.isZhu=true;
game.bZhu.isZhu=true;
game.me.setIdentity();
game.me.node.identity.classList.remove('guessing');
players.sortBySeat(game.zhu);
for(var i=0;i<players.length;i++){
players[i].seatNum=i;
}
"step 2"
var map={};
var map_zhu={};
var list=[];
for(var i in lib.character){
if(lib.filter.characterDisabled(i)) continue;
var group=lib.character[i][1];
if(group=='shen') continue;
if(!map[group]){
map[group]=[];
list.push(group);
}
map[group].push(i);
if(lib.character[i][4]&&lib.character[i][4].contains('zhu')){
if(!map_zhu[group]){
map_zhu[group]=[];
}
map_zhu[group].push(i);
}
}
for(var i in map){
if(map[i].length<12){
delete map[i];
list.remove(i);
}
}
list.sort(function(a,b){
return lib.group.indexOf(a)-lib.group.indexOf(b);
});
event.list=list;
event.map=map;
event.map_zhu=map_zhu;
game.bZhu.chooseControl(list).set('prompt','请选择冷方武将势力').set('ai',function(){
return _status.event.choice;
}).set('choice',event.list.randomGet());
"step 3"
event.bZhu=result.control;
event.list.remove(event.bZhu);
game.rZhu.chooseControl(event.list).set('prompt','请选择暖方武将的势力').set('ai',function(){
return _status.event.choice;
}).set('choice',event.list.randomGet());
"step 4"
event.rZhu=result.control;
if(game.me==game.rZhu||game.me==game.bZhu){
event.isZhu=true;
var list=event.map[event[game.me.identity]].randomGets(4);
if(event.map_zhu[event[game.me.identity]]) list.addArray(event.map_zhu[event[game.me.identity]].randomGets(2));
game.me.chooseButton(true,['请选择您的武将牌',[list,'character']]);
}
"step 5"
if(event.isZhu){
event.map[event[game.me.identity]].remove(result.links[0]);
game.me.init(result.links[0]);
}
if(!game.rZhu.name){
var list=event.map[event.rZhu].randomGets(3);
if(event.map_zhu[event.rZhu]) list.addArray(event.map_zhu[event.rZhu]);
var character=list.randomGet();
event.map[event.rZhu].remove(character);
game.rZhu.init(character);
}
if(!game.bZhu.name){
var list=event.map[event.bZhu].randomGets(4);
if(event.map_zhu[event.bZhu]) list.addArray(event.map_zhu[event.bZhu].randomGets(2));
var character=list.randomGet();
event.map[event.bZhu].remove(character);
game.bZhu.init(character);
}
game.rZhu.maxHp++;
game.rZhu.hp++;
game.rZhu.update();
game.bZhu.maxHp++;
game.bZhu.hp++;
game.bZhu.update();
if(!event.isZhu){
var group=game.me.identity.indexOf('r')==0?event.rZhu:event.bZhu;
game.me.chooseButton(true,['请选择您的武将牌',[event.map[group].randomRemove(5),'character']]);
}
"step 6"
if(!event.isZhu){
game.me.init(result.links[0]);
}
game.countPlayer(function(current){
if(!current.name){
var group=current.identity.indexOf('r')==0?event.rZhu:event.bZhu;
current.init(event.map[group].randomRemove(1)[0]);
}
});
"step 7"
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
});
},
chooseCharacter:function(){
if(_status.mode=='purple'){
game.chooseCharacterPurple();
return;
}
var next=game.createEvent('chooseCharacter',false);
next.showConfig=true;
next.addPlayer=function(player){
@ -1247,6 +1660,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
});
},
chooseCharacterOL:function(){
if(_status.mode=='purple'){
game.chooseCharacterPurpleOL();
return;
}
var next=game.createEvent('chooseCharacter',false);
next.setContent(function(){
"step 0"
@ -1528,6 +1945,23 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
nei:"内",
fan:"反",
cai:"猜",
cai2:"猜",
rZhu:"主",
rZhong:"忠",
rNei:"内",
rYe:"野",
rZhu2:"主帅",
rZhong2:"前锋",
rNei2:"细作",
rYe2:"野心家",
bZhu:"主",
bZhong:"忠",
bNei:"内",
bYe:"野",
bZhu2:"主帅",
bZhong2:"前锋",
bNei2:"细作",
bYe2:"野心家",
zhu2:"主公",
zhong2:"忠臣",
mingzhong2:"明忠",
@ -1550,9 +1984,17 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
dongcha_info:'游戏开始时,随机一名反贼的身份对你可见;准备阶段,你可以弃置场上的一张牌',
sheshen:'舍身',
sheshen_info:'锁定技,主公处于濒死状态即将死亡时,令主公+1体力上限回复体力至X点X为你的体力值数获得你的所有牌然后你死亡',
yexinbilu:'野心毕露',
},
element:{
player:{
yexinbilu:function(){
game.broadcastAll(function(player){
player.showIdentity();
},this);
this.gainMaxHp();
this.recover();
},
$dieAfter:function(){
if(_status.video) return;
if(!this.node.dieidentity){
@ -1564,6 +2006,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
str=get.translation(this.identity+'2');
}
var node=ui.create.div('.damage.dieidentity',str,this);
if(str=='野心家'){
node.style.fontSize='40px';
}
ui.refresh(node);
node.style.opacity=1;
this.node.dieidentity=node;
@ -1585,6 +2030,34 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
dieAfter2:function(source){
if(_status.mode=='purple'){
if(source){
if(this.identity=='rZhu'||this.identity=='bZhu'){
if(this.identity.slice(0,1)!=source.identity.slice(0,1)) source.recover();
}
else if(this.identity=='rZhong'||this.identity=='bZhong'){
if(this.identity.slice(0,1)!=source.identity.slice(0,1)) source.draw(2);
else if(this.identity.indexOf('Zhu')==1) this.discard(this.getCards('h'));
}
else if(this.identity=='rNei'||this.identity=='bNei'){
if(this.identity.slice(0,1)==source.identity.slice(0,1)) source.draw(3);
}
}
if(!_status.yeconfirm){
_status.yeconfirm=true;
game.addGlobalSkill('yexinbilu');
game.broadcastAll(function(){
if(game.me.identity=='rYe'||game.me.identity=='bYe'){
var player=game.findPlayer(function(current){
return current!=game.me&&(current.identity=='bYe'||current.identity=='rYe');
});
if(player){
player.showIdentity();
};
}
});
}
}
if(this.identity=='fan'&&source) source.draw(3);
else if(this.identity=='mingzhong'&&source){
if(source.identity=='zhu'){
@ -1619,6 +2092,19 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},game.zhu,this.special_identity);
}
game.checkResult();
if(_status.mode=='purple'){
var red=[];
var blue=[];
game.countPlayer(function(current){
var identity=current.identity.slice(1);
if(identity!='Zhu'){
if(current.identity.indexOf('r')==0) red.push(current);
else blue.push(current);
}
});
if(red.length<=1&&blue.length<=1) game.broadcastAll(game.showIdentity);
return;
};
if(game.zhu&&game.zhu.isZhu){
if(get.population('zhong')+get.population('nei')==0||
get.population('zhong')+get.population('fan')==0){
@ -1697,7 +2183,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else c=1;
var eff=get.effect(targets[i],card,this);
effect+=eff*c;
if(eff==0&&shown==0&&this.identity=='zhong'&&targets[i]!=this){
if(eff==0&&shown==0&&['zhong','rZhong','bZhong'].contains(this.identity)&&targets[i]!=this){
effect+=0.1;
}
}
@ -1709,7 +2195,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else if(targets.length==1) this.ai.shown+=0.2*c;
else this.ai.shown+=0.1*c;
}
else if(effect<0&&this==game.me&&game.me.identity!='nei'){
else if(effect<0&&this==game.me&&['nei','rYe','bYe'].contains(game.me.identity)){
if(targets.length==1&&targets[0]==this);
else if(targets.length==1) this.ai.shown-=0.2;
else this.ai.shown-=0.1;
@ -1718,6 +2204,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(this!=game.me) this.ai.shown*=2;
if(this.ai.shown>0.95) this.ai.shown=0.95;
if(this.ai.shown<-0.5) this.ai.shown=-0.5;
if(_status.mode=='purple') return;
var marknow=(!_status.connectMode&&this!=game.me&&get.config('auto_mark_identity')&&this.ai.identity_mark!='finished');
// if(true){
@ -1833,6 +2320,11 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(num){
return x/num;
}
if(_status.mode=='purple'){
var real=get.realAttitude(from,to);
if(from==to||to.identityShown||(_status.yeconfirm&&['rYe','bYe'].contains(to.identity)&&['rYe','bYe'].contains(to.identity))) return real*1.1;
return ((to.ai.shown+0.1)*real+(from.identity.slice(0,1)==to.identity.slice(0,1)?3:-3)*(1-to.ai.shown))
}
var difficulty=0;
if(to==game.me) difficulty=2-get.difficulty();
if(from==to||to.identityShown||(from.storage.dongcha==to)){
@ -1864,6 +2356,25 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
realAttitude:function(from,to){
if(_status.mode=='purple'){
if(['rZhu','rZhong','bNei'].contains(from.identity)){
if(to.identity=='rZhu') return 8;
if(['rZhong','bNei'].contains(to.identity)) return 7;
return -7;
}
else if(['bZhu','bZhong','rNei'].contains(from.identity)){
if(to.identity=='bZhu') return 8;
if(['bZhong','rNei'].contains(to.identity)) return 7;
return -7;
}
else{
if(['rYe','bYe'].contains(to.identity)) return 7;
if(['rZhu','bZhu'].contains(to.identity)&&game.hasPlayer(function(current){
return ['rZhong','bZhong','rNei','bNei'].contains(current.identity);
})) return 6.5;
return -7;
}
}
if(!game.zhu){
if(from.identity=='nei'||to.identity=='nei') return -1;
if(from.identity==to.identity) return 6;
@ -2095,6 +2606,28 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
skill:{
yexinbilu:{
enable:'phaseUse',
filter:function(event,player){
return player.identity=='rYe'||player.identity=='bYe';
},
skillAnimation:'legend',
animationColor:'thunder',
content:function(){
game.removeGlobalSkill('yexinbilu');
player.yexinbilu();
},
ai:{
order:10,
result:{
player:function(player){
return 1-game.countPlayer(function(current){
return current!=player&&(current.identity=='rYe'||current.identity=='bYe')&&(current==game.me||current.isOnline());
})
},
},
},
},
identity_junshi:{
name:'军师',
mark:true,
@ -2438,10 +2971,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
help:{
'身份模式':'<div style="margin:10px">选项</div><ul style="margin-top:0"><li>加强主公<br>反贼人数多于2时主公会额外增加一个技能每个主公的额外技能固定非常备主公增加天命<li>特殊身份<br><ul style="padding-left:20px;padding-top:5px"><li>军师:忠臣身份。只要军师存活,主公在准备阶段开始时,可以观看牌堆顶的三张牌,然后将这些牌以任意顺序置于牌堆顶或牌堆底<li>大将:忠臣身份。只要大将存活,主公手牌上限+1<li>贼首:反贼身份,只要贼首存活,主公手牌上限-1</ul></ul>'+
'<div style="margin:10px">明忠</div><ul style="margin-top:0"><li>本模式需要8名玩家进行游戏使用的身份牌为1主公、2忠臣、4反贼和1内奸。游戏开始时每名玩家随机获得一个身份由系统随机选择一名忠臣身份的玩家亮出身份将忠臣牌正面朝上放在面前其他身份包括主公的玩家不亮出身份。<li>'+
'身份模式':'<div style="margin:10px">选项</div><ul style="margin-top:0"><li>加强主公<br>反贼人数多于2时主公会额外增加一个技能每个主公的额外技能固定非常备主公增加天命<li>特殊身份<br><ul style="padding-left:20px;padding-top:5px"><li>军师:忠臣身份。只要军师存活,主公在准备阶段开始时,可以观看牌堆顶的三张牌,然后将这些牌以任意顺序置于牌堆顶或牌堆底<li>大将:忠臣身份。只要大将存活,主公手牌上限+1<li>贼首:反贼身份,只要贼首存活,主公手牌上限-1</ul></ul>',
'明忠模式':'<div style="margin:10px">明忠模式(忠胆英杰)</div><ul style="margin-top:0"><li>本模式需要8名玩家进行游戏使用的身份牌为1主公、2忠臣、4反贼和1内奸。游戏开始时每名玩家随机获得一个身份由系统随机选择一名忠臣身份的玩家亮出身份将忠臣牌正面朝上放在面前其他身份包括主公的玩家不亮出身份。<li>'+
'首先由亮出身份的忠臣玩家随机获得六张武将牌,挑选一名角色,并将选好的武将牌展示给其他玩家。之后其余每名玩家随机获得三张武将牌,各自从其中挑选一张同时亮出<li>'+
'亮出身份牌的忠臣增加1点体力上限。角色濒死和死亡的结算及胜利条件与普通身份局相同。',
'3v3v2':'<div style="margin:10px">3v3v2模式</div><ul style="margin-top:0"><li>游戏准备<br>本模式需要8名玩家进行游戏。游戏开始前所有玩家随机分成两组每组四人分别称为「冷色阵营」和「暖色阵营」然后分发身份牌抽取到「主帅」身份的玩家亮出身份牌。'+
'<li>身份牌<br>每组的身份分为四种。<br>主帅(主)和前锋(忠):联合对方阵营的细作,击杀己方细作,对方阵营的主帅和前锋以及所有的野心家。<br>细作(内):帮助对方阵营的主帅和前锋,击杀对方细作,己方阵营的主帅和前锋以及所有的野心家。<br>野心家(野):联合对方阵营中的野心家,击杀所有其他角色,成为最后的生还者。<br>'+
'<li>胜负判定<br>冷色主帅,先锋和暖色细作在所有其他角色全部阵亡后视为胜利,在冷色主帅阵亡后视为游戏失败。<br>暖色主帅,先锋和冷色细作在所有其他角色阵亡后视为胜利,在暖色主帅阵亡后视为失败。<br>野心家在所有不为野心家的角色阵亡后视为胜利,在双方主帅全部阵亡而有非野心家角色存活时失败。<br>当有角色阵亡后,若有角色满足胜利条件,游戏结束。若所有角色均满足失败条件,则游戏平局。若一名角色满足失败条件,即使其满足胜利条件,也视为游戏失败。<br>'+
'<li>游戏流程<br>在「游戏准备」中的工作完成后,冷色主帅选择一个势力,然后暖色主帅选择一个其他势力,作为双方各自的势力将池。<br>双方主帅从各自的势力将池中获得两张常备主公武将牌和四张非常备主公武将牌,然后选择一张作为武将牌,将其他的武将牌放回势力将池并洗混。然后双方的其他玩家从各自的势力将池中随机获得五张武将牌,选择一张作为自己的武将牌。<br>暖色主帅成为游戏的一号位双方主帅各加1点体力和体力上限。七号位和八号位的起始手牌+1。<br>当场上第一次有玩家死亡时野心家确认彼此的身份牌然后获得技能〖野心毕露〗出牌阶段你可以明置身份牌加1点体力上限和体力值。若如此做所有的野心家失去技能〖野心毕露〗<br>'+'<li>击杀奖惩<br>杀死颜色不同的主帅的角色回复1点体力杀死颜色不同的先锋的角色摸两张牌杀死颜色相同的细作的角色摸三张牌杀死颜色相同的先锋的主帅弃置所有手牌。<br>'+
'<li>制作团队<br>游戏出品:紫星居<br>游戏设计:食茸貳拾肆<br>游戏开发食茸貳拾肆、紫髯的小乔、聆星Mine、空城琴音依旧弥漫、丽景原同志、雪之彩翼、拉普拉斯、明月照沟渠<br>程序化:无名杀<br>鸣谢:荆哲、魔风、萨巴鲁酱、这就是秋夜</ul></ul>',
}
};
});