This commit is contained in:
libccy 2017-02-11 21:42:46 +08:00
parent 6e8185616d
commit ffde185827
8 changed files with 86 additions and 119 deletions

View File

@ -667,11 +667,9 @@ card.gujian={
return target!=player&&target.num('he')>0;
},
changeTarget:function(player,targets){
game.countPlayer(function(current){
if(get.distance(targets[0],current,'pure')==1&&current.num('he')){
targets.push(current);
}
});
game.filterPlayer(function(current){
return get.distance(targets[0],current,'pure')==1&&current.num('he');
},targets);
},
content:function(){
var he=target.get('he');

View File

@ -89,21 +89,18 @@ card.guozhan={
fullskin:true,
type:'trick',
enable:function(card,player){
for(var i=0;i<game.players.length;i++){
if(game.players[i].isMajor()) return true;
}
return false;
return game.hasPlayer(function(current){
return current.isMajor();
});
},
mode:['guozhan'],
filterTarget:true,
chongzhu:true,
changeTarget:function(player,targets){
var target=targets[0];
for(var i=0;i<game.players.length;i++){
if(game.players[i].isMajor()==target.isMajor()&&game.players[i]!=target){
targets.push(game.players[i]);
}
}
game.filterPlayer(function(current){
return current.isMajor()==target.isMajor()&&current!=target;
},targets);
},
content:function(){
if(target.isLinked()){
@ -122,18 +119,16 @@ card.guozhan={
},
result:{
player:function(player,target){
var num=0;
for(var i=0;i<game.players.length;i++){
if(target.isMajor()==game.players[i].isMajor()){
if(game.players[i].isLinked()){
num+=ai.get.attitude(player,target);
return game.countPlayer(function(current){
if(target.isMajor()==current.isMajor()){
if(current.isLinked()){
return ai.get.attitude(player,target);
}
else{
num-=ai.get.attitude(player,target)*0.8;
return -ai.get.attitude(player,target)*0.8;
}
}
}
return num;
});
}
}
}
@ -152,11 +147,9 @@ card.guozhan={
var target=targets[0];
targets.push(player);
if(target.identity!='ye'){
for(var i=0;i<game.players.length;i++){
if(target!=game.players[i]&&target.identity==game.players[i].identity){
targets.push(game.players[i]);
}
}
game.filterPlayer(function(current){
return target!=current&&target.identity==current.identity;
},targets);
}
},
content:function(){
@ -264,16 +257,15 @@ card.guozhan={
player:function(player,target){
var att=ai.get.attitude(player,target);
if(target.hp==1&&att<0) return 0;
for(var i=0;i<game.players.length;i++){
if(game.players[i]==target) continue;
if(ai.get.attitude(player,game.players[i])<att){
if(game.hasPlayer(function(current){
return ai.get.attitude(player,current)<att;
})){
var num=1;
if(target==player.next||target==player.previous){
num+=0.5;
}
return num;
}
}
return 0;
}
}
@ -301,36 +293,28 @@ card.guozhan={
return target==next||target.inline(next);
}
if(player==target) return false;
var link=false;
for(var i=0;i<game.players.length;i++){
if(game.players[i].isLinked()&&game.players[i]!=player){
link=true;break;
}
}
if(link){
if(game.hasPlayer(function(current){
return current.isLinked()&&current!=player;
})){
if(!target.isLinked()) return false;
var distance=get.distance(player,target,'absolute');
for(var i=0;i<game.players.length;i++){
if(target!=game.players[i]&&
game.players[i]!=player&&
game.players[i].isLinked()){
if(get.distance(player,game.players[i],'absolute')<distance){
return false;
}
if(get.distance(player,game.players[i],'absolute')==distance&&
parseInt(game.players[i].dataset.position)<parseInt(target.dataset.position)){
return false;
}
}
}
return !game.hasPlayer(function(current){
if(target!=current&&current!=player&&current.isLinked()){
var dist=get.distance(player,current,'absolute');
if(dist<distance){
return true;
}
if(dist==distance&&parseInt(current.dataset.position)<parseInt(target.dataset.position)){
return true;
}
}
});
}
else{
var dist=get.distance(player,target);
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&get.distance(player,game.players[i])<dist) return false;
}
return true;
return !game.hasPlayer(function(current){
return current!=player&&get.distance(player,current)<dist
});
}
},
enable:true,
@ -353,19 +337,11 @@ card.guozhan={
if(!target.isLinked()){
return ai.get.damageEffect(target,player,target,'fire');
}
var num=0;
for(var i=0;i<game.players.length;i++){
if(game.players[i].isLinked()){
var eff=ai.get.damageEffect(game.players[i],player,target,'fire');
if(eff>0){
num++;
return game.countPlayer(function(current){
if(current.isLinked()){
return get.sgn(ai.get.damageEffect(current,player,target,'fire'));
}
else if(eff<0){
num--;
}
}
}
return num;
});
}
}
}
@ -527,11 +503,9 @@ card.guozhan={
basic:{
equipValue:function(card,player){
if(player.identity=='unknown'||player.identity=='ye') return 2.5;
var num=2;
for(var i=0;i<game.players.length;i++){
if(game.players[i].identity==player.identity) num+=0.5;
}
return num;
return 2+game.countPlayer(function(current){
return current.identity==player.identity;
})/2;
}
}
},
@ -574,10 +548,9 @@ card.guozhan={
trigger:{player:'phaseUseBegin'},
forced:true,
filter:function(event,player){
for(var i=0;i<game.players.length;i++){
if(player.canUse({name:'zhibi'},game.players[i])) return true;
}
return false;
return game.hasPlayer(function(current){
return player.canUse('zhibi',current);
});
},
content:function(){
'step 0'
@ -810,13 +783,12 @@ card.guozhan={
_wuliu_skill2:{
mod:{
attackFrom:function(from,to,distance){
for(var i=0;i<game.players.length;i++){
if(game.players[i]==from) continue;
if(game.players[i].identity=='unknown'||game.players[i].identity=='ye') continue;
if(game.players[i].identity!=from.identity) continue;
if(game.players[i].num('e','wuliu')) distance--;
}
return distance;
return distance-game.countPlayer(function(current){
if(current==from) return false;
if(current.identity=='unknown'||current.identity=='ye') return false;
if(current.identity!=from.identity) return false;
if(current.hasSkill('wuliu_skill')) return true;
});
}
}
},
@ -828,11 +800,9 @@ card.guozhan={
if(player.num('h')==0) return false;
if(!event.card) return false;
if(event.card.name!='sha') return false;
var num=0;
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=event.player&&get.distance(event.player,game.players[i])<=1) num++;
}
return num>0;
return game.hasPlayer(function(current){
return current!=event.player&&get.distance(event.player,current)<=1;
});
},
content:function(){
"step 0"

View File

@ -423,7 +423,7 @@ card.hearth={
content:function(){
'step 0'
event.current=target;
event.num=game.players.length;
event.num=game.countPlayer(lib.filter.all);
if(event.num%2==0){
event.num--;
}
@ -619,11 +619,7 @@ card.hearth={
result:{
target:function(player,target){
if(target.hasSkillTag('nothunder')) return 0;
var num=0;
for(var i=0;i<game.players.length;i++){
if(game.players[i].ai.shown==0) num++;
}
if(num>1) return 0;
if(player.hasUnknown()) return 0;
var nh=target.num('he');
if(target==player) nh--;
if(nh==2) return -2.5;

View File

@ -68,7 +68,7 @@ card.sp={
fullskin:true,
enable:true,
chongzhu:function(){
return game.players.length<=2;
return game.countPlayer(lib.filter.all)<=2;
},
singleCard:true,
type:'trick',
@ -200,25 +200,23 @@ card.sp={
},
result:{
player:function(player,target){
var num=0;
for(var i=0;i<game.players.length;i++){
if(get.distance(target,game.players[i])<=1&&game.players[i]!=target){
var att=ai.get.attitude(player,game.players[i]);
return game.countPlayer(function(current){
if(get.distance(target,current)<=1&&current!=target){
var att=ai.get.attitude(player,current);
if(att>3){
num+=1.1;
return 1.1;
}
else if(att>0){
num++;
return 1;
}
else if(att<-3){
num-=1.1;
return -1.1;
}
else if(att<0){
num--;
return -1;
}
}
}
return num;
});
},
target:-1
},
@ -304,14 +302,12 @@ card.sp={
game.broadcast(function(muniu,cards){
muniu.cards=cards;
},muniu,muniu.cards);
var players=[];
for(var i=0;i<game.players.length;i++){
if(!game.players[i].get('e','5')&&game.players[i]!=player&&
!game.players[i].isTurnedOver()&&
ai.get.attitude(player,game.players[i])>=3&&ai.get.attitude(game.players[i],player)>=3){
players.push(game.players[i]);
}
var players=game.filterPlayer(function(current){
if(!current.get('e','5')&&current!=player&&!current.isTurnedOver()&&
ai.get.attitude(player,current)>=3&&ai.get.attitude(current,player)>=3){
return true;
}
});
players.sort(lib.sort.seat);
var choice=players[0];
var next=player.chooseTarget('是否移动木牛流马?',function(card,player,target){

View File

@ -74,7 +74,6 @@ window.characterRank={
'hs_laxiao',
'hs_shaku',
'hs_fandral',
'hs_totemic',
'sundeng',
'hs_xialikeer',
'hs_sainaliusi',
@ -144,6 +143,7 @@ window.characterRank={
],
am:[
'old_wangyi',
'hs_totemic',
'swd_duanmeng',
'pal_wenhui',
'gjqt_xunfang',

View File

@ -22687,12 +22687,14 @@
}
return num;
},
filterPlayer:function(func){
var list=[];
filterPlayer:function(func,list){
if(!Array.isArray(list)){
list=[];
}
for(var i=0;i<game.players.length;i++){
if(game.players[i].isOut()) continue;
if(func(game.players[i])){
list.push(game.players[i]);
list.add(game.players[i]);
}
}
return list;
@ -33150,6 +33152,11 @@
return false;
},
},
sgn:function(num){
if(num>0) return 1;
if(num<0) return -1;
return 0;
},
rand:function(num,num2){
if(typeof num2=='number'){
return num+Math.floor(Math.random()*(num2-num+1));

BIN
image/card/sanjian.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

After

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -752,7 +752,7 @@ table {
opacity: 0;
pointer-events: none;
}
#arena.auto #me .card{
#arena.auto #me .handcards{
opacity: 0.5
}
#autonode>div {