This commit is contained in:
libccy 2015-05-12 23:10:35 +08:00
parent 02b03b1ca5
commit aa7438c60d
5 changed files with 375 additions and 21 deletions

View File

@ -425,6 +425,8 @@ character.diy={
if(event.nature=='thunder') return true; if(event.nature=='thunder') return true;
}, },
forced:true, forced:true,
popup:false,
priority:1,
content:function(){ content:function(){
player.draw(); player.draw();
}, },

View File

@ -592,8 +592,16 @@ character.woods={
filter:function(event,player){ filter:function(event,player){
return !player.storage.luanwu; return !player.storage.luanwu;
}, },
init:function(player){
player.storage.luanwu=false;
},
mark:true,
intro:{
content:'limited'
},
content:function(){ content:function(){
"step 0" "step 0"
player.unmarkSkill('luanwu')
player.storage.luanwu=true; player.storage.luanwu=true;
event.current=player.next; event.current=player.next;
"step 1" "step 1"
@ -610,7 +618,7 @@ character.woods={
if(result.bool==false) event.current.loseHp(); if(result.bool==false) event.current.loseHp();
if(event.current.next!=player){ if(event.current.next!=player){
event.current=event.current.next; event.current=event.current.next;
game.delay(); game.delay(0.5);
event.goto(1); event.goto(1);
} }
}, },

View File

@ -2722,6 +2722,7 @@ character.yijiang={
player.storage.xiansi=[]; player.storage.xiansi=[];
}, },
unique:true, unique:true,
forceunique:true,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseTarget('是否发动陷嗣?',[1,2],function(card,player,target){ player.chooseTarget('是否发动陷嗣?',[1,2],function(card,player,target){

View File

@ -1279,6 +1279,7 @@ window.play={};
useSkill:function(){ useSkill:function(){
"step 0" "step 0"
var info=get.info(event.skill); var info=get.info(event.skill);
event._skill=event.skill;
if(lib.config.background_speak&&!lib.skill.global.contains(event.skill)){ if(lib.config.background_speak&&!lib.skill.global.contains(event.skill)){
if(info.audio){ if(info.audio){
game.playAudio('skill',event.skill,Math.ceil(info.audio*Math.random())); game.playAudio('skill',event.skill,Math.ceil(info.audio*Math.random()));
@ -1346,8 +1347,14 @@ window.play={};
"step 1" "step 1"
if(!event.skill){ if(!event.skill){
console.log('error: no skill',get.translation(event.player),event.player.get('s')); console.log('error: no skill',get.translation(event.player),event.player.get('s'));
event.finish(); if(event._skill){
return; event.skill=event._skill;
console.log(event._skill);
}
else{
event.finish();
return;
}
} }
var info=get.info(event.skill); var info=get.info(event.skill);
if(targets[num]&&targets[num].isDead()|| if(targets[num]&&targets[num].isDead()||
@ -3823,7 +3830,11 @@ window.play={};
return ui.autoreplace&&ui.autoreplace.classList.contains('on')&& return ui.autoreplace&&ui.autoreplace.classList.contains('on')&&
this.side==game.me.side; this.side==game.me.side;
} }
else if(lib.config.mode=='chess'||lib.config.mode=='boss'){ else if(lib.config.mode=='chess'){
return this.side==game.me.side;
}
else if(lib.config.mode=='boss'){
if(this.gonemad) return false;
return this.side==game.me.side; return this.side==game.me.side;
} }
return false; return false;

View File

@ -9,6 +9,25 @@ mode.boss={
if(this==game.boss||game.players.length==1){ if(this==game.boss||game.players.length==1){
game.checkResult(); game.checkResult();
} }
},
goMad:function(){
this.mark('乱',{
name:'混乱',
content:'已进入混乱状态'
});
this.gonemad=true;
if(this==game.me){
if(this.next.side==this.side){
game.modeSwapPlayer(this.next);
}
else if(this.previous.side==this.side){
game.modeSwapPlayer(this.previous);
}
else{
this.die();
}
}
game.log(get.translation(this)+'进入混乱状态');
} }
} }
}, },
@ -98,6 +117,10 @@ mode.boss={
} }
} }
} }
if(!event.current){
event.current=bosslist.childNodes[1];
event.current.classList.add('highlight');
}
ui.create.div(bosslist); ui.create.div(bosslist);
lib.translate.boss_pangtong='涅槃凤雏'; lib.translate.boss_pangtong='涅槃凤雏';
ui.create.arena(); ui.create.arena();
@ -136,9 +159,6 @@ mode.boss={
setTimeout(function(){ setTimeout(function(){
ui.control.classList.remove('bosslist'); ui.control.classList.remove('bosslist');
},500); },500);
if(!event.current){
event.current=event.bosslist.childNodes[1];
}
var rect=event.current.getBoundingClientRect(); var rect=event.current.getBoundingClientRect();
var boss=ui.create.player().init(event.current.name); var boss=ui.create.player().init(event.current.name);
game.boss=boss; game.boss=boss;
@ -463,6 +483,9 @@ mode.boss={
}, },
}, },
boss:{ boss:{
boss_zhangjiao:{
loopType:2,
},
boss_caiwenji:{ boss_caiwenji:{
loopType:2, loopType:2,
chongzheng:3 chongzheng:3
@ -476,6 +499,15 @@ mode.boss={
boss_lvbu1:{ boss_lvbu1:{
loopType:2 loopType:2
}, },
boss_zuoci:{
chongzheng:3,
},
boss_diaochan:{
chongzheng:3,
},
boss_huatuo:{
chongzheng:3,
},
global:{ global:{
loopType:1, loopType:1,
chongzheng:6 chongzheng:6
@ -492,21 +524,266 @@ mode.boss={
boss_lvbu1:['male','qun',8,['mashu','wushuang','boss_baonu'],['fullskin','boss'],'wei'], boss_lvbu1:['male','qun',8,['mashu','wushuang','boss_baonu'],['fullskin','boss'],'wei'],
boss_lvbu2:['male','qun',4,['mashu','wushuang','swd_xiuluo','shenwei','shenji'],['fullskin','hiddenboss'],'qun'], boss_lvbu2:['male','qun',4,['mashu','wushuang','swd_xiuluo','shenwei','shenji'],['fullskin','hiddenboss'],'qun'],
boss_caiwenji:['female','qun',4,['tinqin','beige','boss_hujia','boss_guihan'],['fullskin','boss'],'wei'], boss_caiwenji:['female','qun',4,['tinqin','beige','boss_hujia','boss_guihan'],['fullskin','boss'],'wei'],
boss_zhangjiao:['male','qun',8,[],['fullskin','boss'],'shu'], boss_zhangjiao:['male','qun',8,['diyleiji','guidao','tiangong','jidian'],['fullskin','boss'],'shu'],
boss_zuoci:['male','qun',8,[],['fullskin','boss'],'shu'], boss_zuoci:['male','qun',0,['huanhua'],['fullskin','boss'],'shu'],
// boss_yuji:['male','qun',8,[],['fullskin','boss'],'nei'], // boss_yuji:['male','qun',8,[],['fullskin','boss'],'nei'],
boss_diaochan:['male','qun',8,[],['fullskin','boss'],'qun'], boss_diaochan:['female','qun',4,['fengwu','yunshen','lianji','boss_wange','yuehun'],['fullskin','boss'],'qun'],
boss_huatuo:['male','qun',8,[],['fullskin','boss'],'wu'], boss_huatuo:['male','qun',6,['chulao','mazui','boss_shengshou','guizhen'],['fullskin','boss'],'wu'],
boss_dongzhuo:['male','qun',8,[],['fullskin','boss'],'shu'], boss_dongzhuo:['male','qun',20,['jiuchi','boss_qiangzheng','boss_baolin'],['fullskin','boss'],'shu'],
// boss_shuijing:['male','qun',8,[],['fullskin','boss'],'wei'], // boss_shuijing:['male','qun',8,[],['fullskin','boss'],'wei'],
}, },
skill:{ skill:{
boss_baolin:{
inherit:'juece',
},
boss_qiangzheng:{
trigger:{player:'phaseEnd'},
forced:true,
filter:function(event,player){
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&game.players[i].num('h')) return true;
}
return false;
},
content:function(){
"step 0"
var players=get.players(player);
players.remove(player);
event.players=players;
"step 1"
if(event.players.length){
var current=event.players.shift();
var hs=current.get('h')
if(hs.length){
player.gain(hs.randomGet());
current.$give(1,player);
}
event.redo();
}
}
},
guizhen:{
trigger:{player:'loseEnd'},
frequent:true,
filter:function(event,player){
if(player.num('h')) return false;
for(var i=0;i<event.cards.length;i++){
if(event.cards[i].original=='h') return true;
}
return false;
},
content:function(){
"step 0"
var players=get.players(player);
players.remove(player);
event.players=players;
"step 1"
if(event.players.length){
var current=event.players.shift();
var hs=current.get('h');
if(hs.length){
current.lose(hs)._triggered=null;
current.$throw(hs);
}
else{
current.loseHp();
}
game.delay(0.5);
event.redo();
}
},
},
boss_konghun:{
trigger:{player:'phaseEnd'},
direct:true,
filter:function(){
return game.players.length>=3;
},
content:function(){
"step 0"
player.chooseTarget(function(card,player,target){
return target!=player;
}).ai=function(){
return 1;
}
"step 1"
if(result.bool){
player.logSkill('boss_konghun',result.targets);
result.targets[0].goMad();
}
},
group:'boss_konghun2'
},
boss_konghun2:{
trigger:{player:'phaseBegin'},
forced:true,
popup:false,
content:function(){
var players=game.players.concat(game.dead);
for(var i=0;i<players.length;i++){
if(players[i].gonemad){
delete players[i].gonemad;
players[i].unmark('乱');
game.log(get.translation(players[i])+'解除混乱状态');
}
}
}
},
yuehun:{
unique:true,
trigger:{player:'phaseEnd'},
frequent:true,
content:function(){
player.recover();
player.draw(2);
}
},
boss_wange:{
inherit:'guiji'
},
fengwu:{
unique:true,
enable:'phaseUse',
usable:1,
content:function(){
"step 0"
event.current=player.next;
"step 1"
event.current.chooseToUse({name:'sha'},function(card,player,target){
if(player==target) return false;
if(get.distance(player,target)<=1) return true;
for(var i=0;i<game.players.length;i++){
if(game.players[i]==player) continue;
if(get.distance(player,game.players[i])<get.distance(player,target)) return false;
}
return true;
})
"step 2"
if(result.bool==false) event.current.loseHp();
if(event.current.next!=player){
event.current=event.current.next;
game.delay(0.5);
event.goto(1);
}
},
ai:{
order:1,
result:{
player:function(player){
if(player.num('h','shan')) return 1;
var num=0;
for(var i=0;i<game.players.length;i++){
if(game.players[i].canUse('sha',player)&&game.players[i].num('h')>1){
num--;
}
else{
num++;
}
}
return num;
}
}
}
},
huanhua:{
trigger:{global:'gameDrawAfter'},
forced:true,
unique:true,
content:function(){
for(var i=0;i<game.players.length;i++){
if(game.players[i]==player) continue;
player.maxHp+=game.players[i].maxHp;
var skills=lib.character[game.players[i].name][3];
for(var j=0;j<skills.length;j++){
if(!lib.skill[skills[j]].forceunique){
player.addSkill(skills[j]);
}
}
}
player.hp=player.maxHp;
player.update();
},
group:['huanhua2','huanhua3','huanhua4'],
ai:{
threaten:0.8,
effect:{
target:function(card){
if(card.name=='bingliang') return 0;
}
}
}
},
huanhua2:{
trigger:{player:'phaseDrawBefore'},
priority:10,
forced:true,
popup:false,
check:function(){
return false;
},
content:function(){
trigger.untrigger();
trigger.finish();
}
},
huanhua3:{
trigger:{global:'drawAfter'},
forced:true,
filter:function(event,player){
if(event.parent.name!='phaseDraw') return false;
return event.player!=player;
},
content:function(){
player.draw(trigger.num);
}
},
huanhua4:{
trigger:{global:'discardAfter'},
forced:true,
filter:function(event,player){
if(event.parent.parent.name!='phaseDiscard') return false;
return event.player!=player;
},
content:function(){
player.chooseToDiscard(trigger.cards.length,true);
}
},
jidian:{
trigger:{source:'damageAfter'},
direct:true,
unique:true,
content:function(){
"step 0"
player.chooseTarget('是否发动【亟电】?',function(card,player,target){
return get.distance(trigger.player,target)<=1&&trigger.player!=target;
}).ai=function(target){
return ai.get.damageEffect(target,player,player,'thunder')+0.1;
}
"step 1"
if(result.bool){
event.target=result.targets[0];
event.target.judge(function(card){
return get.color(card)=='red'?0:-1;
})
player.logSkill('jidian',event.target,false);
trigger.player.line(event.target,'thunder');
}
else{
event.finish();
}
"step 2"
if(result.color=='red'){
event.target.damage('thunder');
}
}
},
tinqin:{ tinqin:{
inherit:'manjuan' inherit:'manjuan'
}, },
boss_hujia:{ boss_hujia:{
trigger:{player:'phaseEnd'}, trigger:{player:'phaseEnd'},
direct:true, direct:true,
unique:true,
filter:function(event,player){ filter:function(event,player){
if(player.hp==player.maxHp) return false; if(player.hp==player.maxHp) return false;
if(!player.num('he')) return false; if(!player.num('he')) return false;
@ -519,7 +796,7 @@ mode.boss={
}, },
content:function(){ content:function(){
"step 0" "step 0"
var next=player.chooseCardTarget({ player.chooseCardTarget({
position:'he', position:'he',
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return player!=target&&!target.storage.boss_hujia; return player!=target&&!target.storage.boss_hujia;
@ -529,7 +806,8 @@ mode.boss={
return ai.get.unuseful(card)+9; return ai.get.unuseful(card)+9;
}, },
ai2:function(target){ ai2:function(target){
return Math.random(); if(target.disabledSkills.boss_hujia) return 0.5;
return 1;
}, },
prompt:'是否发动【胡笳】?' prompt:'是否发动【胡笳】?'
}); });
@ -573,6 +851,7 @@ mode.boss={
huoshen:{ huoshen:{
trigger:{player:'damageBefore'}, trigger:{player:'damageBefore'},
forced:true, forced:true,
unique:true,
filter:function(event){ filter:function(event){
return event.nature=='fire'; return event.nature=='fire';
}, },
@ -583,7 +862,7 @@ mode.boss={
}, },
ai:{ ai:{
effect:{ effect:{
target:function(card,player,target){ target:function(card){
if(get.tag(card,'fireDamage')){ if(get.tag(card,'fireDamage')){
return [0,2]; return [0,2];
} }
@ -594,6 +873,7 @@ mode.boss={
boss_xianyin:{ boss_xianyin:{
trigger:{player:'loseEnd'}, trigger:{player:'loseEnd'},
frequent:true, frequent:true,
unique:true,
filter:function(event,player){ filter:function(event,player){
return _status.currentPhase!=player; return _status.currentPhase!=player;
}, },
@ -620,7 +900,7 @@ mode.boss={
}, },
ai:{ ai:{
effect:{ effect:{
target:function(card,player,target){ target:function(card){
if(get.tag(card,'loseCard')){ if(get.tag(card,'loseCard')){
return [0.5,1]; return [0.5,1];
} }
@ -628,9 +908,28 @@ mode.boss={
} }
} }
}, },
boss_shengshou:{
trigger:{player:'useCard'},
frequent:true,
unique:true,
filter:function(event,player){
return player.hp<player.maxHp;
},
content:function(){
"step 0"
player.judge(function(card){
return get.color(card)=='red'?1:0;
});
"step 1"
if(result.bool){
player.recover();
}
},
},
boss_honglian:{ boss_honglian:{
trigger:{player:'phaseEnd'}, trigger:{player:'phaseEnd'},
forced:true, forced:true,
unique:true,
content:function(){ content:function(){
"step 0" "step 0"
event.players=get.players(player); event.players=get.players(player);
@ -647,6 +946,7 @@ mode.boss={
boss_yuhuo:{ boss_yuhuo:{
trigger:{player:'niepanAfter'}, trigger:{player:'niepanAfter'},
forced:true, forced:true,
unique:true,
content:function(){ content:function(){
player.addSkill('shenwei'); player.addSkill('shenwei');
player.addSkill('zhuyu'); player.addSkill('zhuyu');
@ -659,6 +959,7 @@ mode.boss={
boss_jizhi:{ boss_jizhi:{
trigger:{player:'useCard'}, trigger:{player:'useCard'},
frequent:true, frequent:true,
unique:true,
filter:function(event){ filter:function(event){
var type=get.type(event.card,'trick'); var type=get.type(event.card,'trick');
return (type=='trick'||type=='equip')&&event.cards[0]&&event.cards[0]==event.card; return (type=='trick'||type=='equip')&&event.cards[0]&&event.cards[0]==event.card;
@ -678,6 +979,7 @@ mode.boss={
boss_gongshen:{ boss_gongshen:{
trigger:{global:'gameDrawAfter'}, trigger:{global:'gameDrawAfter'},
forced:true, forced:true,
unique:true,
content:function(){ content:function(){
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player){ if(game.players[i]!=player){
@ -700,7 +1002,7 @@ mode.boss={
trigger:{player:'phaseEnd'}, trigger:{player:'phaseEnd'},
forced:true, forced:true,
unique:true, unique:true,
filter:function(event,player){ filter:function(){
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(game.players[i].isTurnedOver()){ if(game.players[i].isTurnedOver()){
return true; return true;
@ -739,7 +1041,6 @@ mode.boss={
}).ai=function(target){ }).ai=function(target){
if(target.isTurnedOver()) return -1; if(target.isTurnedOver()) return -1;
return 1; return 1;
return ai.get.damageEffect(target,player,player,'thunder');
} }
"step 1" "step 1"
if(result.bool){ if(result.bool){
@ -854,7 +1155,7 @@ mode.boss={
}, },
ai:{ ai:{
effect:{ effect:{
target:function(card,player,target){ target:function(card,player){
if(get.tag(card,'damage')||get.tag(card,'loseHp')){ if(get.tag(card,'damage')||get.tag(card,'loseHp')){
if(player.hp==5){ if(player.hp==5){
if(game.players.length<4) return [0,5]; if(game.players.length<4) return [0,5];
@ -897,6 +1198,28 @@ mode.boss={
}, },
}, },
translate:{ translate:{
boss_qiangzheng:'强征',
boss_qiangzheng_info:'锁定技,回合结束阶段,你获得每个敌方角色的一张手牌',
boss_baolin:'暴凌',
guizhen:'归真',
guizhen_info:'每当你失去最后一张手牌,你可以所有敌人失去全部手牌(不触发技能)',
boss_shengshou:'圣手',
boss_shengshou_info:'每当你使用一张牌,你可以进行一次判定,若为红色,你回复一点体力',
boss_konghun:'控心',
boss_konghun_info:'回合结束阶段,你可以指定一名敌人令其进入混乱状态(不受对方控制,并将队友视为敌人)直到下一回合开始',
yuehun:'月魂',
yuehun_info:'回合开始阶段,你可以回复一点体力并摸两张牌',
fengwu:'风舞',
fengwu_info:'出牌阶段限一次可令除你外的所有角色依次对与其距离最近的另一名角色使用一张【杀】无法如此做者失去1点体力。',
boss_wange:'笙歌',
huanhua:'幻化',
huanhua_info:'锁定技,游戏开始时,你获得其他角色的所有技能,体力上限变为其他角色之和;你没有摸牌阶段,其他角色于摸牌摸牌,或于弃牌阶段弃牌时,你摸或弃等量的牌',
jidian:'亟电',
jidian_info:'每当你造成一次伤害可以指定距离受伤害角色1以内的一名其他角色进行判定若结果为红色该角色受到一点雷电伤害',
tinqin:'听琴', tinqin:'听琴',
boss_guihan:'归汉', boss_guihan:'归汉',
boss_guihan_info:'觉醒技当所有敌人失去技能后你摸两张牌并将体力回复至体力上限然后令所有敌人将体力上限减至1', boss_guihan_info:'觉醒技当所有敌人失去技能后你摸两张牌并将体力回复至体力上限然后令所有敌人将体力上限减至1',
@ -931,10 +1254,12 @@ mode.boss={
shangshix2:'伤逝', shangshix2:'伤逝',
shangshix_info:'锁定技你的手牌数至少为4回合结束阶段若你的体力值大于1你令场上所有角色流失一点体力', shangshix_info:'锁定技你的手牌数至少为4回合结束阶段若你的体力值大于1你令场上所有角色流失一点体力',
boss_baonu:'暴怒',
boss_baonu_info:'锁定技当你的体力值降至4或更低时你变身为暴怒战神并立即开始你的回合',
shenwei:'神威', shenwei:'神威',
shenwei_info:'锁定技摸牌阶段你额外摸X张牌你的手牌上限+XX为敌方存活角色个数且至少为2', shenwei_info:'锁定技摸牌阶段你额外摸X张牌你的手牌上限+XX为敌方存活角色个数且至少为2',
shenji:'神戟', shenji:'神戟',
shenji:'你使用的杀或决斗可指定至多3名角色为目标', shenji_info:'你使用的杀或决斗可指定至多3名角色为目标',
zhu:'神', zhu:'神',
cai:'盟', cai:'盟',
@ -961,7 +1286,14 @@ mode.boss={
ai:{ ai:{
get:{ get:{
attitude:function(from,to){ attitude:function(from,to){
return 6*(from.side===to.side?1:-1); var t=(from.side===to.side?1:-1);
if(from.gonemad){
t=-t;
}
else if(to.gonemad){
t=0;
}
return 6*t;
} }
} }
}, },