This commit is contained in:
libccy 2017-05-22 10:34:51 +08:00
parent be0cb58251
commit c70eeec2b0
2 changed files with 215 additions and 47 deletions

View File

@ -13236,6 +13236,58 @@
this.updateMarks();
return this;
},
updateMark:function(i){
if(!this.marks[i]){
if(lib.skill[i]&&lib.skill[i].intro&&(this.storage[i]||lib.skill[i].intro.markcount)){
this.markSkill(i);
if(!this.marks[i]) return this;
}
else{
return this;
}
}
if(i=='ghujia'||((!this.marks[i].querySelector('.image')||this.storage[i+'_markcount'])&&
lib.skill[i]&&lib.skill[i].intro&&!lib.skill[i].intro.nocount&&
(this.storage[i]||lib.skill[i].intro.markcount))){
this.marks[i].classList.add('overflowmark')
var num=0;
if(typeof lib.skill[i].intro.markcount=='function'){
num=lib.skill[i].intro.markcount(this.storage[i],this);
}
else if(typeof this.storage[i+'_markcount']=='number'){
num=this.storage[i+'_markcount'];
}
else if(i=='ghujia'){
num=this.hujia;
}
else if(typeof this.storage[i]=='number'){
num=this.storage[i];
}
else if(Array.isArray(this.storage[i])){
num=this.storage[i].length;
}
if(num){
if(!this.marks[i].markcount){
this.marks[i].markcount=ui.create.div('.markcount.menubutton',this.marks[i]);
}
this.marks[i].markcount.innerHTML=num;
}
else if(this.marks[i].markcount){
this.marks[i].markcount.delete();
delete this.marks[i].markcount;
}
}
else{
if(this.marks[i].markcount){
this.marks[i].markcount.delete();
delete this.marks[i].markcount;
}
if(lib.skill[i].mark=='auto'){
this.unmarkSkill(i);
}
}
return this;
},
updateMarks:function(connect){
if(typeof connect=='string'&&_status.connectMode&&!game.online){
game.broadcast(function(player,storage,skill){
@ -13244,41 +13296,7 @@
},this,this.storage[connect],connect);
}
for(var i in this.marks){
if(i=='ghujia'||((!this.marks[i].querySelector('.image')||this.storage[i+'_markcount'])&&
lib.skill[i]&&lib.skill[i].intro&&!lib.skill[i].intro.nocount&&
(this.storage[i]||lib.skill[i].intro.markcount))){
this.marks[i].classList.add('overflowmark')
var num=0;
if(typeof lib.skill[i].intro.markcount=='function'){
num=lib.skill[i].intro.markcount(this.storage[i],this);
}
else if(typeof this.storage[i+'_markcount']=='number'){
num=this.storage[i+'_markcount'];
}
else if(i=='ghujia'){
num=this.hujia;
}
else if(typeof this.storage[i]=='number'){
num=this.storage[i];
}
else if(Array.isArray(this.storage[i])){
num=this.storage[i].length;
}
if(num){
if(!this.marks[i].markcount){
this.marks[i].markcount=ui.create.div('.markcount.menubutton',this.marks[i]);
}
this.marks[i].markcount.innerHTML=num;
}
else if(this.marks[i].markcount){
this.marks[i].markcount.delete();
delete this.marks[i].markcount;
}
}
else if(this.marks[i].markcount){
this.marks[i].markcount.delete();
delete this.marks[i].markcount;
}
this.updateMark(i);
}
},
num:function(arg1,arg2,arg3){
@ -42592,6 +42610,31 @@
}
return threaten;
},
condition:function(player){
var num=player.hp;
if(num>4){
num=4+Math.sqrt(num-4);
}
else{
if(player.isHealthy()){
if(player.hp==3){
num+=0.5;
}
else if(player.hp<3){
num++;
}
}
}
num+=player.countCards('h')/2;
var es=player.getCards('e');
for(var i=0;i<es.length;i++){
var val=get.value(es[i]);
if(val>=7) num+=0.8;
if(val>=5) num+=0.5;
if(val>=3) num+=0.2;
}
return num;
},
attitude:function(from,to){
if(!from||!to) return 0;
var att=get.rawAttitude.apply(this,arguments);

View File

@ -314,6 +314,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
}
else if(_status.mode=='siguo'){
_status.siguoai=[
[-7.5,-2,0,-4.5,-6,-7.5],
[-7.5,-2,0,-4.5,-6,-7.5],
[-6,-6,-1,-4.5,-6,-7.5],
[-6,-3,0,-3,-3,-6],
[-6,-3,0,-3,-3,-6],
[-6,-6,-6,-6,-6,-6],
].randomGet();
var firstChoose=_status.firstAct;
game.gameDraw(firstChoose);
game.phaseLoop(firstChoose);
@ -816,12 +824,31 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
delete ui.cheat2;
}
game.me.init(result.links[0]);
event.list[game.me.identity].remove(result.links[0]);
event.list[game.me.side].remove(result.links[0]);
var added={wei:0,shu:0,wu:0,qun:0};
for(var i=0;i<game.players.length;i++){
game.players[i].node.identity.style.display='';
if(game.players[i]==game.me) continue;
game.players[i].init(event.list[game.players[i].identity].randomRemove());
if(game.players[i]!=game.me){
game.players[i].init(event.list[game.players[i].side].randomRemove());
}
game.players[i].addSkill('longchuanzhibao');
if(added[game.players[i].side]==0){
if(Math.random()<0.5){
game.players[i].storage.longchuanzhibao=1;
game.players[i].updateMark('longchuanzhibao');
added[game.players[i].side]=1;
}
else{
added[game.players[i].side]=-1;
}
}
else if(added[game.players[i].side]<0){
game.players[i].storage.longchuanzhibao=1;
game.players[i].updateMark('longchuanzhibao');
}
}
_status.firstAct.storage.longchuanzhibao++;
_status.firstAct.updateMark('longchuanzhibao');
game.addRecentCharacter(game.me.name);
setTimeout(function(){
ui.arena.classList.remove('choose-character');
@ -3409,8 +3436,30 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
boss_chiying_info:'锁定技每当己方角色受到多于1伤害时你防止其余伤害',
boss_jingfan:'惊帆',
boss_jingfan_info:'锁定技,己方其他角色的进攻距离+1',
longchuanzhibao:'龙船至宝',
longchuanzhibao_bg:'船',
},
skill:{
longchuanzhibao:{
mark:'auto',
nopop:true,
init:function(player){
player.storage.longchuanzhibao=0;
},
intro:{
content:function(storage,player){
var str='已有'+storage+'个龙船至宝,'+get.translation(player.side)+'势力共有';
var num=storage;
for(var i=0;i<game.players.length;i++){
if(game.players[i].side==player.side&&game.players[i]!=player){
num+=game.players[i].storage.longchuanzhibao;break;
}
}
str+=num+'个龙船至宝。新一轮开始时拥有至少4个龙船至宝的势力获胜';
return str;
}
}
},
boss_didongjg:{
trigger:{player:'phaseEnd'},
direct:true,
@ -4836,6 +4885,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(game.players.length==1||(game.players.length==2&&game.players[i].side==game.players[1].side)){
game.over(game.me.side==game.players[0].side);
}
if(source){
if(this.storage.longchuanzhibao){
source.storage.longchuanzhibao+=this.storage.longchuanzhibao;
this.storage.longchuanzhibao=0;
source.updateMark('longchuanzhibao');
}
}
return;
}
else if(_status.mode=='jiange'){
if(get.population('wei')==0){
@ -4931,15 +4988,83 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return 6;
}
else{
if(to.identity=='zhu'){
if(_status.connectMode){
if(_status.mode=='4v4') return -10;
}
else{
if(lib.storage.main_zhu||_status.mode=='four') return -10;
}
}
return -6;
if(_status.mode=='siguo'){
var list=['wei','shu','wu','qun'];
var map={wei:0,shu:0,wu:0,qun:0};
var map2={wei:0,shu:0,wu:0,qun:0};
for(var i=0;i<game.players.length;i++){
var current=game.players[i];
map[current.side]+=get.condition(current)*get.threaten(current,false,false);
map2[current.side]+=current.storage.longchuanzhibao;
}
for(var i in map){
if(get.population(i)==1){
map[i]/=1.5;
}
if(map2[i]>=4){
map[i]+=50;
}
else if(map2[i]==3){
map[i]+=10;
}
else if(map2[i]==2){
map[i]++;
}
}
list.sort(function(a,b){
return map[b]-map[a];
});
var id1=list.indexOf(from.side);
var id2=list.indexOf(to.side);
var att=-1;
switch(id1){
case 0:att=_status.siguoai[id2+2];break;
case 1:
switch(id2){
case 0:att=_status.siguoai[0];break;
case 2:att=_status.siguoai[1];break;
case 3:att=_status.siguoai[2];break;
}
break;
case 2:
switch(id2){
case 0:att=_status.siguoai[0];break;
case 1:att=_status.siguoai[1];break;
case 3:att=_status.siguoai[2];break;
}
break;
case 3:{
if(id2==0){
att=_status.siguoai[1];break;
}
else{
att=_status.siguoai[2];break;
}
break;
}
}
if(map2[to.side]>=4){
att-=10;
}
else if(map2[to.side]==3){
att-=3;
}
else if(map2[to.side]==2){
att-=0.5;
}
return att;
}
else{
if(to.identity=='zhu'){
if(_status.connectMode){
if(_status.mode=='4v4') return -10;
}
else{
if(lib.storage.main_zhu||_status.mode=='four') return -10;
}
}
return -6;
}
}
},
},