边缘滚动
This commit is contained in:
parent
8dc643b600
commit
fd3167ef02
|
@ -2600,6 +2600,7 @@ character.sp={
|
|||
},
|
||||
mark:true,
|
||||
direct:true,
|
||||
unique:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
var check=(player.hp==1||(player.hp==2&&player.num('h')<=1));
|
||||
|
|
107
character/swd.js
107
character/swd.js
|
@ -1456,43 +1456,46 @@ character.swd={
|
|||
trigger:{player:'phaseBegin'},
|
||||
group:'huanxing2',
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.num('he')>0;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.unmark(player.storage.huanxing+'_charactermark');
|
||||
delete player.storage.huanxing;
|
||||
delete player.additionalSkills.huanxing;
|
||||
player.checkMarks();
|
||||
player.chooseCardTarget({
|
||||
prompt:'是否发动【幻形】?',
|
||||
filterCard:true,
|
||||
position:'he',
|
||||
filterTarget:function(card,player,target){
|
||||
if(target==player) return false;
|
||||
if(target.sex!='male') return false;
|
||||
var name=target.name.indexOf('unknown')==0?target.name2:target.name;
|
||||
if(player.num('he')){
|
||||
player.chooseCardTarget({
|
||||
prompt:'是否发动【幻形】?',
|
||||
filterCard:true,
|
||||
position:'he',
|
||||
filterTarget:function(card,player,target){
|
||||
if(target==player) return false;
|
||||
if(target.sex!='male') return false;
|
||||
var name=target.name.indexOf('unknown')==0?target.name2:target.name;
|
||||
|
||||
var info=lib.character[name];
|
||||
if(info){
|
||||
var skills=info[3];
|
||||
for(var j=0;j<skills.length;j++){
|
||||
if(lib.translate[skills[j]+'_info']&&lib.skill[skills[j]]&&
|
||||
!lib.skill[skills[j]].unique&&!player.skills.contains(skills[j])){
|
||||
return true;
|
||||
var info=lib.character[name];
|
||||
if(info){
|
||||
var skills=info[3];
|
||||
for(var j=0;j<skills.length;j++){
|
||||
if(lib.translate[skills[j]+'_info']&&lib.skill[skills[j]]&&
|
||||
!lib.skill[skills[j]].unique&&!player.skills.contains(skills[j])){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
ai1:function(card){
|
||||
return 7-ai.get.value(card);
|
||||
},
|
||||
ai2:function(target){
|
||||
if(target.isMin()) return 0;
|
||||
return 6-target.maxHp;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
ai1:function(card){
|
||||
return 7-ai.get.value(card);
|
||||
},
|
||||
ai2:function(target){
|
||||
return 6-target.maxHp;
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
player.discard(result.cards);
|
||||
|
@ -5133,10 +5136,9 @@ character.swd={
|
|||
unique:true,
|
||||
enable:'phaseUse',
|
||||
priority:-9,
|
||||
group:'tianshu2',
|
||||
filterCard:{type:['trick','delay']},
|
||||
filter:function(event,player){
|
||||
return player.num('h',{type:'trick'})>0;
|
||||
return player.num('h',{type:['trick','delay']})>0;
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
var names=[];
|
||||
|
@ -5158,7 +5160,7 @@ character.swd={
|
|||
return false;
|
||||
}
|
||||
},
|
||||
createDialog:function(player,target){
|
||||
createDialog:function(player,target,onlylist){
|
||||
var names=[];
|
||||
var list=[];
|
||||
if(target.name&&!target.classList.contains('unseen')) names.add(target.name);
|
||||
|
@ -5178,8 +5180,10 @@ character.swd={
|
|||
}
|
||||
}
|
||||
}
|
||||
if(onlylist) return list;
|
||||
var dialog=ui.create.dialog();
|
||||
dialog.add('选择获得一项技能');
|
||||
_status.event.list=list;
|
||||
var clickItem=function(){
|
||||
_status.event._result=this.link;
|
||||
game.resume();
|
||||
|
@ -5189,24 +5193,39 @@ character.swd={
|
|||
var translation=get.translation(list[i])[0]+get.translation(list[i])[1];
|
||||
var item=dialog.add('<div class="popup" style="width:50%;display:inline-block"><div class="skill">【'+
|
||||
translation+'】</div><div>'+lib.translate[list[i]+'_info']+'</div></div>');
|
||||
item.addEventListener('click',clickItem);
|
||||
item.link=list[i];
|
||||
item.firstChild.addEventListener('click',clickItem);
|
||||
item.firstChild.link=list[i];
|
||||
}
|
||||
}
|
||||
dialog.add(ui.create.div('.placeholder'));
|
||||
return dialog;
|
||||
},
|
||||
check:function(card){
|
||||
return 5-ai.get.value(card);
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
ui.auto.hide();
|
||||
event.dialog=lib.skill.tianshu.createDialog(player,target);
|
||||
game.pause();
|
||||
event.skillai=function(list){
|
||||
return list.randomGet();
|
||||
};
|
||||
if(event.isMine()){
|
||||
event.dialog=lib.skill.tianshu.createDialog(player,target);
|
||||
event.switchToAuto=function(){
|
||||
event._result=event.skillai(event.list);
|
||||
game.resume();
|
||||
};
|
||||
game.pause();
|
||||
}
|
||||
else{
|
||||
event._result=event.skillai(lib.skill.tianshu.createDialog(player,target,true));
|
||||
}
|
||||
"step 1"
|
||||
if(player.storage.tianshu){
|
||||
player.unmark(player.storage.tianshu+'_charactermark');
|
||||
}
|
||||
ui.auto.show();
|
||||
event.dialog.close();
|
||||
if(event.dialog){
|
||||
event.dialog.close();
|
||||
}
|
||||
var link=result;
|
||||
player.addSkill(link);
|
||||
player.skills.remove(link);
|
||||
|
@ -5218,8 +5237,20 @@ character.swd={
|
|||
});
|
||||
player.storage.tianshu=target.name;
|
||||
player.checkMarks();
|
||||
player.addTempSkill('tianshu_ai','phaseAfter');
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
result:{
|
||||
player:function(player){
|
||||
if(player.skills.contains('tianshu_ai')) return 0;
|
||||
if(player.num('h')>player.hp) return 1;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
tianshu_ai:{},
|
||||
tianshu2:{
|
||||
trigger:{player:'phaseBegin'},
|
||||
direct:true,
|
||||
|
@ -7932,7 +7963,7 @@ character.swd={
|
|||
tanlin_info:'出牌阶段限一次,你可以与一名其他角色进行拼点,若你赢,你获得双方拼点牌、对该角色使用卡牌无视距离且可以额外使用一张杀直到回合结束,若你没赢,你受到该角色的一点伤害。',
|
||||
pozhen_info:'每当你受到一次伤害,若你的手牌数大于伤害来源,你可以弃置X张手牌对其造成一点伤害;若你的手牌数小于伤害来源,你可以弃置其X张手牌。X为你与伤害来源的手牌数之差。',
|
||||
yunchou_info:'出牌阶段限一次,你可以弃置任意张手牌,并弃置一张其他角色的手牌,你弃置的手牌中每有一张与此牌的颜色相同,你摸一张牌,否则对方摸一张牌',
|
||||
tianshu_info:'回合开始阶段,你可以获得场上一名存活角色的一项技能;出牌阶段,你可以弃置一张锦囊牌,然后更换一项技能',
|
||||
tianshu_info:'出牌阶段,你可以弃置一张锦囊牌,并获得场上一名存活角色的一项技能(再使用则会替换前一次获得的技能)',
|
||||
luomei_info:'每当你使用或打出一张梅花花色的牌,你可以摸一张牌',
|
||||
xingdian_info:'出牌阶段限一次,你可以弃置一张手牌,然后指定至多两名角色令其各弃置一张牌',
|
||||
yulin_info:'每当你即将受到伤害,你可以弃置一张装备牌抵消此伤害',
|
||||
|
|
29
game/game.js
29
game/game.js
|
@ -628,6 +628,7 @@ window.play={};
|
|||
|
||||
setTimeout(function(){
|
||||
event.dialog=ui.create.dialog(get.translation(player.name)+'拼点成功');
|
||||
event.dialog.classList.add('center');
|
||||
player.popup('胜');
|
||||
target.popup('负');
|
||||
game.resume();
|
||||
|
@ -639,6 +640,7 @@ window.play={};
|
|||
event.result.tie=true;
|
||||
setTimeout(function(){
|
||||
event.dialog=ui.create.dialog(get.translation(player.name)+'拼点失败');
|
||||
event.dialog.classList.add('center');
|
||||
player.popup('平');
|
||||
target.popup('平');
|
||||
game.resume();
|
||||
|
@ -647,6 +649,7 @@ window.play={};
|
|||
else{
|
||||
setTimeout(function(){
|
||||
event.dialog=ui.create.dialog(get.translation(player.name)+'拼点失败');
|
||||
event.dialog.classList.add('center');
|
||||
player.popup('负');
|
||||
target.popup('胜');
|
||||
game.resume();
|
||||
|
@ -1934,6 +1937,7 @@ window.play={};
|
|||
player.judging=get.cards()[0];
|
||||
event.node=player.judging.copy('thrown','center',ui.arena).animate('start');
|
||||
event.dialog=ui.create.dialog(get.translation(player)+'的'+event.judgestr+'判定');
|
||||
event.dialog.classList.add('center');
|
||||
game.log(get.translation(player)+'进行'+event.judgestr+'判定,亮出的判定牌为'+get.translation(player.judging));
|
||||
game.delay(2);
|
||||
event.trigger('judge');
|
||||
|
@ -7057,10 +7061,11 @@ window.play={};
|
|||
case 'strict_sort':
|
||||
modeconfig.push(ui.create.switcher('strict_sort',get.config('strict_sort'),ui.click.sidebar.local));
|
||||
modeconfig.push(ui.create.switcher('reverse_sort',get.config('reverse_sort'),ui.click.sidebar.reverse_sort));break;
|
||||
default:
|
||||
if(Array.isArray(lib.config.current_mode[i])){
|
||||
modeconfig.push(ui.create.switcher.apply(this,lib.config.current_mode[i]));
|
||||
default:{
|
||||
if(typeof lib.config.current_mode[i]==='function'){
|
||||
modeconfig.push(lib.config.current_mode[i](lib,get,ui));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for(i in lib.config.current_mode){
|
||||
|
@ -9646,11 +9651,13 @@ window.play={};
|
|||
}
|
||||
if(ui.dialog){
|
||||
if(lib.config.mode=='chess'){
|
||||
if(ui.dialog.content.offsetHeight<240){
|
||||
if(ui.dialog.content.offsetHeight<240&&(!ui.dialog.buttons||!ui.dialog.buttons.length)){
|
||||
ui.dialog.style.height=ui.dialog.content.offsetHeight+'px';
|
||||
ui.dialog.classList.add('slim');
|
||||
}
|
||||
else{
|
||||
ui.dialog.style.height='';
|
||||
ui.dialog.classList.remove('slim');
|
||||
}
|
||||
}
|
||||
if(ui.dialog.content.offsetHeight<=240||
|
||||
|
@ -10813,6 +10820,18 @@ window.play={};
|
|||
disvalue:function(card,player){
|
||||
return -ai.get.value(card,player);
|
||||
},
|
||||
skillthreaten:function(skill,player,target){
|
||||
if(!lib.skill[skill]) return 1;
|
||||
if(!lib.skill[skill].ai) return 1;
|
||||
var threaten=lib.skill[skill].ai.threaten;
|
||||
if(typeof threaten=='number') return threaten;
|
||||
if(typeof threaten=='function'){
|
||||
player=player||_status.event.player;
|
||||
target=target||player;
|
||||
return threaten(player,target);
|
||||
}
|
||||
return 1;
|
||||
},
|
||||
order:function(item){
|
||||
var aii=get.info(item).ai;
|
||||
var order;
|
||||
|
@ -11016,6 +11035,7 @@ window.play={};
|
|||
}
|
||||
},
|
||||
};
|
||||
lib.init.init();
|
||||
HTMLDivElement.prototype.animate=function(name){
|
||||
this.classList.add(name);
|
||||
var that=this;
|
||||
|
@ -11394,7 +11414,6 @@ window.play={};
|
|||
console.log(str);
|
||||
return aa+bb+cc+dd;
|
||||
}
|
||||
lib.init.init();
|
||||
window.onkeydown=function(e){
|
||||
if(e.keyCode==32){
|
||||
var node=ui.window.querySelector('#paused');
|
||||
|
|
|
@ -54,6 +54,9 @@
|
|||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px;
|
||||
border-radius:8px;
|
||||
}
|
||||
#arena>.dialog.slim:not(.center){
|
||||
top:40px;
|
||||
}
|
||||
#control{
|
||||
top:calc(100% - 155px);
|
||||
}
|
||||
|
@ -101,3 +104,16 @@
|
|||
.playergrid.temp{
|
||||
opacity:0.3;
|
||||
}
|
||||
.chessscroll{
|
||||
height:calc(100% - 162px);
|
||||
width:20px;
|
||||
top:42px;
|
||||
z-index:1;
|
||||
position:fixed;
|
||||
}
|
||||
.chessscroll.left{
|
||||
left:0;
|
||||
}
|
||||
.chessscroll.right{
|
||||
right:0;
|
||||
}
|
||||
|
|
|
@ -79,6 +79,7 @@ mode.chess={
|
|||
},
|
||||
chessFocus:function(){
|
||||
if(ui.chess._chessdrag) return;
|
||||
if(_status.chessscrolling) return;
|
||||
var player=this;
|
||||
var dx=0,dy=0;
|
||||
|
||||
|
@ -639,6 +640,30 @@ mode.chess={
|
|||
delete _status.currentChessFocus;
|
||||
}
|
||||
});
|
||||
ui.chessscroll1=ui.create.div('.chessscroll.left',ui.chessContainer);
|
||||
ui.chessscroll2=ui.create.div('.chessscroll.right',ui.chessContainer);
|
||||
var chessscroll=function(){
|
||||
var direction=this.direction;
|
||||
var speed=get.config('chessscroll_speed');
|
||||
if(!speed) return;
|
||||
var interval=setInterval(function(){
|
||||
ui.chessContainer.scrollLeft+=speed*direction;
|
||||
},16);
|
||||
_status.chessscrolling=interval;
|
||||
};
|
||||
var leavescroll=function(){
|
||||
if(_status.chessscrolling){
|
||||
clearInterval(_status.chessscrolling);
|
||||
delete _status.chessscrolling;
|
||||
}
|
||||
};
|
||||
ui.chessscroll1.direction=-1;
|
||||
ui.chessscroll1.addEventListener('mouseenter',chessscroll);
|
||||
ui.chessscroll1.addEventListener('mouseleave',leavescroll);
|
||||
|
||||
ui.chessscroll2.direction=1;
|
||||
ui.chessscroll2.addEventListener('mouseenter',chessscroll);
|
||||
ui.chessscroll2.addEventListener('mouseleave',leavescroll);
|
||||
|
||||
for(var i=0;i<ui.chesswidth;i++){
|
||||
for(var j=0;j<ui.chessheight;j++){
|
||||
|
@ -1013,6 +1038,7 @@ mode.chess={
|
|||
trueColor:"zhu",
|
||||
falseColor:"wei",
|
||||
_chessmove:'移动',
|
||||
chessscroll_speed_config:'边缘滚动速度'
|
||||
},
|
||||
ui:{
|
||||
create:{
|
||||
|
@ -1059,5 +1085,13 @@ mode.chess={
|
|||
'任何卡牌或技能无法指定位置相隔8个格以上的角色为目标<li>'+
|
||||
'杀死对方阵营的角色可摸一张牌,杀死本方阵营无惩罚'
|
||||
},
|
||||
config:['battle_number','ban_weak','free_choose','change_choice'],
|
||||
config:['battle_number','ban_weak','free_choose','change_choice',
|
||||
function(lib,get,ui){
|
||||
var current=get.config('chessscroll_speed');
|
||||
if(typeof current!=='number'){
|
||||
game.saveConfig('chessscroll_speed',20,true);
|
||||
current=20;
|
||||
}
|
||||
return ui.create.switcher('chessscroll_speed',[0,10,20,30],10,ui.click.sidebar.local);
|
||||
}],
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue