This commit is contained in:
libccy 2015-05-05 17:23:31 +08:00
parent cfe9d1b05d
commit 482d6c8b58
16 changed files with 302 additions and 153 deletions

View File

@ -106,10 +106,15 @@ card.extra={
result:{ result:{
player:function(player){ player:function(player){
var nh=player.num('h'); var nh=player.num('h');
if(nh<=player.hp&& if(nh<=player.hp&&_status.event.name=='chooseToUse'){
_status.event.name=='chooseToUse'&& if(_status.event.filterCard({name:'huogong'})){
_status.event.filterCard({name:'huogong'})){ return -10;
return -10; }
if(_status.event.skill){
var viewAs=get.info(_status.event.skill).viewAs;
if(viewAs=='huogong') return -10;
if(viewAs&&viewAs.name=='huogong') return -10;
}
} }
return 0; return 0;
}, },

View File

@ -132,7 +132,7 @@ card.refresh={
var dialog=ui.create.dialog('木牛流马',player.get('e','5').cards); var dialog=ui.create.dialog('木牛流马',player.get('e','5').cards);
var trigger=event.parent.parent; var trigger=event.parent.parent;
player.chooseButton(dialog,function(button){ player.chooseButton(dialog,function(button){
if(get.info(button.link).selectTarget==-1){ if(get.select(get.info(button.link).selectTarget)[1]==-1){
if(get.type(button.link)=='delay') return -1; if(get.type(button.link)=='delay') return -1;
if(get.type(button.link)=='equip'){ if(get.type(button.link)=='equip'){
var current=player.get('e',{subtype:get.subtype(button.link)})[0]; var current=player.get('e',{subtype:get.subtype(button.link)})[0];

View File

@ -199,8 +199,8 @@ card.standard={
if(target.num('h')<=target.hp&&target.hp>2) return 0; if(target.num('h')<=target.hp&&target.hp>2) return 0;
if(target.hp<0&&target!=player&&target.identity!='zhu') return 0; if(target.hp<0&&target!=player&&target.identity!='zhu') return 0;
if(ai.get.attitude(player,target)<3) return 0; if(ai.get.attitude(player,target)<3) return 0;
var tri=_status.event.parent._trigger;
if(lib.config.mode=='identity'&&player.identity=='fan'&&target.identity=='fan'){ if(lib.config.mode=='identity'&&player.identity=='fan'&&target.identity=='fan'){
var tri=_status.event.parent._trigger;
if(tri&&tri.name=='dying'&&tri.source&&tri.source.identity=='fan'&&tri.source!=target){ if(tri&&tri.name=='dying'&&tri.source&&tri.source.identity=='fan'&&tri.source!=target){
var num=target.num('h','jiu')?1:0; var num=target.num('h','jiu')?1:0;
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
@ -212,6 +212,11 @@ card.standard={
return 0; return 0;
} }
} }
if(lib.config.mode=='stone'&&target.isMin()&&
player!=target&&tri&&tri.name=='dying'&&player.side==target.side&&
tri.source!=target.getEnemy()){
return 0;
}
return 2; return 2;
}, },
}, },

View File

@ -334,6 +334,7 @@ card.swd={
yufulu:{ yufulu:{
fullskin:true, fullskin:true,
type:'equip', type:'equip',
chongzhu:true,
enable:function(card,player){ enable:function(card,player){
return player.sex=='female'; return player.sex=='female';
}, },

View File

@ -287,8 +287,17 @@ card.yibao={
}, },
result:{ result:{
player:function(player,target){ player:function(player,target){
if(player.num('h')<=Math.max(2,player.hp)&& if(player.num('h')<=Math.max(2,player.hp)&&_status.event.name=='chooseToUse'){
_status.event.name=='chooseToUse'&&_status.event.filterCard({name:'dujian'})) return -10; if(_status.event.filterCard({name:'dujian'})){
return -10;
}
if(_status.event.skill){
var viewAs=get.info(_status.event.skill).viewAs;
if(viewAs=='dujian') return -10;
if(viewAs&&viewAs.name=='dujian') return -10;
}
}
return 0;
}, },
target:-1.5 target:-1.5
}, },

View File

@ -562,6 +562,7 @@ character.extra={
"step 0" "step 0"
player.chooseTarget('选择角色获得大雾标记', player.chooseTarget('选择角色获得大雾标记',
[1,Math.min(game.players.length,player.storage.qixing.length)]).ai=function(target){ [1,Math.min(game.players.length,player.storage.qixing.length)]).ai=function(target){
if(target.isMin()) return 0;
if(target.skills.contains('biantian2')) return 0; if(target.skills.contains('biantian2')) return 0;
var att=ai.get.attitude(player,target); var att=ai.get.attitude(player,target);
if(att>=5){ if(att>=5){

View File

@ -240,6 +240,7 @@ character.refresh={
return false; return false;
}, },
content:function(){ content:function(){
player.storage.qinxue=true;
player.loseMaxHp(); player.loseMaxHp();
player.addSkill('gongxin'); player.addSkill('gongxin');
} }

View File

@ -578,12 +578,14 @@ character.sp={
if(player.storage.zhoufu3.isAlive()){ if(player.storage.zhoufu3.isAlive()){
player.storage.zhoufu3.gain(player.storage.zhoufu2); player.storage.zhoufu3.gain(player.storage.zhoufu2);
player.$give(player.storage.zhoufu2,player.storage.zhoufu3); player.$give(player.storage.zhoufu2,player.storage.zhoufu3);
player.removeSkill('zhoufu2');
delete player.storage.zhoufu2;
delete player.storage.zhoufu3;
game.delay(); game.delay();
} }
else{
ui.discardPile.appendChild(player.storage.zhoufu2);
}
player.removeSkill('zhoufu2');
delete player.storage.zhoufu2;
delete player.storage.zhoufu3;
}, },
}, },
yingbin:{}, yingbin:{},

View File

@ -1052,6 +1052,9 @@ character.yijiang={
} }
return false; return false;
}, },
prompt:function(event){
return '是否对'+get.translation(event.player)+'发动【惴恐】?';
},
filter:function(event,player){ filter:function(event,player){
return player.hp<player.maxHp&&event.player!=player&& return player.hp<player.maxHp&&event.player!=player&&
player.num('h')>0&&event.player.num('h')>0; player.num('h')>0&&event.player.num('h')>0;
@ -2432,6 +2435,7 @@ character.yijiang={
usable:1, usable:1,
selectTarget:2, selectTarget:2,
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
if(target.isMin()) return false;
if(ui.selected.targets.length==0) return true; if(ui.selected.targets.length==0) return true;
if(ui.selected.targets[0].num('e')==0&&target.num('e')==0) return false; if(ui.selected.targets[0].num('e')==0&&target.num('e')==0) return false;
return Math.abs(ui.selected.targets[0].num('e')-target.num('e'))<=player.maxHp-player.hp; return Math.abs(ui.selected.targets[0].num('e')-target.num('e'))<=player.maxHp-player.hp;

View File

@ -939,7 +939,7 @@ character.yxs={
bolehuiyan:'慧眼', bolehuiyan:'慧眼',
bolehuiyan_info:'当一名有手牌的其他角色成为来源不为你的杀的目标时,你可以预言此杀能否命中,若预言正确,你摸一张牌,每回合限发动一次', bolehuiyan_info:'当一名有手牌的其他角色成为来源不为你的杀的目标时,你可以预言此杀能否命中,若预言正确,你摸一张牌,每回合限发动一次',
xiangma:'相马', xiangma:'相马',
xiangma_info:'锁定技,计算与其他角色的距离时始终-1计算其他角色与你的距离时始终+1', xiangma_info:'锁定技,只要你的体力值大于2点计算与其他角色的距离时始终-1只要你的体力值为2点或更低,其他角色计算与你的距离时始终+1',
seyou:'色诱', seyou:'色诱',
seyou_info:'限定技出牌阶段你可以指定任意1名角色其他所有男性角色需选择1项执行1对你指定的角色出【杀】2令你获得其一张牌。', seyou_info:'限定技出牌阶段你可以指定任意1名角色其他所有男性角色需选择1项执行1对你指定的角色出【杀】2令你获得其一张牌。',
sheshi:'蛇噬', sheshi:'蛇噬',

View File

@ -181,6 +181,7 @@ window.config={
show_name_config:'显示角色名称', show_name_config:'显示角色名称',
auto_popped_config:'自动弹出菜单', auto_popped_config:'自动弹出菜单',
ui_zoom_config:'界面缩放', ui_zoom_config:'界面缩放',
no_ios_zoom_config:'禁止触屏缩放',
show_stat_config:'显示战斗统计', show_stat_config:'显示战斗统计',
show_scrollbar_config:'显示滚动条', show_scrollbar_config:'显示滚动条',
mousewheel_config:'滚轮控制手牌', mousewheel_config:'滚轮控制手牌',

View File

@ -29,7 +29,7 @@ window.play={};
frameId:0, frameId:0,
}, },
help:{ help:{
'关于':'无名杀 1.0.6<div class="dashedline"></div><ul><li>1L 先谢神上<li>图片等素材来自网(shén)络(shā)<li>bug反馈/建议欢迎来百度无名杀吧', '关于':'无名杀 1.1.0<div class="dashedline"></div><ul><li>1L 先谢神上<li>图片等素材来自网(shén)络(shā)<li>bug反馈/建议欢迎来百度无名杀吧',
'选项帮助':'<ul><li>控制台命令:开启后可用浏览器控制台控制游戏<li>自动确认开启后当候选目标仅有1个时点击目标无需再点击确定<li>悬停时间:弹出角色/卡牌介绍所需的等待时间<li>'+ '选项帮助':'<ul><li>控制台命令:开启后可用浏览器控制台控制游戏<li>自动确认开启后当候选目标仅有1个时点击目标无需再点击确定<li>悬停时间:弹出角色/卡牌介绍所需的等待时间<li>'+
'触屏模式可消除iOS等设备上300ms的点击延迟但开启后无法使用鼠标<li>滚轮控制手牌开启后滚轮可控制手牌的左右滚动建议Mac等具备横向滚动功能的设备关闭此选项'+ '触屏模式可消除iOS等设备上300ms的点击延迟但开启后无法使用鼠标<li>滚轮控制手牌开启后滚轮可控制手牌的左右滚动建议Mac等具备横向滚动功能的设备关闭此选项'+
'<li>隐藏非全身皮肤:在新版布局中,若角色没有全身皮肤将被隐藏<li>游戏玩法:为游戏增加不同玩法,开启后可在帮助中查看介绍'+ '<li>隐藏非全身皮肤:在新版布局中,若角色没有全身皮肤将被隐藏<li>游戏玩法:为游戏增加不同玩法,开启后可在帮助中查看介绍'+
@ -3314,6 +3314,7 @@ window.play={};
next.reason=reason; next.reason=reason;
if(reason) next.source=reason.source; if(reason) next.source=reason.source;
next.content=lib.element.playerproto.die; next.content=lib.element.playerproto.die;
return next;
}, },
revive:function(hp){ revive:function(hp){
game.log(get.translation(this)+'复活'); game.log(get.translation(this)+'复活');
@ -5785,6 +5786,22 @@ window.play={};
game.me.node.handcards1.getElementsByClassName('removing').length)-1; game.me.node.handcards1.getElementsByClassName('removing').length)-1;
game.me.node.handcards2.dataset.number=Math.min(6,game.me.node.handcards2.childNodes.length- game.me.node.handcards2.dataset.number=Math.min(6,game.me.node.handcards2.childNodes.length-
game.me.node.handcards2.getElementsByClassName('removing').length)-1; game.me.node.handcards2.getElementsByClassName('removing').length)-1;
if(game.me.isAlive()){
if(ui.auto) ui.auto.show();
if(ui.revive){
ui.revive.close();
delete ui.revive;
}
if(ui.swap){
ui.swap.close();
delete ui.swap;
}
if(ui.restart){
ui.restart.close();
delete ui.restart;
}
}
}, },
phaseLoop:function(player){ phaseLoop:function(player){
var next=game.createEvent('phaseLoop'); var next=game.createEvent('phaseLoop');
@ -6941,6 +6958,7 @@ window.play={};
gameconfig.push(ui.hoverhandcardconfig); gameconfig.push(ui.hoverhandcardconfig);
if(!lib.config.hover_all) ui.hoverhandcardconfig.classList.add('disabled'); if(!lib.config.hover_all) ui.hoverhandcardconfig.classList.add('disabled');
gameconfig.push(ui.create.switcher('touchscreen',lib.config.touchscreen,ui.click.sidebar.touchscreen)); gameconfig.push(ui.create.switcher('touchscreen',lib.config.touchscreen,ui.click.sidebar.touchscreen));
gameconfig.push(ui.create.switcher('no_ios_zoom',lib.config.no_ios_zoom,ui.click.sidebar.global));
ui.handcardmousewheel=ui.create.switcher('mousewheel',lib.config.mousewheel,ui.click.sidebar.mousewheel); ui.handcardmousewheel=ui.create.switcher('mousewheel',lib.config.mousewheel,ui.click.sidebar.mousewheel);
if(lib.config.touchscreen) ui.handcardmousewheel.classList.add('disabled'); if(lib.config.touchscreen) ui.handcardmousewheel.classList.add('disabled');
gameconfig.push(ui.handcardmousewheel); gameconfig.push(ui.handcardmousewheel);
@ -6965,6 +6983,12 @@ window.play={};
case '很大':ui.window.style.zoom=1.1;break; case '很大':ui.window.style.zoom=1.1;break;
default:ui.window.style.zoom=1; default:ui.window.style.zoom=1;
} }
if(lib.config.no_ios_zoom){
var meta=document.createElement('meta');
meta.name='viewport';
meta.content="user-scalable=0";
document.head.appendChild(meta);
}
var appearence=[]; var appearence=[];
appearence._configstr='appearence'; appearence._configstr='appearence';
@ -11338,6 +11362,6 @@ window.play={};
} }
} }
document.ontouchmove = function(e) { document.ontouchmove = function(e) {
e.preventDefault(); e.preventDefault();
}; };
}()); }());

View File

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

View File

@ -1,7 +1,6 @@
<!DOCTYPE HTML> <!DOCTYPE HTML>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
<meta name="viewport" content="user-scalable=0">
<link rel="apple-touch-icon" href="image/meta/icon.png"> <link rel="apple-touch-icon" href="image/meta/icon.png">
<link rel="apple-touch-startup-image" href="starts/image/meta/icon.png"> <link rel="apple-touch-startup-image" href="starts/image/meta/icon.png">
<title>无名杀</title> <title>无名杀</title>

View File

@ -8,7 +8,7 @@ mode.stone={
player.node.actcount=ui.create.div('.actcount.hp',player); player.node.actcount=ui.create.div('.actcount.hp',player);
} }
if(typeof player.actcount!=='number'){ if(typeof player.actcount!=='number'){
player.actcount=1; player.actcount=2;
} }
player.actused=0; player.actused=0;
if(!player.actcharacterlist){ if(!player.actcharacterlist){
@ -17,7 +17,7 @@ mode.stone={
player.updateActCount(); player.updateActCount();
} }
}, },
updateActCount:function(){ updateActCount:function(used){
for(var i=0;i<10;i++){ for(var i=0;i<10;i++){
if(this.actcount>this.node.actcount.childElementCount){ if(this.actcount>this.node.actcount.childElementCount){
ui.create.div(this.node.actcount); ui.create.div(this.node.actcount);
@ -29,13 +29,15 @@ mode.stone={
break; break;
} }
} }
var count=this.actcount-this.getActCount(); if(used!==false){
for(var i=0;i<this.actcount;i++){ var count=this.actcount-this.getActCount();
if(i<count){ for(var i=0;i<this.actcount;i++){
this.node.actcount.childNodes[i].classList.remove('lost'); if(i<count){
} this.node.actcount.childNodes[i].classList.remove('lost');
else{ }
this.node.actcount.childNodes[i].classList.add('lost'); else{
this.node.actcount.childNodes[i].classList.add('lost');
}
} }
} }
}, },
@ -63,6 +65,14 @@ mode.stone={
} }
return false; return false;
}, },
countFellow:function(){
if(!this.actcharacterlist) return 0;
var num=0;
for(var i=0;i<this.actcharacterlist.length;i++){
if(this.actcharacterlist[i]) num++;
}
return num;
},
addFellow:function(fellow){ addFellow:function(fellow){
if(!this.actcharacterlist) return this; if(!this.actcharacterlist) return this;
var i; var i;
@ -98,7 +108,8 @@ mode.stone={
player.side=dead.side; player.side=dead.side;
player.actcharacterlist=dead.actcharacterlist; player.actcharacterlist=dead.actcharacterlist;
player.animate('replaceme'); player.animate('replaceme');
player.actcount=dead.actcount-1; player.actcount=game.enemy.actcount;
player.actcount=dead.actcount;
if(_status.double_character){ if(_status.double_character){
player.init(_status.mylist.shift(),_status.mylist.shift()); player.init(_status.mylist.shift(),_status.mylist.shift());
} }
@ -109,7 +120,7 @@ mode.stone={
ui.arena.appendChild(player); ui.arena.appendChild(player);
game.swapControl(player); game.swapControl(player);
game.arrangePlayers(); game.arrangePlayers();
player.draw(2+game.enemy.actcharacterlist.length,false); player.draw(2+game.enemy.countFellow(),false);
game.resume(); game.resume();
},lib.config.duration); },lib.config.duration);
@ -128,7 +139,7 @@ mode.stone={
player.side=dead.side; player.side=dead.side;
player.actcharacterlist=dead.actcharacterlist; player.actcharacterlist=dead.actcharacterlist;
player.animate('replaceenemy'); player.animate('replaceenemy');
player.actcount=dead.actcount-1; player.actcount=dead.actcount;
if(_status.double_character){ if(_status.double_character){
player.init(_status.enemylist.shift(),_status.enemylist.shift()); player.init(_status.enemylist.shift(),_status.enemylist.shift());
} }
@ -139,14 +150,16 @@ mode.stone={
game.enemy=player; game.enemy=player;
ui.arena.appendChild(player); ui.arena.appendChild(player);
game.arrangePlayers(); game.arrangePlayers();
player.draw(2+game.me.actcharacterlist.length,false); player.draw(2+game.me.countFellow(),false);
game.resume(); game.resume();
},lib.config.duration); },lib.config.duration);
} }
} }
if(source&&source.side!=this.side&&!source.isMin()){ if(source&&source.side!=this.side&&!source.isMin()){
source.draw(2); source.draw(2);
source.actused--; if(source.getActCount()>0){
source.actused--;
}
source.updateActCount(); source.updateActCount();
} }
game.dead.remove(this); game.dead.remove(this);
@ -195,99 +208,48 @@ mode.stone={
lib.character[i][3].add('stonesha'); lib.character[i][3].add('stonesha');
lib.character[i][3].add('stoneshan'); lib.character[i][3].add('stoneshan');
lib.character[i][3].add('stonedraw'); lib.character[i][3].add('stonedraw');
list.push(i); name=i+'_stonecharacter';
list.push(name);
lib.card[name]={
image:'character/default/'+i,
stoneact:lib.character[i][5][0]
};
for(j in lib.card.stonecharacter){
lib.card[name][j]=lib.card.stonecharacter[j];
}
lib.translate[name]=get.translation(i);
lib.translate[name+'_info']=get.skillintro(i);
} }
} }
var totallength=lib.card.list.length/3; var totallength=Math.ceil(lib.card.list.length/40);
var addedcardcount=Math.ceil(lib.card.list.length/80); var addedcardcount=Math.ceil(lib.card.list.length/80);
var addedcardcount2=Math.ceil(lib.card.list.length/160);
var suit=['heart','diamond','club','spade']; var suit=['heart','diamond','club','spade'];
for(i=0;i<totallength;i++){ while(totallength--){
var thisname=list.randomGet(); for(i=0;i<list.length;i++){
name=thisname+'_stonecharacter'; lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),list[i]]);
lib.card[name]={ }
enable:true,
type:'stonecharacter',
image:'character/default/'+thisname,
color:'white',
opacity:1,
addinfo:'消耗 '+lib.character[thisname][5][0],
enable:function(event,player){
return player.canAddFellow();
},
stoneact:lib.character[thisname][5][0],
chongzhu:true,
textShadow:'black 0 0 2px',
filterTarget:function(card,player,target){
return player==target;
},
selectTarget:-1,
content:function(){
"step 0"
var name=card.name.slice(0,card.name.indexOf('_stonecharacter'));
var added=false;
var i;
for(i=0;i<player.actcharacterlist.length;i++){
if(player.actcharacterlist[i]===null){
added=true;
break;
}
}
var pos=i+4;
if(player!=game.me){
pos+=4;
}
var fellow=game.addFellow(pos,name);
fellow.side=player.side;
fellow.classList.add('turnedover');
player.actcharacterlist[i]=fellow;
fellow.$gain2(card);
event.source=fellow;
var num=lib.character[name][5][1];
if(num){
fellow.draw(num,false);
}
player.updateActCount();
"step 1"
event.trigger('fellow');
},
ai:{
order:8.5,
useful:[5.5,1],
result:{
target:(function(name){
return function(player,target){
return 1;
}
}(thisname))
}
}
};
lib.translate[name]=get.translation(thisname);
lib.translate[name+'_info']=get.skillintro(thisname);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),name]);
} }
while(addedcardcount--){
for(var i=0;i<addedcardcount;i++){
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'shengerpingdeng']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'shengerpingdeng']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'konghunshi']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'konghunshi']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'emofengdi']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'emofengdi']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'mindieyi']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'mindieyi']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'miefafu']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'miefafu']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'sanghunzhao']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'sanghunzhao']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'sanghunzhao']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'jintiao']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'jintiao']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'zhaohunfan']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'zhaohunfan']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'fengraozhijiao']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'fengraozhijiao']);
} }
addedcardcount=Math.ceil(addedcardcount/2); while(addedcardcount2--){
for(var i=0;i<addedcardcount;i++){
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'liumangxingzhen']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'liumangxingzhen']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'dianhaishenzhu']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'dianhaishenzhu']);
lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'yesushengxue']); lib.card.list.push([suit.randomGet(),Math.ceil(Math.random()*13),'yesushengxue']);
} }
lib.card.list.randomSort(); lib.card.list.randomSort();
lib.skill._chongzhu.usable=3; lib.skill._chongzhu.usable=3;
for(var i in lib.skill){ for(i in lib.skill){
if(lib.skill[i].changeSeat){ if(lib.skill[i].changeSeat){
lib.skill[i]={}; lib.skill[i]={};
if(lib.translate[i+'_info']){ if(lib.translate[i+'_info']){
@ -295,7 +257,7 @@ mode.stone={
} }
} }
} }
for(var i in lib.card){ for(i in lib.card){
if(lib.card[i].type=='equip'){ if(lib.card[i].type=='equip'){
lib.card[i].chongzhu=true; lib.card[i].chongzhu=true;
} }
@ -325,13 +287,9 @@ mode.stone={
game.enemy.side=!game.me.side; game.enemy.side=!game.me.side;
game.gameDraw(game.me,2); game.gameDraw(game.me,2);
if(game.me.side){ if(game.me.side){
game.enemy.actcount++;
game.enemy.updateActCount();
game.stoneLoop(game.me); game.stoneLoop(game.me);
} }
else{ else{
game.me.actcount++;
game.me.updateActCount();
game.stoneLoop(game.enemy); game.stoneLoop(game.enemy);
} }
} }
@ -362,14 +320,26 @@ mode.stone={
list.push(i); list.push(i);
} }
list.randomSort(); list.randomSort();
var dialog=ui.create.dialog('选择角色',[list.slice(0,get.config('battle_number')*2+5),'character']); var dialog=ui.create.dialog('按顺序选择出场角色'+(get.config('double_character')?'(双将)':''));
game.me.chooseButton(dialog,true).selectButton=function(){ dialog.add('0/'+(get.config('double_character')?2:1)*get.config('battle_number'));
dialog.add([list.slice(0,get.config('battle_number')*2+5),'character']);
var next=game.me.chooseButton(dialog,true);
next.selectButton=function(){
return (get.config('double_character')?2:1)*get.config('battle_number'); return (get.config('double_character')?2:1)*get.config('battle_number');
}; };
next.custom.add.button=function(){
_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();
};
event.changeDialog=function(){ event.changeDialog=function(){
list.randomSort(); list.randomSort();
_status.event.dialog.close(); _status.event.dialog.close();
_status.event.dialog=ui.create.dialog('选择角色',[list.slice(0,get.config('battle_number')*2+5),'character']); _status.event.dialog=ui.create.dialog('按顺序选择出场角色'+(get.config('double_character')?'(双将)':''));
_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')*2+5),'character']);
game.uncheck(); game.uncheck();
game.check(); game.check();
}; };
@ -439,6 +409,56 @@ mode.stone={
}, },
}, },
card:{ card:{
stonecharacter:{
type:'stonecharacter',
color:'white',
opacity:1,
enable:function(event,player){
return player.canAddFellow();
},
chongzhu:true,
textShadow:'black 0 0 2px',
filterTarget:function(card,player,target){
return player==target;
},
selectTarget:-1,
content:function(){
"step 0"
var name=card.name.slice(0,card.name.indexOf('_stonecharacter'));
var added=false;
var i;
for(i=0;i<player.actcharacterlist.length;i++){
if(player.actcharacterlist[i]===null){
added=true;
break;
}
}
var pos=i+4;
if(player!=game.me){
pos+=4;
}
var fellow=game.addFellow(pos,name);
fellow.side=player.side;
fellow.classList.add('turnedover');
player.actcharacterlist[i]=fellow;
fellow.$gain2(card);
event.source=fellow;
var num=lib.character[name][5][1];
if(num){
fellow.draw(num,false);
}
player.updateActCount();
"step 1"
event.trigger('fellow');
},
ai:{
order:8.5,
useful:[5.5,1],
result:{
target:1
}
}
},
zhaohunfan:{ zhaohunfan:{
type:'stone', type:'stone',
fullskin:true, fullskin:true,
@ -485,7 +505,9 @@ mode.stone={
}, },
ai:{ ai:{
result:{ result:{
target:-1 target:function(player,target){
return 1-target.hp-target.num('h')/2;
}
}, },
order:5 order:5
} }
@ -498,8 +520,14 @@ mode.stone={
return target.isMin(); return target.isMin();
}, },
selectTarget:-1, selectTarget:-1,
multiline:true,
multitarget:true,
content:function(){ content:function(){
target.die(); targets.sort(lib.sort.seat);
for(var i=0;i<targets.length;i++){
targets[i].die()._triggered=null;
}
ui.clear();
}, },
stoneact:6, stoneact:6,
ai:{ ai:{
@ -536,6 +564,7 @@ mode.stone={
fullskin:true, fullskin:true,
type:'stone', type:'stone',
enable:function(event,player){ enable:function(event,player){
if(player.isMin()) return false;
return player.canAddFellow(); return player.canAddFellow();
}, },
stoneact:5, stoneact:5,
@ -550,7 +579,9 @@ mode.stone={
ai:{ ai:{
order:9, order:9,
result:{ result:{
player:1 target:function(player,target){
return -target.hp;
}
} }
} }
}, },
@ -558,6 +589,7 @@ mode.stone={
type:'stone', type:'stone',
fullskin:true, fullskin:true,
enable:function(event,player){ enable:function(event,player){
if(player.isMin()) return false;
return player.canAddFellow(); return player.canAddFellow();
}, },
stoneact:4, stoneact:4,
@ -573,7 +605,9 @@ mode.stone={
ai:{ ai:{
order:9, order:9,
result:{ result:{
player:1 target:function(player,target){
return -target.hp;
}
} }
} }
}, },
@ -626,19 +660,19 @@ mode.stone={
enable:true, enable:true,
stoneact:3, stoneact:3,
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return target.isMin()&&target.side==player.side; return target.isMin()&&target.side==player.side&&!target.skills.contains('chaofeng');
}, },
content:function(){ content:function(){
target.addSkill('chaofeng'); target.addSkill('chaofeng');
target.markSkill('chaofeng'); target.markSkill('chaofeng');
game.log(get.translation(target)+'获得了嘲讽'); game.log(get.translation(target)+'获得了嘲讽');
target.popup('诅咒'); target.popup('嘲讽');
}, },
ai:{ ai:{
order:2, order:2,
result:{ result:{
target:function(player,target){ target:function(player,target){
if(target.hp>=2) return 1; if(target.hp>=3) return target.hp;
return 0; return 0;
} }
} }
@ -650,16 +684,20 @@ mode.stone={
enable:true, enable:true,
stoneact:4, stoneact:4,
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return target.isMin()&&target.maxHp<5; return target.isMin()&&target.hp<5;
}, },
content:function(){ content:function(){
target.gainMaxHp(Math.min(2,5-target.maxHp)); if(target.maxHp<5){
target.gainMaxHp(Math.min(2,5-target.maxHp));
}
target.recover(2); target.recover(2);
}, },
ai:{ ai:{
order:7, order:7,
result:{ result:{
target:1 target:function(player,target){
return 5-target.hp;
}
} }
} }
}, },
@ -728,9 +766,9 @@ mode.stone={
stone_gongzhu:['female','wu',1,['shushen'],['minskin','stone'],[3,2]], stone_gongzhu:['female','wu',1,['shushen'],['minskin','stone'],[3,2]],
stone_genv:['female','wei',1,['jieyin'],['minskin','stone'],[2,2]], stone_genv:['female','wei',1,['jieyin'],['minskin','stone'],[2,2]],
stone_wunv:['female','qun',1,['biyue'],['minskin','stone'],[3,2]], stone_wunv:['female','qun',1,['biyue'],['minskin','stone'],[3,2]],
stone_wanghou:['female','qun',2,['ganlu'],['minskin','stone'],[3,1]], stone_huanghou:['female','qun',2,['stone_huanghou'],['minskin','stone'],[3,1]],
stone_feipin:['female','qun',1,['guixiu'],['minskin','stone'],[1,2]], stone_feipin:['female','qun',1,['guixiu'],['minskin','stone'],[1,2]],
stone_yiji:['female','qun',1,['liuli'],['minskin','stone'],[2,2]], stone_yiji:['female','qun',1,['stone_yiji'],['minskin','stone'],[2,2]],
}, },
skill:{ skill:{
chaofeng:{}, chaofeng:{},
@ -792,7 +830,7 @@ mode.stone={
unique:true, unique:true,
filter:function(event,player){ filter:function(event,player){
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(game.players[i].side!=player.side&& if(game.players[i]!=player&&
game.players[i].isMin()){ game.players[i].isMin()){
return true; return true;
} }
@ -800,23 +838,26 @@ mode.stone={
return false; return false;
}, },
content:function(){ content:function(){
"step 0" for(var i=0;i<game.players.length;i++){
event.chooser=player.getLeader(); if(game.players[i].isMin()&&game.players[i]!=player){
event.chooser.chooseTarget('半仙:令一名敌方随从失去一点体力上限',function(card,playerx,target){ game.players[i].addSkill('stone_banxian2');
return player.side!=target.side&&target.isMin(); }
}).ai=function(target){
if(target.hp==target.maxHp) return Math.max(2,10-target.maxHp);
return 1;
};
player.line(event.chooser);
"step 1"
if(result.bool){
event.chooser.line(result.targets[0]);
game.delay();
result.targets[0].loseMaxHp();
} }
} }
}, },
stone_banxian2:{
trigger:{global:'dieAfter'},
forced:true,
popup:false,
unique:true,
filter:function(event,player){
return player.skills.contains('stone_banxian2');
},
content:function(){
player.loseHp();
player.removeSkill('stone_banxian2');
}
},
stone_daoshi:{ stone_daoshi:{
trigger:{player:'phaseBegin'}, trigger:{player:'phaseBegin'},
filter:function(event,player){ filter:function(event,player){
@ -917,7 +958,6 @@ mode.stone={
"step 1" "step 1"
if(result.bool){ if(result.bool){
event.chooser.line(result.targets[0]); event.chooser.line(result.targets[0]);
game.delay();
result.targets[0].draw(); result.targets[0].draw();
} }
} }
@ -1076,6 +1116,53 @@ mode.stone={
} }
} }
}, },
stone_huanghou:{
trigger:{source:'fellow'},
forced:true,
unique:true,
filter:function(event,player){
return player.getEnemy().countFellow()>player.getLeader().countFellow();
},
content:function(){
"step 0"
event.chooser=player.getEnemy();
event.chooser.chooseTarget('皇后:选择己方一名随从令其死亡',function(card,playerx,target){
return target.isMin()&&target.side!=player.side;
},true).ai=function(target){
return -target.hp;
};
player.line(event.chooser);
"step 1"
if(result.bool){
event.chooser.line(result.targets[0]);
game.delay();
result.targets[0].die();
}
}
},
stone_yiji:{
trigger:{player:'dieBegin'},
forced:true,
filter:function(event){
return event.source!=undefined&&event.source.isMin();
},
content:function(){
trigger.source.addSkill('stone_yiji2');
},
},
stone_yiji2:{
trigger:{global:'dieAfter'},
forced:true,
popup:false,
unique:true,
filter:function(event,player){
return player.skills.contains('stone_yiji2');
},
content:function(){
player.loseHp();
player.removeSkill('stone_yiji2');
}
},
_actcount:{ _actcount:{
mod:{ mod:{
cardEnabled:function(card,player){ cardEnabled:function(card,player){
@ -1091,18 +1178,23 @@ mode.stone={
if(player.getActCount()+stoneact>player.actcount) return false; if(player.getActCount()+stoneact>player.actcount) return false;
} }
}, },
trigger:{player:'phaseUseBegin'}, trigger:{player:'phaseBegin'},
forced:true, forced:true,
popup:false, popup:false,
filter:function(event,player){ filter:function(event,player){
return !player.isMin(); return !player.isMin();
}, },
content:function(){ content:function(){
player.actcount++; player.actused=0;
if(player.side){
player.actcount=player.getEnemy().actcount;
}
else{
player.actcount=player.getEnemy().actcount+1;
}
if(player.actcount>6){ if(player.actcount>6){
player.actcount-=5; player.actcount-=5;
} }
player.actused=0;
player.updateActCount(); player.updateActCount();
} }
}, },
@ -1208,9 +1300,9 @@ mode.stone={
stone_daoshi:'道士', stone_daoshi:'道士',
stone_daoshi_info:'回合开始阶段,若你没有手牌,你摸一张牌', stone_daoshi_info:'回合开始阶段,若你没有手牌,你摸一张牌',
stone_sanxian:'散仙', stone_sanxian:'散仙',
stone_sanxian_info:'你死亡已方主将可令一名敌方随从失去1点体力', stone_sanxian_info:'你死亡已方主将可令一名敌方随从失去1点体力',
stone_banxian:'半仙', stone_banxian:'半仙',
stone_banxian_info:'你死亡已方主将可令一名敌方随从失去1点体力上限', stone_banxian_info:'你死亡场上所有其他随从失去1点体力',
stone_yisheng:'医生', stone_yisheng:'医生',
stone_yinshi:'隐士', stone_yinshi:'隐士',
stone_yinshi_info:'在你的回合开始前,不能成为任何卡牌的目标', stone_yinshi_info:'在你的回合开始前,不能成为任何卡牌的目标',
@ -1218,9 +1310,11 @@ mode.stone={
stone_gongzhu:'公主', stone_gongzhu:'公主',
stone_genv:'歌女', stone_genv:'歌女',
stone_wunv:'舞女', stone_wunv:'舞女',
stone_wanghou:'皇后', stone_huanghou:'皇后',
stone_huanghou_info:'你出场时,若敌方随从数多于己方,敌方主将须选择一名随从令其死亡',
stone_feipin:'王妃', stone_feipin:'王妃',
stone_yiji:'艺伎', stone_yiji:'艺伎',
stone_yiji_info:'杀死你的随从失去一点体力',
stone_daogu:'道姑', stone_daogu:'道姑',
stone_daogu_info:'回合结束阶段,若你没有手牌,你摸一张牌', stone_daogu_info:'回合结束阶段,若你没有手牌,你摸一张牌',
@ -1233,9 +1327,9 @@ mode.stone={
shengerpingdeng:'生而平等', shengerpingdeng:'生而平等',
shengerpingdeng_info:'将所有随从体力上限降为1', shengerpingdeng_info:'将所有随从体力上限降为1',
emofengdi:'恶魔之眼', emofengdi:'恶魔之眼',
emofengdi_info:'将一名敌方随从吸收为已方', emofengdi_info:'限主将使用,将一名敌方随从吸收为已方',
konghunshi:'控魂石', konghunshi:'控魂石',
konghunshi_info:'使一名敌方随从变为已方,并于下个回合结束后死亡', konghunshi_info:'限主将使用,将一名敌方随从吸收为已方,并令其于下个回合结束后死亡',
konghunshi_die:'控魂石', konghunshi_die:'控魂石',
konghunshi_die_info:'下个回合结束后死亡', konghunshi_die_info:'下个回合结束后死亡',
mindieyi:'冥蝶翼', mindieyi:'冥蝶翼',
@ -1243,7 +1337,7 @@ mode.stone={
miefafu:'灭法符', miefafu:'灭法符',
miefafu_info:'将目标随从翻面', miefafu_info:'将目标随从翻面',
liumangxingzhen:'六芒星阵', liumangxingzhen:'六芒星阵',
liumangxingzhen_info:'令场上所有随从死亡', liumangxingzhen_info:'令场上所有随从立即死亡(无法触发死亡技能)',
dianhaishenzhu:'颠海神珠', dianhaishenzhu:'颠海神珠',
dianhaishenzhu_info:'令目标随从获得嘲讽', dianhaishenzhu_info:'令目标随从获得嘲讽',
chaofeng:'嘲讽', chaofeng:'嘲讽',
@ -1268,11 +1362,14 @@ mode.stone={
}, },
config:['battle_number','double_character','ban_weak','free_choose','change_choice'], config:['battle_number','double_character','ban_weak','free_choose','change_choice'],
help:{ help:{
'炉石模式':'<ul><li>主将出牌阶段的出牌数量有上限先手为2后手为3<li>每进行一个回合,主将的出牌上限+1超过6时减至2并重新累加'+ '炉石模式':'<ul><li>游戏流程类似1v1场上有两名主将进行对抗'+
'<li>牌堆中随机加入总量1/3的随从牌使用之可召唤一个随从随从出场时背面朝上<li>随从于摸牌阶段摸牌基数为1随从的随从牌均视为闪装备牌均视为杀<li>'+ '<li>主将出牌阶段的出牌数量行动值有上限先手为2后手为3<li>游戏每进行一轮,主将的出牌上限+1超过6时减至2并重新累加'+
'<li>牌堆中随机加入总量1/3的随从牌使用之可召唤一个随从随从出场时背面朝上。每一方在场的随从数不能超过4<li>随从于摸牌阶段摸牌基数为1随从的随从牌均视为闪装备牌均视为杀<li>'+
'随从与其他所有角色相互距离基数为1<li>'+ '随从与其他所有角色相互距离基数为1<li>'+
'主将杀死对方随从后获得一个额外的行动值并摸两张牌'+ '主将杀死对方随从后获得一个额外的行动值并摸两张牌,杀死己方随从无惩罚,随从杀死随从无效果'+
'<li>游戏中装备牌和随从牌均可重铸但回合内总的重铸次数不能超过3'+ '<li>牌堆中随机加入总量1/6的炉石牌效果主要与随从有关炉石牌根据强度不同可能会消耗额外的行动值'+
'<li>嘲讽:若一方阵营中有嘲讽角色,则同阵营的无嘲讽角色不以能成为杀或决斗的目标' '<li>主将可重铸装备牌和随从牌但回合内总的重铸次数不能超过3随从不能重铸任何牌包括铁索等默认可以重铸的牌'+
'<li>嘲讽:若一方阵营中有嘲讽角色,则同阵营的无嘲讽角色不以能成为杀或决斗的目标'+
'<li>主将或随从死亡后立即移出游戏,主将死亡后替补登场,无替补时游戏结束'
} }
} }

View File

@ -1,5 +1,5 @@
{ {
"name" : "无名杀", "name" : "无名杀",
"version" : "0.9.71", "version" : "1.1.0",
"main" : "main.js" "main" : "main.js"
} }