This commit is contained in:
libccy 2016-01-28 14:46:42 +08:00
parent ed93d4b0a4
commit 80c94452ed
83 changed files with 3525 additions and 314 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1216,6 +1216,7 @@ character.extra={
dawu_info:'回合结束阶段你可以弃掉X枚“星”指定X名角色直到你的下回合开始防止他们受到的除雷电伤害外的一切伤害。',
kuangfeng:'狂风',
kuangfeng2:'狂风',
kuangfeng2_bg:'风',
// kuangfeng2_info:'已获得狂风标记',
kuangfeng3:'狂风',
kuangfeng_info:'回合结束阶段你可以弃掉1枚“星”指定一名角色直到你的下回合开始该角色每次受到的火焰伤害+1。',

View File

@ -525,9 +525,14 @@ character.shenhua={
intro:{
content:'cards'
},
mod:{
globalFrom:function(from,to,distance){
if(from.storage.tuntian) return distance-from.storage.tuntian.length;
group:'tuntian_dist',
subSkill:{
dist:{
mod:{
globalFrom:function(from,to,distance){
if(from.storage.tuntian) return distance-from.storage.tuntian.length;
}
}
}
},
ai:{
@ -708,20 +713,19 @@ character.shenhua={
forceaudio:true,
enable:'phaseUse',
filter:function(event,player){
if(!game.zhu) return false;
if(!game.zhu.isZhu) return false;
return (player!=game.zhu&&game.zhu.skills.contains('zhiba')&&
player.group=='wu'&&player.num('h')>0&&game.zhu.num('h')>0);
var zhu=get.zhu('zhiba');
if(!zhu) return false;
return (player!=zhu&&player.group=='wu'&&player.num('h')>0&&zhu.num('h')>0);
},
filterTarget:function(card,player,target){
return target==game.zhu;
return target.isZhu&&target.get('s').contains('zhiba');
},
usable:1,
content:function(){
"step 0"
player.chooseToCompare(target,function(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);
@ -738,10 +742,10 @@ character.shenhua={
},
expose:0.2,
result:{
target:function(player){
target:function(player,target){
if(player.num('h')<=player.hp) return false;
var maxnum=0;
var cards2=game.zhu.get('h');
var cards2=target.get('h');
for(var i=0;i<cards2.length;i++){
if(cards2[i].number>maxnum){
maxnum=cards2[i].number;
@ -1432,15 +1436,15 @@ character.shenhua={
forceaudio:true,
trigger:{player:'judgeEnd'},
filter:function(event,player){
if(!game.zhu) return false;
if(!game.zhu.isZhu) return false;
return (player!=game.zhu&&game.zhu.skills.contains('songwei')&&player.group=='wei'&&get.color(event.result.card)=='black');
var zhu=get.zhu('songwei');
if(!zhu) return false;
return (player!=zhu&&player.group=='wei'&&get.color(event.result.card)=='black');
},
check:function(event,player){
return ai.get.attitude(player,game.zhu)>0;
return ai.get.attitude(player,get.zhu('songwei'))>0;
},
content:function(){
game.zhu.draw();
get.zhu('songwei').draw();
}
},
duanliang:{
@ -1795,12 +1799,14 @@ character.shenhua={
forceaudio:true,
trigger:{source:'damageEnd'},
filter:function(event,player){
if(!game.zhu) return false;
if(!game.zhu.isZhu) return false;
return (player!=game.zhu&&game.zhu.skills.contains('baonue')&&player.group=='qun')&&game.zhu.hp<game.zhu.maxHp;
var zhu=get.zhu('baonue');
if(!zhu) return false;
return (player!=zhu&&player.group=='qun'&&zhu.hp<zhu.maxHp);
},
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(){
"step 0"
@ -1810,7 +1816,10 @@ character.shenhua={
})
"step 1"
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]);
},
filter:function(event,player){
if(!game.zhu) return false;
if(!game.zhu.isZhu) return false;
return (player!=game.zhu&&game.zhu.skills.contains('huangtian')&&player.group=='qun')
var zhu=get.zhu('huangtian');
if(!zhu) return false;
return (player!=zhu&&player.group=='qun'&&
(player.num('h','shan')+player.num('h','shandian')>0))
},
filterCard:function(card){
return (card.name=='shan'||card.name=='shandian')
},
filterTarget:function(card,player,target){
return target==game.zhu;
return target.isZhu&&target.get('s').contains('huangtian');
},
usable:1,
forceaudio:true,

View File

@ -44,6 +44,7 @@ character.sp={
// zhuling:['male','wei',4,['zhanyi']],
sunluyu:['female','wu',3,['meibu','mumu']],
hanba:['female','qun',4,['fentian','zhiri']],
zumao:['male','wu',4,['yinbing','juedi']],
},
perfectPair:{
zhugejin:['zhugeke'],
@ -62,6 +63,133 @@ character.sp={
caohong:['caoren'],
},
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:{
trigger:{global:'phaseUseBegin'},
filter:function(event,player){
@ -4124,7 +4252,12 @@ character.sp={
sunluyu:'孙鲁育',
hanba:'旱魃',
panfeng:'潘凤',
zumao:'祖茂',
yinbing:'引兵',
yinbing_info:'结束阶段开始时,你可以将至少一张非基本牌置于武将牌上。每当你受到【杀】或【决斗】的伤害后,你将一张“引兵牌”置入弃牌堆。',
juedi:'绝地',
juedi_info:'准备阶段开始时若你有“引兵牌”你可以选择一项1.将这些牌置入弃牌堆并摸等量的牌2.令一名体力值不大于你的其他角色回复1点体力并获得这些牌。 ',
kuangfu:'狂斧',
kuangfu_info:'每当你使用杀造成伤害,可以将对方的一张装备牌移到你的装备区',
xintan:'心惔',

View File

@ -1081,7 +1081,7 @@ character.xianjian={
}
"step 1"
if(result.bool){
player.logSkill('runxin');
player.logSkill('runxin',result.targets);
result.targets[0].recover();
}
},

View File

@ -374,6 +374,7 @@ character.yxs={
return 8-ai.get.value(card);
},
filterTarget:function(card,player,target){
if(target.hp==Infinity) return false;
if(target.hp>player.hp) return true;
if(target.hp<player.hp&&target.hp<target.maxHp) return true;
return false;
@ -1245,7 +1246,7 @@ character.yxs={
if(event.dialog){
event.dialog.close();
}
if(result.control!='cancel'){
if(result.control&&result.control.indexOf('2')!=-1){
player.logSkill('sheshi');
game.log(player,'指定的花色为',result.control);
var suit=result.control.slice(0,result.control.length-1);

View File

@ -24,10 +24,12 @@
'牌堆管理',
'战棋1v1、对决4v4',
'年兽、守卫剑阁',
'注1年兽在挑战模式守卫剑阁在对决模式菜单中的游戏模式里选',
'炉石模式新卡',
'修复身份、国战开将过少导致不能游戏的bug',
'注1年兽在挑战模式守卫剑阁、4v4在对决模式菜单中的游戏模式里选',
'注2此版本去掉了diy捉鬼和剑阁武将包未来将进入diy武将包',
'注3此版本更改了手气卡代码若要关闭需重新设置',
'注4安卓版预计一周内更新'
'注4安卓版大约两周后更新'
],
configprefix:'noname_0.9_',
updates:[],
@ -695,7 +697,7 @@
},
remember_dialog:{
name:'记住对话框位置',
init:true,
init:false,
unfrequent:true,
},
reset_dialog:{
@ -1643,6 +1645,22 @@
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:{
name:'死亡后显示重来',
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:{
name:'死亡后显示复活',
init:false,
@ -1879,6 +1881,22 @@
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:{
name:'死亡后显示重来',
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:{
name:'死亡后显示复活',
init:false,
@ -2513,7 +2515,7 @@
'<div style="margin:10px">构筑</div><ul style="margin-top:0"><li>点击右上角的卡组管理构建卡组<li>一套卡组共30张牌由法术和随从牌构成每个同名卡牌最多带两张'+
'<li>卡组管理器中随从右上角的x/y表示登场状态为x牌y血'+
'<li>游戏开始时,双方摸三张牌并从牌库中获得一张牌,并可选择将手牌置换一次'+
'<li>摸牌阶段,主将少摸一张牌,并从卡组中获得一张牌'+
'<li>每当主将摸X张牌时若X至少为2则其中的X-1张牌从牌堆中获得1张牌从牌库中获得'+
'<li>每名角色使用一套卡组,卡组用完后会重新补满'+
'<li>卡组与职业绑定,每个职业有一个专属技能,每回合限用一次,消耗两点行动值</ul>'+
'<div style="margin:10px">职业技能</div><ul style="margin-top:0"><li>祭司:召唤一个随机图腾'+
@ -2525,12 +2527,12 @@
'<li>圣骑士:召唤一名士兵'+
'<li>猎人:对敌方主将造成一点伤害'+
'<li>德鲁伊:视为使用一张不计入出杀次数的杀</ul>'+
'<div style="margin:10px">战斗</div><ul style="margin-top:0"><li>游戏流程类似1v1场上有两名主将进行对抗主将的体力上限+2'+
'<li>主将出牌阶段的出牌数量行动值有上限先手为2后手为3装备牌不计入出牌上限<li>游戏每进行一轮,主将的出牌上限+1超过6时减至2并重新累加'+
'<div style="margin:10px">战斗</div><ul style="margin-top:0"><li>游戏流程类似1v1场上有两名主将进行对抗主将的体力上限+1'+
'<li>主将出牌阶段的出牌数量行动值有上限先手为2后手为3装备牌不计入出牌上限<li>游戏每进行一轮,主将的出牌上限+1超过6时减至3并重新累加'+
'<li>使用随从牌可召唤一个随从随从出场时背面朝上。每一方在场的随从数不能超过4<li>随从于摸牌阶段摸牌基数为1随从的随从牌均视为闪装备牌均视为杀<li>'+
'随从与其他所有角色相互距离基数为1<li>'+
'主将杀死对方随从后获得一个额外的行动值并摸两张牌,杀死己方随从无惩罚,随从杀死随从无效果'+
'<li>主将可重铸随从牌但回合内总的重铸次数不能超过3随从不能重铸任何牌包括铁索等默认可以重铸的牌'+
'<li>主将可重铸随从牌但回合内总的重铸次数不能超过3随从不能重铸任何牌包括铁索等默认可以重铸的牌;若重铸的牌为随从牌或法术牌,则摸牌改为从牌库中获得一张法术牌'+
'<li>嘲讽:若一方阵营中有嘲讽角色,则同阵营的无嘲讽角色不以能成为杀或决斗的目标'+
'<li>行动顺序为先主将后随从。主将或随从死亡后立即移出游戏主将死亡后替补登场替补登场时摸3+X张牌X为对方存活的随从数无替补时游戏结束'
},
@ -4454,6 +4456,9 @@
game.playAudio('effect','draw');
}
if(event.drawDeck){
if(event.drawDeck>num){
event.drawDeck=num;
}
num-=event.drawDeck;
}
if(event.log!=false){
@ -5319,7 +5324,10 @@
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.classList.add('text');
}
@ -6361,13 +6369,17 @@
else if(typeof arguments[i]=='boolean'){
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;
}
}
if(next.num==undefined) next.num=1;
if(next.num<=0) _status.event.next.remove(next);
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;
},
discard:function(){
@ -7188,12 +7200,29 @@
}
},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(){
return this.classList.contains('dead')==false;
},
isDead:function(){
return this.classList.contains('dead');
},
isDamaged:function(){
return this.hp<this.maxHp;
},
isLinked:function(){
return this.classList.contains('linked');
},
@ -9199,7 +9228,26 @@
delay:0.5,
content:function(){
"step 0"
player.draw();
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();
}
"step 1"
for(var i=0;i<cards.length;i++){
ui.discardPile.appendChild(cards[i]);
@ -11228,6 +11276,26 @@
}
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){
var i,j,k,num,table,tr,td,dialog;
_status.over=true;
@ -11261,6 +11329,9 @@
_status.coin+=10;
}
_status.coin+=20;
if(_status.additionalReward){
_status.coin+=_status.additionalReward();
}
switch(lib.config.mode){
case 'identity':{
switch(game.me.identity){
@ -11571,8 +11642,37 @@
if(game.controlOver){
game.controlOver();return;
}
if(get.config('continue_game')){
ui.continue_game=ui.create.control('继续',game.reloadCurrent);
if(lib.config.mode=='boss'){
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){
ui.restart=ui.create.control('restart',game.reload);
@ -11751,6 +11851,7 @@
range=get.select(event.selectButton);
if(range[0]!=range[1]||range[0]>1) auto=false;
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(ui.selected.buttons.length<range[1]){
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]=='_'){
lib.skill.global.add(i);
}
@ -16479,6 +16583,9 @@
}
if(infoitem[2]>14){
node.node.hp.innerHTML=infoitem[2];
if(infoitem[2]==Infinity){
node.node.hp.innerHTML='∞';
}
node.node.hp.classList.add('text');
}
else{
@ -19458,6 +19565,27 @@
},
};
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){
if(!lib.config.mode_config[lib.config.mode]) return;
return lib.config.mode_config[lib.config.mode][item];
@ -21393,7 +21521,7 @@
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(){
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){
target=target||game.me;
var fire=false,thunder=false;
var nature=null;
var suit=null;
var suits=['club','spade','diamond','heart'];
for(var i=0;i<suits.length;i++){
@ -21429,52 +21557,28 @@
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'){
name='sha';
fire=true;
nature='fire';
}
else if(name=='leisha'){
name='sha';
thunder=true;
}
for(var i=0;i<ui.cardPile.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.cardPile.childNodes[i].name==name){
var card=ui.cardPile.childNodes[i];
target.node.handcards1.appendChild(card);
game.check();
target.update();
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;
}
nature='thunder';
}
var card=game.createCard(name,suit,null,nature);
target.node.handcards1.appendChild(card);
game.check();
target.update();
ui.updatehl();
},
ge:function(){
cheat.g('zhuge');

BIN
image/card/spell_ansezhadan.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
image/card/spell_beici.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

BIN
image/card/spell_chongfeng.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
image/card/spell_dubiao.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
image/card/spell_emozhixin.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

BIN
image/card/spell_enzeshu.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
image/card/spell_fengnu.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
image/card/spell_fennu.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

BIN
image/card/spell_fuchoudaji.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
image/card/spell_fugen.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
image/card/spell_fushishu.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
image/card/spell_heiandiyu.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

BIN
image/card/spell_heianqiyue.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
image/card/spell_jingxiang.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
image/card/spell_jipao.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

BIN
image/card/spell_kongxinshu.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
image/card/spell_kuangbao.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
image/card/spell_mengun.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
image/card/spell_shihuawuqi.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
image/card/spell_xianzuzhihun.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

BIN
image/card/spell_xianzuzhishi.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

BIN
image/card/spell_yingyongdaji.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
image/card/spell_yongshizhufu.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

BIN
image/card/spell_zhandounuhuo.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

BIN
image/card/spell_zhenyanshu.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
image/card/spell_zhihuizhufu.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
image/card/spell_zhuizongshu.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

BIN
image/card/spell_zhumo.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
image/card/spell_ziyang.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

Before

Width:  |  Height:  |  Size: 37 KiB

After

Width:  |  Height:  |  Size: 37 KiB

View File

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 45 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

View File

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 41 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
image/character/stone_zhumo.jpg Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
image/character/zumao.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

View File

@ -156,6 +156,9 @@ mode.boss={
player.node.hp.classList.add('text');
player.node.hp.dataset.condition='';
player.node.hp.innerHTML=info[2];
if(info[2]==Infinity){
player.node.hp.innerHTML='∞';
}
player.setIdentity(player.name);
player.node.identity.dataset.color=info[5];
bosslistlinks[cfg]=player;
@ -204,14 +207,19 @@ mode.boss={
bosslist.show();
},200);
game.me=ui.create.player();
game.chooseCharacter(function(target){
if(event.current){
event.current.classList.remove('highlight');
}
event.current=target;
game.save('current',target.name);
target.classList.add('highlight');
});
if(lib.config.continue_name_boss){
event.noslide=true;
}
else{
game.chooseCharacter(function(target){
if(event.current){
event.current.classList.remove('highlight');
}
event.current=target;
game.save('current',target.name);
target.classList.add('highlight');
});
}
if(lib.storage.test){
event.current.classList.remove('highlight');
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);
game.boss=boss;
boss.side=true;
boss.classList.add('bossplayer');
boss.classList.add('highlight');
boss.animate('bossing');
boss.node.hp.animate('start');
boss.style.left=(rect.left-ui.arena.offsetLeft)+'px';
boss.style.top=(rect.top-ui.arena.offsetTop)+'px';
if(!event.noslide){
// boss.classList.add('bossplayer');
// boss.classList.add('highlight');
boss.animate('bossing');
boss.node.hp.animate('start');
boss.style.left=(rect.left-ui.arena.offsetLeft)+'px';
boss.style.top=(rect.top-ui.arena.offsetTop)+'px';
}
boss.setIdentity('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++){
var player=ui.create.player(ui.arena).init(result.links[i]).animate('start');
player.setIdentity('cai');
@ -380,7 +394,9 @@ mode.boss={
_status.videoInited=true,
info.boss=(game.me==game.boss);
game.addVideo('init',null,info);
if(game.bossinfo.init){
game.bossinfo.init();
}
"step 4"
event.trigger('gameStart');
game.gameDraw(game.boss);
@ -650,6 +666,53 @@ mode.boss={
if(player==game.boss&&game.boss.name!='boss_yecha'&&game.boss.name!='boss_luocha'){
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:{

View File

@ -656,25 +656,6 @@ mode.chess={
}
},
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(){
'step 0'
if(get.config('additional_player')){
@ -2141,15 +2122,14 @@ mode.chess={
finishGameBr.classList.add('finish_game');
ui.finishGame=ui.create.system('结束游戏',function(){
ui.finishGame.remove();
var next=game.createEvent('finish_game');
next.content=lib.element.playerproto.finishGame;
if(_status.paused){
if(_status.event.next.length>1){
_status.event.next.length=0;
_status.event.next.push(next);
}
game.uncheck();
game.resume();
if(_status.friendDied<_status.enemyDied){
game.forceOver(true);
}
else if(_status.friendDied>_status.enemyDied){
game.forceOver(false);
}
else{
game.forceOver();
}
});
ui.finishGame.classList.add('finish_game');

View File

@ -210,11 +210,18 @@ mode.guozhan={
var next=game.createEvent('chooseCharacter',false);
next.showConfig=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 j=i+1;j<list.length;j++){
if(lib.character[list[i]][1]==lib.character[list[j]][1]){
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;
}
}
@ -412,7 +419,7 @@ mode.guozhan={
event.list.remove(game.me.name2);
for(var i=0;i<game.players.length;i++){
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++){

View File

@ -348,7 +348,7 @@ mode.identity={
next.removePlayer=function(){
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(get.config('double_character')){
player.init(list[0],list[1]);
@ -410,6 +410,13 @@ mode.identity={
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(){
"step 0"
@ -720,8 +727,7 @@ mode.identity={
}
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=game.zhu&&game.players[i]!=game.me){
event.ai(game.players[i],
event.list.splice(0,get.config('choice_'+game.players[i].identity)))
event.ai(game.players[i],event.list.splice(0,get.config('choice_'+game.players[i].identity)),null,event.list)
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -298,6 +298,16 @@ mode.versus={
weiboss:[],shuboss:[],
}
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){
if(lib.character[i][4]){
if(lib.character[i][4].contains('jiangeboss')){
@ -596,6 +606,15 @@ mode.versus={
next.showConfig=true;
next.content=function(){
"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(){
this.dialog.classList.add('fullwidth');
this.dialog.classList.add('fullheight');
@ -907,6 +926,9 @@ mode.versus={
};
game.pause();
"step 1"
_status.friendBackup=_status.friend.slice(0);
_status.enemyBackup=_status.enemy.slice(0);
_status.friendDied=[];
_status.enemyDied=[];
_status.totalCount=_status.friend.length;