This commit is contained in:
parent
555c33c7cb
commit
b0eb4eaf23
|
@ -217,7 +217,7 @@ card.sp={
|
|||
},
|
||||
content:function(){
|
||||
'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.noButton=true;
|
||||
'step 1'
|
||||
|
|
|
@ -992,10 +992,15 @@ card.standard={
|
|||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
targets[0].chooseToUse('对'+get.translation(targets[1])+'使用一张杀,或令'+get.translation(player)+'获得你的武器牌',
|
||||
{name:'sha'},targets[1],-1).set('targetRequired',true);
|
||||
if(!targets[0].hasSha()){
|
||||
event.directfalse=true;
|
||||
}
|
||||
else{
|
||||
targets[0].chooseToUse('对'+get.translation(targets[1])+'使用一张杀,或令'+get.translation(player)+'获得你的武器牌',
|
||||
{name:'sha'},targets[1],-1).set('targetRequired',true);
|
||||
}
|
||||
"step 1"
|
||||
if(result.bool==false){
|
||||
if(event.directfalse||result.bool==false){
|
||||
player.gain(targets[0].get('e',{subtype:'equip1'}),targets[0]);
|
||||
targets[0].$give(targets[0].get('e',{subtype:'equip1'}),player);
|
||||
}
|
||||
|
|
|
@ -4631,16 +4631,15 @@ character.hearth={
|
|||
derivation:'hs_ysera',
|
||||
filterTarget:true,
|
||||
content:function(){
|
||||
target.damage(2);
|
||||
player.loseHp();
|
||||
target.damage();
|
||||
},
|
||||
ai:{
|
||||
order:5,
|
||||
result:{
|
||||
target:-2
|
||||
target:-1
|
||||
},
|
||||
tag:{
|
||||
damage:2
|
||||
damage:1
|
||||
},
|
||||
useful:5,
|
||||
value:10,
|
||||
|
@ -4741,7 +4740,7 @@ character.hearth={
|
|||
return target.hp<target.maxHp;
|
||||
},
|
||||
content:function(){
|
||||
target.recover(2);
|
||||
target.recover();
|
||||
},
|
||||
ai:{
|
||||
order:6,
|
||||
|
@ -4749,12 +4748,7 @@ character.hearth={
|
|||
useful:[7,4],
|
||||
result:{
|
||||
target:function(player,target){
|
||||
var eff=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;
|
||||
return ai.get.recoverEffect(target,player,target);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -5034,9 +5028,9 @@ character.hearth={
|
|||
hsmengjing:'梦境',
|
||||
hsmengjing_card_config:'梦境',
|
||||
hsmengjing_feicuiyoulong:'翡翠幼龙',
|
||||
hsmengjing_feicuiyoulong_info:'出牌阶段对任意一名角色使用,对目标造成2点伤害,然后流失一点体力',
|
||||
hsmengjing_feicuiyoulong_info:'出牌阶段对任意一名角色使用,对目标造成一点伤害',
|
||||
hsmengjing_huanxiaojiemei:'欢笑姐妹',
|
||||
hsmengjing_huanxiaojiemei_info:'出牌阶段对一名已受伤角色使用,令目标恢复两点体力',
|
||||
hsmengjing_huanxiaojiemei_info:'出牌阶段对一名已受伤角色使用,令目标恢复一点体力',
|
||||
hsmengjing_suxing:'苏醒',
|
||||
hsmengjing_suxing_info:'令所有其他角色流失一点体力并随机弃置两张牌',
|
||||
hsmengjing_mengye:'梦魇',
|
||||
|
|
|
@ -136,6 +136,7 @@ window.characterRank={
|
|||
],
|
||||
am:[
|
||||
'guohuanghou',
|
||||
'swd_duanmeng',
|
||||
'sunziliufang',
|
||||
'hs_blingtron',
|
||||
'hs_kcthun',
|
||||
|
@ -220,7 +221,6 @@ window.characterRank={
|
|||
'sunru',
|
||||
'yxs_zhangsanfeng',
|
||||
'yxs_nandinggeer',
|
||||
'swd_duanmeng',
|
||||
],
|
||||
bp:[
|
||||
'dongbai',
|
||||
|
|
|
@ -1242,8 +1242,7 @@ character.refresh={
|
|||
direct:true,
|
||||
filter:function(event,player){
|
||||
return event.player.isAlive()&&event.player.getStat('damage')&&
|
||||
lib.filter.targetEnabled({name:'sha'},player,event.player)&&
|
||||
!lib.filter.autoRespondSha.call({player:player});
|
||||
lib.filter.targetEnabled({name:'sha'},player,event.player)&&player.hasSha();
|
||||
},
|
||||
content:function(){
|
||||
player.chooseToUse({name:'sha'},'诛害:是否对'+get.translation(trigger.player)+'使用一张杀?',
|
||||
|
|
|
@ -1541,7 +1541,7 @@ character.shenhua={
|
|||
filter:function(event,player){
|
||||
return (event.card&&event.card.name=='sha'&&
|
||||
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){
|
||||
return ai.get.attitude(player,event.player)<0&&player.num('h')>1;
|
||||
|
|
|
@ -322,7 +322,7 @@ character.sp={
|
|||
return 6-ai.get.value(card);
|
||||
}
|
||||
else if(type=='equip'){
|
||||
if(!lib.filter.autoRespondSha.call({player:player})){
|
||||
if(player.hasSha()){
|
||||
for(var i=0;i<game.players.length;i++){
|
||||
if(player.canUse('sha',game.players[i])&&
|
||||
ai.get.attitude(player,game.players[i])<0&&
|
||||
|
|
|
@ -975,7 +975,7 @@ character.standard={
|
|||
skillTagFilter:function(player){
|
||||
if(!player.num('h','shan')) return false;
|
||||
},
|
||||
order:4,
|
||||
order:3.1,
|
||||
useful:-1,
|
||||
value:-1
|
||||
}
|
||||
|
|
|
@ -153,12 +153,18 @@ character.swd={
|
|||
},
|
||||
precontent:function(){
|
||||
player.link();
|
||||
// player.getStat().card.sha--;
|
||||
},
|
||||
filterCard:function(){return false},
|
||||
selectCard:-1,
|
||||
prompt:'横置武将牌,视为使用一张无视距离的杀',
|
||||
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;
|
||||
},
|
||||
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:{
|
||||
audio:2,
|
||||
trigger:{player:['useCardAfter','respondAfter',]},
|
||||
check:function(event,player){
|
||||
return ai.get.attitude(player,_status.currentPhase)<=0;
|
||||
|
@ -313,13 +363,16 @@ character.swd={
|
|||
if(!player.hasFriend()) return 0;
|
||||
var enemies=player.getEnemies();
|
||||
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';
|
||||
})<3) return 0;
|
||||
});
|
||||
if(num<2) return 0;
|
||||
for(var i=0;i<enemies.length;i++){
|
||||
if(player.canUse('sha',enemies[i])&&
|
||||
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;
|
||||
}
|
||||
|
@ -666,6 +719,7 @@ character.swd={
|
|||
prompt:'将一张红色牌当杀使用',
|
||||
check:function(card){return 5-ai.get.value(card)},
|
||||
ai:{
|
||||
order:3.1,
|
||||
skillTagFilter:function(player){
|
||||
if(!player.num('he',{color:'red'})) return false;
|
||||
},
|
||||
|
@ -3773,7 +3827,7 @@ character.swd={
|
|||
trigger:{global:'phaseBegin'},
|
||||
direct:true,
|
||||
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(){
|
||||
"step 0"
|
||||
|
@ -8314,7 +8368,7 @@ character.swd={
|
|||
swd_xiyan:'犀衍',
|
||||
|
||||
xuanying:'旋影',
|
||||
xuanying_info:'出牌阶段,你可以横置你的武将牌视为使用一张无视距离的杀;你可以竖置你的武将牌视为使用一张闪',
|
||||
xuanying_info:'你可以横置你的武将牌,视为使用一张无视距离的杀;每当你于回合外失去牌,你可以竖置你的武将牌,视为使用一张无视距离的杀',
|
||||
wendao:'问道',
|
||||
wendao_info:'每当你于回合外使用或打出一张牌,你可以令当前回合角色弃置一张与之花色相同的牌,否则你获得其一张牌',
|
||||
lingfeng:'凌锋',
|
||||
|
|
|
@ -3184,6 +3184,7 @@ character.yijiang={
|
|||
popup:false,
|
||||
silent:true,
|
||||
content:function(){
|
||||
if(!player.storage.huomo) player.storage.huomo={};
|
||||
switch(trigger.card.name){
|
||||
case 'sha':player.storage.huomo.sha=true;break;
|
||||
case 'tao':player.storage.huomo.tao=true;break;
|
||||
|
@ -3192,6 +3193,145 @@ character.yijiang={
|
|||
}
|
||||
},
|
||||
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',
|
||||
discard:false,
|
||||
prepare:'throw',
|
||||
|
@ -3237,7 +3377,7 @@ character.yijiang={
|
|||
}
|
||||
}
|
||||
},
|
||||
huomo_tao:{
|
||||
huomo_tao_old:{
|
||||
enable:'chooseToUse',
|
||||
discard:false,
|
||||
prepare:'throw',
|
||||
|
@ -3301,7 +3441,7 @@ character.yijiang={
|
|||
}
|
||||
}
|
||||
},
|
||||
huomo_jiu:{
|
||||
huomo_jiu_old:{
|
||||
enable:'chooseToUse',
|
||||
discard:false,
|
||||
prepare:'throw',
|
||||
|
@ -7518,7 +7658,7 @@ character.yijiang={
|
|||
huomo_shan:'墨闪',
|
||||
huomo_tao:'墨桃',
|
||||
huomo_jiu:'墨酒',
|
||||
huomo_info:'在出牌或濒死阶段,每当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,然后视为你使用了此基本牌',
|
||||
huomo_info:'每当你需要使用一张本回合内未使用过的基本牌时,你可以将一张黑色非基本牌置于牌堆顶,然后视为你使用了此基本牌',
|
||||
zuoding:'佐定',
|
||||
zuoding_info:'每当一名其他角色于其出牌阶段内使用♠牌指定目标后,若此阶段没有角色受到过伤害,则你可以令其中一名目标角色摸一张牌',
|
||||
taoxi:'讨袭',
|
||||
|
|
|
@ -182,8 +182,7 @@ character.yxs={
|
|||
taiji:{
|
||||
trigger:{player:'respond'},
|
||||
filter:function(event,player){
|
||||
if(lib.filter.autoRespondSha.call({player:player})) return false;
|
||||
return event.card.name=='shan';
|
||||
return event.card.name=='shan'&&player.hasSha();
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
|
@ -2661,7 +2660,7 @@ character.yxs={
|
|||
zyhufu:'胡服',
|
||||
zyhufu_info:'锁定技,当你的装备区内没有防具牌时,你摸牌阶段额外摸一张牌;当你装备区内有防具牌时,你的手牌上限+5',
|
||||
hanbei:'捍北',
|
||||
hanbei_info:'你的装备区有马时,你的杀不可闪避',
|
||||
hanbei_info:'锁定技,你的装备区有马时,你的杀不可闪避',
|
||||
kuangchan:'狂禅',
|
||||
kuangchan_info:'锁定技,你做主公时,不增加体力上限',
|
||||
dili:'底力',
|
||||
|
|
53
game/game.js
53
game/game.js
|
@ -4961,6 +4961,29 @@
|
|||
window.lib=lib;
|
||||
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(){
|
||||
if(lib.config.game!='sgs'){
|
||||
game.saveConfig('game','sgs');
|
||||
|
@ -6171,6 +6194,9 @@
|
|||
else{
|
||||
ui.click.cancel();
|
||||
}
|
||||
if(event.aidelay&&event.result&&event.result.bool){
|
||||
game.delayx();
|
||||
}
|
||||
}
|
||||
"step 2"
|
||||
if(event.result){
|
||||
|
@ -6188,7 +6214,7 @@
|
|||
else if(info&&info.precontent){
|
||||
var next=game.createEvent('pre_'+event.result.skill);
|
||||
next.setContent(info.precontent);
|
||||
next.set('argresult',event.result);
|
||||
next.set('result',event.result);
|
||||
next.set('player',player);
|
||||
}
|
||||
}
|
||||
|
@ -11891,14 +11917,19 @@
|
|||
}
|
||||
return false;
|
||||
},
|
||||
hasSkillTag:function(tag,hidden){
|
||||
hasSkillTag:function(tag,hidden,arg){
|
||||
var skills=game.expandSkills(this.get('s',hidden));
|
||||
for(var i=0;i<skills.length;i++){
|
||||
var info=lib.skill[skills[i]];
|
||||
if(info&&info.ai){
|
||||
if(info.ai.skillTagFilter&&
|
||||
info.ai.skillTagFilter(this,tag)===false) continue;
|
||||
if(info.ai[tag]) return true;
|
||||
info.ai.skillTagFilter(this,tag,arg)===false) continue;
|
||||
if(typeof info.ai[tag]=='string'){
|
||||
if(info.ai[tag]==arg) return true;
|
||||
}
|
||||
else if(info.ai[tag]){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -11960,6 +11991,18 @@
|
|||
}
|
||||
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){
|
||||
var judges=this.node.judges.childNodes;
|
||||
for(var i=0;i<judges.length;i++){
|
||||
|
@ -14389,7 +14432,7 @@
|
|||
autoRespondSha:function(){
|
||||
if(this.player.num('h','sha')) 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;
|
||||
},
|
||||
autoRespondShan:function(){
|
||||
|
|
Loading…
Reference in New Issue