This commit is contained in:
libccy 2017-01-15 14:58:39 +08:00
parent 555c33c7cb
commit b0eb4eaf23
12 changed files with 276 additions and 42 deletions

View File

@ -217,7 +217,7 @@ card.sp={
}, },
content:function(){ content:function(){
'step 0' 'step 0'
var next=player.chooseToUse(get.prompt('yinyueqiang'),{name:'sha'}); var next=player.chooseToUse(get.prompt('yinyueqiang'),{name:'sha'}).aidelay=true;
next.logSkill='yinyueqiang'; next.logSkill='yinyueqiang';
next.noButton=true; next.noButton=true;
'step 1' 'step 1'

View File

@ -992,10 +992,15 @@ card.standard={
}, },
content:function(){ content:function(){
"step 0" "step 0"
targets[0].chooseToUse('对'+get.translation(targets[1])+'使用一张杀,或令'+get.translation(player)+'获得你的武器牌', if(!targets[0].hasSha()){
{name:'sha'},targets[1],-1).set('targetRequired',true); event.directfalse=true;
}
else{
targets[0].chooseToUse('对'+get.translation(targets[1])+'使用一张杀,或令'+get.translation(player)+'获得你的武器牌',
{name:'sha'},targets[1],-1).set('targetRequired',true);
}
"step 1" "step 1"
if(result.bool==false){ if(event.directfalse||result.bool==false){
player.gain(targets[0].get('e',{subtype:'equip1'}),targets[0]); player.gain(targets[0].get('e',{subtype:'equip1'}),targets[0]);
targets[0].$give(targets[0].get('e',{subtype:'equip1'}),player); targets[0].$give(targets[0].get('e',{subtype:'equip1'}),player);
} }

View File

@ -4631,16 +4631,15 @@ character.hearth={
derivation:'hs_ysera', derivation:'hs_ysera',
filterTarget:true, filterTarget:true,
content:function(){ content:function(){
target.damage(2); target.damage();
player.loseHp();
}, },
ai:{ ai:{
order:5, order:5,
result:{ result:{
target:-2 target:-1
}, },
tag:{ tag:{
damage:2 damage:1
}, },
useful:5, useful:5,
value:10, value:10,
@ -4741,7 +4740,7 @@ character.hearth={
return target.hp<target.maxHp; return target.hp<target.maxHp;
}, },
content:function(){ content:function(){
target.recover(2); target.recover();
}, },
ai:{ ai:{
order:6, order:6,
@ -4749,12 +4748,7 @@ character.hearth={
useful:[7,4], useful:[7,4],
result:{ result:{
target:function(player,target){ target:function(player,target){
var eff=ai.get.recoverEffect(target,player,target); return ai.get.recoverEffect(target,player,target);
if(eff<=0) return 0;
var num=target.maxHp-target.hp;
if(num<1) return 0;
if(target.hp==1) return num+0.5;
return num;
} }
} }
} }
@ -5034,9 +5028,9 @@ character.hearth={
hsmengjing:'梦境', hsmengjing:'梦境',
hsmengjing_card_config:'梦境', hsmengjing_card_config:'梦境',
hsmengjing_feicuiyoulong:'翡翠幼龙', hsmengjing_feicuiyoulong:'翡翠幼龙',
hsmengjing_feicuiyoulong_info:'出牌阶段对任意一名角色使用,对目标造成2点伤害然后流失一点体力', hsmengjing_feicuiyoulong_info:'出牌阶段对任意一名角色使用,对目标造成一点伤害',
hsmengjing_huanxiaojiemei:'欢笑姐妹', hsmengjing_huanxiaojiemei:'欢笑姐妹',
hsmengjing_huanxiaojiemei_info:'出牌阶段对一名已受伤角色使用,令目标恢复点体力', hsmengjing_huanxiaojiemei_info:'出牌阶段对一名已受伤角色使用,令目标恢复点体力',
hsmengjing_suxing:'苏醒', hsmengjing_suxing:'苏醒',
hsmengjing_suxing_info:'令所有其他角色流失一点体力并随机弃置两张牌', hsmengjing_suxing_info:'令所有其他角色流失一点体力并随机弃置两张牌',
hsmengjing_mengye:'梦魇', hsmengjing_mengye:'梦魇',

View File

@ -136,6 +136,7 @@ window.characterRank={
], ],
am:[ am:[
'guohuanghou', 'guohuanghou',
'swd_duanmeng',
'sunziliufang', 'sunziliufang',
'hs_blingtron', 'hs_blingtron',
'hs_kcthun', 'hs_kcthun',
@ -220,7 +221,6 @@ window.characterRank={
'sunru', 'sunru',
'yxs_zhangsanfeng', 'yxs_zhangsanfeng',
'yxs_nandinggeer', 'yxs_nandinggeer',
'swd_duanmeng',
], ],
bp:[ bp:[
'dongbai', 'dongbai',

View File

@ -1242,8 +1242,7 @@ character.refresh={
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){
return event.player.isAlive()&&event.player.getStat('damage')&& return event.player.isAlive()&&event.player.getStat('damage')&&
lib.filter.targetEnabled({name:'sha'},player,event.player)&& lib.filter.targetEnabled({name:'sha'},player,event.player)&&player.hasSha();
!lib.filter.autoRespondSha.call({player:player});
}, },
content:function(){ content:function(){
player.chooseToUse({name:'sha'},'诛害:是否对'+get.translation(trigger.player)+'使用一张杀?', player.chooseToUse({name:'sha'},'诛害:是否对'+get.translation(trigger.player)+'使用一张杀?',

View File

@ -1541,7 +1541,7 @@ character.shenhua={
filter:function(event,player){ filter:function(event,player){
return (event.card&&event.card.name=='sha'&& return (event.card&&event.card.name=='sha'&&
event.player.classList.contains('dead')==false&& event.player.classList.contains('dead')==false&&
event.player.num('h')&&player.num('h')); event.player.num('h')&&player.num('h'))&&event.player!=player;
}, },
check:function(event,player){ check:function(event,player){
return ai.get.attitude(player,event.player)<0&&player.num('h')>1; return ai.get.attitude(player,event.player)<0&&player.num('h')>1;

View File

@ -322,7 +322,7 @@ character.sp={
return 6-ai.get.value(card); return 6-ai.get.value(card);
} }
else if(type=='equip'){ else if(type=='equip'){
if(!lib.filter.autoRespondSha.call({player:player})){ if(player.hasSha()){
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
if(player.canUse('sha',game.players[i])&& if(player.canUse('sha',game.players[i])&&
ai.get.attitude(player,game.players[i])<0&& ai.get.attitude(player,game.players[i])<0&&

View File

@ -975,7 +975,7 @@ character.standard={
skillTagFilter:function(player){ skillTagFilter:function(player){
if(!player.num('h','shan')) return false; if(!player.num('h','shan')) return false;
}, },
order:4, order:3.1,
useful:-1, useful:-1,
value:-1 value:-1
} }

View File

@ -153,12 +153,18 @@ character.swd={
}, },
precontent:function(){ precontent:function(){
player.link(); player.link();
// player.getStat().card.sha--;
}, },
filterCard:function(){return false}, filterCard:function(){return false},
selectCard:-1, selectCard:-1,
prompt:'横置武将牌,视为使用一张无视距离的杀', prompt:'横置武将牌,视为使用一张无视距离的杀',
ai:{ ai:{
skillTagFilter:function(player){ order:function(){
// if(_status.event.player.num('h',{type:'equip'})) return 9;
return 3.15;
},
skillTagFilter:function(player,tag,arg){
if(arg!='use') return false;
if(player.isLinked()) return false; if(player.isLinked()) return false;
}, },
respondSha:true, respondSha:true,
@ -197,11 +203,55 @@ character.swd={
} }
} }
}, },
damage:{
trigger:{player:'damageEnd'},
filter:function(event,player){
return event.source&&event.source.isAlive()&&player.isLinked()&&
lib.filter.targetEnabled({name:'sha'},player,event.source);
},
check:function(event,player){
return ai.get.effect(event.source,{name:'sha'},player,player)>0;
},
logTarget:'source',
content:function(){
'step 0'
player.link();
'step 1'
player.useCard({name:'sha'},trigger.source);
}
},
use:{
trigger:{player:'loseEnd'},
direct:true,
filter:function(event,player){
return _status.currentPhase!=player&&player.isLinked()&&event.cards&&event.cards.length;
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('xuanying'),function(card,player,target){
return lib.filter.targetEnabled({name:'sha'},player,target);
}).set('ai',function(target){
return ai.get.effect(target,{name:'sha'},_status.event.player);
});
'step 1'
if(result.bool){
player.logSkill('xuanying');
if(!event.isMine()) game.delay(0.5);
player.link();
player.useCard({name:'sha'},result.targets,false);
}
},
}
}, },
group:['xuanying_sha','xuanying_shan'] group:['xuanying_sha','xuanying_use'],
ai:{
threaten:function(player,target){
if(target.isLinked()) return 0.7;
return 1.4;
}
}
}, },
wendao:{ wendao:{
audio:2,
trigger:{player:['useCardAfter','respondAfter',]}, trigger:{player:['useCardAfter','respondAfter',]},
check:function(event,player){ check:function(event,player){
return ai.get.attitude(player,_status.currentPhase)<=0; return ai.get.attitude(player,_status.currentPhase)<=0;
@ -313,13 +363,16 @@ character.swd={
if(!player.hasFriend()) return 0; if(!player.hasFriend()) return 0;
var enemies=player.getEnemies(); var enemies=player.getEnemies();
if(enemies.length+1==game.players.length) return 0; if(enemies.length+1==game.players.length) return 0;
if('h',player.num(function(card){ var num=player.num('h',function(card){
return card.name=='sha'||get.color(card)=='red'; return card.name=='sha'||get.color(card)=='red';
})<3) return 0; });
if(num<2) return 0;
for(var i=0;i<enemies.length;i++){ for(var i=0;i<enemies.length;i++){
if(player.canUse('sha',enemies[i])&& if(player.canUse('sha',enemies[i])&&
ai.get.effect(enemies[i],{name:'sha'},player,player)>0&& ai.get.effect(enemies[i],{name:'sha'},player,player)>0&&
enemies[i].hp<=2&&!enemies[i].get('e','2')) return 1; !enemies[i].get('e','2')&&num>enemies[i].hp&&enemies[i].hp<=2){
return 1;
}
} }
return 0; return 0;
} }
@ -666,6 +719,7 @@ character.swd={
prompt:'将一张红色牌当杀使用', prompt:'将一张红色牌当杀使用',
check:function(card){return 5-ai.get.value(card)}, check:function(card){return 5-ai.get.value(card)},
ai:{ ai:{
order:3.1,
skillTagFilter:function(player){ skillTagFilter:function(player){
if(!player.num('he',{color:'red'})) return false; if(!player.num('he',{color:'red'})) return false;
}, },
@ -3773,7 +3827,7 @@ character.swd={
trigger:{global:'phaseBegin'}, trigger:{global:'phaseBegin'},
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){
return lib.filter.targetEnabled({name:'sha'},player,event.player)&&!lib.filter.autoRespondSha.call({player:player}); return lib.filter.targetEnabled({name:'sha'},player,event.player)&&player.hasSha();
}, },
content:function(){ content:function(){
"step 0" "step 0"
@ -8314,7 +8368,7 @@ character.swd={
swd_xiyan:'犀衍', swd_xiyan:'犀衍',
xuanying:'旋影', xuanying:'旋影',
xuanying_info:'出牌阶段,你可以横置你的武将牌视为使用一张无视距离的杀;你可以竖置你的武将牌视为使用一张闪', xuanying_info:'你可以横置你的武将牌,视为使用一张无视距离的杀;每当你于回合外失去牌,你可以竖置你的武将牌,视为使用一张无视距离的杀',
wendao:'问道', wendao:'问道',
wendao_info:'每当你于回合外使用或打出一张牌,你可以令当前回合角色弃置一张与之花色相同的牌,否则你获得其一张牌', wendao_info:'每当你于回合外使用或打出一张牌,你可以令当前回合角色弃置一张与之花色相同的牌,否则你获得其一张牌',
lingfeng:'凌锋', lingfeng:'凌锋',

View File

@ -3184,6 +3184,7 @@ character.yijiang={
popup:false, popup:false,
silent:true, silent:true,
content:function(){ content:function(){
if(!player.storage.huomo) player.storage.huomo={};
switch(trigger.card.name){ switch(trigger.card.name){
case 'sha':player.storage.huomo.sha=true;break; case 'sha':player.storage.huomo.sha=true;break;
case 'tao':player.storage.huomo.tao=true;break; case 'tao':player.storage.huomo.tao=true;break;
@ -3192,6 +3193,145 @@ character.yijiang={
} }
}, },
huomo_sha:{ huomo_sha:{
enable:'chooseToUse',
viewAs:{name:'sha'},
viewAsFilter:function(player){
if(!player.storage.huomo) player.storage.huomo={};
if(player.storage.huomo.sha) return false;
var hs=player.get('he',{color:'black'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])!='basic'){
return true;
}
}
return false;
},
precontent:function(){
'step 0'
var card=event.result.cards[0];
event.card=card;
player.$throw(card,1000);
game.log(player,'将',card,'置于牌堆顶');
event.result.cards.length=0;
player.lose(card);
'step 1'
game.delay();
'step 2'
ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild);
},
filterCard:function(card){
return get.type(card)!='basic'&&get.color(card)=='black';
},
ai:{
skillTagFilter:function(player,tag,arg){
if(arg!='use') return false;
if(!player.storage.huomo) player.storage.huomo={};
if(player.storage.huomo.sha) return false;
var hs=player.get('he',{color:'black'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])!='basic'){
return true;
}
}
return false;
},
order:2.9,
respondSha:true,
},
},
huomo_tao:{
enable:'chooseToUse',
viewAs:{name:'tao'},
viewAsFilter:function(player){
if(!player.storage.huomo) player.storage.huomo={};
if(player.storage.huomo.tao) return false;
var hs=player.get('he',{color:'black'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])!='basic'){
return true;
}
}
return false;
},
precontent:function(){
'step 0'
var card=event.result.cards[0];
event.card=card;
player.$throw(card,1000);
game.log(player,'将',card,'置于牌堆顶');
event.result.cards.length=0;
player.lose(card);
'step 1'
game.delay();
'step 2'
ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild);
},
filterCard:function(card){
return get.type(card)!='basic'&&get.color(card)=='black';
},
ai:{
order:4,
skillTagFilter:function(player){
if(!player.storage.huomo) player.storage.huomo={};
if(player.storage.huomo.tao) return false;
var hs=player.get('he',{color:'black'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])!='basic'){
return true;
}
}
return false;
},
save:true,
},
},
huomo_jiu:{
enable:'chooseToUse',
viewAs:{name:'jiu'},
viewAsFilter:function(player){
if(!player.storage.huomo) player.storage.huomo={};
if(player.storage.huomo.jiu) return false;
var hs=player.get('he',{color:'black'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])!='basic'){
return true;
}
}
return false;
},
precontent:function(){
'step 0'
var card=event.result.cards[0];
event.card=card;
player.$throw(card,1000);
game.log(player,'将',card,'置于牌堆顶');
event.result.cards.length=0;
player.lose(card);
'step 1'
game.delay();
'step 2'
ui.cardPile.insertBefore(event.card,ui.cardPile.firstChild);
},
filterCard:function(card){
return get.type(card)!='basic'&&get.color(card)=='black';
},
ai:{
skillTagFilter:function(player){
if(!player.storage.huomo) player.storage.huomo={};
if(player.storage.huomo.jiu) return false;
if(player.hp>0) return false;
var hs=player.get('he',{color:'black'});
for(var i=0;i<hs.length;i++){
if(get.type(hs[i])!='basic'){
return true;
}
}
return false;
},
save:true,
},
},
huomo_sha_old:{
enable:'phaseUse', enable:'phaseUse',
discard:false, discard:false,
prepare:'throw', prepare:'throw',
@ -3237,7 +3377,7 @@ character.yijiang={
} }
} }
}, },
huomo_tao:{ huomo_tao_old:{
enable:'chooseToUse', enable:'chooseToUse',
discard:false, discard:false,
prepare:'throw', prepare:'throw',
@ -3301,7 +3441,7 @@ character.yijiang={
} }
} }
}, },
huomo_jiu:{ huomo_jiu_old:{
enable:'chooseToUse', enable:'chooseToUse',
discard:false, discard:false,
prepare:'throw', prepare:'throw',
@ -7518,7 +7658,7 @@ character.yijiang={
huomo_shan:'墨闪', huomo_shan:'墨闪',
huomo_tao:'墨桃', huomo_tao:'墨桃',
huomo_jiu:'墨酒', huomo_jiu:'墨酒',
huomo_info:'在出牌或濒死阶段,每当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,然后视为你使用了此基本牌', huomo_info:'每当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,然后视为你使用了此基本牌',
zuoding:'佐定', zuoding:'佐定',
zuoding_info:'每当一名其他角色于其出牌阶段内使用♠牌指定目标后,若此阶段没有角色受到过伤害,则你可以令其中一名目标角色摸一张牌', zuoding_info:'每当一名其他角色于其出牌阶段内使用♠牌指定目标后,若此阶段没有角色受到过伤害,则你可以令其中一名目标角色摸一张牌',
taoxi:'讨袭', taoxi:'讨袭',

View File

@ -182,8 +182,7 @@ character.yxs={
taiji:{ taiji:{
trigger:{player:'respond'}, trigger:{player:'respond'},
filter:function(event,player){ filter:function(event,player){
if(lib.filter.autoRespondSha.call({player:player})) return false; return event.card.name=='shan'&&player.hasSha();
return event.card.name=='shan';
}, },
direct:true, direct:true,
content:function(){ content:function(){
@ -2661,7 +2660,7 @@ character.yxs={
zyhufu:'胡服', zyhufu:'胡服',
zyhufu_info:'锁定技,当你的装备区内没有防具牌时,你摸牌阶段额外摸一张牌;当你装备区内有防具牌时,你的手牌上限+5', zyhufu_info:'锁定技,当你的装备区内没有防具牌时,你摸牌阶段额外摸一张牌;当你装备区内有防具牌时,你的手牌上限+5',
hanbei:'捍北', hanbei:'捍北',
hanbei_info:'你的装备区有马时,你的杀不可闪避', hanbei_info:'锁定技,你的装备区有马时,你的杀不可闪避',
kuangchan:'狂禅', kuangchan:'狂禅',
kuangchan_info:'锁定技,你做主公时,不增加体力上限', kuangchan_info:'锁定技,你做主公时,不增加体力上限',
dili:'底力', dili:'底力',

View File

@ -4961,6 +4961,29 @@
window.lib=lib; window.lib=lib;
window._status=_status; window._status=_status;
}, },
e:function(){
var cards=[],target;
for(var i=0;i<arguments.length;i++){
if(get.itemtype(arguments[i])=='player'){
target=arguments[i];
}
else{
cards.push(game.createCard(arguments[i]));
}
}
target=target||game.me;
for(var i=0;i<cards.length;i++){
var str=get.subtype(cards[i])[5];
if(!str) continue;
var card=target.get('e',str);
if(card){
console.log(card);
ui.discardPile.appendChild(card);
target.clearEquipTrigger(card);
}
target.$equip(cards[i]);
}
},
m:function(){ m:function(){
if(lib.config.game!='sgs'){ if(lib.config.game!='sgs'){
game.saveConfig('game','sgs'); game.saveConfig('game','sgs');
@ -6171,6 +6194,9 @@
else{ else{
ui.click.cancel(); ui.click.cancel();
} }
if(event.aidelay&&event.result&&event.result.bool){
game.delayx();
}
} }
"step 2" "step 2"
if(event.result){ if(event.result){
@ -6188,7 +6214,7 @@
else if(info&&info.precontent){ else if(info&&info.precontent){
var next=game.createEvent('pre_'+event.result.skill); var next=game.createEvent('pre_'+event.result.skill);
next.setContent(info.precontent); next.setContent(info.precontent);
next.set('argresult',event.result); next.set('result',event.result);
next.set('player',player); next.set('player',player);
} }
} }
@ -11891,14 +11917,19 @@
} }
return false; return false;
}, },
hasSkillTag:function(tag,hidden){ hasSkillTag:function(tag,hidden,arg){
var skills=game.expandSkills(this.get('s',hidden)); var skills=game.expandSkills(this.get('s',hidden));
for(var i=0;i<skills.length;i++){ for(var i=0;i<skills.length;i++){
var info=lib.skill[skills[i]]; var info=lib.skill[skills[i]];
if(info&&info.ai){ if(info&&info.ai){
if(info.ai.skillTagFilter&& if(info.ai.skillTagFilter&&
info.ai.skillTagFilter(this,tag)===false) continue; info.ai.skillTagFilter(this,tag,arg)===false) continue;
if(info.ai[tag]) return true; if(typeof info.ai[tag]=='string'){
if(info.ai[tag]==arg) return true;
}
else if(info.ai[tag]){
return true;
}
} }
} }
return false; return false;
@ -11960,6 +11991,18 @@
} }
return false; return false;
}, },
hasSha:function(respond){
if(this.num('h','sha')) return true;
if(this.num('h','hufu')) return true;
if(this.hasSkillTag('respondSha',true,respond?'respond':'use')) return true;
return false;
},
hasShan:function(){
if(this.num('h','shan')) return true;
if(this.num('h','hufu')) return true;
if(this.hasSkillTag('respondShan',true)) return true;
return false;
},
getJudge:function(name){ getJudge:function(name){
var judges=this.node.judges.childNodes; var judges=this.node.judges.childNodes;
for(var i=0;i<judges.length;i++){ for(var i=0;i<judges.length;i++){
@ -14389,7 +14432,7 @@
autoRespondSha:function(){ autoRespondSha:function(){
if(this.player.num('h','sha')) return false; if(this.player.num('h','sha')) return false;
if(this.player.num('h','hufu')) return false; if(this.player.num('h','hufu')) return false;
if(this.player.hasSkillTag('respondSha',true)) return false; if(this.player.hasSkillTag('respondSha',true,'respond')) return false;
return true; return true;
}, },
autoRespondShan:function(){ autoRespondShan:function(){