战棋boss
This commit is contained in:
parent
c0de77e02f
commit
9b6867aa77
125
game/game.js
125
game/game.js
|
@ -302,6 +302,8 @@ window.play={};
|
|||
qun:'群',
|
||||
male:'男',
|
||||
female:'女',
|
||||
mad:'混乱',
|
||||
mad_bg:'疯',
|
||||
draw_card:'摸牌',
|
||||
discard_card:'弃牌',
|
||||
reset_character:'重置武将牌',
|
||||
|
@ -1508,64 +1510,10 @@ window.play={};
|
|||
if(lib.config.reverse_sort) sort=-sort;
|
||||
cards[num].fix();
|
||||
cards[num].animate('start');
|
||||
if(lib.config.strict_sort){
|
||||
j=0;
|
||||
if(game.singleHandcard){
|
||||
position=sort>0?player.node.handcards1:player.node.handcards2;
|
||||
}
|
||||
else{
|
||||
position=player.node.handcards1;
|
||||
}
|
||||
for(j=0;j<position.childNodes.length;j++){
|
||||
if(lib.config.reverse_sort){
|
||||
if(sort<lib.config.sort_card(position.childNodes[j])) break;
|
||||
}
|
||||
else{
|
||||
if(sort>lib.config.sort_card(position.childNodes[j])) break;
|
||||
}
|
||||
}
|
||||
if(event.animate=='draw'){
|
||||
player.$draw();
|
||||
(function(card,position){
|
||||
setTimeout(function(){
|
||||
position.insertBefore(card,position.childNodes[j]);
|
||||
},500);
|
||||
}(cards[num],position))
|
||||
}
|
||||
else if(event.animate=='draw2'){
|
||||
player.$draw(cards[num]);
|
||||
(function(card,position){
|
||||
setTimeout(function(){
|
||||
position.insertBefore(card,position.childNodes[j]);
|
||||
},500);
|
||||
}(cards[num],position))
|
||||
}
|
||||
else if(event.animate=='gain'){
|
||||
player.$gain(cards[num]);
|
||||
(function(card,position){
|
||||
setTimeout(function(){
|
||||
position.insertBefore(card,position.childNodes[j]);
|
||||
},700);
|
||||
}(cards[num],position))
|
||||
}
|
||||
else if(event.animate=='gain2'){
|
||||
player.$gain2(cards[num]);
|
||||
(function(card,position){
|
||||
setTimeout(function(){
|
||||
position.insertBefore(card,position.childNodes[j]);
|
||||
},500);
|
||||
}(cards[num],position))
|
||||
}
|
||||
else{
|
||||
position.insertBefore(cards[num],position.childNodes[j]);
|
||||
}
|
||||
}
|
||||
else{
|
||||
|
||||
if(game.singleHandcard||sort>0) frag1.appendChild(cards[num]);
|
||||
else frag2.appendChild(cards[num]);
|
||||
}
|
||||
}
|
||||
if(!lib.config.strict_sort){
|
||||
if(event.animate=='draw'){
|
||||
player.$draw(cards.length);
|
||||
game.delay(1,500);
|
||||
|
@ -1598,7 +1546,6 @@ window.play={};
|
|||
player.node.handcards2.insertBefore(frag2,player.node.handcards2.firstChild);
|
||||
player.update();
|
||||
}
|
||||
}
|
||||
},
|
||||
lose:function(){
|
||||
"step 0"
|
||||
|
@ -3160,6 +3107,19 @@ window.play={};
|
|||
}
|
||||
next.content=lib.element.playerproto.respond;
|
||||
},
|
||||
directgain:function(cards){
|
||||
for(var i=0;i<cards.length;i++){
|
||||
var sort=lib.config.sort_card(cards[i]);
|
||||
if(game.singleHandcard||sort>0){
|
||||
this.node.handcards1.appendChild(cards[i].animate('start'));
|
||||
}
|
||||
else{
|
||||
this.node.handcards2.appendChild(cards[i].animate('start'));
|
||||
}
|
||||
}
|
||||
this.update();
|
||||
return this;
|
||||
},
|
||||
gain:function(){
|
||||
var next=game.createEvent('gain');
|
||||
next.player=this;
|
||||
|
@ -3365,6 +3325,17 @@ window.play={};
|
|||
}
|
||||
}
|
||||
},
|
||||
isMad:function(){
|
||||
return this.skills.contains('mad');
|
||||
},
|
||||
goMad:function(){
|
||||
this.addSkill('mad');
|
||||
game.log(get.translation(this)+'进入混乱状态');
|
||||
},
|
||||
unMad:function(){
|
||||
this.removeSkill('mad');
|
||||
game.log(get.translation(this)+'解除混乱状态');
|
||||
},
|
||||
equip:function(card){
|
||||
var next=game.createEvent('equip');
|
||||
next.card=card;
|
||||
|
@ -3826,15 +3797,12 @@ window.play={};
|
|||
},
|
||||
isUnderControl:function(){
|
||||
if(this===game.me) return false;
|
||||
if(this.isMad()) return false;
|
||||
if(lib.config.mode=='versus'){
|
||||
return ui.autoreplace&&ui.autoreplace.classList.contains('on')&&
|
||||
this.side==game.me.side;
|
||||
}
|
||||
else if(lib.config.mode=='chess'){
|
||||
return this.side==game.me.side;
|
||||
}
|
||||
else if(lib.config.mode=='boss'){
|
||||
if(this.gonemad) return false;
|
||||
else if(lib.config.mode=='chess'||lib.config.mode=='boss'){
|
||||
return this.side==game.me.side;
|
||||
}
|
||||
return false;
|
||||
|
@ -4393,7 +4361,7 @@ window.play={};
|
|||
delete this.skill;
|
||||
},
|
||||
isMine:function(){
|
||||
return (this.player&&this.player==game.me&&!_status.auto);
|
||||
return (this.player&&this.player==game.me&&!_status.auto&&!this.player.isMad());
|
||||
},
|
||||
trigger:function(name){
|
||||
var event=this;
|
||||
|
@ -4829,6 +4797,13 @@ window.play={};
|
|||
global:[],
|
||||
storage:{},
|
||||
unequip:{},
|
||||
mad:{
|
||||
mark:true,
|
||||
intro:{
|
||||
content:'已进入混乱状态',
|
||||
name:'混乱'
|
||||
}
|
||||
},
|
||||
_recoverCheck:{
|
||||
trigger:{player:'recoverBefore'},
|
||||
forced:true,
|
||||
|
@ -4972,11 +4947,20 @@ window.play={};
|
|||
}
|
||||
}
|
||||
},
|
||||
_ismin:{
|
||||
mod:{
|
||||
cardEnabled:function(card,player){
|
||||
if(player.isMin()){
|
||||
if(get.type(card)=='equip') return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
_chongzhu:{
|
||||
enable:'phaseUse',
|
||||
prompt:'弃置要重铸的牌并摸一张牌',
|
||||
filter:function(event,player){
|
||||
if(player.isMin()) return false;
|
||||
if(player.isMin()&&lib.config.mode=='stone') return false;
|
||||
return (player.get('h',function(card){
|
||||
return get.info(card).chongzhu;
|
||||
}).length);
|
||||
|
@ -6008,7 +5992,7 @@ window.play={};
|
|||
"step 0"
|
||||
var end=player;
|
||||
do{
|
||||
player.draw(num,false).log=false;
|
||||
player.directgain(get.cards(4));
|
||||
if(player.singleHp===true&&!player.classList.contains('unseen')&&!player.classList.contains('unseen2')){
|
||||
player.doubleDraw();
|
||||
}
|
||||
|
@ -7858,9 +7842,15 @@ window.play={};
|
|||
intro:ui.create.div('.intro',node),
|
||||
group:ui.create.div('.identity',node)
|
||||
}
|
||||
if(lib.character[item][2]>14){
|
||||
node.node.hp.innerHTML=lib.character[item][2];
|
||||
node.node.hp.classList.add('text');
|
||||
}
|
||||
else{
|
||||
for(var i =0;i<lib.character[item][2];i++){
|
||||
ui.create.div('',node.node.hp);
|
||||
}
|
||||
}
|
||||
if(!lib.config.show_name){
|
||||
node.node.name.style.display='none';
|
||||
}
|
||||
|
@ -8590,6 +8580,7 @@ window.play={};
|
|||
}
|
||||
},
|
||||
window:function(){
|
||||
var clicked=_status.clicked;
|
||||
if(_status.dragged) return;
|
||||
if(_status.reloading) return;
|
||||
if(_status.clicked){
|
||||
|
@ -8629,9 +8620,6 @@ window.play={};
|
|||
game.uncheck();
|
||||
game.check();
|
||||
}
|
||||
if(_status.event.custom.add.window){
|
||||
_status.event.custom.add.window();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -8648,7 +8636,7 @@ window.play={};
|
|||
}
|
||||
}
|
||||
if(_status.event.custom.add.window){
|
||||
_status.event.custom.add.window();
|
||||
_status.event.custom.add.window(clicked);
|
||||
}
|
||||
},
|
||||
toggle:function(){
|
||||
|
@ -8713,6 +8701,7 @@ window.play={};
|
|||
button:function(){
|
||||
if(_status.dragged) return;
|
||||
if(_status.clicked) return;
|
||||
if(this.classList.contains('noclick')) return;
|
||||
_status.clicked=true;
|
||||
var custom=_status.event.custom;
|
||||
if(custom.replace.button){
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 61 KiB |
|
@ -183,6 +183,13 @@ margin-bottom: 5px;
|
|||
.button.character,.button.card{width: 90px;height: 90px;position: relative;margin: 6px;}
|
||||
.button.character>.name{left:5px;top:22px;}
|
||||
.button.character>.hp{left:5px;top:2px;}
|
||||
.button.character>.hp.text{
|
||||
top:8px;
|
||||
left:6px;
|
||||
font-family:'huangcao';
|
||||
font-size:20px;
|
||||
letter-spacing:3px;
|
||||
}
|
||||
.button.character>.intro{top:71px;left:0;}
|
||||
.button.character>.identity{top:-6px;left:72px;}
|
||||
/*--------确认--------*/
|
||||
|
|
|
@ -126,3 +126,6 @@
|
|||
.chessscroll.right{
|
||||
right:0;
|
||||
}
|
||||
.button.forbidden{
|
||||
opacity:0.6
|
||||
}
|
||||
|
|
82
mode/boss.js
82
mode/boss.js
|
@ -10,25 +10,6 @@ mode.boss={
|
|||
game.checkResult();
|
||||
}
|
||||
},
|
||||
goMad:function(){
|
||||
this.mark('乱',{
|
||||
name:'混乱',
|
||||
content:'已进入混乱状态'
|
||||
});
|
||||
this.gonemad=true;
|
||||
if(this==game.me){
|
||||
if(this.next.side==this.side){
|
||||
game.modeSwapPlayer(this.next);
|
||||
}
|
||||
else if(this.previous.side==this.side){
|
||||
game.modeSwapPlayer(this.previous);
|
||||
}
|
||||
else{
|
||||
this.die();
|
||||
}
|
||||
}
|
||||
game.log(get.translation(this)+'进入混乱状态');
|
||||
}
|
||||
}
|
||||
},
|
||||
game:{
|
||||
|
@ -58,6 +39,8 @@ mode.boss={
|
|||
"step 1"
|
||||
var bosslist=ui.create.div('#bosslist.hidden');
|
||||
event.bosslist=bosslist;
|
||||
bosslist.ontouchmove = ui.click.touchScroll;
|
||||
bosslist.style.WebkitOverflowScrolling='touch';
|
||||
if(!lib.config.touchscreen&&lib.config.mousewheel){
|
||||
bosslist._scrollspeed=30;
|
||||
bosslist._scrollnum=10;
|
||||
|
@ -408,22 +391,6 @@ mode.boss={
|
|||
game.uncheck();
|
||||
game.check();
|
||||
};
|
||||
event.asboss=ui.create.control('应战',function(){
|
||||
event.boss=true;
|
||||
event.enemy=[];
|
||||
for(var i=0;i<ui.selected.buttons.length;i++){
|
||||
event.enemy.push(ui.selected.buttons[i].link);
|
||||
event.list.remove(ui.selected.buttons[i].link);
|
||||
}
|
||||
while(event.enemy.length<3){
|
||||
event.enemy.push(event.list.randomRemove());
|
||||
}
|
||||
game.uncheck();
|
||||
if(ui.confirm){
|
||||
ui.confirm.close();
|
||||
}
|
||||
game.resume();
|
||||
});
|
||||
ui.create.cheat=function(){
|
||||
ui.cheat=ui.create.control('更换',event.changeDialog);
|
||||
};
|
||||
|
@ -459,6 +426,23 @@ mode.boss={
|
|||
ui.create.cheat();
|
||||
if(!ui.cheat2&&get.config('free_choose'))
|
||||
ui.create.cheat2();
|
||||
|
||||
event.asboss=ui.create.control('应战',function(){
|
||||
event.boss=true;
|
||||
event.enemy=[];
|
||||
for(var i=0;i<ui.selected.buttons.length;i++){
|
||||
event.enemy.push(ui.selected.buttons[i].link);
|
||||
event.list.remove(ui.selected.buttons[i].link);
|
||||
}
|
||||
while(event.enemy.length<3){
|
||||
event.enemy.push(event.list.randomRemove());
|
||||
}
|
||||
game.uncheck();
|
||||
if(ui.confirm){
|
||||
ui.confirm.close();
|
||||
}
|
||||
game.resume();
|
||||
});
|
||||
"step 1"
|
||||
if(ui.cheat){
|
||||
ui.cheat.close();
|
||||
|
@ -545,6 +529,7 @@ mode.boss={
|
|||
boss_qiangzheng:{
|
||||
trigger:{player:'phaseEnd'},
|
||||
forced:true,
|
||||
unique:true,
|
||||
filter:function(event,player){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i]!=player&&game.players[i].num('h')) return true;
|
||||
|
@ -627,10 +612,8 @@ mode.boss={
|
|||
content:function(){
|
||||
var players=game.players.concat(game.dead);
|
||||
for(var i=0;i<players.length;i++){
|
||||
if(players[i].gonemad){
|
||||
delete players[i].gonemad;
|
||||
players[i].unmark('乱');
|
||||
game.log(get.translation(players[i])+'解除混乱状态');
|
||||
if(players[i].isMad()){
|
||||
players[i].unMad();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -709,7 +692,7 @@ mode.boss={
|
|||
player.hp=player.maxHp;
|
||||
player.update();
|
||||
},
|
||||
group:['huanhua2','huanhua3','huanhua4'],
|
||||
group:['huanhua3','huanhua4'],
|
||||
ai:{
|
||||
threaten:0.8,
|
||||
effect:{
|
||||
|
@ -987,7 +970,6 @@ mode.boss={
|
|||
"step 0"
|
||||
event.players=get.players(player);
|
||||
event.players.remove(player);
|
||||
event.num=0;
|
||||
player.draw(2);
|
||||
"step 1"
|
||||
if(event.players.length){
|
||||
|
@ -1039,16 +1021,6 @@ mode.boss={
|
|||
game.players[i].forcemin=true;
|
||||
}
|
||||
}
|
||||
},
|
||||
global:'boss_gongshen2'
|
||||
},
|
||||
boss_gongshen2:{
|
||||
mod:{
|
||||
cardEnabled:function(card,player){
|
||||
if(player.isMin()){
|
||||
if(get.type(card)=='equip') return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
fanghua:{
|
||||
|
@ -1268,7 +1240,7 @@ mode.boss={
|
|||
boss_wange:'笙歌',
|
||||
|
||||
huanhua:'幻化',
|
||||
huanhua_info:'锁定技,游戏开始时,你获得其他角色的所有技能,体力上限变为其他角色之和;你没有摸牌阶段,其他角色于摸牌摸牌,或于弃牌阶段弃牌时,你摸或弃等量的牌',
|
||||
huanhua_info:'锁定技,游戏开始时,你获得其他角色的所有技能,体力上限变为其他角色之和;其他角色于摸牌摸牌时,你摸等量的牌;其他角色于弃牌阶段弃牌时,你弃置等量的手牌',
|
||||
|
||||
jidian:'亟电',
|
||||
jidian_info:'每当你造成一次伤害,可以指定距离受伤害角色1以内的一名其他角色进行判定,若结果为红色,该角色受到一点雷电伤害',
|
||||
|
@ -1296,7 +1268,7 @@ mode.boss={
|
|||
boss_guiyin:'归隐',
|
||||
boss_guiyin_info:'锁定技,体力值比你多的角色无法在回合内对你使用卡牌',
|
||||
boss_gongshen:'工神',
|
||||
boss_gongshen_info:'锁定技,除你之外的角色没有装备区,也不能重铸卡牌',
|
||||
boss_gongshen_info:'锁定技,除你之外的角色没有装备区',
|
||||
|
||||
fanghua:'芳华',
|
||||
fanghua_info:'回合结束阶段,你可以令所有已翻面角色流失一点体力',
|
||||
|
@ -1342,10 +1314,10 @@ mode.boss={
|
|||
get:{
|
||||
attitude:function(from,to){
|
||||
var t=(from.side===to.side?1:-1);
|
||||
if(from.gonemad){
|
||||
if(from.isMad()){
|
||||
t=-t;
|
||||
}
|
||||
else if(to.gonemad){
|
||||
else if(to.isMad()){
|
||||
t=0;
|
||||
}
|
||||
return 6*t;
|
||||
|
|
521
mode/chess.js
521
mode/chess.js
|
@ -601,18 +601,24 @@ mode.chess={
|
|||
}
|
||||
}
|
||||
}
|
||||
if(get.config('chess_character')){
|
||||
delete lib.character.swd_linyue;
|
||||
for(var i in lib.chess_character){
|
||||
lib.character[i]=lib.chess_character[i];
|
||||
}
|
||||
}
|
||||
delete lib.chess_character;
|
||||
lib.init.css('layout/mode','chess');
|
||||
ui.chesssheet=document.createElement('style');
|
||||
document.head.appendChild(ui.chesssheet);
|
||||
ui.create.arena();
|
||||
ui.create.cards();
|
||||
game.finishCards();
|
||||
if(get.config('chess_character')){
|
||||
delete lib.character.swd_linyue;
|
||||
for(var i in lib.chess_character){
|
||||
lib.character[i]=lib.chess_character[i];
|
||||
if(!lib.character[i][4]){
|
||||
lib.character[i][4]=[];
|
||||
}
|
||||
}
|
||||
}
|
||||
ui.chessContainer=ui.create.div('#chess-container',ui.arena);
|
||||
ui.chessContainer.ontouchmove = ui.click.touchScroll;
|
||||
ui.chessContainer.style.WebkitOverflowScrolling='touch';
|
||||
ui.chess=ui.create.div('#chess',ui.chessContainer);
|
||||
ui.canvas2=document.createElement('canvas');
|
||||
ui.chess.appendChild(ui.canvas2);
|
||||
|
@ -621,8 +627,7 @@ mode.chess={
|
|||
game.chooseCharacter();
|
||||
"step 1"
|
||||
ui.arena.classList.add('chess');
|
||||
var num=get.config('battle_number');
|
||||
var double=get.config('double_character');
|
||||
var num=Math.round((_status.mylist.length+_status.enemylist.length)/2);
|
||||
var friend,enemy;
|
||||
var side=Math.random()<0.5;
|
||||
switch(num){
|
||||
|
@ -709,43 +714,35 @@ mode.chess={
|
|||
for(var i=0;i<gridnum;i++){
|
||||
grids.push(i);
|
||||
}
|
||||
for(var i=0;i<num;i++){
|
||||
while(_status.mylist.length){
|
||||
friend=ui.create.player().animate('start');
|
||||
enemy=ui.create.player().animate('start');
|
||||
|
||||
if(double){
|
||||
friend.init(_status.mylist.shift(),_status.mylist.shift());
|
||||
enemy.init(_status.enemylist.shift(),_status.enemylist.shift());
|
||||
}
|
||||
else{
|
||||
friend.init(_status.mylist.shift());
|
||||
enemy.init(_status.enemylist.shift());
|
||||
}
|
||||
friend.side=side;
|
||||
enemy.side=!side;
|
||||
friend.setIdentity('friend');
|
||||
enemy.setIdentity('enemy');
|
||||
friend.node.identity.dataset.color=get.translation(side+'Color');
|
||||
enemy.node.identity.dataset.color=get.translation(!side+'Color');
|
||||
|
||||
game.players.push(friend);
|
||||
game.players.push(enemy);
|
||||
|
||||
ui.chess.appendChild(friend);
|
||||
ui.chess.appendChild(enemy);
|
||||
|
||||
friend.dataset.position=grids.randomRemove();
|
||||
enemy.dataset.position=grids.randomRemove();
|
||||
|
||||
lib.posmap[friend.dataset.position]=friend;
|
||||
}
|
||||
while(_status.enemylist.length){
|
||||
enemy=ui.create.player().animate('start');
|
||||
enemy.init(_status.enemylist.shift());
|
||||
enemy.side=!side;
|
||||
enemy.setIdentity('enemy');
|
||||
enemy.node.identity.dataset.color=get.translation(!side+'Color');
|
||||
game.players.push(enemy);
|
||||
ui.chess.appendChild(enemy);
|
||||
enemy.dataset.position=grids.randomRemove();
|
||||
lib.posmap[enemy.dataset.position]=enemy;
|
||||
}
|
||||
|
||||
lib.setPopped(ui.create.system('查看手牌',null,true),function(){
|
||||
var uiintro=ui.create.dialog('hidden');
|
||||
|
||||
var added=false;
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i].side==game.me.side&&game.players[i]!=game.me){
|
||||
added=true;
|
||||
uiintro.add(get.translation(game.players[i]));
|
||||
var cards=game.players[i].get('h');
|
||||
if(cards.length){
|
||||
|
@ -756,6 +753,9 @@ mode.chess={
|
|||
}
|
||||
}
|
||||
}
|
||||
if(!added){
|
||||
uiintro.add('无队友');
|
||||
}
|
||||
|
||||
return uiintro;
|
||||
});
|
||||
|
@ -773,11 +773,11 @@ mode.chess={
|
|||
|
||||
ui.create.me();
|
||||
ui.create.fakeme();
|
||||
ui.create.cards();
|
||||
|
||||
ui.chessinfo=ui.create.div('.fakeme.player',ui.me);
|
||||
ui.chessinfo.ontouchmove = ui.click.touchScroll;
|
||||
ui.chessinfo.style.WebkitOverflowScrolling='touch';
|
||||
|
||||
game.finishCards();
|
||||
game.arrangePlayers();
|
||||
"step 2"
|
||||
ui.control.style.display='';
|
||||
|
@ -839,47 +839,127 @@ mode.chess={
|
|||
"step 0"
|
||||
var i;
|
||||
var list=[];
|
||||
var bosslist=[];
|
||||
event.list=list;
|
||||
for(i in lib.character){
|
||||
if(lib.character[i][4]&&lib.character[i][4].contains('minskin')) continue;
|
||||
if(lib.character[i][4].contains('minskin')) continue;
|
||||
if(lib.config.forbidai.contains(i)) continue;
|
||||
if(lib.config.forbidall.contains(i)) continue;
|
||||
if(lib.config.forbidchess.contains(i)) continue;
|
||||
if(!get.config('double_character')&&get.config('ban_weak')&&lib.config.forbidsingle.contains(i)) continue;
|
||||
if(get.config('ban_weak')&&lib.config.forbidsingle.contains(i)) continue;
|
||||
if(lib.character[i][4].contains('boss')){
|
||||
bosslist.push(i);
|
||||
}
|
||||
else{
|
||||
list.push(i);
|
||||
}
|
||||
}
|
||||
list.randomSort();
|
||||
var dialog=ui.create.dialog('选择出场角色'+(get.config('double_character')?'(双将)':''));
|
||||
var bosses=ui.create.div('.buttons');
|
||||
event.bosses=bosses;
|
||||
var bossbuttons=ui.create.buttons(bosslist,'character',bosses);
|
||||
var addToButton=function(){
|
||||
if(ui.cheat2&&ui.cheat2.backup) return;
|
||||
_status.event.dialog.content.childNodes[1].innerHTML=
|
||||
ui.selected.buttons.length+'/'+_status.event.selectButton();
|
||||
};
|
||||
var clickedBoss=false;
|
||||
var clickBoss=function(){
|
||||
clickedBoss=true;
|
||||
var num=bosses.querySelectorAll('.glow').length;
|
||||
if(this.classList.contains('glow')){
|
||||
this.classList.remove('glow');
|
||||
num--;
|
||||
}
|
||||
else{
|
||||
if(num<4){
|
||||
this.classList.add('glow');
|
||||
num++;
|
||||
}
|
||||
}
|
||||
for(var i=0;i<bosses.childElementCount;i++){
|
||||
if(num>=4&&!bosses.childNodes[i].classList.contains('glow')){
|
||||
bosses.childNodes[i].classList.add('forbidden');
|
||||
}
|
||||
else{
|
||||
bosses.childNodes[i].classList.remove('forbidden');
|
||||
}
|
||||
}
|
||||
if(num){
|
||||
if(!event.asboss){
|
||||
event.asboss=ui.create.control('应战',function(){
|
||||
_status.boss=true;
|
||||
ui.click.ok();
|
||||
});
|
||||
}
|
||||
}
|
||||
else{
|
||||
if(event.asboss){
|
||||
event.asboss.close();
|
||||
delete event.asboss;
|
||||
}
|
||||
}
|
||||
addToButton();
|
||||
};
|
||||
for(var i=0;i<bossbuttons.length;i++){
|
||||
bossbuttons[i].classList.add('noclick');
|
||||
bossbuttons[i].listen(clickBoss);
|
||||
}
|
||||
var dialog=ui.create.dialog('选择出场角色');
|
||||
dialog.classList.add('fullwidth');
|
||||
dialog.classList.add('fullheight');
|
||||
dialog.add('0/'+(get.config('double_character')?2:1)*get.config('battle_number'));
|
||||
dialog.add('0/'+get.config('battle_number'));
|
||||
dialog.add([list.slice(0,get.config('battle_number')*4+5),'character']);
|
||||
if(bossbuttons.length){
|
||||
dialog.add('挑战魔王');
|
||||
dialog.add(bosses);
|
||||
}
|
||||
ui.control.style.transition='all 0s';
|
||||
ui.control.style.top='calc(100% - 30px)';
|
||||
|
||||
var next=game.me.chooseButton(dialog,true);
|
||||
next._triggered=null;
|
||||
next.selectButton=function(){
|
||||
return (get.config('double_character')?2:1)*get.config('battle_number');
|
||||
};
|
||||
next.custom.add.button=function(){
|
||||
if(ui.cheat2&&ui.cheat2.backup) return;
|
||||
_status.event.dialog.content.childNodes[0].innerHTML=
|
||||
'选择出场角色'+(get.config('double_character')?'(双将)':'');
|
||||
_status.event.dialog.content.childNodes[1].innerHTML=
|
||||
ui.selected.buttons.length+'/'+_status.event.selectButton();
|
||||
var bossnum=bosses.querySelectorAll('.glow').length;
|
||||
if(bossnum){
|
||||
return 3*bossnum;
|
||||
}
|
||||
return get.config('battle_number');
|
||||
};
|
||||
next.custom.add.button=addToButton;
|
||||
next.custom.add.window=function(clicked){
|
||||
if(clicked) return;
|
||||
if(clickedBoss){
|
||||
clickedBoss=false;
|
||||
}
|
||||
else{
|
||||
for(var i=0;i<bosses.childElementCount;i++){
|
||||
bosses.childNodes[i].classList.remove('forbidden');
|
||||
bosses.childNodes[i].classList.remove('glow');
|
||||
}
|
||||
if(event.asboss){
|
||||
event.asboss.close();
|
||||
delete event.asboss;
|
||||
}
|
||||
}
|
||||
addToButton();
|
||||
}
|
||||
event.changeDialog=function(){
|
||||
if(ui.cheat2&&ui.cheat2.dialog==_status.event.dialog){
|
||||
return;
|
||||
}
|
||||
list.randomSort();
|
||||
_status.event.dialog.close();
|
||||
_status.event.dialog=ui.create.dialog('选择出场角色'+(get.config('double_character')?'(双将)':''));
|
||||
_status.event.dialog.classList.add('fullwidth');
|
||||
_status.event.dialog.classList.add('fullheight');
|
||||
_status.event.dialog.add('0/'+(get.config('double_character')?2:1)*get.config('battle_number'));
|
||||
_status.event.dialog.add([list.slice(0,get.config('battle_number')*4+5),'character']);
|
||||
var dialog=ui.create.dialog('选择出场角色');
|
||||
_status.event.dialog=dialog;
|
||||
dialog.classList.add('fullwidth');
|
||||
dialog.classList.add('fullheight');
|
||||
dialog.add('0/'+_status.event.selectButton());
|
||||
dialog.add([list.slice(0,get.config('battle_number')*4+5),'character']);
|
||||
if(bossbuttons.length){
|
||||
dialog.add('挑战魔王');
|
||||
dialog.add(bosses);
|
||||
}
|
||||
game.uncheck();
|
||||
game.check();
|
||||
};
|
||||
|
@ -932,17 +1012,39 @@ mode.chess={
|
|||
ui.cheat2x.close();
|
||||
delete ui.cheat2x;
|
||||
}
|
||||
if(event.asboss){
|
||||
event.asboss.close();
|
||||
delete ui.asboss;
|
||||
}
|
||||
ui.control.style.display='none';
|
||||
ui.control.style.top='';
|
||||
ui.control.style.transition='';
|
||||
|
||||
|
||||
|
||||
_status.mylist=result.links.slice(0);
|
||||
for(var i=0;i<result.links.length;i++){
|
||||
event.list.remove(result.links[i]);
|
||||
}
|
||||
var glows=event.bosses.querySelectorAll('.glow');
|
||||
if(glows.length){
|
||||
_status.enemylist=[];
|
||||
for(var i=0;i<glows.length;i++){
|
||||
_status.enemylist.push(glows[i].link);
|
||||
}
|
||||
if(_status.boss){
|
||||
var temp=_status.mylist;
|
||||
_status.mylist=_status.enemylist;
|
||||
_status.enemylist=temp;
|
||||
for(var i=_status.enemylist.length;i<_status.mylist.length*3;i++){
|
||||
_status.enemylist.push(event.list.randomRemove());
|
||||
}
|
||||
}
|
||||
}
|
||||
else{
|
||||
event.list.randomSort();
|
||||
_status.enemylist=event.list.slice(0,result.links.length);
|
||||
_status.double_character=get.config('double_character');
|
||||
}
|
||||
}
|
||||
},
|
||||
modeSwapPlayer:function(player){
|
||||
|
@ -953,6 +1055,124 @@ mode.chess={
|
|||
}
|
||||
},
|
||||
skill:{
|
||||
cangming:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
unique:true,
|
||||
filter:function(event,player){
|
||||
if(player.isTurnedOver()) return false;
|
||||
var suits=[];
|
||||
var hs=player.get('h');
|
||||
for(var i=0;i<hs.length;i++){
|
||||
suits.add(get.suit(hs[i]));
|
||||
if(suits.length>=4) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
filterCard:function(card){
|
||||
var suit=get.suit(card);
|
||||
for(var i=0;i<ui.selected.cards.length;i++){
|
||||
if(suit==get.suit(ui.selected.cards[i])) return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
selectCard:4,
|
||||
check:function(card){
|
||||
return 10-ai.get.value(card);
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return player!=target;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.goMad();
|
||||
if(!player.isTurnedOver()){
|
||||
player.turnOver();
|
||||
}
|
||||
player.addSkill('cangming2');
|
||||
},
|
||||
ai:{
|
||||
order:10,
|
||||
effect:{
|
||||
player:function(card,player){
|
||||
var num=0;
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(ai.get.attitude(player,game.players[i])<0){
|
||||
num++;
|
||||
if(num>1) break;
|
||||
}
|
||||
}
|
||||
if(num<=1) return;
|
||||
if(_status.currentPhase==player&&player.num('h')<player.hp&&player.hp>=6){
|
||||
if(typeof card=='string') return;
|
||||
if(card.name=='wuzhong') return;
|
||||
if(card.name=='shunshou') return;
|
||||
if(card.name=='yuanjiao') return;
|
||||
if(card.name=='yiyi') return;
|
||||
if(!player.skills.contains('cangming2')) return [0,0,0,0];
|
||||
}
|
||||
}
|
||||
},
|
||||
result:{
|
||||
target:-10
|
||||
}
|
||||
},
|
||||
},
|
||||
cangming2:{
|
||||
trigger:{player:'phaseBegin'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
content:function(){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
game.players[i].unMad();
|
||||
}
|
||||
player.removeSkill('cangming2');
|
||||
}
|
||||
},
|
||||
boss_moyan:{
|
||||
trigger:{player:'phaseEnd'},
|
||||
forced:true,
|
||||
unique:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
event.players=get.players(player);
|
||||
"step 1"
|
||||
if(event.players.length){
|
||||
event.players.shift().damage('fire');
|
||||
event.redo();
|
||||
}
|
||||
},
|
||||
},
|
||||
boss_baolin:{
|
||||
inherit:'juece',
|
||||
},
|
||||
boss_qiangzheng:{
|
||||
trigger:{player:'phaseEnd'},
|
||||
forced:true,
|
||||
unique:true,
|
||||
filter:function(event,player){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i]!=player&&game.players[i].num('h')) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
var players=get.players(player);
|
||||
players.remove(player);
|
||||
event.players=players;
|
||||
"step 1"
|
||||
if(event.players.length){
|
||||
var current=event.players.shift();
|
||||
var hs=current.get('h')
|
||||
if(hs.length){
|
||||
player.gain(hs.randomGet());
|
||||
current.$give(1,player);
|
||||
}
|
||||
event.redo();
|
||||
}
|
||||
}
|
||||
},
|
||||
guanchuan:{
|
||||
trigger:{player:'shaBefore'},
|
||||
getTargets:function(player,target){
|
||||
|
@ -1117,7 +1337,7 @@ mode.chess={
|
|||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseToMove(get.cardCount('sha',player),'是否发动【灵动】?');
|
||||
player.chooseToMove(get.cardCount('sha',player),'是否发动【移动射击】?');
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
player.logSkill('lingdong');
|
||||
|
@ -1160,6 +1380,11 @@ mode.chess={
|
|||
direct:true,
|
||||
delay:false,
|
||||
preservecancel:true,
|
||||
filter:function(event,player){
|
||||
var move=player.skills.contains('noactpunish')?2:1;
|
||||
move=game.checkMod(player,move,'chessMove',player.get('s'));
|
||||
return move>0;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
var move=player.skills.contains('noactpunish')?2:1;
|
||||
|
@ -1173,8 +1398,7 @@ mode.chess={
|
|||
ai:{
|
||||
order:5,
|
||||
result:{
|
||||
player:function(player){
|
||||
var range=get.attackRange(player)>1;
|
||||
playerx:function(player){
|
||||
var nh=player.num('h');
|
||||
if(!player.num('h','sha')&&
|
||||
!player.num('h','shunshou')&&
|
||||
|
@ -1186,21 +1410,30 @@ mode.chess={
|
|||
var neighbour;
|
||||
neighbour=player.getNeighbour(0,1);
|
||||
if(neighbour&&neighbour.side!=player.side){
|
||||
return range?1:0;
|
||||
if(get.distance(player,neighbour,'attack')<1) return 1;
|
||||
return 0;
|
||||
}
|
||||
neighbour=player.getNeighbour(0,-1);
|
||||
if(neighbour&&neighbour.side!=player.side){
|
||||
return range?1:0;
|
||||
if(get.distance(player,neighbour,'attack')<1) return 1;
|
||||
return 0;
|
||||
}
|
||||
neighbour=player.getNeighbour(1,0);
|
||||
if(neighbour&&neighbour.side!=player.side){
|
||||
return range?1:0;
|
||||
if(get.distance(player,neighbour,'attack')<1) return 1;
|
||||
return 0;
|
||||
}
|
||||
neighbour=player.getNeighbour(-1,0);
|
||||
if(neighbour&&neighbour.side!=player.side){
|
||||
return range?1:0;
|
||||
if(get.distance(player,neighbour,'attack')<1) return 1;
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
},
|
||||
player:function(player){
|
||||
var x=lib.skill._chessmove.ai.result.playerx(player);
|
||||
if(player.isMad()) return -x;
|
||||
return x;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1230,6 +1463,129 @@ mode.chess={
|
|||
player.chessFocus();
|
||||
},
|
||||
},
|
||||
boss_fengxing:{
|
||||
mod:{
|
||||
chessMove:function(player,current){
|
||||
return current+2;
|
||||
},
|
||||
attackFrom:function(from,to,current){
|
||||
return current-2;
|
||||
},
|
||||
},
|
||||
trigger:{player:'phaseDrawBegin'},
|
||||
forced:true,
|
||||
content:function(){
|
||||
trigger.num+=2;
|
||||
}
|
||||
},
|
||||
boss_chiyu:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filterCard:{color:'red'},
|
||||
nodelay:true,
|
||||
check:function(card){return 8-ai.get.value(card);},
|
||||
filterTarget:function(card,player,target){
|
||||
return get.distance(player,target)<=5&&player!=target;
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.num('h',{color:'red'})>0;
|
||||
},
|
||||
selectTarget:-1,
|
||||
content:function(){
|
||||
target.damage('fire');
|
||||
},
|
||||
line:'fire',
|
||||
ai:{
|
||||
order:1,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
return ai.get.damageEffect(target,player,target,'fire');
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
boss_tenglong:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
position:'he',
|
||||
filterCard:{type:'equip'},
|
||||
init:function(player){
|
||||
player.forcemin=true;
|
||||
},
|
||||
check:function(card){
|
||||
var player=_status.currentPhase;
|
||||
if(player.num('he',{subtype:get.subtype(card)})>1){
|
||||
return 12-ai.get.equipValue(card);
|
||||
}
|
||||
return 8-ai.get.equipValue(card);
|
||||
},
|
||||
filter:function(event,player){
|
||||
return player.num('he',{type:'equip'});
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return player!=target&&get.distance(player,target)<=2;
|
||||
},
|
||||
content:function(){
|
||||
target.damage(3,'fire');
|
||||
},
|
||||
ai:{
|
||||
order:9,
|
||||
result:{
|
||||
target:function(player,target){
|
||||
return ai.get.damageEffect(target,player,target,'fire');
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
boss_wuying:{
|
||||
mod:{
|
||||
globalTo:function(from,to,distance){
|
||||
return distance+2;
|
||||
},
|
||||
chessMove:function(player,current){
|
||||
return current-1;
|
||||
}
|
||||
}
|
||||
},
|
||||
boss_wushang:{
|
||||
trigger:{player:'phaseBegin'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i]!=player&&game.players[i].num('h')&&
|
||||
get.distance(player,game.players[i])<=5){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
var players=[];
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(game.players[i]!=player&&game.players[i].num('h')&&
|
||||
get.distance(player,game.players[i])<=5){
|
||||
players.push(game.players[i]);
|
||||
}
|
||||
}
|
||||
players.sort(lib.sort.seat);
|
||||
event.players=players;
|
||||
"step 1"
|
||||
if(event.players.length){
|
||||
event.current=event.players.shift();
|
||||
event.current.chooseCard('无上:交给'+get.translation(player)+'一张手牌',true);
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
"step 2"
|
||||
if(result.cards.length){
|
||||
player.gain(result.cards);
|
||||
event.current.$give(1,player);
|
||||
event.goto(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
translate:{
|
||||
friend:'友',
|
||||
|
@ -1276,22 +1632,42 @@ mode.chess={
|
|||
chess_menghuo:'孟获',
|
||||
|
||||
chess_dongzhuo:'董卓',
|
||||
chess_xingtian:'刑天',
|
||||
chess_jinchidiao:'金翅雕',
|
||||
chess_beimingjukun:'北溟巨鲲',
|
||||
chess_wuzhaojinlong:'五爪金龙',
|
||||
|
||||
pianyi:'翩仪',
|
||||
pianyi_info:'回合结束阶段,若你没有于本回合内造成伤害,你获得一次移动机会',
|
||||
lingdong:'灵动',
|
||||
lingdong:'移动射击',
|
||||
lingdong_info:'回合结束阶段,你可以移动X个格,X为你回合内出杀的次数',
|
||||
lianshe:'连射',
|
||||
lianshe:'连续射击',
|
||||
lianshe_info:'你的攻击范围+1;回合内,你回合内,每当你使用一张不是杀的牌,你可以额外使用一张杀',
|
||||
zhiming:'致命',
|
||||
zhiming:'致命射击',
|
||||
zhiming_info:'锁定技,当你使用杀造成伤害时,若你不在目标的攻击范围内,此伤害+1',
|
||||
sanjiansheji:'散箭',
|
||||
sanjiansheji:'散箭射击',
|
||||
sanjiansheji_info:'你可以将两张杀当杀使用,此杀可以指定距离你5格以内任意名目标',
|
||||
guanchuan:'贯穿',
|
||||
guanchuan:'贯穿射击',
|
||||
guanchuan_info:'当你使用杀指定惟一的目标后,可将攻击射线内的其他角色也加入目标',
|
||||
|
||||
boss_qiangzheng:'强征',
|
||||
boss_qiangzheng_info:'锁定技,回合结束阶段,你获得每个敌方角色的一张手牌',
|
||||
boss_baolin:'暴凌',
|
||||
boss_moyan:'魔焰',
|
||||
boss_moyan_info:'锁定技,回合结束阶段,你对场上所有角色造成一点火焰伤害',
|
||||
|
||||
cangming:'颠动沧溟',
|
||||
cangming_info:'出牌阶段限一次,你可弃置四张花色不同的手牌并将武将牌翻至背面,然后令所有其他角色进入混乱状态直到你的下一回合开始',
|
||||
boss_fengxing:'风行',
|
||||
boss_fengxing_info:'锁定技,你摸牌阶段摸牌数+2;你的攻击范围+2;你回合内的移动距离+2',
|
||||
boss_chiyu:'炽羽',
|
||||
boss_chiyu_info:'出牌阶段限一次,你可以弃置一张红色牌对距离5以内的所有其他角色造成一点火焰伤害',
|
||||
boss_tenglong:'腾龙八齐',
|
||||
boss_tenglong_info:'你没有装备区;出牌阶段限一次,你可以弃置一张装备牌对一名距离你2以内的其他角色造成3点火焰伤害',
|
||||
boss_wushang:'神天并地',
|
||||
boss_wushang_info:'锁定技,回合开始阶段,距离你5以内的所有其他角色需交给你一张手牌',
|
||||
boss_wuying:'无影',
|
||||
boss_wuying_info:'锁定技,你回合内的移动距离-1;计算其他角色与你的距离时始终+2',
|
||||
},
|
||||
ui:{
|
||||
create:{
|
||||
|
@ -1331,7 +1707,14 @@ mode.chess={
|
|||
ai:{
|
||||
get:{
|
||||
attitude:function(from,to){
|
||||
return (from.side==to.side?1:-1)*5;
|
||||
var t=(from.side===to.side?1:-1);
|
||||
if(from.isMad()){
|
||||
t=-t;
|
||||
}
|
||||
else if(to.isMad()){
|
||||
t=0;
|
||||
}
|
||||
return 6*t;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -1370,11 +1753,11 @@ mode.chess={
|
|||
// chess_zhangjiao:['male','qun',3,['']],
|
||||
// chess_menghuo:['male','qun',3,['']],
|
||||
//
|
||||
// chess_dongzhuo:['male','qun',3,['']],
|
||||
// chess_xingtian:['male','qun',3,['']],
|
||||
// chess_jinchidiao:['male','qun',3,['']],
|
||||
// chess_beimingjukun:['male','qun',3,['']],
|
||||
// chess_wuzhaojinlong:['male','qun',3,['']],
|
||||
chess_jinchidiao:['male','qun',15,['boss_fengxing','boss_chiyu'],['boss']],
|
||||
chess_beimingjukun:['male','qun',25,['boss_wuying','cangming'],['boss']],
|
||||
chess_wuzhaojinlong:['male','qun',30,['boss_tenglong','boss_wushang'],['boss']],
|
||||
chess_dongzhuo:['male','qun',20,['jiuchi','boss_qiangzheng','boss_baolin'],['boss']],
|
||||
chess_xingtian:['male','qun',99,['boss_moyan','wushuang'],['boss']],
|
||||
},
|
||||
posmap:{},
|
||||
help:{
|
||||
|
@ -1387,7 +1770,7 @@ mode.chess={
|
|||
function(game,lib,get,ui){
|
||||
var current=get.config('chess_character');
|
||||
if(typeof current!=='boolean'){
|
||||
game.saveConfig('chess_character',true);
|
||||
game.saveConfig('chess_character',true,true);
|
||||
current=true;
|
||||
}
|
||||
return ui.create.switcher('chess_character',current,ui.click.sidebar.local2);
|
||||
|
|
|
@ -1249,7 +1249,6 @@ mode.stone={
|
|||
mod:{
|
||||
cardEnabled:function(card,player){
|
||||
if(player.isMin()){
|
||||
if(get.type(card)=='equip') return false;
|
||||
return;
|
||||
}
|
||||
if(_status.currentPhase!=player) return;
|
||||
|
|
|
@ -15,6 +15,8 @@ mode.versus={
|
|||
if(lib.storage.number==undefined) game.save('number',3);
|
||||
if(lib.storage.replace_number==undefined) game.save('replace_number',3);
|
||||
ui.create.arena();
|
||||
ui.create.cards();
|
||||
game.finishCards();
|
||||
ui.auto.hide();
|
||||
ui.wuxie.hide();
|
||||
game.delay();
|
||||
|
@ -326,8 +328,6 @@ mode.versus={
|
|||
ui.fakemebg=ui.create.div('.avatar',ui.fakeme).hide();
|
||||
}
|
||||
ui.create.me();
|
||||
ui.create.cards();
|
||||
game.finishCards();
|
||||
var position,i;
|
||||
if(lib.storage.zhu&&lib.storage.only_zhu) position=Math.ceil(num/2)-1;
|
||||
else position=Math.floor(Math.random()*num)
|
||||
|
|
Loading…
Reference in New Issue