diff --git a/CHANGELOG.MD b/CHANGELOG.MD
index 9075be495..397d761a5 100644
--- a/CHANGELOG.MD
+++ b/CHANGELOG.MD
@@ -1 +1,3 @@
1.5.5
+塔防模式
+修复若干bug
diff --git a/character/refresh.js b/character/refresh.js
index f55ce8468..5286fa304 100755
--- a/character/refresh.js
+++ b/character/refresh.js
@@ -384,11 +384,14 @@ character.refresh={
init:function(player){
player.storage.reqianxun2=[];
},
- trigger:{target:'useCardToBegin',player:'judgeAfter'},
+ trigger:{target:'useCardToBegin',player:'judgeBefore'},
filter:function(event,player){
if(player.num('h')==0) return false;
if(event.parent.name=='phaseJudge'){
- return event.result.judge!=0;
+ if(lib.skill.reqianxun.trigger.player=='judgeBefore'){
+ return true;
+ }
+ return event.result&&event.result.judge!=0;
}
if(event.name=='judge') return false;
if(event.targets&&event.targets.length>1) return false;
diff --git a/game/game.js b/game/game.js
index 9977468ab..a023c8ad5 100755
--- a/game/game.js
+++ b/game/game.js
@@ -1410,6 +1410,16 @@
'12':'大',
}
},
+ tafang_difficulty:{
+ name:'战斗难度',
+ init:'2',
+ frequent:true,
+ item:{
+ '1':'简单',
+ '2':'普通',
+ '3':'困难',
+ }
+ },
chess_leader_save:{
name:'选择历程',
init:'save1',
@@ -1669,11 +1679,12 @@
'金钱可以用来招募随机武将,招到已有武将,或遣返不需要的武将时可得到招募令
'+
'战斗中有君主出场时可招降敌将,成功率取决于敌将的稀有度、剩余体力值以及手牌数。成功后战斗立即结束且没有金钱奖励。每发动一次招降,无论成功还是失败,都会扣除10招募令'+
'挑战武将会与该武将以及与其强度相近的武将进行战斗,敌方人数与我方出场人数相同,但不少于3。胜利后可通过招募令招募该武将'+
- '竞技场:
随机选择9名武将,每次派出1〜3名武将参战。战斗中阵亡的武将不能再次上场。
战斗后武将进入疲劳状态,若立即再次出场则初始体力值-1。
战斗中本方武将行动时可召唤后援,令一名未出场的已方武将加入战斗。后援武将在战斗结束后无论存活与否均不能再次出场
当取得12场胜利或所有武将全部阵亡后结束,并根据胜场数获得随机奖励'+
+ '竞技场:
随机选择9名武将,每次派出1〜3名武将参战。战斗中阵亡的武将不能再次上场。
战斗后武将进入疲劳状态,若立即再次出场则初始体力值-1。
战斗中本方武将行动时可召唤后援,令一名未出场的已方武将加入战斗。后援武将在战斗结束后无论存活与否均不能再次出场
当取得12场胜利或所有武将全部阵亡后结束,并根据胜场数获得随机奖励'+
'塔防模式
- 阻上敌人到达最下方的出口,坚持到给定的回合数即获得胜利
- '+
- '在1~10回合,每轮将新增1名敌人,11~20回合,每轮将新增2名敌人,20回合后每轮将增加3名敌人
- '+
- '每轮可分配10个行动点,用来布置机关、招募武将,或令武将行动。未用完的行动点将减半并累积到下一轮
- '+
- '战场上最多出现3个相同的机关,每个机关在置入战场3轮后消失。战场上最多招募10名友方角色。',
+ '每轮可获得10个行动点,用来布置机关、招募武将,或令武将行动。游戏难度将影响不同操作消耗的行动点数。未用完的行动点将减半并累积到下一轮
- '+
+ '每一轮在最上方的一个随机位置增加一名敌人,若最上方已有角色,则将其下移一格
- '+
+ '战场上最多出现3个相同的机关,每个机关在置入战场3轮后消失。战场上最多招募10名友方角色。
- '+
+ '敌方角色到达底部出口时游戏失败,已方角色到达底部出口,将被移出游戏',
'炉石模式':'
- 游戏流程类似1v1,场上有两名主将进行对抗'+
'
- 主将出牌阶段的出牌数量(行动值)有上限,先手为2,后手为3,装备牌不计入出牌上限
- 游戏每进行一轮,主将的出牌上限+1,超过6时减至2并重新累加'+
'
- 牌堆中随机加入总量1/3的随从牌,使用之可召唤一个随从,随从出场时背面朝上。每一方在场的随从数不能超过4
- 随从于摸牌阶段摸牌基数为1,随从的随从牌均视为闪,装备牌均视为杀
- '+
@@ -1688,7 +1699,12 @@
node._poppedfunc=func;
node._poppedwidth=width;
node._poppedheight=height;
- node.addEventListener(lib.config.touchscreen?'touchstart':'mouseenter',ui.click.hoverpopped);
+ if(lib.config.touchscreen){
+ node.listen(ui.click.hoverpopped);
+ }
+ else{
+ node.addEventListener('mouseenter',ui.click.hoverpopped);
+ }
},
placePoppedDialog:function(dialog,e){
if(e.touches&&e.touches[0]){
@@ -3882,11 +3898,13 @@
if(lib.config.touchscreen){
lib.setLongPress(this,ui.click.intro);
}
- else if(lib.config.hover_all){
- lib.setHover(this,ui.click.hoverplayer);
- }
- if(lib.config.right_info){
- this.oncontextmenu=ui.click.rightplayer;
+ else{
+ if(lib.config.hover_all){
+ lib.setHover(this,ui.click.hoverplayer);
+ }
+ if(lib.config.right_info){
+ this.oncontextmenu=ui.click.rightplayer;
+ }
}
var name=get.translation(character);
this.node.name.innerHTML='';
@@ -5580,11 +5598,13 @@
if(lib.config.touchscreen){
lib.setLongPress(node,ui.click.intro);
}
- else if(lib.config.hover_all){
- lib.setHover(node,ui.click.hoverplayer);
- }
- if(lib.config.right_info){
- node.oncontextmenu=ui.click.rightplayer;
+ else{
+ if(lib.config.hover_all){
+ lib.setHover(node,ui.click.hoverplayer);
+ }
+ if(lib.config.right_info){
+ node.oncontextmenu=ui.click.rightplayer;
+ }
}
return node;
},
@@ -5625,11 +5645,13 @@
if(lib.config.touchscreen){
lib.setLongPress(node,ui.click.intro);
}
- else if(lib.config.hover_all){
- lib.setHover(node,ui.click.hoverplayer);
- }
- if(lib.config.right_info){
- node.oncontextmenu=ui.click.rightplayer;
+ else{
+ if(lib.config.hover_all){
+ lib.setHover(node,ui.click.hoverplayer);
+ }
+ if(lib.config.right_info){
+ node.oncontextmenu=ui.click.rightplayer;
+ }
}
return node;
}
@@ -8296,6 +8318,14 @@
if(player){
player.delete();
delete game.playerMap[player.dataset.position];
+ game.players.remove(player);
+ for(var i=0;i=ui.chesswidth){
event.control.childNodes[1].style.opacity=0.5;
@@ -972,6 +1012,7 @@ mode.chess={
}
}
_status.imchoosing=true;
+ ui.auto.hide();
var eventdong=function(){
var selected=dialog.querySelectorAll('.button.selected');
event.bufang=[];
@@ -1049,7 +1090,6 @@ mode.chess={
delete event.bufang;
}
'step 3'
- _status.imchoosing=false;
if(event.dialog){
event.dialog.close();
delete event.dialog;
@@ -1078,7 +1118,7 @@ mode.chess={
if(event.zhaomu.length){
event.currentZhaomu=event.zhaomu.shift();
event.dialog=ui.create.dialog('选择一个位置安排【'+get.translation(event.currentZhaomu)+'】');
- var size=ui.chesswidth*ui.chessheight;
+ var size=ui.chesswidth*(ui.chessheight-1);
var clickGrid=function(){
var player=game.addChessPlayer(event.currentZhaomu,false,4,this.dataset.position);
_status.friends.push(player);
@@ -1100,7 +1140,7 @@ mode.chess={
}
if(!event.playergrids){
event.playergrids=[]
- for(var i=0;i=0;i--){
- for(var j=0;j=0;k--){
+ var pos=i+k*ui.chesswidth;
+ if(lib.posmap[pos]){
+ lib.posmap[pos].moveDown();
+ }
+ }
+ }
+ }
+ }
+ if(shalldelay) game.delay();
+ 'step 7'
event.justadded=[];
if(_status.characterList.length){
if(_status.enemies.length=10&&list1.length){
- var enemy=game.addChessPlayer(_status.characterList.shift(),true,4,list1.randomRemove());
- _status.enemies.push(enemy);
- event.justadded.push(enemy.name);
- }
- if(_status.turnCount>=20&&list1.length){
- var enemy=game.addChessPlayer(_status.characterList.shift(),true,4,list1.randomRemove());
- _status.enemies.push(enemy);
- event.justadded.push(enemy.name);
- }
+ // var difficulty=get.config('tafang_difficulty');
+ // if(_status.turnCount>=10&&list1.length&&difficulty>1){
+ // var enemy=game.addChessPlayer(_status.characterList.shift(),true,4,list1.randomRemove());
+ // _status.enemies.push(enemy);
+ // event.justadded.push(enemy.name);
+ // }
+ // if(_status.turnCount>=20&&list1.length&&difficulty>1){
+ // var enemy=game.addChessPlayer(_status.characterList.shift(),true,4,list1.randomRemove());
+ // _status.enemies.push(enemy);
+ // event.justadded.push(enemy.name);
+ // }
+ // if(list1.length&&difficulty>2){
+ // var enemy=game.addChessPlayer(_status.characterList.shift(),true,4,list1.randomRemove());
+ // _status.enemies.push(enemy);
+ // event.justadded.push(enemy.name);
+ // }
}
}
else{
game.over(true);
}
- 'step 7'
+ 'step 8'
if(event.xingdong.length){
- event.xingdong.shift().phase();
+ var toact=event.xingdong.shift();
+ if(game.players.contains(toact)){
+ toact.phase();
+ }
event.redo();
}
else{
event.xingdong=_status.enemies.slice(0);
}
- 'step 8'
+ 'step 9'
if(event.xingdong.length){
var enemy=event.xingdong.shift();
- if(!event.justadded.contains(enemy.name)){
+ if(!event.justadded.contains(enemy.name)&&game.players.contains(enemy)){
enemy.phase();
}
event.redo();
@@ -1199,7 +1262,7 @@ mode.chess={
else{
event.mechlist=game.treasures.slice(0);
}
- 'step 9'
+ 'step 10'
if(event.mechlist.length){
var mech=event.mechlist.shift();
var info=lib.skill[mech.name+'_skill'];
@@ -1225,7 +1288,7 @@ mode.chess={
}
event.redo();
}
- 'step 10'
+ 'step 11'
delete event.xingdong;
delete event.mechlist;
if(_status.turnCount>=_status.turnTotal){
@@ -3734,9 +3797,10 @@ mode.chess={
}
if(list.length){
game.log('光明泉发动');
- var target=list.randomGet();
- target.recover();
- player.line(target,'green');
+ player.line(list,'green');
+ while(list.length){
+ list.shift().recover();
+ }
}
}
},
@@ -5335,14 +5399,19 @@ mode.chess={
chess_mech_gongchengche_skill_info:'每一轮对距离2格以内的一名随机敌方角色造成1点火焰伤害,并将目标击退1格',
chess_mech_guangmingquan:'光明泉',
chess_mech_guangmingquan_skill:'圣疗',
- chess_mech_guangmingquan_skill_info:'每一轮令距离2格以内的一名随机友方角色回复一点体力',
+ chess_mech_guangmingquan_skill_info:'每一轮令距离2格以内的所有友方角色各回复一点体力',
},
ui:{
create:{
playergrid:function(player,x,y){
+ var pos=player.getDataPos(x,y);
+ if(get.config('chess_mode')=='tafang'){
+ if(pos=ui.chessheight-1) return false;
+ }
var node=ui.create.div('.player.minskin.playergrid',player.parentNode);
node.link=player;
- node.dataset.position=player.getDataPos(x,y);
+ node.dataset.position=pos;
return node;
},
fakeme:function(){
@@ -5356,10 +5425,8 @@ mode.chess={
click:{
playergrid:function(){
if(!_status.paused) return;
- delete lib.posmap[this.link.dataset.position];
- game.addVideo('moveTox',this.link,this.dataset.position);
- this.link.dataset.position=this.dataset.position;
- lib.posmap[this.link.dataset.position]=this.link;
+ var pos=parseInt(this.dataset.position);
+ this.link.moveTo(pos%ui.chesswidth,Math.floor(pos/ui.chesswidth));
if(ui.movegrids){
while(ui.movegrids.length){
ui.movegrids.shift().delete();