1.7.7
|
@ -1216,6 +1216,7 @@ character.extra={
|
||||||
dawu_info:'回合结束阶段,你可以弃掉X枚“星”指定X名角色:直到你的下回合开始,防止他们受到的除雷电伤害外的一切伤害。',
|
dawu_info:'回合结束阶段,你可以弃掉X枚“星”指定X名角色:直到你的下回合开始,防止他们受到的除雷电伤害外的一切伤害。',
|
||||||
kuangfeng:'狂风',
|
kuangfeng:'狂风',
|
||||||
kuangfeng2:'狂风',
|
kuangfeng2:'狂风',
|
||||||
|
kuangfeng2_bg:'风',
|
||||||
// kuangfeng2_info:'已获得狂风标记',
|
// kuangfeng2_info:'已获得狂风标记',
|
||||||
kuangfeng3:'狂风',
|
kuangfeng3:'狂风',
|
||||||
kuangfeng_info:'回合结束阶段,你可以弃掉1枚“星”指定一名角色:直到你的下回合开始,该角色每次受到的火焰伤害+1。',
|
kuangfeng_info:'回合结束阶段,你可以弃掉1枚“星”指定一名角色:直到你的下回合开始,该角色每次受到的火焰伤害+1。',
|
||||||
|
|
|
@ -525,10 +525,15 @@ character.shenhua={
|
||||||
intro:{
|
intro:{
|
||||||
content:'cards'
|
content:'cards'
|
||||||
},
|
},
|
||||||
|
group:'tuntian_dist',
|
||||||
|
subSkill:{
|
||||||
|
dist:{
|
||||||
mod:{
|
mod:{
|
||||||
globalFrom:function(from,to,distance){
|
globalFrom:function(from,to,distance){
|
||||||
if(from.storage.tuntian) return distance-from.storage.tuntian.length;
|
if(from.storage.tuntian) return distance-from.storage.tuntian.length;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
},
|
},
|
||||||
ai:{
|
ai:{
|
||||||
effect:{
|
effect:{
|
||||||
|
@ -708,20 +713,19 @@ character.shenhua={
|
||||||
forceaudio:true,
|
forceaudio:true,
|
||||||
enable:'phaseUse',
|
enable:'phaseUse',
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
if(!game.zhu) return false;
|
var zhu=get.zhu('zhiba');
|
||||||
if(!game.zhu.isZhu) return false;
|
if(!zhu) return false;
|
||||||
return (player!=game.zhu&&game.zhu.skills.contains('zhiba')&&
|
return (player!=zhu&&player.group=='wu'&&player.num('h')>0&&zhu.num('h')>0);
|
||||||
player.group=='wu'&&player.num('h')>0&&game.zhu.num('h')>0);
|
|
||||||
},
|
},
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target==game.zhu;
|
return target.isZhu&&target.get('s').contains('zhiba');
|
||||||
},
|
},
|
||||||
usable:1,
|
usable:1,
|
||||||
content:function(){
|
content:function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
player.chooseToCompare(target,function(card){
|
player.chooseToCompare(target,function(card){
|
||||||
var player=get.owner(card);
|
var player=get.owner(card);
|
||||||
if(player!=game.zhu&&ai.get.attitude(player,game.zhu)>0){
|
if(player!=target&&ai.get.attitude(player,target)>0){
|
||||||
return -get.number(card);
|
return -get.number(card);
|
||||||
}
|
}
|
||||||
return get.number(card);
|
return get.number(card);
|
||||||
|
@ -738,10 +742,10 @@ character.shenhua={
|
||||||
},
|
},
|
||||||
expose:0.2,
|
expose:0.2,
|
||||||
result:{
|
result:{
|
||||||
target:function(player){
|
target:function(player,target){
|
||||||
if(player.num('h')<=player.hp) return false;
|
if(player.num('h')<=player.hp) return false;
|
||||||
var maxnum=0;
|
var maxnum=0;
|
||||||
var cards2=game.zhu.get('h');
|
var cards2=target.get('h');
|
||||||
for(var i=0;i<cards2.length;i++){
|
for(var i=0;i<cards2.length;i++){
|
||||||
if(cards2[i].number>maxnum){
|
if(cards2[i].number>maxnum){
|
||||||
maxnum=cards2[i].number;
|
maxnum=cards2[i].number;
|
||||||
|
@ -1432,15 +1436,15 @@ character.shenhua={
|
||||||
forceaudio:true,
|
forceaudio:true,
|
||||||
trigger:{player:'judgeEnd'},
|
trigger:{player:'judgeEnd'},
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
if(!game.zhu) return false;
|
var zhu=get.zhu('songwei');
|
||||||
if(!game.zhu.isZhu) return false;
|
if(!zhu) return false;
|
||||||
return (player!=game.zhu&&game.zhu.skills.contains('songwei')&&player.group=='wei'&&get.color(event.result.card)=='black');
|
return (player!=zhu&&player.group=='wei'&&get.color(event.result.card)=='black');
|
||||||
},
|
},
|
||||||
check:function(event,player){
|
check:function(event,player){
|
||||||
return ai.get.attitude(player,game.zhu)>0;
|
return ai.get.attitude(player,get.zhu('songwei'))>0;
|
||||||
},
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
game.zhu.draw();
|
get.zhu('songwei').draw();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
duanliang:{
|
duanliang:{
|
||||||
|
@ -1795,12 +1799,14 @@ character.shenhua={
|
||||||
forceaudio:true,
|
forceaudio:true,
|
||||||
trigger:{source:'damageEnd'},
|
trigger:{source:'damageEnd'},
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
if(!game.zhu) return false;
|
var zhu=get.zhu('baonue');
|
||||||
if(!game.zhu.isZhu) return false;
|
if(!zhu) return false;
|
||||||
return (player!=game.zhu&&game.zhu.skills.contains('baonue')&&player.group=='qun')&&game.zhu.hp<game.zhu.maxHp;
|
return (player!=zhu&&player.group=='qun'&&zhu.hp<zhu.maxHp);
|
||||||
},
|
},
|
||||||
check:function(event,player){
|
check:function(event,player){
|
||||||
return ai.get.attitude(player,game.zhu)>0;
|
var zhu=get.zhu('baonue');
|
||||||
|
if(!zhu) return false;
|
||||||
|
return ai.get.attitude(player,zhu)>0;
|
||||||
},
|
},
|
||||||
content:function(){
|
content:function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
|
@ -1810,7 +1816,10 @@ character.shenhua={
|
||||||
})
|
})
|
||||||
"step 1"
|
"step 1"
|
||||||
if(result.bool){
|
if(result.bool){
|
||||||
game.zhu.recover();
|
var zhu=get.zhu('baonue');
|
||||||
|
if(zhu){
|
||||||
|
zhu.recover();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -2912,15 +2921,16 @@ character.shenhua={
|
||||||
player.$give(cards,targets[0]);
|
player.$give(cards,targets[0]);
|
||||||
},
|
},
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
if(!game.zhu) return false;
|
var zhu=get.zhu('huangtian');
|
||||||
if(!game.zhu.isZhu) return false;
|
if(!zhu) return false;
|
||||||
return (player!=game.zhu&&game.zhu.skills.contains('huangtian')&&player.group=='qun')
|
return (player!=zhu&&player.group=='qun'&&
|
||||||
|
(player.num('h','shan')+player.num('h','shandian')>0))
|
||||||
},
|
},
|
||||||
filterCard:function(card){
|
filterCard:function(card){
|
||||||
return (card.name=='shan'||card.name=='shandian')
|
return (card.name=='shan'||card.name=='shandian')
|
||||||
},
|
},
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
return target==game.zhu;
|
return target.isZhu&&target.get('s').contains('huangtian');
|
||||||
},
|
},
|
||||||
usable:1,
|
usable:1,
|
||||||
forceaudio:true,
|
forceaudio:true,
|
||||||
|
|
133
character/sp.js
|
@ -44,6 +44,7 @@ character.sp={
|
||||||
// zhuling:['male','wei',4,['zhanyi']],
|
// zhuling:['male','wei',4,['zhanyi']],
|
||||||
sunluyu:['female','wu',3,['meibu','mumu']],
|
sunluyu:['female','wu',3,['meibu','mumu']],
|
||||||
hanba:['female','qun',4,['fentian','zhiri']],
|
hanba:['female','qun',4,['fentian','zhiri']],
|
||||||
|
zumao:['male','wu',4,['yinbing','juedi']],
|
||||||
},
|
},
|
||||||
perfectPair:{
|
perfectPair:{
|
||||||
zhugejin:['zhugeke'],
|
zhugejin:['zhugeke'],
|
||||||
|
@ -62,6 +63,133 @@ character.sp={
|
||||||
caohong:['caoren'],
|
caohong:['caoren'],
|
||||||
},
|
},
|
||||||
skill:{
|
skill:{
|
||||||
|
yinbing:{
|
||||||
|
trigger:{player:'phaseEnd'},
|
||||||
|
direct:true,
|
||||||
|
init:function(player){
|
||||||
|
player.storage.yinbing=[];
|
||||||
|
},
|
||||||
|
filter:function(event,player){
|
||||||
|
return player.num('he',{type:'basic'})<player.num('he');
|
||||||
|
},
|
||||||
|
marktext:'兵',
|
||||||
|
content:function(){
|
||||||
|
"step 0"
|
||||||
|
player.chooseCard([1,player.num('he')-player.num('he',{type:'basic'})],'he','是否发动【引兵】?',function(card){
|
||||||
|
return get.type(card)!='basic';
|
||||||
|
}).ai=function(card){
|
||||||
|
return 6-ai.get.value(card);
|
||||||
|
};
|
||||||
|
"step 1"
|
||||||
|
if(result.bool){
|
||||||
|
player.$give(result.cards,player,false);
|
||||||
|
player.logSkill('yinbing');
|
||||||
|
game.log(player,'将',result.cards,'置于武将牌上');
|
||||||
|
player.storage.yinbing=player.storage.yinbing.concat(result.cards);
|
||||||
|
player.lose(result.cards,ui.special);
|
||||||
|
player.markSkill('yinbing');
|
||||||
|
player.syncStorage('yinbing');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
intro:{
|
||||||
|
content:'cards',
|
||||||
|
onunmark:function(storage,player){
|
||||||
|
if(storage&&storage.length){
|
||||||
|
for(var i=0;i<storage.length;i++){
|
||||||
|
ui.discardPile.appendChild(storage[i]);
|
||||||
|
}
|
||||||
|
player.$throw(storage);
|
||||||
|
delete player.storage.yinbing;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
effect:{
|
||||||
|
target:function(card,player,target,current){
|
||||||
|
if(card.name=='sha'||card.name=='juedou'){
|
||||||
|
if(current<0) return 1.2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
threaten:1.2
|
||||||
|
},
|
||||||
|
subSkill:{
|
||||||
|
discard:{
|
||||||
|
trigger:{player:'damageEnd'},
|
||||||
|
forced:true,
|
||||||
|
filter:function(event,player){
|
||||||
|
return event.card&&player.storage.yinbing.length>0&&
|
||||||
|
(event.card.name=='sha'||event.card.name=='juedou');
|
||||||
|
},
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
player.chooseCardButton('将一张引兵牌置入弃牌堆',true,player.storage.yinbing);
|
||||||
|
'step 1'
|
||||||
|
var card=result.links[0];
|
||||||
|
player.storage.yinbing.remove(card);
|
||||||
|
ui.discardPile.appendChild(card);
|
||||||
|
player.$throw(card);
|
||||||
|
game.log(player,'将',card,'置入弃牌堆');
|
||||||
|
player.syncStorage('yinbing');
|
||||||
|
if(player.storage.yinbing.length==0){
|
||||||
|
player.unmarkSkill('yinbing');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
group:'yinbing_discard'
|
||||||
|
},
|
||||||
|
juedi:{
|
||||||
|
trigger:{player:'phaseBegin'},
|
||||||
|
filter:function(event,player){
|
||||||
|
return player.storage.yinbing&&player.storage.yinbing.length>0;
|
||||||
|
},
|
||||||
|
direct:true,
|
||||||
|
content:function(){
|
||||||
|
'step 0'
|
||||||
|
player.chooseTarget('是否发动【绝地】?',function(card,player,target){
|
||||||
|
return player.hp>=target.hp;
|
||||||
|
}).ai=function(target){
|
||||||
|
if(target==player) return 0.5;
|
||||||
|
var att=ai.get.attitude(player,target);
|
||||||
|
if(att<2) return 0;
|
||||||
|
if(target.hp==1&&att>2){
|
||||||
|
att+=2;
|
||||||
|
}
|
||||||
|
if(player.num('j','lebu')){
|
||||||
|
if(target.hp==target.maxHp) return att-2;
|
||||||
|
return att-1;
|
||||||
|
}
|
||||||
|
if(target.hp==target.maxHp) return 0;
|
||||||
|
if(player.num('h')<player.hp-1){
|
||||||
|
return att-3;
|
||||||
|
}
|
||||||
|
return att-2;
|
||||||
|
}
|
||||||
|
'step 1'
|
||||||
|
if(result.bool){
|
||||||
|
player.logSkill('juedi',result.targets);
|
||||||
|
if(result.targets[0]==player){
|
||||||
|
player.$throw(player.storage.yinbing,1000);
|
||||||
|
player.draw(player.storage.yinbing.length);
|
||||||
|
while(player.storage.yinbing.length){
|
||||||
|
ui.discardPile.appendChild(player.storage.yinbing.shift());
|
||||||
|
}
|
||||||
|
player.syncStorage('yinbing');
|
||||||
|
player.unmarkSkill('yinbing');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
var target=result.targets[0];
|
||||||
|
game.log(target,'获得了',player.storage.yinbing);
|
||||||
|
target.recover();
|
||||||
|
target.gain(player.storage.yinbing.slice(0),'gain2');
|
||||||
|
player.storage.yinbing.length=0;
|
||||||
|
}
|
||||||
|
player.syncStorage('yinbing');
|
||||||
|
player.unmarkSkill('yinbing');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
meibu:{
|
meibu:{
|
||||||
trigger:{global:'phaseUseBegin'},
|
trigger:{global:'phaseUseBegin'},
|
||||||
filter:function(event,player){
|
filter:function(event,player){
|
||||||
|
@ -4124,7 +4252,12 @@ character.sp={
|
||||||
sunluyu:'孙鲁育',
|
sunluyu:'孙鲁育',
|
||||||
hanba:'旱魃',
|
hanba:'旱魃',
|
||||||
panfeng:'潘凤',
|
panfeng:'潘凤',
|
||||||
|
zumao:'祖茂',
|
||||||
|
|
||||||
|
yinbing:'引兵',
|
||||||
|
yinbing_info:'结束阶段开始时,你可以将至少一张非基本牌置于武将牌上。每当你受到【杀】或【决斗】的伤害后,你将一张“引兵牌”置入弃牌堆。',
|
||||||
|
juedi:'绝地',
|
||||||
|
juedi_info:'准备阶段开始时,若你有“引兵牌”,你可以选择一项:1.将这些牌置入弃牌堆并摸等量的牌;2.令一名体力值不大于你的其他角色回复1点体力并获得这些牌。 ',
|
||||||
kuangfu:'狂斧',
|
kuangfu:'狂斧',
|
||||||
kuangfu_info:'每当你使用杀造成伤害,可以将对方的一张装备牌移到你的装备区',
|
kuangfu_info:'每当你使用杀造成伤害,可以将对方的一张装备牌移到你的装备区',
|
||||||
xintan:'心惔',
|
xintan:'心惔',
|
||||||
|
|
|
@ -1081,7 +1081,7 @@ character.xianjian={
|
||||||
}
|
}
|
||||||
"step 1"
|
"step 1"
|
||||||
if(result.bool){
|
if(result.bool){
|
||||||
player.logSkill('runxin');
|
player.logSkill('runxin',result.targets);
|
||||||
result.targets[0].recover();
|
result.targets[0].recover();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -374,6 +374,7 @@ character.yxs={
|
||||||
return 8-ai.get.value(card);
|
return 8-ai.get.value(card);
|
||||||
},
|
},
|
||||||
filterTarget:function(card,player,target){
|
filterTarget:function(card,player,target){
|
||||||
|
if(target.hp==Infinity) return false;
|
||||||
if(target.hp>player.hp) return true;
|
if(target.hp>player.hp) return true;
|
||||||
if(target.hp<player.hp&&target.hp<target.maxHp) return true;
|
if(target.hp<player.hp&&target.hp<target.maxHp) return true;
|
||||||
return false;
|
return false;
|
||||||
|
@ -1245,7 +1246,7 @@ character.yxs={
|
||||||
if(event.dialog){
|
if(event.dialog){
|
||||||
event.dialog.close();
|
event.dialog.close();
|
||||||
}
|
}
|
||||||
if(result.control!='cancel'){
|
if(result.control&&result.control.indexOf('2')!=-1){
|
||||||
player.logSkill('sheshi');
|
player.logSkill('sheshi');
|
||||||
game.log(player,'指定的花色为',result.control);
|
game.log(player,'指定的花色为',result.control);
|
||||||
var suit=result.control.slice(0,result.control.length-1);
|
var suit=result.control.slice(0,result.control.length-1);
|
||||||
|
|
266
game/game.js
|
@ -24,10 +24,12 @@
|
||||||
'牌堆管理',
|
'牌堆管理',
|
||||||
'战棋1v1、对决4v4',
|
'战棋1v1、对决4v4',
|
||||||
'年兽、守卫剑阁',
|
'年兽、守卫剑阁',
|
||||||
'注1:年兽在挑战模式,守卫剑阁在对决模式菜单中的游戏模式里选',
|
'炉石模式新卡',
|
||||||
|
'修复身份、国战开将过少导致不能游戏的bug',
|
||||||
|
'注1:年兽在挑战模式,守卫剑阁、4v4在对决模式菜单中的游戏模式里选',
|
||||||
'注2:此版本去掉了diy捉鬼和剑阁武将包,未来将进入diy武将包',
|
'注2:此版本去掉了diy捉鬼和剑阁武将包,未来将进入diy武将包',
|
||||||
'注3:此版本更改了手气卡代码,若要关闭需重新设置',
|
'注3:此版本更改了手气卡代码,若要关闭需重新设置',
|
||||||
'注4:安卓版预计一周内更新'
|
'注4:安卓版大约两周后更新'
|
||||||
],
|
],
|
||||||
configprefix:'noname_0.9_',
|
configprefix:'noname_0.9_',
|
||||||
updates:[],
|
updates:[],
|
||||||
|
@ -695,7 +697,7 @@
|
||||||
},
|
},
|
||||||
remember_dialog:{
|
remember_dialog:{
|
||||||
name:'记住对话框位置',
|
name:'记住对话框位置',
|
||||||
init:true,
|
init:false,
|
||||||
unfrequent:true,
|
unfrequent:true,
|
||||||
},
|
},
|
||||||
reset_dialog:{
|
reset_dialog:{
|
||||||
|
@ -1643,6 +1645,22 @@
|
||||||
unlimited:'无限',
|
unlimited:'无限',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
continue_game:{
|
||||||
|
name:'显示再战',
|
||||||
|
init:false,
|
||||||
|
onclick:function(bool){
|
||||||
|
game.saveConfig('continue_game',bool,this._link.config.mode);
|
||||||
|
if(get.config('continue_game')){
|
||||||
|
if(!ui.continue_game&&_status.over){
|
||||||
|
ui.continue_game=ui.create.control('再战',game.reloadCurrent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(ui.continue_game){
|
||||||
|
ui.continue_game.close();
|
||||||
|
delete ui.continue_game;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
dierestart:{
|
dierestart:{
|
||||||
name:'死亡后显示重来',
|
name:'死亡后显示重来',
|
||||||
init:true,
|
init:true,
|
||||||
|
@ -1659,22 +1677,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
continue_game:{
|
|
||||||
name:'显示继续游戏',
|
|
||||||
init:false,
|
|
||||||
onclick:function(bool){
|
|
||||||
game.saveConfig('continue_game',bool,this._link.config.mode);
|
|
||||||
if(get.config('continue_game')){
|
|
||||||
if(!ui.continue_game&&_status.over){
|
|
||||||
ui.continue_game=ui.create.control('继续',game.reloadCurrent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(ui.continue_game){
|
|
||||||
ui.continue_game.close();
|
|
||||||
delete ui.continue_game;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
revive:{
|
revive:{
|
||||||
name:'死亡后显示复活',
|
name:'死亡后显示复活',
|
||||||
init:false,
|
init:false,
|
||||||
|
@ -1879,6 +1881,22 @@
|
||||||
unlimited:'无限',
|
unlimited:'无限',
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
continue_game:{
|
||||||
|
name:'显示再战',
|
||||||
|
init:true,
|
||||||
|
onclick:function(bool){
|
||||||
|
game.saveConfig('continue_game',bool,this._link.config.mode);
|
||||||
|
if(get.config('continue_game')){
|
||||||
|
if(!ui.continue_game&&_status.over){
|
||||||
|
ui.continue_game=ui.create.control('再战',game.reloadCurrent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(ui.continue_game){
|
||||||
|
ui.continue_game.close();
|
||||||
|
delete ui.continue_game;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
dierestart:{
|
dierestart:{
|
||||||
name:'死亡后显示重来',
|
name:'死亡后显示重来',
|
||||||
init:true,
|
init:true,
|
||||||
|
@ -1895,22 +1913,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
continue_game:{
|
|
||||||
name:'显示继续游戏',
|
|
||||||
init:false,
|
|
||||||
onclick:function(bool){
|
|
||||||
game.saveConfig('continue_game',bool,this._link.config.mode);
|
|
||||||
if(get.config('continue_game')){
|
|
||||||
if(!ui.continue_game&&_status.over){
|
|
||||||
ui.continue_game=ui.create.control('继续',game.reloadCurrent);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if(ui.continue_game){
|
|
||||||
ui.continue_game.close();
|
|
||||||
delete ui.continue_game;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
revive:{
|
revive:{
|
||||||
name:'死亡后显示复活',
|
name:'死亡后显示复活',
|
||||||
init:false,
|
init:false,
|
||||||
|
@ -2513,7 +2515,7 @@
|
||||||
'<div style="margin:10px">构筑</div><ul style="margin-top:0"><li>点击右上角的卡组管理构建卡组<li>一套卡组共30张牌,由法术和随从牌构成,每个同名卡牌最多带两张'+
|
'<div style="margin:10px">构筑</div><ul style="margin-top:0"><li>点击右上角的卡组管理构建卡组<li>一套卡组共30张牌,由法术和随从牌构成,每个同名卡牌最多带两张'+
|
||||||
'<li>卡组管理器中,随从右上角的x/y表示登场状态为x牌y血'+
|
'<li>卡组管理器中,随从右上角的x/y表示登场状态为x牌y血'+
|
||||||
'<li>游戏开始时,双方摸三张牌并从牌库中获得一张牌,并可选择将手牌置换一次'+
|
'<li>游戏开始时,双方摸三张牌并从牌库中获得一张牌,并可选择将手牌置换一次'+
|
||||||
'<li>摸牌阶段,主将少摸一张牌,并从卡组中获得一张牌'+
|
'<li>每当主将摸X张牌时,若X至少为2,则其中的X-1张牌从牌堆中获得,1张牌从牌库中获得'+
|
||||||
'<li>每名角色使用一套卡组,卡组用完后会重新补满'+
|
'<li>每名角色使用一套卡组,卡组用完后会重新补满'+
|
||||||
'<li>卡组与职业绑定,每个职业有一个专属技能,每回合限用一次,消耗两点行动值</ul>'+
|
'<li>卡组与职业绑定,每个职业有一个专属技能,每回合限用一次,消耗两点行动值</ul>'+
|
||||||
'<div style="margin:10px">职业技能</div><ul style="margin-top:0"><li>祭司:召唤一个随机图腾'+
|
'<div style="margin:10px">职业技能</div><ul style="margin-top:0"><li>祭司:召唤一个随机图腾'+
|
||||||
|
@ -2525,12 +2527,12 @@
|
||||||
'<li>圣骑士:召唤一名士兵'+
|
'<li>圣骑士:召唤一名士兵'+
|
||||||
'<li>猎人:对敌方主将造成一点伤害'+
|
'<li>猎人:对敌方主将造成一点伤害'+
|
||||||
'<li>德鲁伊:视为使用一张不计入出杀次数的杀</ul>'+
|
'<li>德鲁伊:视为使用一张不计入出杀次数的杀</ul>'+
|
||||||
'<div style="margin:10px">战斗</div><ul style="margin-top:0"><li>游戏流程类似1v1,场上有两名主将进行对抗,主将的体力上限+2'+
|
'<div style="margin:10px">战斗</div><ul style="margin-top:0"><li>游戏流程类似1v1,场上有两名主将进行对抗,主将的体力上限+1'+
|
||||||
'<li>主将出牌阶段的出牌数量(行动值)有上限,先手为2,后手为3,装备牌不计入出牌上限<li>游戏每进行一轮,主将的出牌上限+1,超过6时减至2并重新累加'+
|
'<li>主将出牌阶段的出牌数量(行动值)有上限,先手为2,后手为3,装备牌不计入出牌上限<li>游戏每进行一轮,主将的出牌上限+1,超过6时减至3并重新累加'+
|
||||||
'<li>使用随从牌可召唤一个随从,随从出场时背面朝上。每一方在场的随从数不能超过4<li>随从于摸牌阶段摸牌基数为1,随从的随从牌均视为闪,装备牌均视为杀<li>'+
|
'<li>使用随从牌可召唤一个随从,随从出场时背面朝上。每一方在场的随从数不能超过4<li>随从于摸牌阶段摸牌基数为1,随从的随从牌均视为闪,装备牌均视为杀<li>'+
|
||||||
'随从与其他所有角色相互距离基数为1<li>'+
|
'随从与其他所有角色相互距离基数为1<li>'+
|
||||||
'主将杀死对方随从后获得一个额外的行动值并摸两张牌,杀死己方随从无惩罚,随从杀死随从无效果'+
|
'主将杀死对方随从后获得一个额外的行动值并摸两张牌,杀死己方随从无惩罚,随从杀死随从无效果'+
|
||||||
'<li>主将可重铸随从牌,但回合内总的重铸次数不能超过3,随从不能重铸任何牌(包括铁索等默认可以重铸的牌)'+
|
'<li>主将可重铸随从牌,但回合内总的重铸次数不能超过3,随从不能重铸任何牌(包括铁索等默认可以重铸的牌);若重铸的牌为随从牌或法术牌,则摸牌改为从牌库中获得一张法术牌'+
|
||||||
'<li>嘲讽:若一方阵营中有嘲讽角色,则同阵营的无嘲讽角色不以能成为杀或决斗的目标'+
|
'<li>嘲讽:若一方阵营中有嘲讽角色,则同阵营的无嘲讽角色不以能成为杀或决斗的目标'+
|
||||||
'<li>行动顺序为先主将后随从。主将或随从死亡后立即移出游戏,主将死亡后替补登场,替补登场时摸3+X张牌,X为对方存活的随从数,无替补时游戏结束'
|
'<li>行动顺序为先主将后随从。主将或随从死亡后立即移出游戏,主将死亡后替补登场,替补登场时摸3+X张牌,X为对方存活的随从数,无替补时游戏结束'
|
||||||
},
|
},
|
||||||
|
@ -4454,6 +4456,9 @@
|
||||||
game.playAudio('effect','draw');
|
game.playAudio('effect','draw');
|
||||||
}
|
}
|
||||||
if(event.drawDeck){
|
if(event.drawDeck){
|
||||||
|
if(event.drawDeck>num){
|
||||||
|
event.drawDeck=num;
|
||||||
|
}
|
||||||
num-=event.drawDeck;
|
num-=event.drawDeck;
|
||||||
}
|
}
|
||||||
if(event.log!=false){
|
if(event.log!=false){
|
||||||
|
@ -5319,7 +5324,10 @@
|
||||||
this.unmarkSkill('ghujia');
|
this.unmarkSkill('ghujia');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(lib.config.layout=='default'&&this.maxHp>14){
|
if(this.maxHp==Infinity){
|
||||||
|
hp.innerHTML='∞';
|
||||||
|
}
|
||||||
|
else if(lib.config.layout=='default'&&this.maxHp>14){
|
||||||
hp.innerHTML=this.hp+'/'+this.maxHp;
|
hp.innerHTML=this.hp+'/'+this.maxHp;
|
||||||
hp.classList.add('text');
|
hp.classList.add('text');
|
||||||
}
|
}
|
||||||
|
@ -6361,13 +6369,17 @@
|
||||||
else if(typeof arguments[i]=='boolean'){
|
else if(typeof arguments[i]=='boolean'){
|
||||||
next.animate=arguments[i];
|
next.animate=arguments[i];
|
||||||
}
|
}
|
||||||
else if(typeof arguments[i]=='object'&&arguments[i].drawDeck){
|
else if(typeof arguments[i]=='object'&&arguments[i].drawDeck!=undefined){
|
||||||
next.drawDeck=arguments[i].drawDeck;
|
next.drawDeck=arguments[i].drawDeck;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(next.num==undefined) next.num=1;
|
if(next.num==undefined) next.num=1;
|
||||||
if(next.num<=0) _status.event.next.remove(next);
|
if(next.num<=0) _status.event.next.remove(next);
|
||||||
next.content=lib.element.playerproto.draw;
|
next.content=lib.element.playerproto.draw;
|
||||||
|
if(lib.config.mode=='stone'&&_status.mode=='deck'&&
|
||||||
|
next.drawDeck==undefined&&!next.player.isMin()&&next.num>1){
|
||||||
|
next.drawDeck=1;
|
||||||
|
}
|
||||||
return next;
|
return next;
|
||||||
},
|
},
|
||||||
discard:function(){
|
discard:function(){
|
||||||
|
@ -7188,12 +7200,29 @@
|
||||||
}
|
}
|
||||||
},time)
|
},time)
|
||||||
},
|
},
|
||||||
|
isEnemyOf:function(){
|
||||||
|
return !this.isFriendOf.apply(this,arguments);
|
||||||
|
},
|
||||||
|
isFriendOf:function(player){
|
||||||
|
if(typeof this.side=='boolean'&&typeof player.side=='boolean'){
|
||||||
|
return this.side==player.side;
|
||||||
|
}
|
||||||
|
if(lib.config.mode=='guozhan'){
|
||||||
|
if(this.identity=='unknown'||this.identity=='ye') return false;
|
||||||
|
if(player.identity=='unknown'||player.identity=='ye') return false;
|
||||||
|
return this.identity==player.identity;
|
||||||
|
}
|
||||||
|
return this==player;
|
||||||
|
},
|
||||||
isAlive:function(){
|
isAlive:function(){
|
||||||
return this.classList.contains('dead')==false;
|
return this.classList.contains('dead')==false;
|
||||||
},
|
},
|
||||||
isDead:function(){
|
isDead:function(){
|
||||||
return this.classList.contains('dead');
|
return this.classList.contains('dead');
|
||||||
},
|
},
|
||||||
|
isDamaged:function(){
|
||||||
|
return this.hp<this.maxHp;
|
||||||
|
},
|
||||||
isLinked:function(){
|
isLinked:function(){
|
||||||
return this.classList.contains('linked');
|
return this.classList.contains('linked');
|
||||||
},
|
},
|
||||||
|
@ -9199,7 +9228,26 @@
|
||||||
delay:0.5,
|
delay:0.5,
|
||||||
content:function(){
|
content:function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
|
if(lib.config.mode=='stone'&&_status.mode=='deck'&&
|
||||||
|
!player.isMin()&&get.type(cards[0]).indexOf('stone')==0){
|
||||||
|
var list=[];
|
||||||
|
for(var i=0;i<player.deckCards.length;i++){
|
||||||
|
if(get.type(player.deckCards[i])=='stonecard'){
|
||||||
|
list.push(player.deckCards[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(list.length){
|
||||||
|
var choice=list.randomGet();
|
||||||
|
player.deckCards.remove(choice);
|
||||||
|
player.gain(choice,'draw');
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
player.draw({drawDeck:1})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else{
|
||||||
player.draw();
|
player.draw();
|
||||||
|
}
|
||||||
"step 1"
|
"step 1"
|
||||||
for(var i=0;i<cards.length;i++){
|
for(var i=0;i<cards.length;i++){
|
||||||
ui.discardPile.appendChild(cards[i]);
|
ui.discardPile.appendChild(cards[i]);
|
||||||
|
@ -11228,6 +11276,26 @@
|
||||||
}
|
}
|
||||||
return ui.create.card(ui.special).init([suit,number,name,nature]);
|
return ui.create.card(ui.special).init([suit,number,name,nature]);
|
||||||
},
|
},
|
||||||
|
forceOver:function(bool){
|
||||||
|
_status.event.next.length=0;
|
||||||
|
var next=game.createEvent('finish_game');
|
||||||
|
next.bool=bool;
|
||||||
|
next.content=function(){
|
||||||
|
'step 0'
|
||||||
|
while(ui.controls.length){
|
||||||
|
ui.controls[0].close();
|
||||||
|
}
|
||||||
|
while(ui.dialogs.length){
|
||||||
|
ui.dialogs[0].close();
|
||||||
|
}
|
||||||
|
'step 1'
|
||||||
|
game.over(event.bool);
|
||||||
|
};
|
||||||
|
if(_status.paused){
|
||||||
|
game.uncheck();
|
||||||
|
game.resume();
|
||||||
|
}
|
||||||
|
},
|
||||||
over:function(result){
|
over:function(result){
|
||||||
var i,j,k,num,table,tr,td,dialog;
|
var i,j,k,num,table,tr,td,dialog;
|
||||||
_status.over=true;
|
_status.over=true;
|
||||||
|
@ -11261,6 +11329,9 @@
|
||||||
_status.coin+=10;
|
_status.coin+=10;
|
||||||
}
|
}
|
||||||
_status.coin+=20;
|
_status.coin+=20;
|
||||||
|
if(_status.additionalReward){
|
||||||
|
_status.coin+=_status.additionalReward();
|
||||||
|
}
|
||||||
switch(lib.config.mode){
|
switch(lib.config.mode){
|
||||||
case 'identity':{
|
case 'identity':{
|
||||||
switch(game.me.identity){
|
switch(game.me.identity){
|
||||||
|
@ -11571,8 +11642,37 @@
|
||||||
if(game.controlOver){
|
if(game.controlOver){
|
||||||
game.controlOver();return;
|
game.controlOver();return;
|
||||||
}
|
}
|
||||||
if(get.config('continue_game')){
|
if(lib.config.mode=='boss'){
|
||||||
ui.continue_game=ui.create.control('继续',game.reloadCurrent);
|
ui.create.control('再战',function(){
|
||||||
|
var pointer=game.boss;
|
||||||
|
var map={boss:game.me==game.boss,links:[]};
|
||||||
|
for(var iwhile=0;iwhile<10;iwhile++){
|
||||||
|
pointer=pointer.nextSeat;
|
||||||
|
if(pointer==game.boss){
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
map.links.push(pointer.name);
|
||||||
|
}
|
||||||
|
game.saveConfig('continue_name_boss',map);
|
||||||
|
localStorage.setItem(lib.configprefix+'directstart',true);
|
||||||
|
game.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else if(lib.config.mode=='versus'){
|
||||||
|
if(_status.mode=='standard'){
|
||||||
|
ui.create.control('再战',function(){
|
||||||
|
game.saveConfig('continue_name_versus',{
|
||||||
|
friend:_status.friendBackup,
|
||||||
|
enemy:_status.enemyBackup,
|
||||||
|
color:_status.color
|
||||||
|
});
|
||||||
|
localStorage.setItem(lib.configprefix+'directstart',true);
|
||||||
|
game.reload();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(get.config('continue_game')){
|
||||||
|
ui.continue_game=ui.create.control('再战',game.reloadCurrent);
|
||||||
}
|
}
|
||||||
if(!ui.restart){
|
if(!ui.restart){
|
||||||
ui.restart=ui.create.control('restart',game.reload);
|
ui.restart=ui.create.control('restart',game.reload);
|
||||||
|
@ -11751,6 +11851,7 @@
|
||||||
range=get.select(event.selectButton);
|
range=get.select(event.selectButton);
|
||||||
if(range[0]!=range[1]||range[0]>1) auto=false;
|
if(range[0]!=range[1]||range[0]>1) auto=false;
|
||||||
for(i=0;i<dialog.buttons.length;i++){
|
for(i=0;i<dialog.buttons.length;i++){
|
||||||
|
if(dialog.buttons[i].classList.contains('unselectable')) continue;
|
||||||
if(event.filterButton(dialog.buttons[i],player)&&lib.filter.buttonIncluded(dialog.buttons[i])){
|
if(event.filterButton(dialog.buttons[i],player)&&lib.filter.buttonIncluded(dialog.buttons[i])){
|
||||||
if(ui.selected.buttons.length<range[1]){
|
if(ui.selected.buttons.length<range[1]){
|
||||||
dialog.buttons[i].classList.add('selectable');
|
dialog.buttons[i].classList.add('selectable');
|
||||||
|
@ -12458,6 +12559,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(lib.skill[i].marktext){
|
||||||
|
lib.translate[i+'_bg']=lib.skill[i].marktext;
|
||||||
|
}
|
||||||
if(i[0]=='_'){
|
if(i[0]=='_'){
|
||||||
lib.skill.global.add(i);
|
lib.skill.global.add(i);
|
||||||
}
|
}
|
||||||
|
@ -16479,6 +16583,9 @@
|
||||||
}
|
}
|
||||||
if(infoitem[2]>14){
|
if(infoitem[2]>14){
|
||||||
node.node.hp.innerHTML=infoitem[2];
|
node.node.hp.innerHTML=infoitem[2];
|
||||||
|
if(infoitem[2]==Infinity){
|
||||||
|
node.node.hp.innerHTML='∞';
|
||||||
|
}
|
||||||
node.node.hp.classList.add('text');
|
node.node.hp.classList.add('text');
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
@ -19458,6 +19565,27 @@
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
var get={
|
var get={
|
||||||
|
zhu:function(player,skill){
|
||||||
|
if(typeof player=='string'){
|
||||||
|
skill=player;
|
||||||
|
player=null;
|
||||||
|
}
|
||||||
|
if(lib.config.mode=='identity'){
|
||||||
|
if(skill&&!game.zhu.get('s').contains(skill)) return null;
|
||||||
|
if(game.zhu.isZhu) return game.zhu;
|
||||||
|
}
|
||||||
|
else if(lib.config.mode=='versus'&&_status.mode=='four'){
|
||||||
|
for(var i=0;i<game.players.length;i++){
|
||||||
|
if(game.players[i].isZhu){
|
||||||
|
if(skill&&!(game.players[i].get('s').contains(skill))) continue;
|
||||||
|
if(!player||player.side==game.players[i].side){
|
||||||
|
return game.players[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
},
|
||||||
config:function(item){
|
config:function(item){
|
||||||
if(!lib.config.mode_config[lib.config.mode]) return;
|
if(!lib.config.mode_config[lib.config.mode]) return;
|
||||||
return lib.config.mode_config[lib.config.mode][item];
|
return lib.config.mode_config[lib.config.mode][item];
|
||||||
|
@ -21393,7 +21521,7 @@
|
||||||
card={name:arguments[i]}
|
card={name:arguments[i]}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
source.useCard(card,game.me);
|
source.useCard(game.createCard(card.name,card.suit,card.number,card.nature),game.me);
|
||||||
},
|
},
|
||||||
rank:function(){
|
rank:function(){
|
||||||
var list=lib.rank.s.concat(lib.rank.ap).concat(lib.rank.a).concat(lib.rank.am).
|
var list=lib.rank.s.concat(lib.rank.ap).concat(lib.rank.a).concat(lib.rank.am).
|
||||||
|
@ -21419,7 +21547,7 @@
|
||||||
},
|
},
|
||||||
gx:function(name,target){
|
gx:function(name,target){
|
||||||
target=target||game.me;
|
target=target||game.me;
|
||||||
var fire=false,thunder=false;
|
var nature=null;
|
||||||
var suit=null;
|
var suit=null;
|
||||||
var suits=['club','spade','diamond','heart'];
|
var suits=['club','spade','diamond','heart'];
|
||||||
for(var i=0;i<suits.length;i++){
|
for(var i=0;i<suits.length;i++){
|
||||||
|
@ -21429,52 +21557,28 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(name.indexOf('red')==0){
|
||||||
|
name=name.slice(3);
|
||||||
|
suit=['diamond','heart'].randomGet();
|
||||||
|
}
|
||||||
|
if(name.indexOf('black')==0){
|
||||||
|
name=name.slice(5);
|
||||||
|
suit=['spade','club'].randomGet();
|
||||||
|
}
|
||||||
|
|
||||||
if(name=='huosha'){
|
if(name=='huosha'){
|
||||||
name='sha';
|
name='sha';
|
||||||
fire=true;
|
nature='fire';
|
||||||
}
|
}
|
||||||
else if(name=='leisha'){
|
else if(name=='leisha'){
|
||||||
name='sha';
|
name='sha';
|
||||||
thunder=true;
|
nature='thunder';
|
||||||
}
|
}
|
||||||
for(var i=0;i<ui.cardPile.childNodes.length;i++){
|
var card=game.createCard(name,suit,null,nature);
|
||||||
if(fire&&ui.cardPile.childNodes[i].nature!='fire'){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(thunder&&ui.cardPile.childNodes[i].nature!='thunder'){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(suit&&ui.cardPile.childNodes[i].suit!=suit){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(ui.cardPile.childNodes[i].name==name){
|
|
||||||
var card=ui.cardPile.childNodes[i];
|
|
||||||
target.node.handcards1.appendChild(card);
|
target.node.handcards1.appendChild(card);
|
||||||
game.check();
|
game.check();
|
||||||
target.update();
|
target.update();
|
||||||
ui.updatehl();
|
ui.updatehl();
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
for(var i=0;i<ui.discardPile.childNodes.length;i++){
|
|
||||||
if(fire&&ui.cardPile.childNodes[i].nature!='fire'){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(thunder&&ui.cardPile.childNodes[i].nature!='thunder'){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(suit&&ui.cardPile.childNodes[i].suit!=suit){
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
if(ui.discardPile.childNodes[i].name==name){
|
|
||||||
var card=ui.discardPile.childNodes[i];
|
|
||||||
target.node.handcards1.appendChild(card);
|
|
||||||
game.check();
|
|
||||||
target.update();
|
|
||||||
ui.updatehl();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
ge:function(){
|
ge:function(){
|
||||||
cheat.g('zhuge');
|
cheat.g('zhuge');
|
||||||
|
|
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 53 KiB |
After Width: | Height: | Size: 31 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 67 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 27 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 76 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 44 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 37 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 19 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 32 KiB |
After Width: | Height: | Size: 59 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 30 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 25 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 35 KiB |
After Width: | Height: | Size: 55 KiB |
After Width: | Height: | Size: 56 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 18 KiB |
After Width: | Height: | Size: 29 KiB |
After Width: | Height: | Size: 22 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 37 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 45 KiB |
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 38 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 46 KiB |
After Width: | Height: | Size: 15 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 24 KiB |
After Width: | Height: | Size: 40 KiB |
69
mode/boss.js
|
@ -156,6 +156,9 @@ mode.boss={
|
||||||
player.node.hp.classList.add('text');
|
player.node.hp.classList.add('text');
|
||||||
player.node.hp.dataset.condition='';
|
player.node.hp.dataset.condition='';
|
||||||
player.node.hp.innerHTML=info[2];
|
player.node.hp.innerHTML=info[2];
|
||||||
|
if(info[2]==Infinity){
|
||||||
|
player.node.hp.innerHTML='∞';
|
||||||
|
}
|
||||||
player.setIdentity(player.name);
|
player.setIdentity(player.name);
|
||||||
player.node.identity.dataset.color=info[5];
|
player.node.identity.dataset.color=info[5];
|
||||||
bosslistlinks[cfg]=player;
|
bosslistlinks[cfg]=player;
|
||||||
|
@ -204,6 +207,10 @@ mode.boss={
|
||||||
bosslist.show();
|
bosslist.show();
|
||||||
},200);
|
},200);
|
||||||
game.me=ui.create.player();
|
game.me=ui.create.player();
|
||||||
|
if(lib.config.continue_name_boss){
|
||||||
|
event.noslide=true;
|
||||||
|
}
|
||||||
|
else{
|
||||||
game.chooseCharacter(function(target){
|
game.chooseCharacter(function(target){
|
||||||
if(event.current){
|
if(event.current){
|
||||||
event.current.classList.remove('highlight');
|
event.current.classList.remove('highlight');
|
||||||
|
@ -212,6 +219,7 @@ mode.boss={
|
||||||
game.save('current',target.name);
|
game.save('current',target.name);
|
||||||
target.classList.add('highlight');
|
target.classList.add('highlight');
|
||||||
});
|
});
|
||||||
|
}
|
||||||
if(lib.storage.test){
|
if(lib.storage.test){
|
||||||
event.current.classList.remove('highlight');
|
event.current.classList.remove('highlight');
|
||||||
if(event.current.nextSibling&&event.current.nextSibling.classList.contains('player')){
|
if(event.current.nextSibling&&event.current.nextSibling.classList.contains('player')){
|
||||||
|
@ -239,14 +247,20 @@ mode.boss={
|
||||||
var boss=ui.create.player().init(event.current.name);
|
var boss=ui.create.player().init(event.current.name);
|
||||||
game.boss=boss;
|
game.boss=boss;
|
||||||
boss.side=true;
|
boss.side=true;
|
||||||
boss.classList.add('bossplayer');
|
if(!event.noslide){
|
||||||
boss.classList.add('highlight');
|
// boss.classList.add('bossplayer');
|
||||||
|
// boss.classList.add('highlight');
|
||||||
boss.animate('bossing');
|
boss.animate('bossing');
|
||||||
boss.node.hp.animate('start');
|
boss.node.hp.animate('start');
|
||||||
boss.style.left=(rect.left-ui.arena.offsetLeft)+'px';
|
boss.style.left=(rect.left-ui.arena.offsetLeft)+'px';
|
||||||
boss.style.top=(rect.top-ui.arena.offsetTop)+'px';
|
boss.style.top=(rect.top-ui.arena.offsetTop)+'px';
|
||||||
|
}
|
||||||
boss.setIdentity('zhu');
|
boss.setIdentity('zhu');
|
||||||
boss.identity='zhu';
|
boss.identity='zhu';
|
||||||
|
if(lib.config.continue_name_boss){
|
||||||
|
result=lib.config.continue_name_boss;
|
||||||
|
game.saveConfig('continue_name_boss');
|
||||||
|
}
|
||||||
for(var i=0;i<result.links.length;i++){
|
for(var i=0;i<result.links.length;i++){
|
||||||
var player=ui.create.player(ui.arena).init(result.links[i]).animate('start');
|
var player=ui.create.player(ui.arena).init(result.links[i]).animate('start');
|
||||||
player.setIdentity('cai');
|
player.setIdentity('cai');
|
||||||
|
@ -380,7 +394,9 @@ mode.boss={
|
||||||
_status.videoInited=true,
|
_status.videoInited=true,
|
||||||
info.boss=(game.me==game.boss);
|
info.boss=(game.me==game.boss);
|
||||||
game.addVideo('init',null,info);
|
game.addVideo('init',null,info);
|
||||||
|
if(game.bossinfo.init){
|
||||||
|
game.bossinfo.init();
|
||||||
|
}
|
||||||
"step 4"
|
"step 4"
|
||||||
event.trigger('gameStart');
|
event.trigger('gameStart');
|
||||||
game.gameDraw(game.boss);
|
game.gameDraw(game.boss);
|
||||||
|
@ -650,6 +666,53 @@ mode.boss={
|
||||||
if(player==game.boss&&game.boss.name!='boss_yecha'&&game.boss.name!='boss_luocha'){
|
if(player==game.boss&&game.boss.name!='boss_yecha'&&game.boss.name!='boss_luocha'){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
init:function(){
|
||||||
|
_status.additionalReward=function(){
|
||||||
|
return 500;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
boss_nianshou:{
|
||||||
|
chongzheng:99,
|
||||||
|
init:function(){
|
||||||
|
game.boss.node.action.classList.add('freecolor');
|
||||||
|
game.boss.node.action.style.opacity=1;
|
||||||
|
game.boss.node.action.style.letterSpacing='4px';
|
||||||
|
game.boss.node.action.style.marginRight=0;
|
||||||
|
game.boss.node.action.style.fontFamily='huangcao';
|
||||||
|
game.boss.node.action.innerHTML='';
|
||||||
|
_status.additionalReward=function(){
|
||||||
|
return Math.round(Math.pow(_status.damageCount,2.4))*2;
|
||||||
|
}
|
||||||
|
var time=360;
|
||||||
|
var interval=setInterval(function(){
|
||||||
|
if(_status.over){
|
||||||
|
clearInterval(interval);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var sec=time%60;
|
||||||
|
if(sec<10){
|
||||||
|
sec='0'+sec;
|
||||||
|
}
|
||||||
|
game.boss.node.action.innerHTML=Math.floor(time/60)+':'+sec;
|
||||||
|
if(time<=0){
|
||||||
|
delete _status.additionalReward;
|
||||||
|
if(typeof _status.coin=='number'){
|
||||||
|
if(game.me==game.boss){
|
||||||
|
_status.coin+=Math.round(Math.pow(_status.damageCount,2.4));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
_status.coin+=Math.round(Math.pow(_status.damageCount,1.8));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
game.forceOver(true);
|
||||||
|
clearInterval(interval);
|
||||||
|
}
|
||||||
|
time--;
|
||||||
|
},1000);
|
||||||
|
_status.damageCount=0;
|
||||||
|
ui.damageCount=ui.create.system('伤害: 0',null,true);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
boss_zhangjiao:{
|
boss_zhangjiao:{
|
||||||
|
|
|
@ -656,25 +656,6 @@ mode.chess={
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
playerproto:{
|
playerproto:{
|
||||||
finishGame:function(){
|
|
||||||
'step 0'
|
|
||||||
while(ui.controls.length){
|
|
||||||
ui.controls[0].close();
|
|
||||||
}
|
|
||||||
while(ui.dialogs.length){
|
|
||||||
ui.dialogs[0].close();
|
|
||||||
}
|
|
||||||
'step 1'
|
|
||||||
if(_status.friendDied<_status.enemyDied){
|
|
||||||
game.over(true);
|
|
||||||
}
|
|
||||||
else if(_status.friendDied>_status.enemyDied){
|
|
||||||
game.over(false);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
game.over();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
replaceChessPlayer:function(){
|
replaceChessPlayer:function(){
|
||||||
'step 0'
|
'step 0'
|
||||||
if(get.config('additional_player')){
|
if(get.config('additional_player')){
|
||||||
|
@ -2141,15 +2122,14 @@ mode.chess={
|
||||||
finishGameBr.classList.add('finish_game');
|
finishGameBr.classList.add('finish_game');
|
||||||
ui.finishGame=ui.create.system('结束游戏',function(){
|
ui.finishGame=ui.create.system('结束游戏',function(){
|
||||||
ui.finishGame.remove();
|
ui.finishGame.remove();
|
||||||
var next=game.createEvent('finish_game');
|
if(_status.friendDied<_status.enemyDied){
|
||||||
next.content=lib.element.playerproto.finishGame;
|
game.forceOver(true);
|
||||||
if(_status.paused){
|
|
||||||
if(_status.event.next.length>1){
|
|
||||||
_status.event.next.length=0;
|
|
||||||
_status.event.next.push(next);
|
|
||||||
}
|
}
|
||||||
game.uncheck();
|
else if(_status.friendDied>_status.enemyDied){
|
||||||
game.resume();
|
game.forceOver(false);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
game.forceOver();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
ui.finishGame.classList.add('finish_game');
|
ui.finishGame.classList.add('finish_game');
|
||||||
|
|
|
@ -210,11 +210,18 @@ mode.guozhan={
|
||||||
var next=game.createEvent('chooseCharacter',false);
|
var next=game.createEvent('chooseCharacter',false);
|
||||||
next.showConfig=true;
|
next.showConfig=true;
|
||||||
next.addPlayer=true;
|
next.addPlayer=true;
|
||||||
next.ai=function(player,list){
|
next.ai=function(player,list,back){
|
||||||
for(var i=0;i<list.length-1;i++){
|
for(var i=0;i<list.length-1;i++){
|
||||||
for(var j=i+1;j<list.length;j++){
|
for(var j=i+1;j<list.length;j++){
|
||||||
if(lib.character[list[i]][1]==lib.character[list[j]][1]){
|
if(lib.character[list[i]][1]==lib.character[list[j]][1]){
|
||||||
player.init(list[i],list[j],false);
|
player.init(list[i],list[j],false);
|
||||||
|
if(back){
|
||||||
|
list.remove(player.name1);
|
||||||
|
list.remove(player.name2);
|
||||||
|
for(var i=0;i<list.length;i++){
|
||||||
|
back.push(list[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -412,7 +419,7 @@ mode.guozhan={
|
||||||
event.list.remove(game.me.name2);
|
event.list.remove(game.me.name2);
|
||||||
for(var i=0;i<game.players.length;i++){
|
for(var i=0;i<game.players.length;i++){
|
||||||
if(game.players[i]!=game.me){
|
if(game.players[i]!=game.me){
|
||||||
event.ai(game.players[i],event.list.splice(0,parseInt(get.config('choice_num'))))
|
event.ai(game.players[i],event.list.splice(0,parseInt(get.config('choice_num'))),event.list);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(var i=0;i<game.players.length;i++){
|
for(var i=0;i<game.players.length;i++){
|
||||||
|
|
|
@ -348,7 +348,7 @@ mode.identity={
|
||||||
next.removePlayer=function(){
|
next.removePlayer=function(){
|
||||||
return game.players.randomGet(game.me,game.zhu);
|
return game.players.randomGet(game.me,game.zhu);
|
||||||
};
|
};
|
||||||
next.ai=function(player,list,list2){
|
next.ai=function(player,list,list2,back){
|
||||||
if(_status.event.zhongmode){
|
if(_status.event.zhongmode){
|
||||||
if(get.config('double_character')){
|
if(get.config('double_character')){
|
||||||
player.init(list[0],list[1]);
|
player.init(list[0],list[1]);
|
||||||
|
@ -410,6 +410,13 @@ mode.identity={
|
||||||
player.init(list[0]);
|
player.init(list[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if(back){
|
||||||
|
list.remove(player.name);
|
||||||
|
list.remove(player.name2);
|
||||||
|
for(var i=0;i<list.length;i++){
|
||||||
|
back.push(list[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
next.content=function(){
|
next.content=function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
|
@ -720,8 +727,7 @@ mode.identity={
|
||||||
}
|
}
|
||||||
for(var i=0;i<game.players.length;i++){
|
for(var i=0;i<game.players.length;i++){
|
||||||
if(game.players[i]!=game.zhu&&game.players[i]!=game.me){
|
if(game.players[i]!=game.zhu&&game.players[i]!=game.me){
|
||||||
event.ai(game.players[i],
|
event.ai(game.players[i],event.list.splice(0,get.config('choice_'+game.players[i].identity)),null,event.list)
|
||||||
event.list.splice(0,get.config('choice_'+game.players[i].identity)))
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2345
mode/stone.js
|
@ -298,6 +298,16 @@ mode.versus={
|
||||||
weiboss:[],shuboss:[],
|
weiboss:[],shuboss:[],
|
||||||
}
|
}
|
||||||
event.list=list;
|
event.list=list;
|
||||||
|
if(lib.characterPack.boss){
|
||||||
|
for(var i in lib.characterPack.boss){
|
||||||
|
if(!lib.character[i]&&lib.characterPack.boss[i][4]){
|
||||||
|
if(lib.characterPack.boss[i][4].contains('jiangeboss')||
|
||||||
|
lib.characterPack.boss[i][4].contains('jiangemech')){
|
||||||
|
lib.character[i]=lib.characterPack.boss[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
for(var i in lib.character){
|
for(var i in lib.character){
|
||||||
if(lib.character[i][4]){
|
if(lib.character[i][4]){
|
||||||
if(lib.character[i][4].contains('jiangeboss')){
|
if(lib.character[i][4].contains('jiangeboss')){
|
||||||
|
@ -596,6 +606,15 @@ mode.versus={
|
||||||
next.showConfig=true;
|
next.showConfig=true;
|
||||||
next.content=function(){
|
next.content=function(){
|
||||||
"step 0"
|
"step 0"
|
||||||
|
if(lib.config.continue_name_versus){
|
||||||
|
_status.friend=lib.config.continue_name_versus.friend;
|
||||||
|
_status.enemy=lib.config.continue_name_versus.enemy;
|
||||||
|
_status.color=lib.config.continue_name_versus.color;
|
||||||
|
game.additionaldead=[];
|
||||||
|
event.goto(1);
|
||||||
|
game.saveConfig('continue_name_versus');
|
||||||
|
return;
|
||||||
|
}
|
||||||
event.check=function(){
|
event.check=function(){
|
||||||
this.dialog.classList.add('fullwidth');
|
this.dialog.classList.add('fullwidth');
|
||||||
this.dialog.classList.add('fullheight');
|
this.dialog.classList.add('fullheight');
|
||||||
|
@ -907,6 +926,9 @@ mode.versus={
|
||||||
};
|
};
|
||||||
game.pause();
|
game.pause();
|
||||||
"step 1"
|
"step 1"
|
||||||
|
_status.friendBackup=_status.friend.slice(0);
|
||||||
|
_status.enemyBackup=_status.enemy.slice(0);
|
||||||
|
|
||||||
_status.friendDied=[];
|
_status.friendDied=[];
|
||||||
_status.enemyDied=[];
|
_status.enemyDied=[];
|
||||||
_status.totalCount=_status.friend.length;
|
_status.totalCount=_status.friend.length;
|
||||||
|
|