This commit is contained in:
libccy 2015-11-10 01:04:18 +08:00
parent 4a6b4abbb4
commit ff65b1f559
8 changed files with 190 additions and 49 deletions

View File

@ -1,2 +1,6 @@
1.5.4
天气(在选项-玩法中开启)
战棋模式调整
优化触屏模式
明将国战模式
修正酒杀结算问题
修正统率模式招募bug

View File

@ -340,7 +340,7 @@ card.extra={
group:'jiu2'
},
jiu2:{
trigger:{player:['useCardAfter','shaMiss']},
trigger:{player:['useCardAfter','phaseAfter']},
priority:2,
filter:function(event){
return (event.card&&(event.card.name=='sha'));

View File

@ -1118,9 +1118,18 @@ card.standard={
direct:true,
content:function(){
"step 0"
if(player.skills.contains('jiu')){
player.removeSkill('jiu');
event.jiu=true;
}
player.chooseToUse('是否发动青龙偃月刀?',{name:'sha'},trigger.target,-1);
"step 1"
if(result.bool) player.logSkill('qinglong');
if(result.bool){
player.logSkill('qinglong');
}
else if(event.jiu){
player.addSkill('jiu');
}
}
},
zhangba_skill:{

View File

@ -164,9 +164,15 @@
}
if(config.touchscreen){
map.mousewheel.hide();
map.hover_all.hide();
map.hover_handcard.hide();
map.hoveration.hide();
}
else{
map.mousewheel.show();
map.hover_all.show();
map.hover_handcard.show();
map.hoveration.show();
}
}
}
@ -224,7 +230,7 @@
setTimeout(function(){
layout.remove();
ui.arena.show();
game.me.update();
if(game.me) game.me.update();
setTimeout(function(){
ui.updatex();
},500);
@ -1017,6 +1023,16 @@
guozhan:{
name:'国战',
config:{
guozhan_mode:{
name:'游戏模式',
init:'normal',
item:{
normal:'普通',
mingjiang:'明将'
},
restart:true,
frequent:true,
},
player_number:{
name:'游戏人数',
init:'8',
@ -1351,6 +1367,11 @@
},
frequent:true,
},
attack_move:{
name:'击退效果',
init:true,
// frequent:true,
},
show_distance:{
name:'显示距离',
init:true,
@ -1495,7 +1516,7 @@
'触屏模式<br>可消除iOS等设备上300ms的点击延迟但开启后无法使用鼠标<li>滚轮控制手牌<br>开启后滚轮可控制手牌的左右滚动建议Mac等具备横向滚动功能的设备关闭此选项'+
'<li>隐藏非全身皮肤<br>在新版布局中,若角色没有全身皮肤将被隐藏<li>游戏玩法<br>为游戏增加不同玩法,开启后可在帮助中查看介绍'+
'<li>加强主公<br>反贼人数多于2时主公会额外增加一个技能每个主公的额外技能固定非常备主公增加天命',
'游戏操作':'<ul><li>长按/鼠标悬停/右键单击(需在设置中开启)显示信息<li>触屏模式中双指点击切换暂停<li>键盘快捷键<br>'+
'游戏操作':'<ul><li>长按/鼠标悬停/右键单击(需在设置中开启)显示信息<li>触屏模式中双指点击切换暂停<li>移动布局中,点击顶部的左半边或右半边可显示按钮,双击顶部可令界面下移(方便标身份)<li>键盘快捷键<br>'+
'<table><tr><td>a<td>切换托管<tr><td>c<td>打开设置<tr><td>w<td>切换不询问无懈<tr><td>▭<td>暂停</ul>',
'游戏命令':'<div style="margin:10px">变量名</div><ul style="margin-top:0"><li>场上角色<br>game.players<li>阵亡角色<br>game.dead'+
'<li>玩家<br>game.me<li>玩家的上/下家<br>game.me.previous/next'+
@ -1514,12 +1535,13 @@
'亮出身份牌的忠臣增加1点体力上限。角色濒死和死亡的结算及胜利条件与普通身份局相同。',
'战棋模式':
'<div style="margin:10px">对阵模式</div><ul style="margin-top:0"><li>n人对战n人的模式由单人控制开始游戏后随机分配位置与出牌顺序<li>'+
'每人在出牌阶段有一次移动的机会,若一名角色在移动之前使用过指定其他角色为目标的牌,该回合可移动的最大距离为2否则最大距离为1<li>'+
'每人在出牌阶段有一次移动的机会,可移动的最大距离为2<li>'+
'任何卡牌或技能无法指定位置相隔8个格以上的角色为目标<li>'+
'杀死对方阵营的角色可摸一张牌,杀死本方阵营无惩罚<li>'+
'开启交替行动时双方无论存活角色角色多少都将轮流进行行动。在一方所有角色行动完毕进行下一轮行动时若其人数比另一方少另一方可指定至多X名角色名摸一张牌X为人数之差<li>'+
'开启特殊战场角色后每个回合结束时有一定机率出现一个特殊角色该角色不参与战斗并有一个影响周围或全体角色的效果。该角色在出现后的5〜10个回合内消失<li>'+
'战场上可设置出现随机路障,角色无法移动到路障处。当一名角色的周围四格有至少三格为路障或在战场外,其可以在回合内清除一个相邻路障</ul>'+
'开启击退效果后,当一名角色对相邻目标造成伤害后,受伤害角色将沿反方向移动一格<li>'+
'战场上可设置出现随机路障,角色无法移动到路障处。当一名角色的周围四格有至少三格为路障或在战场外时,其可以在回合内清除一个相邻路障</ul>'+
'<div style="margin:10px">统率模式</div><ul style="margin-top:0"><li>收集武将进行战斗,根据战斗难度及我方出场武将的强度,战斗胜利后将获得数量不等的金钱。没有君主出场时,获得的金钱较多<li>'+
'金钱可以用来招募随机武将,招到已有武将,或遣返不需要的武将时可得到招募令<li>'+
'战斗中有君主出场时可招降敌将成功率取决于敌将的稀有度、剩余体力值以及手牌数。成功后战斗立即结束且没有金钱奖励。每发动一次招降无论成功还是失败都会扣除10招募令<li>'+
@ -3732,12 +3754,12 @@
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;
}
if(lib.config.hover_all){
lib.setHover(this,ui.click.hoverplayer);
}
var name=get.translation(character);
this.node.name.innerHTML='';
if(!lib.config.show_name){
@ -5430,12 +5452,12 @@
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;
}
if(lib.config.hover_all){
lib.setHover(node,ui.click.hoverplayer);
}
return node;
},
mark:function(name,info,skill){
@ -5475,12 +5497,12 @@
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;
}
if(lib.config.hover_all){
lib.setHover(node,ui.click.hoverplayer);
}
return node;
}
},
@ -9734,7 +9756,7 @@
var end=player;
do{
player.directgain(get.cards(4));
if(player.singleHp===true&&!player.classList.contains('unseen')&&!player.classList.contains('unseen2')){
if(player.singleHp===true&&lib.config.mode!='guozhan'){
player.doubleDraw();
}
player=player.next;
@ -11498,7 +11520,11 @@
ui.system2=ui.create.div('#system2',ui.system);
if(lib.config.touchscreen){
ui.system1.addEventListener('touchstart',ui.click.system);
// ui.system1.addEventListener('touchend',ui.click.system);
// ui.system1.addEventListener('touchmove',ui.click.system);
ui.system2.addEventListener('touchstart',ui.click.system);
// ui.system2.addEventListener('touchend',ui.click.system);
// ui.system2.addEventListener('touchmove',ui.click.system);
}
else{
ui.system1.listen(ui.click.system);
@ -12933,12 +12959,12 @@
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;
}
if(lib.config.hover_all){
lib.setHover(node,ui.click.hoverplayer);
}
}
if(infoitem[1]){
node.node.group.innerHTML='<div>'+get.translation(infoitem[1])+'</div>';
@ -13102,12 +13128,12 @@
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;
}
if(lib.config.hover_all){
lib.setHover(node,ui.click.hoverplayer);
}
}
node.storage={};
if(info!='noclick'){
@ -13131,11 +13157,19 @@
system:function(){
if(lib.config.layout!='phone') return;
_status.clicked=true;
this.classList.toggle('shown');
if(this.classList.contains('shown')){
this.classList.add('shown');
if(this._tempclicking){
ui.arena.classList.add('phonetop');
}
else{
this._tempclicking=true;
var that=this;
setTimeout(function(){
that._tempclicking=false;
},300);
}
if(this.nextSibling) this.nextSibling.classList.remove('shown');
if(this.previousSibling) this.previousSibling.classList.remove('shown');
}
},
pausehistory:function(){
if(!lib.config.auto_popped_history) return;
@ -13158,6 +13192,10 @@
if(!lib.config.auto_popped_config) return;
// if(!ui.config.childNodes.length) return;
var uiintro=ui.create.dialog('hidden');
uiintro.listen(function(e){
e.stopPropagation();
});
var rows=Math.ceil(lib.config.all.mode.length/3);
uiintro.type='config';
for(var k=0;k<rows;k++){
@ -13209,6 +13247,9 @@
},
volumn:function(){
var uiintro=ui.create.dialog('hidden');
uiintro.listen(function(e){
e.stopPropagation();
});
uiintro.add('背景音乐');
var vol1=ui.create.div('.volumn');
uiintro.add(vol1);
@ -13285,6 +13326,12 @@
if(!this._poppedfunc){
return;
}
if(lib.config.touchscreen){
_status.touchpopping=true;
setTimeout(function(){
_status.touchpopping=false;
},500);
}
var uiintro=this._poppedfunc();
if(!uiintro) return;
if(ui.currentpopped&&ui.currentpopped._uiintro){
@ -13714,6 +13761,7 @@
window:function(){
var clicked=_status.clicked;
if(_status.dragged) return;
if(_status.touchpopping) return;
if(_status.reloading) return;
if(_status.clicked){
_status.clicked=false;
@ -13755,8 +13803,12 @@
}
}
if(lib.config.layout=='phone'){
ui.arena.classList.remove('phonetop');
ui.system1.classList.remove('shown');
ui.system2.classList.remove('shown');
if(ui.chessinfo){
ui.chessinfo.classList.remove('zoomed');
}
}
}
if(_status.tempunpop){

View File

@ -83,6 +83,23 @@
left:calc(100% - 120px);
overflow:scroll;
text-align:center;
transition: all 0s;
}
.fakeme.player.zoomed{
width: 240px;
height: 240px;
left:calc(100% - 240px);
top:calc(100% - 240px);
background-size:200%;
}
.fakeme.player.zoomed>div{
width: 90px;
height: 90px;
left: 0;
top: 16px;
margin-left: 8px;
margin-right: 8px;
margin-bottom: 16px;
}
.fakeme.player>div{
width:45px;

View File

@ -35,10 +35,22 @@
opacity: 0;
width: 50%;
}
#system>div.shown{
min-width: 50%;
width: auto;
}
#system>div:not(.shown)>div{
pointer-events: none;
}
.menu-container>.menu.main {
top: 62px !important;
transform: scale(1.3) !important;
}
#arena.phonetop{
top:80px !important;
}
@media screen and (orientation:portrait) {

View File

@ -645,6 +645,11 @@ mode.chess={
}
player.node.identity.dataset.color=get.translation(player.side+'Color');
game.players.push(player);
if(lib.config.animation){
setTimeout(function(){
player.$rare2();
},300);
}
}
ui.chess.appendChild(player);
if(_status.video){
@ -1285,9 +1290,10 @@ mode.chess={
ui.create.me();
ui.create.fakeme();
ui.chessinfo=ui.create.div('.fakeme.player',ui.me);
ui.chessinfo.ontouchmove = ui.click.touchScroll;
ui.chessinfo.style.WebkitOverflowScrolling='touch';
ui.chessinfo=ui.create.div('.fakeme.player',ui.me,function(e){
e.stopPropagation();
});
lib.setScroll(ui.chessinfo);
game.arrangePlayers();
"step 2"
@ -1450,6 +1456,7 @@ mode.chess={
var node=ui.create.player(ui.window);
node.style.transition='all 0.7s';
node.style.opacity=0;
node.style.zIndex=4;
var kaibao=false;
if(!name||typeof i=='string'){
@ -3074,6 +3081,44 @@ mode.chess={
}
},
skill:{
_attackmove:{
trigger:{player:'damageEnd'},
forced:true,
popup:false,
priority:50,
filter:function(event,player){
if(!get.config('attack_move')) return false;
if(!event.source) return false;
if(get.distance(event.source,player,'pure')>1) return false;
if(event.num<1) return false;
var xy1=event.source.getXY();
var xy2=player.getXY();
var dx=xy2[0]-xy1[0];
var dy=xy2[1]-xy1[1];
if(dx==0&&Math.abs(dy)==2){
dy/=2;
}
if(dy==0&&Math.abs(dx)==2){
dx/=2;
}
return player.movable(dx,dy);
},
content:function(){
var xy1=trigger.source.getXY();
var xy2=player.getXY();
var dx=xy2[0]-xy1[0];
var dy=xy2[1]-xy1[1];
if(dx==0&&Math.abs(dy)==2){
dy/=2;
}
if(dy==0&&Math.abs(dx)==2){
dx/=2;
}
if(player.movable(dx,dy)){
player.move(dx,dy);
}
}
},
dubiaoxianjing:{
global:'dubiaoxianjing2'
},
@ -4161,13 +4206,15 @@ mode.chess={
!player.movable(1,0)&&!player.movable(-1,0)){
return false;
}
var move=player.skills.contains('noactpunish')?2:1;
// var move=player.skills.contains('noactpunish')?2:1;
var move=2;
move=game.checkMod(player,move,'chessMove',player.get('s'));
return move>0;
},
content:function(){
"step 0"
var move=player.skills.contains('noactpunish')?2:1;
// var move=player.skills.contains('noactpunish')?2:1;
var move=2;
move=game.checkMod(player,move,'chessMove',player.get('s'));
player.chooseToMove(move).phasing=true;
"step 1"
@ -4846,7 +4893,7 @@ mode.chess={
['club',3,'chess_shezhang'],
['spade',5,'chess_shezhang'],
['spade',7,'chess_shezhang'],
// ['diamond',1,'chess_chuzhang'],
['diamond',1,'chess_chuzhang'],
['diamond',4,'chess_chuzhang'],
['heart',8,'chess_chuzhang'],
// ['diamond',9,'chess_chuzhang'],

View File

@ -72,21 +72,12 @@ mode.guozhan={
event.trigger('gameStart');
game.gameDraw(player);
if(get.config('ai_identity')){
game.showIdentity(true);
}
else{
for(var i=0;i<game.players.length;i++){
game.players[i].ai.shown=0;
}
}
for(var i=0;i<game.players.length;i++){
game.players[i].name='unknown'+get.distance(player,game.players[i],'absolute');
if(game.players[i]==game.me){
lib.translate[game.players[i].name]+='(你)';
}
}
game.phaseLoop(player);
var players=get.players(lib.sort.position);
@ -101,12 +92,21 @@ mode.guozhan={
}
_status.videoInited=true,
game.addVideo('init',null,info);
if(get.config('guozhan_mode')=='mingjiang'){
game.showIdentity(true);
}
else{
for(var i=0;i<game.players.length;i++){
game.players[i].ai.shown=0;
}
}
game.phaseLoop(player);
}
},
showIdentity:function(started){
if(game.phaseNumber==0&&!started) return;
for(var i=0;i<game.players.length;i++){
game.players[i].showCharacter(2);
game.players[i].showCharacter(2,false);
}
},
checkResult:function(){
@ -413,7 +413,7 @@ mode.guozhan={
}
return false;
},
showCharacter:function(num){
showCharacter:function(num,log){
if(!this.classList.contains('unseen')&&!this.classList.contains('unseen2')){
return;
}
@ -430,21 +430,21 @@ mode.guozhan={
var skills;
switch(num){
case 0:
game.log(get.translation(this)+'展示了主将'+get.translation(this.name1));
if(log!==false) game.log(get.translation(this)+'展示了主将'+get.translation(this.name1));
this.name=this.name1;
skills=lib.character[this.name][3];
this.sex=lib.character[this.name][0];
this.classList.remove('unseen');
break;
case 1:
game.log(get.translation(this)+'展示了副将'+get.translation(this.name2));
if(log!==false) game.log(get.translation(this)+'展示了副将'+get.translation(this.name2));
skills=lib.character[this.name2][3];
if(this.sex=='unknown') this.sex=lib.character[this.name2][0];
if(this.name.indexOf('unknown')==0) this.name=this.name2;
this.classList.remove('unseen2');
break;
case 2:
game.log(get.translation(this)+'展示了主将'+get.translation(this.name1)+'、副将'+get.translation(this.name2));
if(log!==false) game.log(get.translation(this)+'展示了主将'+get.translation(this.name1)+'、副将'+get.translation(this.name2));
this.name=this.name1;
skills=lib.character[this.name][3].concat(lib.character[this.name2][3]);
this.sex=lib.character[this.name][0];
@ -453,7 +453,7 @@ mode.guozhan={
break;
}
var initdraw=parseInt(get.config('initshow_draw'));
if(!_status.initshown&&initdraw&&this.isAlive()){
if(!_status.initshown&&initdraw&&this.isAlive()&&get.config('guozhan_mode')!='mingjiang'){
this.popup('首亮');
game.log(get.translation(this)+'首先明置武将,得到奖励');
game.log(get.translation(this)+'摸了'+get.cnNumber(initdraw)+'张牌');
@ -777,5 +777,5 @@ mode.guozhan={
},
config:['player_number','initshow_draw',
'free_choose','change_identity','change_choice','change_card',
'swap','dierestart','ai_identity','revive','double_hp','difficulty']
'swap','dierestart','revive','double_hp','difficulty']
}