This commit is contained in:
libccy 2017-01-28 10:03:53 +08:00
parent d55a359e45
commit 8f93d2b45b
10 changed files with 204 additions and 46 deletions

View File

@ -1859,7 +1859,7 @@ card.swd={
return player.canUse('sha',target); return player.canUse('sha',target);
}, },
filter:function(event,player){ filter:function(event,player){
return player.num('h','sha')>0; return player.num('h','sha')>0&&lib.filter.cardUsable({name:'sha'},player);
}, },
content:function(){ content:function(){
'step 0' 'step 0'

View File

@ -1209,10 +1209,10 @@ character.hearth={
num=1; num=1;
} }
var list=['hslingjian_zhongxinghujia','hslingjian_xuanfengzhiren','hslingjian_yinmilichang', var list=['hslingjian_zhongxinghujia','hslingjian_xuanfengzhiren','hslingjian_yinmilichang',
'hslingjian_shengxiuhaojiao','hslingjian_jinjilengdong','hslingjian_xingtigaizao','hslingjian_shijianhuisu']; 'hslingjian_shengxiuhaojiao','hslingjian_xingtigaizao','hslingjian_shijianhuisu'];
if(get.mode()=='stone'){ // if(get.mode()=='stone'){
list.remove('hslingjian_jinjilengdong'); // list.remove('hslingjian_jinjilengdong');
} // }
var cards=[]; var cards=[];
while(num--){ while(num--){
cards.push(game.createCard(list.randomGet())); cards.push(game.createCard(list.randomGet()));
@ -2656,7 +2656,7 @@ character.hearth={
}); });
} }
else{ else{
event.target.draw(2); event.target.draw();
event.finish(); event.finish();
} }
} }
@ -5440,7 +5440,7 @@ character.hearth={
zengli:'赠礼', zengli:'赠礼',
zengli_info:'出牌阶段限一次,你指定一名其他角色与你各装备一把武器', zengli_info:'出牌阶段限一次,你指定一名其他角色与你各装备一把武器',
xiubu:'修补', xiubu:'修补',
xiubu_info:'每当你装备一把未强化的武器,你可以获得数量等同于武器攻击范围的随机零件', xiubu_info:'每当你装备一把未强化的武器,你可以获得数量等同于武器攻击范围的随机零件(冰冻零件除外)',
mobao:'魔爆', mobao:'魔爆',
mobao_info:'出牌阶段限一次,你可以弃置至多三张黑色牌,然后对所有于上轮对你造成过伤害的角色造成等同于你弃牌数的雷电伤害', mobao_info:'出牌阶段限一次,你可以弃置至多三张黑色牌,然后对所有于上轮对你造成过伤害的角色造成等同于你弃牌数的雷电伤害',
xianji:'献祭', xianji:'献祭',
@ -5533,7 +5533,7 @@ character.hearth={
mianyi:'免疫', mianyi:'免疫',
mianyi_info:'锁定技,你不能成为其他角色的非延时锦囊的目标', mianyi_info:'锁定技,你不能成为其他角色的非延时锦囊的目标',
jiaohui:'教诲', jiaohui:'教诲',
jiaohui_info:'回合结束阶段,若你没有于本回合内造成伤害,你可以令一名角色摸张牌或回复一点体力', jiaohui_info:'回合结束阶段,若你没有于本回合内造成伤害,你可以令一名角色摸张牌或回复一点体力',
chenshui:'沉睡', chenshui:'沉睡',
chenshui_info:'回合结束阶段,你可以将一张随机梦境牌加入你的手牌', chenshui_info:'回合结束阶段,你可以将一张随机梦境牌加入你的手牌',
hsmengjing:'梦境', hsmengjing:'梦境',

View File

@ -24,9 +24,155 @@ character.ow={
// ow_luba:['male','shu',4,[]], // ow_luba:['male','shu',4,[]],
// ow_wensidun:['male','shu',4,[]], // ow_wensidun:['male','shu',4,[]],
// ow_zhaliya:['female','shu',4,['pingzhang','lichang']], // ow_zhaliya:['female','shu',4,['pingzhang','lichang']],
// ow_heiying:['female','wei',3,[]], ow_heiying:['female','wei',3,['qinru','yinshen','maichong']],
}, },
skill:{ skill:{
qinru:{
trigger:{player:'useCardToBegin'},
filter:function(event,player){
return event.target!=player&&event.targets&&event.targets.length==1&&!event.target.hasSkill('qinru2');
},
logTarget:'target',
check:function(event,player){
return ai.get.attitude(player,event.player)<0;
},
content:function(){
'step 0'
trigger.target.judge(function(card){
return get.suit(card)=='heart'?0:-1;
});
'step 1'
if(result.suit!='heart'){
var target=trigger.target;
var skills=target.get('s');
var list=[];
for(var i=0;i<skills.length;i++){
if(!get.is.locked(skills[i])){
list.push(skills[i]);
}
}
if(!player.storage.qinru){
player.storage.qinru=[];
}
for(var i=0;i<player.storage.qinru.length;i++){
if(!game.players.contains(player.storage.qinru[i])){
player.storage.qinru.splice(i--,1);
}
}
player.storage.qinru.remove(target);
player.storage.qinru.push(target);
if(player.storage.qinru.length>2){
player.storage.qinru.shift();
}
target.disableSkill('qinru',list);
target.addSkill('qinru2');
}
},
ai:{
expose:0.2,
threaten:1.3,
}
},
qinru2:{
trigger:{player:'phaseAfter'},
forced:true,
mark:true,
audio:false,
popup:false,
content:function(){
player.enableSkill('qinru');
player.removeSkill('qinru2');
},
intro:{
content:function(st,player){
var storage=player.disabledSkills.qinru;
if(storage&&storage.length){
var str='失效技能:';
for(var i=0;i<storage.length;i++){
if(lib.translate[storage[i]+'_info']){
str+=get.translation(storage[i])+'、';
}
}
return str.slice(0,str.length-1);
}
}
}
},
yinshen:{
trigger:{player:'phaseEnd'},
direct:true,
filter:function(event,player){
return player.num('he',{type:'equip'})>0;
},
content:function(){
"step 0"
var next=player.chooseToDiscard(get.prompt('yinshen'),'he',{type:'equip'});
next.logSkill='yinshen';
next.ai=function(card){
if(player.hp==1) return 8-ai.get.value(card);
if(player.isZhu) return 7-ai.get.value(card);
if(player.hp==2) return 6-ai.get.value(card);
return 5-ai.get.value(card);
};
"step 1"
if(result.bool){
player.addTempSkill('qianxing',{player:'phaseBegin'});
}
},
},
maichong:{
trigger:{player:'phaseBegin'},
filter:function(event,player){
if(player.storage.qinru){
for(var i=0;i<player.storage.qinru.length;i++){
if(player.storage.qinru[i].isAlive()&&player.storage.qinru[i].num('he')) return true;
}
}
},
logTarget:function(event,player){
var list=[];
if(player.storage.qinru){
for(var i=0;i<player.storage.qinru.length;i++){
if(player.storage.qinru[i].isAlive()&&player.storage.qinru[i].num('he')){
list.push(player.storage.qinru[i]);
}
}
}
return list;
},
content:function(){
'step 0'
var list=[];
if(player.storage.qinru){
for(var i=0;i<player.storage.qinru.length;i++){
if(player.storage.qinru[i].isAlive()&&player.storage.qinru[i].num('he')){
list.push(player.storage.qinru[i]);
}
}
}
event.list=list;
'step 1'
if(event.list.length){
var current=event.list.shift();
var he=current.get('he');
if(he.length){
var card=he.randomGet();
current.discard(card);
if(get.type(card)!='basic'){
event.bool=true;
}
}
event.redo();
}
'step 2'
if(event.bool){
player.draw();
}
},
ai:{
threaten:1.5
}
},
mengji:{ mengji:{
trigger:{source:'damageBegin'}, trigger:{source:'damageBegin'},
forced:true, forced:true,
@ -2747,6 +2893,14 @@ character.ow={
} }
}, },
translate:{ translate:{
ow_heiying:'黑影',
qinru:'侵入',
qinru2:'侵入',
qinru_info:'每当你使用卡牌指定惟一目标时,你可以令目标进行一次判定,若结果不为红桃,该角色的非锁定技失效直到其下一回合结束',
yinshen:'隐身',
yinshen_info:'回合结束阶段,你可以弃置一张装备牌并获得潜行直到下一回合开始',
maichong:'脉冲',
maichong_info:'回合开始阶段,你可以令最近两名被你侵入的角色各随机弃置一张牌,若弃置的牌中有非基本牌,你摸一张牌',
lichang:'力场', lichang:'力场',
lichang2:'力场', lichang2:'力场',
lichang_info:'回合结束阶段你可以弃置一张红色牌若如此做你可以在下个回合开始时令一名距离1以内的角色回复一点体力或摸两张牌', lichang_info:'回合结束阶段你可以弃置一张红色牌若如此做你可以在下个回合开始时令一名距离1以内的角色回复一点体力或摸两张牌',

View File

@ -62,6 +62,7 @@ window.characterRank={
], ],
a:[ a:[
'hs_aya', 'hs_aya',
'ow_heiying',
'pal_longkui', 'pal_longkui',
'pal_nangonghuang', 'pal_nangonghuang',
'pal_xingxuan', 'pal_xingxuan',

View File

@ -817,7 +817,6 @@ character.sp={
content:function(){ content:function(){
target.gain(cards,player); target.gain(cards,player);
target.recover(); target.recover();
game.delay();
}, },
ai:{ ai:{
order:function(skill,player){ order:function(skill,player){

View File

@ -2154,23 +2154,23 @@ character.xianjian={
threaten:1.5 threaten:1.5
} }
}, },
xiaoyao_old:{ xiaoyao:{
group:'feiying',
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){
return event.player!=player&&player.num('he')>1; if(event.player==player) return false;
if(event.cards&&event.cards.length==1){
return player.num('h',{suit:get.suit(event.cards[0])})>0;
}
return false;
}, },
trigger:{target:'useCardToBefore'}, trigger:{target:'useCardToBefore'},
content:function(){ content:function(){
"step 0" "step 0"
var next=player.chooseToDiscard('是否弃置两张牌使'+get.translation(trigger.card)+'失效?','he',2); var next=player.chooseToDiscard('逍遥:是否弃置一张牌使'+get.translation(trigger.card)+'失效?',{suit:get.suit(trigger.cards[0])});
next.logSkill='xiaoyao'; next.logSkill='xiaoyao';
next.ai=function(card){ next.ai=function(card){
if(ai.get.effect(player,trigger.card,trigger.player,player)<0){ if(ai.get.effect(player,trigger.card,trigger.player,player)<0){
if(get.tag(trigger.card,'respondSha')&&player.num('h','sha')) return 0; return 7-ai.get.value(card);
if(get.tag(trigger.card,'respondShan')&&player.num('h','shan')) return 0;
if(card.name=='guohe') return 0;
return 4-ai.get.value(card);
} }
return 0; return 0;
} }
@ -2181,28 +2181,6 @@ character.xianjian={
} }
} }
}, },
xiaoyao:{
trigger:{player:'phaseEnd'},
direct:true,
filter:function(event,player){
return player.num('he',{type:'equip'})>0;
},
content:function(){
"step 0"
var next=player.chooseToDiscard(get.prompt('xiaoyao'),'he',{type:'equip'});
next.logSkill='xiaoyao';
next.ai=function(card){
if(player.hp==1) return 8-ai.get.value(card);
if(player.isZhu) return 7-ai.get.value(card);
if(player.hp==2) return 6-ai.get.value(card);
return 5-ai.get.value(card);
};
"step 1"
if(result.bool){
player.addTempSkill('qianxing',{player:'phaseBegin'});
}
},
},
tuoqiao:{ tuoqiao:{
filter:function(event,player){ filter:function(event,player){
return game.players.length>3&&(event.player==player.next||event.player==player.previous); return game.players.length>3&&(event.player==player.next||event.player==player.previous);
@ -2446,7 +2424,7 @@ character.xianjian={
tuoqiao:'脱壳', tuoqiao:'脱壳',
tuoqiao_info:'每当你成为身边角色的卡牌的目标,你可以将座位后移一位,然后取消之', tuoqiao_info:'每当你成为身边角色的卡牌的目标,你可以将座位后移一位,然后取消之',
xiaoyao:'逍遥', xiaoyao:'逍遥',
xiaoyao_info:'回合结束阶段,你可以弃置一张装备牌并获得潜行直到下一回合开始', xiaoyao_info:'每当你成为其他角色的卡牌目标,你可以弃置一张与之花色相同的手牌取消之',
yujian:'御剑', yujian:'御剑',
yujian_info:'出牌阶段限一次,你可以将一张杀当作万箭齐发使用', yujian_info:'出牌阶段限一次,你可以将一张杀当作万箭齐发使用',
huimeng:'回梦', huimeng:'回梦',

View File

@ -719,6 +719,7 @@ character.yijiang={
}, },
jiyu:{ jiyu:{
enable:'phaseUse', enable:'phaseUse',
locked:false,
filter:function(event,player){ filter:function(event,player){
var hs=player.get('h'); var hs=player.get('h');
for(var i=0;i<hs.length;i++){ for(var i=0;i<hs.length;i++){

View File

@ -11739,16 +11739,20 @@
}, },
enableSkill:function(skill){ enableSkill:function(skill){
var skills=this.disabledSkills[skill]; var skills=this.disabledSkills[skill];
this.disabledSkills[skill]=skills; delete this.disabledSkills[skill];
var list=this.get('s');
if(typeof skills=='string'){ if(typeof skills=='string'){
this.addSkillTrigger(skills,false,true); if(list.contains(skills)){
this.addSkillTrigger(skills,false,true);
}
} }
else if(Array.isArray(skills)){ else if(Array.isArray(skills)){
for(var i=0;i<skills.length;i++){ for(var i=0;i<skills.length;i++){
this.addSkillTrigger(skills[i],false,true); if(list.contains(skills[i])){
this.addSkillTrigger(skills[i],false,true);
}
} }
} }
delete this.disabledSkills[skill];
}, },
checkMarks:function(){ checkMarks:function(){
var skills=this.get('s'); var skills=this.get('s');
@ -33890,6 +33894,25 @@
} }
}, },
get:{ get:{
threaten:function(target,player){
var threaten=1;
var skills=target.get('s');
for(var i=0;i<skills.length;i++){
var info=get.info(skills[i]);
if(info&&info.ai&&info.ai.threaten){
if(typeof info.ai.threaten=='function'&&player){
var tmp=info.ai.threaten(player,target);
if(typeof tmp=='number'){
threaten*=tmp;
}
}
else if(typeof info.ai.threaten=='number'){
threaten*=info.ai.threaten;
}
}
}
return threaten;
},
attitude:function(from,to){ attitude:function(from,to){
if(!from||!to) return 0; if(!from||!to) return 0;
var att=ai.get.rawAttitude.apply(this,arguments); var att=ai.get.rawAttitude.apply(this,arguments);

View File

@ -10,9 +10,10 @@ window.noname_update={
'game/asset.js', 'game/asset.js',
'card/hearth.js', 'card/hearth.js',
'card/swd.js', 'card/swd.js',
'character/rank.js',
'character/ow.js', 'character/ow.js',
'character/hearth.js', 'character/hearth.js',
// 'character/old.js', 'character/sp.js',
'character/xianjian.js', 'character/xianjian.js',
'character/refresh.js', 'character/refresh.js',
'character/shenhua.js', 'character/shenhua.js',

View File

@ -3619,6 +3619,7 @@ mode.versus={
filter:function(event,player){ filter:function(event,player){
if(!_status.ladder) return false; if(!_status.ladder) return false;
if(event._ladder_mmr_counted) return false; if(event._ladder_mmr_counted) return false;
if(!event.source) return false;
return event.source==game.me||event.player==game.me; return event.source==game.me||event.player==game.me;
}, },
content:function(){ content:function(){