1.3.1
|
@ -1,2 +1,4 @@
|
||||||
1.3.1
|
1.3.1
|
||||||
战棋模式改进
|
战棋模式改进
|
||||||
|
单人控制改进
|
||||||
|
新武将
|
||||||
|
|
|
@ -445,16 +445,23 @@ card.hearth={
|
||||||
shenenshu:{
|
shenenshu:{
|
||||||
fullskin:true,
|
fullskin:true,
|
||||||
enable:true,
|
enable:true,
|
||||||
usable:1,
|
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target!=player;
|
return target!=player;
|
||||||
},
|
},
|
||||||
type:'trick',
|
type:'trick',
|
||||||
content:function(){
|
content:function(){
|
||||||
var num=player.num('h')-target.num('h');
|
var num=player.num('h')-target.num('h');
|
||||||
if(num<1) num=1;
|
if(num<-3) num=-3;
|
||||||
if(num>3) num=3;
|
if(num>3) num=3;
|
||||||
target.draw(num);
|
if(num>0){
|
||||||
|
target.draw(num);
|
||||||
|
}
|
||||||
|
else if(num<0){
|
||||||
|
player.draw(-num);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
game.asyncDraw([target,player]);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
ai:{
|
ai:{
|
||||||
order:10,
|
order:10,
|
||||||
|
@ -466,7 +473,18 @@ card.hearth={
|
||||||
if(!player.skills.contains('jizhi')){
|
if(!player.skills.contains('jizhi')){
|
||||||
nh--;
|
nh--;
|
||||||
}
|
}
|
||||||
return Math.max(1,nh);
|
if(nh>0) return nh;
|
||||||
|
if(nh==0) return 1;
|
||||||
|
return 0;
|
||||||
|
},
|
||||||
|
player:function(player,target){
|
||||||
|
var nh=target.num('h')-player.num('h');
|
||||||
|
if(!player.skills.contains('jizhi')){
|
||||||
|
nh++;
|
||||||
|
}
|
||||||
|
if(nh>0) return nh;
|
||||||
|
if(nh==0) return 1;
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
expose:0.2
|
expose:0.2
|
||||||
|
@ -589,7 +607,7 @@ card.hearth={
|
||||||
linghunzhihuo:'灵魂之火',
|
linghunzhihuo:'灵魂之火',
|
||||||
linghunzhihuo_info:'对一名角色造成一点火焰伤害,然后随机弃置一张手牌',
|
linghunzhihuo_info:'对一名角色造成一点火焰伤害,然后随机弃置一张手牌',
|
||||||
shenenshu:'神恩术',
|
shenenshu:'神恩术',
|
||||||
shenenshu_info:'对一名其他角色使用,令其摸X张牌,直到手牌数与你相等(X不小于1且不大于3)',
|
shenenshu_info:'对一名其他角色使用,令你与目标中手牌数较少的摸若干张牌,直到手牌数相等(X不大于3),若手牌数已相等,改为你与目标各摸一张牌',
|
||||||
zhiliaobo:'治疗波',
|
zhiliaobo:'治疗波',
|
||||||
zhiliaobo_info:'对一名受伤角色使用,令其回复一点体力,若其仍处于受伤状态,则进行一次判定,若结果为红色则再回复一点体力',
|
zhiliaobo_info:'对一名受伤角色使用,令其回复一点体力,若其仍处于受伤状态,则进行一次判定,若结果为红色则再回复一点体力',
|
||||||
yuansuhuimie:'元素毁灭',
|
yuansuhuimie:'元素毁灭',
|
||||||
|
|
|
@ -174,7 +174,7 @@ character.hearth={
|
||||||
trigger:{global:'dieAfter'},
|
trigger:{global:'dieAfter'},
|
||||||
forced:true,
|
forced:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
return !event.player.storage.bingshi;
|
return !event.player.storage.bingshi&&event.player.skills.contains('bingshi');
|
||||||
},
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
'step 0'
|
'step 0'
|
||||||
|
@ -385,7 +385,11 @@ character.hearth={
|
||||||
},
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
var card=cards[0];
|
var card=cards[0];
|
||||||
player.gain(game.createCard('liuxinghuoyu',get.suit(card),get.number(card)),'gain2');
|
var card2=get.cardPile('liuxinghuoyu');
|
||||||
|
if(!card2){
|
||||||
|
card2=game.createCard('liuxinghuoyu',get.suit(card),get.number(card));
|
||||||
|
}
|
||||||
|
player.gain(card2,'gain2');
|
||||||
},
|
},
|
||||||
ai:{
|
ai:{
|
||||||
order:9,
|
order:9,
|
||||||
|
@ -1467,6 +1471,9 @@ character.hearth={
|
||||||
player.addSkill('tuteng1');
|
player.addSkill('tuteng1');
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
if(rand.length>1){
|
||||||
|
rand.remove('tuteng1');
|
||||||
|
}
|
||||||
player.addSkill(rand.randomGet());
|
player.addSkill(rand.randomGet());
|
||||||
}
|
}
|
||||||
if(rand2.length>=3){
|
if(rand2.length>=3){
|
||||||
|
|
|
@ -1105,6 +1105,9 @@ character.refresh={
|
||||||
}
|
}
|
||||||
return target.num('he')>0;
|
return target.num('he')>0;
|
||||||
},
|
},
|
||||||
|
filter:function(event,player){
|
||||||
|
return player.num('he')>0;
|
||||||
|
},
|
||||||
filterCard:true,
|
filterCard:true,
|
||||||
position:'he',
|
position:'he',
|
||||||
selectTarget:[1,Infinity],
|
selectTarget:[1,Infinity],
|
||||||
|
|
|
@ -1729,7 +1729,7 @@ character.sp={
|
||||||
effect:{
|
effect:{
|
||||||
target:function(card,player,target){
|
target:function(card,player,target){
|
||||||
if(get.tag(card,'damage')){
|
if(get.tag(card,'damage')){
|
||||||
if(target.hp==target.maxHp) return [0,1];
|
if(target.hp==target.maxHp&&target.hasFriend()) return [0,1];
|
||||||
}
|
}
|
||||||
if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0];
|
if(get.tag(card,'recover')&&player.hp>=player.maxHp-1) return [0,0];
|
||||||
}
|
}
|
||||||
|
|
|
@ -4370,7 +4370,7 @@ character.swd={
|
||||||
frequent:true,
|
frequent:true,
|
||||||
content:function(){
|
content:function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
event.cards=get.cards(Math.max(3,get.cardCount(true,player)+1));
|
event.cards=get.cards(3);
|
||||||
player.showCards(event.cards);
|
player.showCards(event.cards);
|
||||||
"step 1"
|
"step 1"
|
||||||
for(var i=0;i<cards.length;i++){
|
for(var i=0;i<cards.length;i++){
|
||||||
|
@ -7719,7 +7719,7 @@ character.swd={
|
||||||
miejing:'灭境',
|
miejing:'灭境',
|
||||||
miejing_info:'限制技,你可以弃置所有黑色牌,然后令所有其他角色受到一点雷电伤害',
|
miejing_info:'限制技,你可以弃置所有黑色牌,然后令所有其他角色受到一点雷电伤害',
|
||||||
lingxin:'灵心',
|
lingxin:'灵心',
|
||||||
lingxin_info:'回合结束阶段,你可以亮出牌堆顶的X+1张牌,然后获得其中的红桃牌,X为你回合内使用的牌数且至少为2',
|
lingxin_info:'回合结束阶段,你可以亮出牌堆顶的三张牌,然后获得其中的红桃牌',
|
||||||
fushen:'附身',
|
fushen:'附身',
|
||||||
fushen_info:'回合开始前,你可以将自己移出游戏,并代替另一名角色进行一回合,然后流失一点体力',
|
fushen_info:'回合开始前,你可以将自己移出游戏,并代替另一名角色进行一回合,然后流失一点体力',
|
||||||
fushen2:'附身',
|
fushen2:'附身',
|
||||||
|
|
|
@ -0,0 +1,129 @@
|
||||||
|
character.xiake={
|
||||||
|
character:{
|
||||||
|
// xk_dongfangweiming:['male','shu',4,[],['fullskin']],
|
||||||
|
xk_guyuexuan:['male','qun',3,['rouquan','gzhenji'],['fullskin']],
|
||||||
|
// xk_jinji:['male','shu',4,[],['fullskin']],
|
||||||
|
// xk_shenxiangyun:['female','wei',3,[],['fullskin']],
|
||||||
|
xk_fujianhan:['male','qun',4,['zuijian','zitong'],['fullskin']],
|
||||||
|
},
|
||||||
|
skill:{
|
||||||
|
rouquan:{
|
||||||
|
mod:{
|
||||||
|
selectTarget:function(card,player,range){
|
||||||
|
if(card.name=='sha'&&!player.get('e','1')&&range[1]!=-1) range[1]=Infinity;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
enable:'phaseUse',
|
||||||
|
position:'e',
|
||||||
|
filter:function(event,player){
|
||||||
|
return player.num('e')>0;
|
||||||
|
},
|
||||||
|
filterCard:true,
|
||||||
|
prompt:'弃置要重铸的牌并摸一张牌',
|
||||||
|
discard:false,
|
||||||
|
delay:0.5,
|
||||||
|
check:function(card,player){
|
||||||
|
var val=ai.get.equipValue(card);
|
||||||
|
var player=_status.event.player;
|
||||||
|
var cards=player.get('h',{subtype:get.subtype(card)});
|
||||||
|
for(var i=0;i<cards.length;i++){
|
||||||
|
if(ai.get.equipValue(cards[i])>=val){
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
},
|
||||||
|
prepare:function(cards,player){
|
||||||
|
player.$throw(cards,1000);
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
"step 0"
|
||||||
|
player.draw();
|
||||||
|
"step 1"
|
||||||
|
for(var i=0;i<cards.length;i++){
|
||||||
|
ui.discardPile.appendChild(cards[i]);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
order:9.5,
|
||||||
|
result:{
|
||||||
|
player:1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
gzhenji:{
|
||||||
|
trigger:{source:'damageEnd'},
|
||||||
|
frequent:true,
|
||||||
|
filter:function(event,player){
|
||||||
|
return _status.currentPhase==player&&event.card&&event.card.name=='sha';
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
player.draw();
|
||||||
|
player.addTempSkill('gzhenji3','phaseAfter');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
gzhenji3:{
|
||||||
|
mod:{
|
||||||
|
cardUsable:function(card,player,num){
|
||||||
|
if(card.name=='sha') return num+1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
},
|
||||||
|
zuijian:{
|
||||||
|
enable:'phaseUse',
|
||||||
|
filterCard:true,
|
||||||
|
position:'he',
|
||||||
|
viewAs:{name:'jiu'},
|
||||||
|
viewAsFilter:function(player){
|
||||||
|
if(!player.num('he')) return false;
|
||||||
|
},
|
||||||
|
prompt:'将一张手牌或装备牌当酒使用',
|
||||||
|
check:function(card){
|
||||||
|
return 4-ai.get.value(card);
|
||||||
|
},
|
||||||
|
mod:{
|
||||||
|
attackFrom:function(from,to,distance){
|
||||||
|
if(from.skills.contains('jiu')) return distance-1;
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
skillTagFilter:function(player){
|
||||||
|
return player.num('he')>0;
|
||||||
|
},
|
||||||
|
threaten:1.2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
zitong:{
|
||||||
|
trigger:{player:'useCard'},
|
||||||
|
frequent:true,
|
||||||
|
filter:function(event,player){
|
||||||
|
return _status.currentPhase==player&&get.cardCount(true,player)==2;
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
var card=get.cardPile('chuansongmen');
|
||||||
|
if(!card){
|
||||||
|
card=game.createCard('chuansongmen');
|
||||||
|
}
|
||||||
|
player.gain(card,'gain2');
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
threaten:1.2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
translate:{
|
||||||
|
xk_dongfangweiming:'东方未明',
|
||||||
|
xk_guyuexuan:'谷月轩',
|
||||||
|
xk_jinji:'荆棘',
|
||||||
|
xk_shenxiangyun:'沈湘芸',
|
||||||
|
xk_fujianhan:'傅剑寒',
|
||||||
|
gzhenji:'震击',
|
||||||
|
gzhenji_info:'你使用杀造成伤害后,可以摸一张牌,并且本回合内可以额外使用一张杀',
|
||||||
|
rouquan:'柔拳',
|
||||||
|
rouquan_info:'你可以重铸装备区内的牌;当你没有武器牌时,你的杀可以指定任意个目标',
|
||||||
|
zuijian:'醉剑',
|
||||||
|
zuijian_info:'出牌阶段,你可以将一张手牌或装备牌当酒使用;当你使用酒后,你的攻击范围+1',
|
||||||
|
zitong:'自通',
|
||||||
|
zitong_info:'当你于自己的回合内使用第二张牌时,你可以将一张传送门置于你的手牌',
|
||||||
|
},
|
||||||
|
}
|
|
@ -6056,7 +6056,7 @@
|
||||||
if(range[0]!=range[1]||range[0]>1) auto=false;
|
if(range[0]!=range[1]||range[0]>1) auto=false;
|
||||||
for(i=0;i<game.players.length;i++){
|
for(i=0;i<game.players.length;i++){
|
||||||
var nochess=true;
|
var nochess=true;
|
||||||
if(lib.config.mode=='chess'){
|
if(lib.config.mode=='chess'&&!event.chessForceAll){
|
||||||
if(player&&get.distance(player,game.players[i],'pure')>7){
|
if(player&&get.distance(player,game.players[i],'pure')>7){
|
||||||
nochess=false;
|
nochess=false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,8 @@ character.pack={
|
||||||
swd:'轩辕剑',
|
swd:'轩辕剑',
|
||||||
xswd:'轩辕剑·二',
|
xswd:'轩辕剑·二',
|
||||||
gujian:'古剑奇谭',
|
gujian:'古剑奇谭',
|
||||||
xianjian:'仙剑',
|
xianjian:'仙剑奇侠传',
|
||||||
|
xiake:'侠客风云传',
|
||||||
};
|
};
|
||||||
card.pack={
|
card.pack={
|
||||||
standard:'标准',
|
standard:'标准',
|
||||||
|
|
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 40 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 38 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 515 KiB |
After Width: | Height: | Size: 54 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 65 KiB |
After Width: | Height: | Size: 479 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 494 KiB |
After Width: | Height: | Size: 60 KiB |
After Width: | Height: | Size: 54 KiB |
|
@ -30,6 +30,8 @@ table{table-layout: fixed;}
|
||||||
#handcards1,#handcards2{white-space:nowrap;overflow-x: scroll;overflow-y:hidden;display: block;text-align: center;}
|
#handcards1,#handcards2{white-space:nowrap;overflow-x: scroll;overflow-y:hidden;display: block;text-align: center;}
|
||||||
#handcards1{left: 0;top:calc(100% - 140px);}
|
#handcards1{left: 0;top:calc(100% - 140px);}
|
||||||
#handcards2{left: calc(50% + 120px);top:calc(100% - 140px);}
|
#handcards2{left: calc(50% + 120px);top:calc(100% - 140px);}
|
||||||
|
#arena.single-handcard #handcards1{width: 100%;}
|
||||||
|
#arena.single-handcard #handcards2{display: none;}
|
||||||
#system{padding: 6px;width: calc(100% - 12px);white-space: nowrap;z-index: 3;}
|
#system{padding: 6px;width: calc(100% - 12px);white-space: nowrap;z-index: 3;}
|
||||||
#system>div{height: 100%;position: relative;margin: 0;padding: 0;}
|
#system>div{height: 100%;position: relative;margin: 0;padding: 0;}
|
||||||
#system>div:last-child{text-align: right;float:right}
|
#system>div:last-child{text-align: right;float:right}
|
||||||
|
@ -203,6 +205,16 @@ margin-bottom: 5px;
|
||||||
.control{font-size: 18px;white-space: nowrap;position: relative;overflow: hidden;width: 0;opacity:0}
|
.control{font-size: 18px;white-space: nowrap;position: relative;overflow: hidden;width: 0;opacity:0}
|
||||||
.control>div{position: relative;padding: 3px;}
|
.control>div{position: relative;padding: 3px;}
|
||||||
/*--------角色--------*/
|
/*--------角色--------*/
|
||||||
|
.player>.avatar>.action{
|
||||||
|
margin: 5px;
|
||||||
|
font-family: 'huangcao';
|
||||||
|
font-size: 20px;
|
||||||
|
letter-spacing: -2px;
|
||||||
|
text-shadow: black 0 0 1px, rgba(10, 155, 67, 1) 0 0 5px, rgba(10, 155, 67, 1) 0 0 10px;
|
||||||
|
}
|
||||||
|
.player>.avatar:not(.glow2)>.action{opacity: 0}
|
||||||
|
.player.fakeme{width:100px;height:120px;top:calc(100% - 140px)}
|
||||||
|
.player.fakeme>.avatar{width: 100%;height: 100%;box-shadow: none;left: 0;top: 0}
|
||||||
.player{z-index: 4;width: 240px;height: 120px;}
|
.player{z-index: 4;width: 240px;height: 120px;}
|
||||||
.player.minskin{width:120px;}
|
.player.minskin{width:120px;}
|
||||||
.player.replaceme{-webkit-animation:replaceme 0.5s}
|
.player.replaceme{-webkit-animation:replaceme 0.5s}
|
||||||
|
@ -734,6 +746,7 @@ div[data-nature='soil']{
|
||||||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(0, 133, 255, 0.8) 0 0 15px !important;
|
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(0, 133, 255, 0.8) 0 0 15px !important;
|
||||||
}
|
}
|
||||||
.glow2{
|
.glow2{
|
||||||
|
/*-webkit-animation:control_glow 4s infinite;*/
|
||||||
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(10, 155, 67, 1) 0 0 15px, rgba(10, 155, 67, 1) 0 0 15px !important;
|
box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(10, 155, 67, 1) 0 0 15px, rgba(10, 155, 67, 1) 0 0 15px !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -757,6 +770,14 @@ div[data-nature='soil']{
|
||||||
}
|
}
|
||||||
|
|
||||||
/*--------动画--------*/
|
/*--------动画--------*/
|
||||||
|
@-webkit-keyframes control_glow{
|
||||||
|
0%{box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px}
|
||||||
|
30%{box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(10, 155, 67, 1) 0 0 15px, rgba(10, 155, 67, 1) 0 0 15px}
|
||||||
|
70%{box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(10, 155, 67, 1) 0 0 15px, rgba(10, 155, 67, 1) 0 0 15px}
|
||||||
|
100%{box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px}
|
||||||
|
/*from{box-shadow: rgba(0, 0, 0, 0.3) 0 0 0 1px, rgba(10, 155, 67, 1) 0 0 15px, rgba(10, 155, 67, 1) 0 0 15px !important;}
|
||||||
|
to{box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px !important}*/
|
||||||
|
}
|
||||||
@-webkit-keyframes cardflip{
|
@-webkit-keyframes cardflip{
|
||||||
from {-webkit-transform:perspective(600px) rotateY(-90deg) translateX(52px)}
|
from {-webkit-transform:perspective(600px) rotateY(-90deg) translateX(52px)}
|
||||||
to{-webkit-transform:perspective(600px) rotateY(0deg) translateX(0)}
|
to{-webkit-transform:perspective(600px) rotateY(0deg) translateX(0)}
|
||||||
|
|
15
mode/boss.js
|
@ -175,7 +175,9 @@ mode.boss={
|
||||||
}
|
}
|
||||||
ui.create.me();
|
ui.create.me();
|
||||||
if(game.me!==boss){
|
if(game.me!==boss){
|
||||||
ui.fakeme=ui.create.div('.player',ui.arena);
|
game.singleHandcard=true;
|
||||||
|
ui.arena.classList.add('single-handcard');
|
||||||
|
ui.fakeme=ui.create.div('.player');
|
||||||
ui.fakeme.dataset.position=0;
|
ui.fakeme.dataset.position=0;
|
||||||
ui.fakeme.line=lib.element.player.line;
|
ui.fakeme.line=lib.element.player.line;
|
||||||
ui.fakemebg=ui.create.div('.avatar',ui.fakeme).hide();
|
ui.fakemebg=ui.create.div('.avatar',ui.fakeme).hide();
|
||||||
|
@ -247,9 +249,15 @@ mode.boss={
|
||||||
event.bosslist.delete();
|
event.bosslist.delete();
|
||||||
|
|
||||||
game.arrangePlayers();
|
game.arrangePlayers();
|
||||||
|
for(var i=0;i<game.players.length;i++){
|
||||||
|
ui.create.div('.action',game.players[i].node.avatar).innerHTML='行动';
|
||||||
|
}
|
||||||
"step 3"
|
"step 3"
|
||||||
game.gameDraw(game.boss);
|
game.gameDraw(game.boss);
|
||||||
game.bossPhaseLoop();
|
game.bossPhaseLoop();
|
||||||
|
setTimeout(function(){
|
||||||
|
ui.updateh(true);
|
||||||
|
},200);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
bossPhaseLoop:function(){
|
bossPhaseLoop:function(){
|
||||||
|
@ -323,11 +331,12 @@ mode.boss={
|
||||||
}
|
}
|
||||||
ui.versushighlight=game.me;
|
ui.versushighlight=game.me;
|
||||||
game.me.node.avatar.classList.add('glow2');
|
game.me.node.avatar.classList.add('glow2');
|
||||||
game.me.line(ui.fakeme,{opacity:0.5,dashed:true});
|
// game.me.line(ui.fakeme,{opacity:0.5,dashed:true});
|
||||||
|
|
||||||
ui.fakemebg.style.backgroundImage=game.me.node.avatar.style.backgroundImage;
|
ui.fakemebg.style.backgroundImage=game.me.node.avatar.style.backgroundImage;
|
||||||
ui.fakemebg.style.backgroundSize='cover';
|
ui.fakemebg.style.backgroundSize='cover';
|
||||||
}
|
}
|
||||||
|
ui.updateh(true);
|
||||||
},
|
},
|
||||||
modeSwapPlayer:function(player){
|
modeSwapPlayer:function(player){
|
||||||
game.swapControl(player);
|
game.swapControl(player);
|
||||||
|
@ -485,7 +494,7 @@ mode.boss={
|
||||||
},
|
},
|
||||||
boss:{
|
boss:{
|
||||||
boss_zhangjiao:{
|
boss_zhangjiao:{
|
||||||
loopType:2,
|
// loopType:2,
|
||||||
},
|
},
|
||||||
boss_caiwenji:{
|
boss_caiwenji:{
|
||||||
loopType:2,
|
loopType:2,
|
||||||
|
|
147
mode/chess.js
|
@ -369,7 +369,6 @@ mode.chess={
|
||||||
"step 0"
|
"step 0"
|
||||||
if(!player.movable(0,1)&&!player.movable(0,-1)&&
|
if(!player.movable(0,1)&&!player.movable(0,-1)&&
|
||||||
!player.movable(1,0)&&!player.movable(-1,0)){
|
!player.movable(1,0)&&!player.movable(-1,0)){
|
||||||
event.finish();
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
event.switchToAuto=function(){
|
event.switchToAuto=function(){
|
||||||
|
@ -523,6 +522,117 @@ mode.chess={
|
||||||
game:{
|
game:{
|
||||||
minskin:true,
|
minskin:true,
|
||||||
singleHandcard:true,
|
singleHandcard:true,
|
||||||
|
phaseLoopOrdered:function(player){
|
||||||
|
var next=game.createEvent('phaseLoop');
|
||||||
|
next.player=player;
|
||||||
|
next.content=function(){
|
||||||
|
"step 0"
|
||||||
|
var passed=false;
|
||||||
|
for(var i=0;i<game.players.length;i++){
|
||||||
|
if(!game.players[i].classList.contains('acted')){
|
||||||
|
if(game.players[i].side==player.side){
|
||||||
|
passed=true;break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!passed){
|
||||||
|
var num1=0;
|
||||||
|
var next=null;
|
||||||
|
for(var i=0;i<game.players.length;i++){
|
||||||
|
if(game.players[i].side==player.side){
|
||||||
|
game.players[i].classList.remove('acted');
|
||||||
|
num1++;
|
||||||
|
}
|
||||||
|
else if(!next){
|
||||||
|
next=game.players[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var num2=game.players.length-num1;
|
||||||
|
if(num2>num1){
|
||||||
|
if(next.side==game.me.side){
|
||||||
|
next=game.me;
|
||||||
|
}
|
||||||
|
var str;
|
||||||
|
if(num2-num1>1){
|
||||||
|
str='选择至多'+get.cnNumber(num2-num1)+'个已方角色各摸一张牌'
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
str='选择一个已方角色摸一张牌'
|
||||||
|
}
|
||||||
|
var nevt=next.chooseTarget(str,function(card,player,target){
|
||||||
|
return target.side==next.side;
|
||||||
|
},[1,num2-num1]);
|
||||||
|
nevt.ai=function(target){
|
||||||
|
return Math.max(1,10-target.num('h'));
|
||||||
|
};
|
||||||
|
nevt.chessForceAll=true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
event.goto(2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
event.goto(2);
|
||||||
|
}
|
||||||
|
"step 1"
|
||||||
|
if(result.bool){
|
||||||
|
game.asyncDraw(result.targets);
|
||||||
|
}
|
||||||
|
"step 2"
|
||||||
|
var players=[];
|
||||||
|
var next=null;
|
||||||
|
if(player.side==game.me.side){
|
||||||
|
player=game.me;
|
||||||
|
}
|
||||||
|
for(var i=0;i<game.players.length;i++){
|
||||||
|
if(game.players[i].side==player.side){
|
||||||
|
if(!game.players[i].classList.contains('acted')){
|
||||||
|
players.push(game.players[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(!next){
|
||||||
|
next=game.players[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(players.length>1){
|
||||||
|
var nevt=player.chooseTarget('选择下一个行动的角色',function(card,player,target){
|
||||||
|
return target.side==player.side&&!target.classList.contains('acted');
|
||||||
|
},true);
|
||||||
|
nevt.chessForceAll=true;
|
||||||
|
nevt.ai=function(target){
|
||||||
|
var nj=target.num('j');
|
||||||
|
if(nj){
|
||||||
|
return -nj;
|
||||||
|
}
|
||||||
|
return Math.max(0,10-target.hp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
event.decided=players[0];
|
||||||
|
event.player=next;
|
||||||
|
}
|
||||||
|
"step 3"
|
||||||
|
if(event.decided){
|
||||||
|
event.decided.phase();
|
||||||
|
event.justacted=event.decided;
|
||||||
|
delete event.decided;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var current=result.targets[0];
|
||||||
|
current.phase();
|
||||||
|
event.justacted=current;
|
||||||
|
for(var i=0;i<game.players.length;i++){
|
||||||
|
if(game.players[i].side!=player.side){
|
||||||
|
event.player=game.players[i];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"step 4"
|
||||||
|
event.justacted.classList.add('acted');
|
||||||
|
event.goto(0);
|
||||||
|
}
|
||||||
|
},
|
||||||
isChessNeighbour:function(a,b){
|
isChessNeighbour:function(a,b){
|
||||||
if(a&&a.dataset){
|
if(a&&a.dataset){
|
||||||
a=a.dataset.position;
|
a=a.dataset.position;
|
||||||
|
@ -799,7 +909,12 @@ mode.chess={
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
game.gameDraw(p);
|
game.gameDraw(p);
|
||||||
game.phaseLoop(p);
|
if(get.config('chess_ordered')){
|
||||||
|
game.phaseLoopOrdered(p);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
game.phaseLoop(p);
|
||||||
|
}
|
||||||
game.setChessInfo(p);
|
game.setChessInfo(p);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -1414,6 +1529,10 @@ mode.chess={
|
||||||
delay:false,
|
delay:false,
|
||||||
preservecancel:true,
|
preservecancel:true,
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
|
if(!player.movable(0,1)&&!player.movable(0,-1)&&
|
||||||
|
!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;
|
||||||
move=game.checkMod(player,move,'chessMove',player.get('s'));
|
move=game.checkMod(player,move,'chessMove',player.get('s'));
|
||||||
return move>0;
|
return move>0;
|
||||||
|
@ -1425,7 +1544,14 @@ mode.chess={
|
||||||
player.chooseToMove(move).phasing=true;
|
player.chooseToMove(move).phasing=true;
|
||||||
"step 1"
|
"step 1"
|
||||||
if(!result.bool){
|
if(!result.bool){
|
||||||
player.getStat().skill._chessmove--;
|
var skill=player.getStat().skill;
|
||||||
|
skill._chessmove--;
|
||||||
|
if(typeof skill._chessmovetried=='number'){
|
||||||
|
skill._chessmovetried++;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
skill._chessmovetried=1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
ai:{
|
ai:{
|
||||||
|
@ -1464,6 +1590,9 @@ mode.chess={
|
||||||
return 1;
|
return 1;
|
||||||
},
|
},
|
||||||
player:function(player){
|
player:function(player){
|
||||||
|
if(player.getStat().skill._chessmovetried>=10){
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
var x=lib.skill._chessmove.ai.result.playerx(player);
|
var x=lib.skill._chessmove.ai.result.playerx(player);
|
||||||
if(player.isMad()) return -x;
|
if(player.isMad()) return -x;
|
||||||
return x;
|
return x;
|
||||||
|
@ -1629,6 +1758,7 @@ mode.chess={
|
||||||
chessscroll_speed_config:'边缘滚动速度',
|
chessscroll_speed_config:'边缘滚动速度',
|
||||||
chess_character_config:'战棋武将',
|
chess_character_config:'战棋武将',
|
||||||
only_chess_character_config:'只用战棋武将',
|
only_chess_character_config:'只用战棋武将',
|
||||||
|
chess_ordered_config:'指定行动顺序',
|
||||||
|
|
||||||
chess_caocao:'曹操',
|
chess_caocao:'曹操',
|
||||||
chess_xunyu:'荀彧',
|
chess_xunyu:'荀彧',
|
||||||
|
@ -1797,9 +1927,18 @@ mode.chess={
|
||||||
'战棋模式':'<ul><li>n人对战n人的模式,由单人控制,开始游戏后随机分配位置与出牌顺序<li>'+
|
'战棋模式':'<ul><li>n人对战n人的模式,由单人控制,开始游戏后随机分配位置与出牌顺序<li>'+
|
||||||
'每人在出牌阶段有一次移动的机会,若一名角色在移动之前使用过指定其他角色为目标的牌,该回合可移动的最大距离为2,否则最大距离为1<li>'+
|
'每人在出牌阶段有一次移动的机会,若一名角色在移动之前使用过指定其他角色为目标的牌,该回合可移动的最大距离为2,否则最大距离为1<li>'+
|
||||||
'任何卡牌或技能无法指定位置相隔8个格以上的角色为目标<li>'+
|
'任何卡牌或技能无法指定位置相隔8个格以上的角色为目标<li>'+
|
||||||
'杀死对方阵营的角色可摸一张牌,杀死本方阵营无惩罚'
|
'杀死对方阵营的角色可摸一张牌,杀死本方阵营无惩罚<li>'+
|
||||||
|
'开启指定行动顺序后,双方将交替行动,在一方行动完毕进行下一轮行动时,若其人数比另一方少,另一方可指定至多X名角色名摸一张牌,X为人数之差'
|
||||||
},
|
},
|
||||||
config:['battle_number','ban_weak','free_choose','change_choice',
|
config:['battle_number','ban_weak','free_choose','change_choice',
|
||||||
|
function(game,lib,get,ui){
|
||||||
|
var current=get.config('chess_ordered');
|
||||||
|
if(typeof current!=='boolean'){
|
||||||
|
game.saveConfig('chess_ordered',true,true);
|
||||||
|
current=true;
|
||||||
|
}
|
||||||
|
return ui.create.switcher('chess_ordered',current,ui.click.sidebar.local2);
|
||||||
|
},
|
||||||
function(game,lib,get,ui){
|
function(game,lib,get,ui){
|
||||||
var current=get.config('chess_character');
|
var current=get.config('chess_character');
|
||||||
if(typeof current!=='boolean'){
|
if(typeof current!=='boolean'){
|
||||||
|
|
|
@ -324,13 +324,17 @@ mode.versus={
|
||||||
delete _status.list;
|
delete _status.list;
|
||||||
var num=lib.storage.number;
|
var num=lib.storage.number;
|
||||||
ui.create.players(num*2);
|
ui.create.players(num*2);
|
||||||
|
for(var i=0;i<game.players.length;i++){
|
||||||
|
ui.create.div('.action',game.players[i].node.avatar).innerHTML='行动';
|
||||||
|
}
|
||||||
if(lib.storage.single_control&&lib.storage.control_all&&game.players.length>=4){
|
if(lib.storage.single_control&&lib.storage.control_all&&game.players.length>=4){
|
||||||
ui.arena.dataset.number=parseInt(ui.arena.dataset.number)+1;
|
ui.arena.dataset.number=parseInt(ui.arena.dataset.number)+1;
|
||||||
for(var i=0;i<game.players.length;i++){
|
for(var i=0;i<game.players.length;i++){
|
||||||
game.players[i].dataset.position=parseInt(game.players[i].dataset.position)+1;
|
game.players[i].dataset.position=parseInt(game.players[i].dataset.position)+1;
|
||||||
}
|
}
|
||||||
ui.fakeme=ui.create.div('.player',ui.arena);
|
game.singleHandcard=true;
|
||||||
ui.fakeme.dataset.position=0;
|
ui.arena.classList.add('single-handcard');
|
||||||
|
ui.fakeme=ui.create.div('.player.fakeme');
|
||||||
ui.fakeme.line=lib.element.player.line;
|
ui.fakeme.line=lib.element.player.line;
|
||||||
ui.fakemebg=ui.create.div('.avatar',ui.fakeme).hide();
|
ui.fakemebg=ui.create.div('.avatar',ui.fakeme).hide();
|
||||||
}
|
}
|
||||||
|
@ -820,7 +824,7 @@ mode.versus={
|
||||||
}
|
}
|
||||||
ui.versushighlight=game.me;
|
ui.versushighlight=game.me;
|
||||||
game.me.node.avatar.classList.add('glow2');
|
game.me.node.avatar.classList.add('glow2');
|
||||||
game.me.line(ui.fakeme,{opacity:0.5,dashed:true});
|
// game.me.line(ui.fakeme,{opacity:0.5,dashed:true});
|
||||||
|
|
||||||
var info=lib.character[name];
|
var info=lib.character[name];
|
||||||
if(lib.config.layout=='newlayout'&&info[4]&&info[4].contains('fullskin')){
|
if(lib.config.layout=='newlayout'&&info[4]&&info[4].contains('fullskin')){
|
||||||
|
|