v1.9.92.1.1

This commit is contained in:
Spmario233 2019-08-24 23:41:12 +08:00 committed by GitHub
parent dd637532d4
commit 578fa44787
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
16 changed files with 5748 additions and 6815 deletions

View File

@ -170,9 +170,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
global:"gameStart", global:"gameStart",
player:["phaseEnd","enterGame"], player:["phaseEnd","enterGame"],
}, },
filter:function (event,player){ //filter:function (event,player){
return player.isAlive(); // return player.isAlive();
}, //},
content:function (){ content:function (){
var n=[1,2].randomGet(); var n=[1,2].randomGet();
if(n==1){ if(n==1){
@ -201,7 +201,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
content:function (){ content:function (){
trigger.cancel(); trigger.cancel();
event.finish(); //event.finish();
}, },
}, },
ns_xiandao:{ ns_xiandao:{
@ -241,7 +241,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:"ns_chuanshu3", group:"ns_chuanshu3",
}, },
ns_chuanshu3:{ ns_chuanshu3:{
audio:"ext:群英会:1", audio:1,
trigger:{ trigger:{
player:"dieBegin", player:"dieBegin",
}, },
@ -294,9 +294,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.delay(); game.delay();
} }
"step 3" "step 3"
player.chooseToDiscard(2,'he','请弃置两张牌',true).ai=function(card){ player.chooseToDiscard(2,'he','请弃置两张牌',true);
return 7-get.value(card);
};
}, },
ai:{ ai:{
threaten:0.5, threaten:0.5,
@ -3375,7 +3373,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.gain(cards,'gain2'); player.gain(cards,'gain2');
} }
player.storage.liangji_1=0; player.storage.liangji_1=0;
'step 1' 'step 1'
if(player.sex=='male')player.addTempSkill('wushuang'); if(player.sex=='male')player.addTempSkill('wushuang');
if(player.sex=='female')player.addTempSkill('lijian'); if(player.sex=='female')player.addTempSkill('lijian');
@ -3453,7 +3450,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.$throw(links); player.$throw(links);
game.log(player,'被移去了',links); game.log(player,'被移去了',links);
for(var i=0;i<links.length;i++){ for(var i=0;i<links.length;i++){
ui.discardPile.appendChild(links[i]);} ui.discardPile.appendChild(links[i]);
}
} }
"step 2" "step 2"
trigger.cancel(); trigger.cancel();

View File

@ -1851,7 +1851,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
expose:0.4, expose:0.4,
} }
}, },
"nzry_longnu":{ "nzry_longnu":{
mark:true, mark:true,
locked:true, locked:true,
@ -2129,11 +2128,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0' 'step 0'
player.awakenSkill('nzry_dinghuo'); player.awakenSkill('nzry_dinghuo');
player.storage.nzry_dinghuo=true; player.storage.nzry_dinghuo=true;
/*player.chooseTarget([0,player.storage.nzry_junlve],'',function(card,player,target){
return target.isLinked();
}).ai=function(target){
return -get.attitude(player,target);
};*/
'step 1' 'step 1'
player.storage.nzry_junlve=0; player.storage.nzry_junlve=0;
player.syncStorage('nzry_junlve'); player.syncStorage('nzry_junlve');

View File

@ -35,10 +35,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_caochun:['male','wei',4,['shanjia']], old_caochun:['male','wei',4,['shanjia']],
old_yuanshu:['male','qun',4,['xinyongsi','yjixi']], old_yuanshu:['male','qun',4,['xinyongsi','yjixi']],
}, },
characterFilter:{ characterFilter:{},
}, skill:{},
skill:{
},
translate:{ translate:{
re_jikang:"新嵇康", re_jikang:"新嵇康",
old_bulianshi:'新步练师', old_bulianshi:'新步练师',

View File

@ -39,7 +39,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_lidian:'字曼成,曹操麾下将领。李典深明大义,不与人争功,崇尚学习与高贵儒雅,尊重博学之士,在军中被称为长者。李典有长者之风,官至破虏将军,三十六岁去世。魏文帝曹丕继位后追谥号为愍侯。', re_lidian:'字曼成,曹操麾下将领。李典深明大义,不与人争功,崇尚学习与高贵儒雅,尊重博学之士,在军中被称为长者。李典有长者之风,官至破虏将军,三十六岁去世。魏文帝曹丕继位后追谥号为愍侯。',
}, },
skill:{ skill:{
reqiangxi:{ reqiangxi:{
subSkill:{ subSkill:{
off:{ off:{

View File

@ -140,7 +140,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"chendao":"陈到,字叔至,生卒年不详,豫州汝南(今河南驻马店平舆县)人。三国时期蜀汉将领,刘备帐下白毦兵统领,名位常亚于赵云,以忠勇著称。蜀汉建兴年间,任征西将军、永安都督,封亭侯。在任期间去世。", "chendao":"陈到,字叔至,生卒年不详,豫州汝南(今河南驻马店平舆县)人。三国时期蜀汉将领,刘备帐下白毦兵统领,名位常亚于赵云,以忠勇著称。蜀汉建兴年间,任征西将军、永安都督,封亭侯。在任期间去世。",
}, },
skill:{ skill:{
//阴雷 //阴雷
"drlt_zhenrong":{ "drlt_zhenrong":{
init:function (player){ init:function (player){
@ -1832,7 +1831,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).ai=function(target){ }).ai=function(target){
return get.attitude(player,target) return get.attitude(player,target)
}; };
}else{ }
else{
event.finish(); event.finish();
}; };
'step 2' 'step 2'

View File

@ -431,49 +431,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
basic:{ basic:{
equipValue:7.5, equipValue:7.5,
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);
},
}, },
}, },
skills:["rw_bagua_skill"], skills:["rw_bagua_skill"],
enable:true,
selectTarget:-1,
filterTarget:function (card,player,target){
return target==player;
},
modTarget:true,
allowMultiple:false,
content:function (){
target.equip(card);
},
toself:true,
}, },
"rewrite_baiyin":{ "rewrite_baiyin":{
derivation:"majun", derivation:"majun",
@ -498,48 +458,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
basic:{ basic:{
equipValue:5, equipValue:5,
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,
}, },
"rewrite_lanyinjia":{ "rewrite_lanyinjia":{
derivation:"majun", derivation:"majun",
@ -551,49 +471,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
equipValue:6, equipValue:6,
basic:{ 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, 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,
filterTarget:function (card,player,target){
return target==player;
},
modTarget:true,
allowMultiple:false,
content:function (){
target.equip(card);
},
toself:true,
}, },
"rewrite_renwang":{ "rewrite_renwang":{
derivation:"majun", derivation:"majun",
@ -605,48 +485,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
basic:{ basic:{
equipValue:7.5, equipValue:7.5,
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,
}, },
"rewrite_tengjia":{ "rewrite_tengjia":{
derivation:"majun", derivation:"majun",
@ -671,49 +511,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
basic:{ basic:{
equipValue:3, equipValue:3,
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);
},
}, },
}, },
skills:["rw_tengjia1","rw_tengjia2","rw_tengjia3","rw_tengjia4"], skills:["rw_tengjia1","rw_tengjia2","rw_tengjia3","rw_tengjia4"],
enable:true,
selectTarget:-1,
filterTarget:function (card,player,target){
return target==player;
},
modTarget:true,
allowMultiple:false,
content:function (){
target.equip(card);
},
toself:true,
}, },
"rewrite_zhuge":{ "rewrite_zhuge":{
derivation:"majun", derivation:"majun",
@ -742,52 +542,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
basic:{ basic:{
equipValue:5, equipValue:5,
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;
},
}, },
tag:{ tag:{
valueswap:1, valueswap:1,
}, },
result:{
target:function (player,target){
return get.equipResult(player,target,name);
},
},
}, },
skills:["zhuge_skill"], skills:["zhuge_skill"],
enable:true,
selectTarget:-1,
filterTarget:function (card,player,target){
return target==player;
},
modTarget:true,
allowMultiple:false,
content:function (){
target.equip(card);
},
toself:true,
}, },
}, },
skill:{ skill:{
@ -2036,576 +1796,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
cardEnabled:function (card){if(card.name=='sha') return false}, cardEnabled:function (card){if(card.name=='sha') return false},
}, },
}, },
//双牌打出闪:
yizan1:{
trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){
//if(event.responded) return false;
//if(event.filterCard({name:'wuxie'})) return false;
if(!event.filterCard({name:'shan'})) return false;
//if(player.hasSkill('yizan4')) return false;
//if(event.parent.name!='sha') return false;
var hs=player.getCards('h',{type:'basic'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])=='basic'){
break;
}
}
if(i==hs.length) return false;
return true;
},
direct:true,
init:function (player){
player.unmarkSkill('yizan');
player.storage.yizan=[];
player.syncStorage('yizan');
},
intro:{
content:"已发动了#次翊赞",
},
content:function(){
"step 0"
player.chooseCard(get.prompt('yizan1'),'he',function(card){
return get.type(card)=='basic';
}).set('ai',function(card){
if(!_status.event.player.countCards('h','shan')){
return 8-get.value(card);
}
return 6-get.value(card);
});
"step 1"
if(result.bool){
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:{name:'shan'}}
player.lose(result.cards,ui.special);
player.$throw(result.cards);
player.chooseToDiscard('he',true);
player.markSkill('yizan');
player.storage.yizan++;
player.update();
player.logSkill('yizan1');
player.addTempSkill('yizan4');
}
else{
event.finish();
}
},
ai:{
respondShan:true,
},
},
//双牌打出杀:
yizan5:{
trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){
//if(event.responded) return false;
//if(event.filterCard({name:'wuxie'})) return false;
if(!event.filterCard({name:'sha'})) return false;
//if(player.hasSkill('yizan4')) return false;
var hs=player.getCards('h',{type:'basic'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])=='basic'){
break;
}
}
if(i==hs.length) return false;
return true;
},
direct:true,
init:function (player){
player.unmarkSkill('yizan');
player.storage.yizan=[];
player.syncStorage('yizan');
},
intro:{
content:"已发动了#次翊赞",
},
content:function(){
"step 0"
player.chooseCard(get.prompt('yizan5'),'he',function(card){
return get.type(card)=='basic';
}).set('ai',function(card){
if(!_status.event.player.countCards('h','sha')){
return 8-get.value(card);
}
return 6-get.value(card);
});
"step 1"
if(result.bool){
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:{name:'sha'}}
player.lose(result.cards,ui.special);
player.$throw(result.cards);
player.chooseToDiscard('he',true);
player.markSkill('yizan');
player.storage.yizan++;
player.update();
player.logSkill('yizan5');
player.addTempSkill('yizan4');
}
else{
event.finish();
}
},
ai:{
respondSha:true,
},
},
yizan4:{},
//单牌打出闪:
"yizan3":{
trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){
//if(event.responded) return false;
//if(event.filterCard({name:'wuxie'})) return false;
if(!event.filterCard({name:'shan'})) return false;
//if(player.hasSkill('yizan4')) return false;
//if(event.parent.name!='sha') return false;
var hs=player.getCards('h',{type:'basic'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])=='basic'){
break;
}
}
if(i==hs.length) return false;
return true;
},
direct:true,
content:function(){
"step 0"
player.chooseCard(get.prompt('yizan3'),'he',function(card){
return get.type(card)=='basic';
}).set('ai',function(card){
if(!_status.event.player.countCards('h','shan')){
return 8-get.value(card);
}
return 6-get.value(card);
});
"step 1"
if(result.bool){
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:{name:'shan'}}
player.lose(result.cards,ui.special);
player.$throw(result.cards);
player.logSkill('yizan3');
player.addTempSkill('yizan4');
}
else{
event.finish();
}
},
},
//单牌打出杀:
yizan6:{
trigger:{player:'chooseToRespondBegin'},
filter:function(event,player){
//if(event.responded) return false;
//if(event.filterCard({name:'wuxie'})) return false;
if(!event.filterCard({name:'sha'})) return false;
//if(player.hasSkill('yizan4')) return false;
//if(event.parent.name!='sha') return false;
var hs=player.getCards('h',{type:'basic'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])=='basic'){
break;
}
}
if(i==hs.length) return false;
return true;
},
direct:true,
content:function(){
"step 0"
player.chooseCard(get.prompt('yizan6'),'he',function(card){
return get.type(card)=='basic';
}).set('ai',function(card){
if(!_status.event.player.countCards('h','sha')){
return 8-get.value(card);
}
return 6-get.value(card);
});
"step 1"
if(result.bool){
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:{name:'sha'}}
player.lose(result.cards,ui.special);
player.$throw(result.cards);
player.logSkill('yizan3');
player.addTempSkill('yizan4');
}
else{
event.finish();
}
},
},
//双牌使用:
yizan:{
// audio:2,
// enable:["chooseToUse"],
enable:["chooseToRespond","chooseToUse"],
filter:function (event,player){
return player.countCards('h',{type:'basic'})>0&&player.countCards('he')>1;
},
init:function (player){
player.unmarkSkill('yizan');
player.storage.yizan=[];
player.syncStorage('yizan');
},
intro:{
content:"已发动了#次翊赞",
},
group:["yizan1","yizan5"],
chooseButton:{
dialog:function (event,player){
var list=[];
if(event.filterCard({name:'sha'},player,event)){
list.push(['基本','','sha']);
list.push(['基本','','sha','fire']);
list.push(['基本','','sha','thunder']);
}
if(event.filterCard({name:'tao'},player,event)){
list.push(['基本','','tao']);
}
if(event.filterCard({name:'jiu'},player,event)){
list.push(['基本','','jiu']);
}
return ui.create.dialog('翊赞',[list,'vcard'],'hidden');
},
check:function (button){
var player=_status.event.player;
var card={name:button.link[2],nature:button.link[3]};
if(game.hasPlayer(function(current){
return player.canUse(card,current)&&get.effect(current,card,player,player)>0;
})){
switch(button.link[2]){
case 'tao':return 5;
case 'jiu':return 3.01;
case 'sha':
if(button.link[3]=='fire') return 2.95;
else if(button.link[3]=='fire') return 2.92;
else return 2.9;
}
}
return 0;
},
backup:function (links,player){
return {
selectCard:function (){
// if(_status.event.player.storage.longyuan) return 1;
return 2;
},
filterCard:function (card){
if(ui.selected.cards.length){
if(get.type(ui.selected.cards[0],'trick')=='basic') return true;
return get.type(card)=='basic';
}
return true;
},
viewAs:{name:links[0][2],nature:links[0][3]},
position:'he',
complexCard:true,
popname:true,
precontent:function(){
player.storage.yizan++;
player.markSkill('yizan');
player.update();
},
}
},
prompt:function (links,player){
return '你可以将两张牌(其中至少一张是基本牌)当'+get.translation(links[0][3]||'')+get.translation(links[0][2])+'使用或打出';
},
},
ai:{
order:function (){
var player=_status.event.player;
var event=_status.event;
if(!player.storage.yizan.jiu&&event.filterCard({name:'jiu'},player,event)&&get.effect(player,{name:'jiu'})>0){
return 3.1;
}
return 2.9;
},
save:true,
respondSha:true,
respondShan:true,
skillTagFilter:function (player,tag,arg){
if(player.hasCard(function(card){
return get.color(card)=='black'&&get.type(card)!='basic';
},'he')){
if(!player.storage.yizan) player.storage.yizan={};
if(tag=='respondSha'){
if(arg!='use') return false;
if(player.storage.yizan.sha) return false;
}
else{
if(player.storage.yizan.tao&&player.storage.yizan.jiu) return false;
}
}
else{
return false;
}
},
result:{
player:1,
},
},
},
longyuan:{
audio:2,
unique:true,
trigger:{
player:["respond","useCard"],
},
forced:true,
filter:function (event,player){
return player.storage.yizan>=3;
},
content:function (){
'step 0'
player.$fullscreenpop('龙跃于渊','fire');
'step 1'
player.addSkill('yizan2');
player.removeSkill('yizan');
player.awakenSkill('longyuan');
//player.removeSkill('longyuan');
player.update();
},
},
//单牌使用:
"yizan2":{
enable:["chooseToRespond","chooseToUse"],
filter:function (event,player){
return player.countCards('h',{type:'basic'})>0;
},
group:["yizan3","yizan6"],
chooseButton:{
dialog:function (event,player){
var list=[];
if(event.filterCard({name:'sha'},player,event)){
list.push(['基本','','sha']);
list.push(['基本','','sha','fire']);
list.push(['基本','','sha','thunder']);
}
if(event.filterCard({name:'tao'},player,event)){
list.push(['基本','','tao']);
}
if(event.filterCard({name:'jiu'},player,event)){
list.push(['基本','','jiu']);
}
return ui.create.dialog('翊赞',[list,'vcard'],'hidden');
},
check:function (button){
var player=_status.event.player;
var card={name:button.link[2],nature:button.link[3]};
if(game.hasPlayer(function(current){
return player.canUse(card,current)&&get.effect(current,card,player,player)>0;
})){
switch(button.link[2]){
case 'tao':return 5;
case 'jiu':return 3.01;
case 'sha':
if(button.link[3]=='fire') return 2.95;
else if(button.link[3]=='fire') return 2.92;
else return 2.9;
}
}
return 0;
},
backup:function (links,player){
return {
/*selectCard:function (){
return 1;
},*/
filterCard:function (card){
return get.type(card)=='basic';
},
viewAs:{name:links[0][2],nature:links[0][3]},
position:'h',
//complexCard:true,
popname:true,
}
},
prompt:function (links,player){
return '你可以将一张基本牌当'+get.translation(links[0][3]||'')+get.translation(links[0][2])+'使用或打出';
},
},
ai:{
order:function (){
var player=_status.event.player;
var event=_status.event;
if(!player.storage.yizan2.jiu&&event.filterCard({name:'jiu'},player,event)&&get.effect(player,{name:'jiu'})>0){
return 3.1;
}
return 2.9;
},
save:true,
//respondSha:true,
// respondShan:true,
skillTagFilter:function (player,tag,arg){
if(player.hasCard(function(card){
return get.color(card)=='black'&&get.type(card)!='basic';
},'he')){
if(!player.storage.yizan2) player.storage.yizan2={};
if(tag=='respondSha'){
if(arg!='use') return false;
if(player.storage.yizan2.sha) return false;
}
else{
if(player.storage.yizan2.tao&&player.storage.yizan2.jiu) return false;
}
}
else{
return false;
}
},
result:{
player:1,
},
},
},
wuniang:{
audio:2,
trigger:{
player:["useCard","respond"],
},
direct:true,
priority:2018,
filter:function (event,player){
return event.card&&event.card.name=='sha'&&event.notLink();
},
content:function (){
"step 0"
var check;
var i,num=game.countPlayer(function(current){
return current!=player&&current.countCards('he')>0;
});
check=(num>=2);
player.chooseTarget(get.prompt('wuniang'),1,function(card,player,target){
return target.countCards('he')>0&&player!=target;
},function(target){
if(!_status.event.aicheck) return 0;
var att=get.attitude(_status.event.player,target);
if(target.hasSkill('tuntian')) return att/10;
return 1-att;
}).set('aicheck',check);
"step 1"
if(result.bool){
var target=result.targets[0];
player.logSkill('wuniang',target);
player.gainPlayerCard(target,'he',true);
target.draw();
}
else{
event.finish();
}
"step 2"
for(var i=0;i<game.players.length;i++){
if(game.players[i].name=='guansuo'){
player.chooseBool('是否令【关索】摸一张牌?').set('ai',function(){
return get.attitude(player,game.players[i])>0;
});
}
}
"step 3"
if(result.bool){
for(var i=0;i<game.players.length;i++){
if(game.players[i].name=='guansuo'){
game.players[i].draw();
}
}
}
else{
event.finish();
}
},
ai:{
threaten:2,
expose:0.3,
},
},
xushen:{
trigger:{
player:"recoverAfter",
},
direct:true,
unique:true,
priority:18,
logTarget:"source",
audio:2,
derivation:['zhennan'],
filter:function (event,player){
// if(event.type!='dying') return false;
for(var i=0;i<game.players.length;i++){
if(game.players[i].name=='guansuo') return false;
}
return player.hp==1&&event.source&&event.source!=player&&event.source.sex=='male';
},
content:function (){
'step 0'
trigger.source.chooseBool('是否将武将牌替换为【关索】?').set('ai',function(){
if(trigger.source.isAlive()) return true;
});
'step 1'
if(result.bool){
game.delay(2.8);
player.$fullscreenpop('许身','fire');
game.delay(0.5);
var name1=trigger.source.name;
var name2='guansuo';
trigger.source.reinit(name1,name2,false);
if(trigger.source.identity=='zhu'){
trigger.source.maxHp=5;
}
else{
trigger.source.maxHp=4;
}
trigger.source.update();
player.logSkill('xushen');
player.awakenSkill('xushen');
player.recover();
player.addSkill('zhennan');
player.update();
}
else{
event.finish();
}
},
},
zhennan:{
audio:2,
trigger:{
global:"useCard",
},
filter:function (event,player){
return event.player!=player&&event.card&&event.card.name=='nanman'&&event.notLink();
},
direct:true,
content:function (){
"step 0";
player.chooseTarget('选择【镇南】的目标',lib.translate.zhennan_info,true,function(card,player,target){
return target!=player;
}).set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player);
});
"step 1"
if(result.bool){
player.logSkill('zhennan');
var target=result.targets[0];
player.line(target);
target.damage([1,1,1,2,2,3].randomGet());
}
},
},
qingzhong:{ qingzhong:{
audio:2, audio:2,
trigger:{player:'phaseUseBegin'}, trigger:{player:'phaseUseBegin'},

View File

@ -29,9 +29,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liuyao:"刘繇yáo一读yóu156年197年字正礼。东莱牟平今山东牟平人。东汉末年宗室、大臣汉末群雄之一齐悼惠王刘肥之后太尉刘宠之侄。<br>刘繇最初被推举为孝廉授郎中。任下邑县长时因拒郡守请托而弃官。后被征辟为司空掾属除授侍御史因战乱而不到任避居淮浦。兴平元年194年被任命为扬州刺史。他先后与袁术、孙策交战一度被朝廷加授为扬州牧、振武将军但最终还是败归丹徒。此后刘繇又击破反叛的笮融旋即病逝年四十二。", liuyao:"刘繇yáo一读yóu156年197年字正礼。东莱牟平今山东牟平人。东汉末年宗室、大臣汉末群雄之一齐悼惠王刘肥之后太尉刘宠之侄。<br>刘繇最初被推举为孝廉授郎中。任下邑县长时因拒郡守请托而弃官。后被征辟为司空掾属除授侍御史因战乱而不到任避居淮浦。兴平元年194年被任命为扬州刺史。他先后与袁术、孙策交战一度被朝廷加授为扬州牧、振武将军但最终还是败归丹徒。此后刘繇又击破反叛的笮融旋即病逝年四十二。",
liuyan:"刘焉194年字君郎《华阳国志》又作君朗。江夏郡竟陵县今湖北省天门市人。东汉末年宗室、军阀汉末群雄之一西汉鲁恭王刘余之后。<br>刘焉初以汉朝宗室身份拜为中郎历任雒阳令、冀州刺史、南阳太守、宗正、太常等官。因益州刺史郄俭在益州大肆聚敛贪婪成风加上当时天下大乱。刘焉欲取得一安身立命之所割据一方于是向朝廷求为益州牧封阳城侯前往益州整饬吏治。郄俭为黄巾军所杀刘焉进入益州派张鲁盘踞汉中张鲁截断交通斩杀汉使从此益州与中央道路不通。刘焉进一步对内打击地方豪强巩固自身势力益州因而处于半独立的状态。兴平元年194年刘焉因背疮迸发而逝世其子刘璋继领益州牧。", liuyan:"刘焉194年字君郎《华阳国志》又作君朗。江夏郡竟陵县今湖北省天门市人。东汉末年宗室、军阀汉末群雄之一西汉鲁恭王刘余之后。<br>刘焉初以汉朝宗室身份拜为中郎历任雒阳令、冀州刺史、南阳太守、宗正、太常等官。因益州刺史郄俭在益州大肆聚敛贪婪成风加上当时天下大乱。刘焉欲取得一安身立命之所割据一方于是向朝廷求为益州牧封阳城侯前往益州整饬吏治。郄俭为黄巾军所杀刘焉进入益州派张鲁盘踞汉中张鲁截断交通斩杀汉使从此益州与中央道路不通。刘焉进一步对内打击地方豪强巩固自身势力益州因而处于半独立的状态。兴平元年194年刘焉因背疮迸发而逝世其子刘璋继领益州牧。",
}, },
characterTitle:{ characterTitle:{},
//lijue:"体力上限6",
},
perfectPair:{ perfectPair:{
lijue:['guosi','jiaxu'], lijue:['guosi','jiaxu'],
zhangji:['zhangxiu','drlt_zhangxiu','zoushi'], zhangji:['zhangxiu','drlt_zhangxiu','zoushi'],

View File

@ -3587,12 +3587,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ui.cardPile.insertBefore(cards[0],ui.cardPile.firstChild); ui.cardPile.insertBefore(cards[0],ui.cardPile.firstChild);
game.updateRoundNumber(); game.updateRoundNumber();
'step 2' 'step 2'
target.chooseToDiscard(true).prompt='请弃置一张锦囊牌,或依次弃置两张非锦囊牌。'; target.chooseToDiscard('he',true).prompt='请弃置一张锦囊牌,或依次弃置两张非锦囊牌。';
'step 3' 'step 3'
if((!result.cards||get.type(result.cards[0],'trick')!='trick')&&target.countCards('he',function(card){ if((!result.cards||get.type(result.cards[0],'trick')!='trick')&&target.countCards('he',function(card){
return get.type(card,'trick')!='trick'; return get.type(card,'trick')!='trick';
})){ })){
target.chooseToDiscard(true,function(card){ target.chooseToDiscard('he',true,function(card){
return get.type(card,'trick')!='trick'; return get.type(card,'trick')!='trick';
}).prompt='请弃置第二张非锦囊牌'; }).prompt='请弃置第二张非锦囊牌';
} }

View File

@ -1,24 +1,25 @@
window.noname_update={ window.noname_update={
version:'1.9.92.1', version:'1.9.92.1.1',
update:'1.9.92', update:'1.9.92.1',
changeLog:[ changeLog:[
'新增武将张菖蒲,许贡,忙牙长', '代码缩进对齐',
'添加武将小包分包和批量AI禁选',
'BUG修复', 'BUG修复',
'players://["zhangchangpu","xugong","mangyachang"]',
], ],
files:[ files:[
'card/extra.js',
'card/guozhan.js',
'card/standard.js', 'card/standard.js',
'character/diy.js',
'character/extra.js', 'character/extra.js',
'character/mobile.js', 'character/mobile.js',
'character/old.js', //'character/old.js',
'character/refresh.js', 'character/refresh.js',
'character/shenhua.js', 'character/shenhua.js',
'character/sp.js', 'character/sp.js',
'character/standard.js', 'character/xinghuoliaoyuan.js',
'character/yijiang.js', 'character/yijiang.js',
'mode/boss.js',
'mode/doudizhu.js', 'mode/doudizhu.js',
'mode/identity.js',
'mode/guozhan.js', 'mode/guozhan.js',
'game/game.js', 'game/game.js',
] ]

View File

@ -2036,7 +2036,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
})) return false; })) return false;
return event.targets.contains(player)&&event.player!=player; return event.targets.contains(player)&&event.player!=player;
}, },
audio:"ext:新虎牢关:true", audio:true,
check:function(event,player){ check:function(event,player){
if(get.attitude(player,event.player)>2) return false; if(get.attitude(player,event.player)>2) return false;
return true; return true;
@ -2180,56 +2180,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
prompt:"将一张桃当杀使用或打出", prompt:"将一张桃当杀使用或打出",
check:function (){return 1}, check:function (){return 1},
ai:{ ai:{
effect:{
target:function (card,player,target,current){
if(get.tag(card,'respondSha')&&current<0) return 0.6
},
},
respondSha:true, respondSha:true,
skillTagFilter:function (player){ skillTagFilter:function (player){
if(!player.countCards('h','tao')) return false; if(!player.countCards('h','tao')) return false;
}, },
order:function (){ order:function (){
return get.order({name:'sha'})-0.1; return get.order({name:'sha'})-0.1;
},
useful:-1,
value:-1,
basic:{
useful:[5,1],
value:[5,1],
},
result:{
target:function (player,target){
if(player.hasSkill('jiu')&&!target.getEquip('baiyin')){
if(get.attitude(player,target)>0){
return -6;
}
else{
return -3;
}
}
return -1.5;
},
},
tag:{
respond:1,
respondShan:1,
damage:function (card){
if(card.nature=='poison') return;
return 1;
},
natureDamage:function (card){
if(card.nature) return 1;
},
fireDamage:function (card,nature){
if(card.nature=='fire') return 1;
},
thunderDamage:function (card,nature){
if(card.nature=='thunder') return 1;
},
poisonDamage:function (card,nature){
if(card.nature=='poison') return 1;
},
}, },
}, },
sub:true, sub:true,

View File

@ -1853,7 +1853,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
enable:"phaseUse", enable:"phaseUse",
viewAs:{ viewAs:{
name:"wanjian", name:"wanjian",
cards:[{"node":{"image":{},"info":{},"name":{},"name2":{},"background":{},"intro":{},"range":{}},"storage":{},"vanishtag":[],"_uncheck":[],"suit":"spade","number":12,"name":"tiesuo","cardid":"8628233400","clone":{"name":"tiesuo","suit":"spade","number":12,"node":{"name":{},"info":{},"intro":{},"background":{},"image":{}},"_transitionEnded":true,"timeout":4467},"timeout":4363,"original":"h"},{"node":{"image":{},"info":{},"name":{},"name2":{},"background":{},"intro":{},"range":{}},"storage":{},"vanishtag":[],"_uncheck":[],"suit":"spade","number":13,"name":"nanman","cardid":"6870636402","clone":{"name":"nanman","suit":"spade","number":13,"node":{"name":{},"info":{},"intro":{},"background":{},"image":{}},"_transitionEnded":true,"timeout":4468},"timeout":4364,"original":"h"}],
}, },
filterCard:function (card,player){ filterCard:function (card,player){
if(!player.storage.new_luanji) return true; if(!player.storage.new_luanji) return true;
@ -1882,37 +1881,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
} }
} }
return 6-get.value(card); return 6-get.value(card);
},
ai:{
basic:{
order:10,
useful:1,
value:5,
},
wuxie:function (target,card,player,viewer){
if(get.attitude(viewer,target)>0&&target.countCards('h','shan')){
if(!target.countCards('h')||target.hp==1||Math.random()<0.7) return 0;
}
},
result:{
target:function (player,target){
if(player.hasUnknown(2)&&get.mode()!='guozhan') return 0;
var nh=target.countCards('h');
if(get.mode()=='identity'){
if(target.isZhu&&nh<=2&&target.hp<=1) return -100;
}
if(nh==0) return -2;
if(nh==1) return -1.7
return -1.5;
},
},
tag:{
respond:1,
respondShan:1,
damage:1,
multitarget:1,
multineg:1,
},
}, },
group:["new_luanji_count","new_luanji_reset","new_luanji_respond"], group:["new_luanji_count","new_luanji_reset","new_luanji_respond"],
subSkill:{ subSkill:{
@ -2173,11 +2141,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(!player.storage.keji_suit){ if(!player.storage.keji_suit){
player.storage.keji_suit=[]; player.storage.keji_suit=[];
} }
for(var i=0;i<trigger.cards.length;i++){ player.storage.keji_type.add(get.type(trigger.card));
player.storage.keji_type.add(get.type(trigger.cards[i],'trick')); player.storage.keji_color.add(get.color(trigger.card));
player.storage.keji_color.add(get.color(trigger.cards[i])); player.storage.keji_suit.add(get.suit(trigger.card));
player.storage.keji_suit.add(get.suit(trigger.cards[i]));
}
}, },
sub:true, sub:true,
forced:true, forced:true,
@ -2189,7 +2155,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
trigger:{ trigger:{
player:"phaseDiscardBefore", player:"phaseDiscardBefore",
}, },
priority:99999,
filter:function (event,player){ filter:function (event,player){
return !player.storage.keji_color||player.storage.keji_color.length<2; return !player.storage.keji_color||player.storage.keji_color.length<2;
}, },
@ -2218,6 +2183,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(player.storage.keji_type&&player.storage.keji_type.length>2) return true; if(player.storage.keji_type&&player.storage.keji_type.length>2) return true;
return false; return false;
}, },
check:function(event,player){
return player.canMoveCard(true);
},
content:function (){ content:function (){
player.moveCard(); player.moveCard();
}, },
@ -2287,7 +2255,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
content:function (){ content:function (){
player.draw(); player.draw();
player.storage.fanghun2++; //player.storage.fanghun2++;
}, },
sub:true, sub:true,
}, },
@ -2317,45 +2285,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
order:function (){ order:function (){
return get.order({name:'sha'})+0.1; return get.order({name:'sha'})+0.1;
},
useful:-1,
value:-1,
basic:{
useful:[5,1],
value:[5,1],
},
result:{
target:function (player,target){
if(player.hasSkill('jiu')&&!target.getEquip('baiyin')){
if(get.attitude(player,target)>0){
return -6;
}
else{
return -3;
}
}
return -1.5;
},
},
tag:{
respond:1,
respondShan:1,
damage:function (card){
if(card.nature=='poison') return;
return 1;
},
natureDamage:function (card){
if(card.nature) return 1;
},
fireDamage:function (card,nature){
if(card.nature=='fire') return 1;
},
thunderDamage:function (card,nature){
if(card.nature=='thunder') return 1;
},
poisonDamage:function (card,nature){
if(card.nature=='poison') return 1;
},
}, },
}, },
sub:true, sub:true,
@ -2368,8 +2297,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
viewAs:{ viewAs:{
name:"shan", name:"shan",
suit:"spade",
number:5,
}, },
prompt:"将一张杀当闪打出", prompt:"将一张杀当闪打出",
check:function (){return 1}, check:function (){return 1},
@ -2386,13 +2313,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(get.tag(card,'respondShan')&&current<0) return 0.6 if(get.tag(card,'respondShan')&&current<0) return 0.6
}, },
}, },
order:4,
useful:-1,
value:-1,
basic:{
useful:[7,2],
value:[7,2],
},
}, },
sub:true, sub:true,
}, },
@ -2447,16 +2367,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(player.countCards('h',{name:'sha',color:'red'})) return 1; if(player.countCards('h',{name:'sha',color:'red'})) return 1;
return player.countCards('h')<=player.hp?1:0; return player.countCards('h')<=player.hp?1:0;
}, },
},
effect:function (card,player,target){
if(get.tag(card,'damage')){
if(player.hasSkillTag('jueqing',false,target)) return [1,1];
return 1.2;
}
if(get.tag(card,'loseHp')){
if(player.hp<=1) return;
return [0,0];
}
}, },
}, },
}, },
@ -2812,7 +2722,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else{ else{
event.target.draw(player.maxHp-player.hp); event.target.draw(player.maxHp-player.hp);
event.target.turnOver(); event.target.turnOver();
} }
}, },
ai:{ ai:{
@ -3213,45 +3122,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
order:function (){ order:function (){
return get.order({name:'sha'})-0.1; return get.order({name:'sha'})-0.1;
},
useful:-1,
value:-1,
basic:{
useful:[5,1],
value:[5,1],
},
result:{
target:function (player,target){
if(player.hasSkill('jiu')&&!target.getEquip('baiyin')){
if(get.attitude(player,target)>0){
return -6;
}
else{
return -3;
}
}
return -1.5;
},
},
tag:{
respond:1,
respondShan:1,
damage:function (card){
if(card.nature=='poison') return;
return 1;
},
natureDamage:function (card){
if(card.nature) return 1;
},
fireDamage:function (card,nature){
if(card.nature=='fire') return 1;
},
thunderDamage:function (card,nature){
if(card.nature=='thunder') return 1;
},
poisonDamage:function (card,nature){
if(card.nature=='poison') return 1;
},
}, },
}, },
sub:true, sub:true,
@ -3279,13 +3149,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(get.tag(card,'respondShan')&&current<0) return 0.6 if(get.tag(card,'respondShan')&&current<0) return 0.6
}, },
}, },
order:4,
useful:-1,
value:-1,
basic:{
useful:[7,2],
value:[7,2],
},
}, },
sub:true, sub:true,
}, },
@ -3448,71 +3311,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
save:true, save:true,
respondTao:true, respondTao:true,
basic:{
order:function (card,player){
if(player.hasSkillTag('pretao')) return 4.9;
return 1.9;
},
useful:[8,6.5,5,4],
value:[8,6.5,5,4],
},
result:{
target:function (player,target){
// if(player==target&&player.hp<=0) return 2;
var nd=player.needsToDiscard();
var keep=false;
if(nd<=0){
keep=true;
}
else if(nd==1&&target.hp>=2&&target.countCards('h','tao')<=1){
keep=true;
}
var mode=get.mode();
if(target.hp>=2&&keep&&target.hasFriend()){
if(target.hp>2||nd==0) return 0;
if(target.hp==2){
if(game.hasPlayer(function(current){
if(target!=current&&get.attitude(target,current)>=3){
if(current.hp<=1) return true;
if((mode=='identity'||mode=='versus'||mode=='chess')&&current.identity=='zhu'&&current.hp<=2) return true;
}
})){
return 0;
}
}
}
if(target.hp<0&&target!=player&&target.identity!='zhu') return 0;
var att=get.attitude(player,target);
if(att<3&&att>=0&&player!=target) return 0;
var tri=_status.event.getTrigger();
if(mode=='identity'&&player.identity=='fan'&&target.identity=='fan'){
if(tri&&tri.name=='dying'&&tri.source&&tri.source.identity=='fan'&&tri.source!=target){
var num=game.countPlayer(function(current){
if(current.identity=='fan'){
return current.countCards('h','tao');
}
});
if(num>1&&player==target) return 2;
return 0;
}
}
if(mode=='identity'&&player.identity=='zhu'&&target.identity=='nei'){
if(tri&&tri.name=='dying'&&tri.source&&tri.source.identity=='zhong'){
return 0;
}
}
if(mode=='stone'&&target.isMin()&&
player!=target&&tri&&tri.name=='dying'&&player.side==target.side&&
tri.source!=target.getEnemy()){
return 0;
}
return 2;
},
},
tag:{
recover:1,
save:1,
},
}, },
}, },
"yinyang_skill_draw":{ "yinyang_skill_draw":{
@ -6434,7 +6232,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'step 0' 'step 0'
player.storage._mingzhi3=true; player.storage._mingzhi3=true;
var name=player.name1; var name=player.name1;
if(!player.isUnseen(0)||name.indexOf('gz_')!=0||!lib.junList.contains(name.slice(3))) event.finish(); if(!player.isUnseen(0)||name.indexOf('gz_')!=0||!lib.junList.contains(name.slice(3))||!lib.character['gz_jun'+name.slice(3)]) event.finish();
else{ else{
player.chooseBool("是否将主武将牌替换为君主武将?").ai=function(){return true}; player.chooseBool("是否将主武将牌替换为君主武将?").ai=function(){return true};
} }