This commit is contained in:
parent
bcc652fee9
commit
5906ec40a4
|
@ -855,8 +855,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target,current){
|
||||
if(card.name=='sha'&&target.countCards('h')==0&&!target.hasSkillTag('filterDamage',null,{
|
||||
player:function(card,player,target,current,isLink){
|
||||
if(card.name=='sha'&&!isLink&&target.countCards('h')==0&&!target.hasSkillTag('filterDamage',null,{
|
||||
player:player,
|
||||
card:card,
|
||||
})) return [1,0,1,-3];
|
||||
|
@ -891,11 +891,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(target.hasSkillTag('unequip2')) return;
|
||||
if(player.hasSkillTag('unequip',false,{
|
||||
name:card?card.name:null,
|
||||
target:player,
|
||||
target:target,
|
||||
card:card
|
||||
})||player.hasSkillTag('unequip_ai',false,{
|
||||
name:card?card.name:null,
|
||||
target:player,
|
||||
target:target,
|
||||
card:card
|
||||
})) return;
|
||||
if(card.name=='nanman'||card.name=='wanjian'||card.name=='chuqibuyi') return 'zerotarget';
|
||||
|
@ -984,12 +984,12 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(arg&&arg.player){
|
||||
if(arg.player.hasSkillTag('unequip',false,{
|
||||
name:arg.card?arg.card.name:null,
|
||||
target:player,
|
||||
target:target,
|
||||
card:arg.card,
|
||||
})) return false;
|
||||
if(arg.player.hasSkillTag('unequip_ai',false,{
|
||||
name:arg.card?arg.card.name:null,
|
||||
target:player,
|
||||
target:target,
|
||||
card:arg.card,
|
||||
})) return false;
|
||||
if(arg.player.hasSkillTag('jueqing',false,player)) return false;
|
||||
|
|
|
@ -173,33 +173,56 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
ai:{
|
||||
canLink:function(player,target,card){
|
||||
if(!target.isLinked()&&!player.hasSkill('wutiesuolian_skill')) return false;
|
||||
if(target.mayHaveShan()&&!player.hasSkillTag('directHit_ai',true,{
|
||||
target:target,
|
||||
card:card,
|
||||
},true)) return false;
|
||||
if(player.hasSkill('jueqing')||target.hasSkill('gangzhi')||target.hasSkill('gangzhi')) return false;
|
||||
return true;
|
||||
},
|
||||
basic:{
|
||||
useful:[5,1],
|
||||
value:[5,1],
|
||||
},
|
||||
order:function(item,player){
|
||||
if(player.hasSkillTag('presha',true,null,true)) return 10;
|
||||
if(lib.linked.contains(get.nature(item))) return (player.getCardUsable('sha')>1?3:3.1);
|
||||
if(lib.linked.contains(get.nature(item))){
|
||||
if(game.hasPlayer(function(current){
|
||||
return current!=player&¤t.isLinked()&&player.canUse(item,current,null,true)&&get.effect(current,item,player,player)>0&&lib.card.sha.ai.canLink(player,current,item);
|
||||
})&&game.countPlayer(function(current){
|
||||
return current.isLinked()&&get.damageEffect(current,player,player,get.nature(item))>0;
|
||||
})>1) return 3.1;
|
||||
return 3;
|
||||
}
|
||||
return 3.05;
|
||||
},
|
||||
result:{
|
||||
target:function(player,target,card,isLink){
|
||||
if(!isLink&&player.hasSkill('jiu')){
|
||||
if(!target.hasSkillTag('filterDamage',null,{
|
||||
player:player,
|
||||
card:card,
|
||||
jiu:true,
|
||||
})){
|
||||
if(get.attitude(player,target)>0){
|
||||
return -7;
|
||||
}
|
||||
else{
|
||||
return -4;
|
||||
}
|
||||
var eff=function(){
|
||||
if(!isLink&&player.hasSkill('jiu')){
|
||||
if(!target.hasSkillTag('filterDamage',null,{
|
||||
player:player,
|
||||
card:card,
|
||||
jiu:true,
|
||||
})){
|
||||
if(get.attitude(player,target)>0){
|
||||
return -7;
|
||||
}
|
||||
else{
|
||||
return -4;
|
||||
}
|
||||
}
|
||||
return -0.5;
|
||||
}
|
||||
return -0.5;
|
||||
}
|
||||
return -1.5;
|
||||
return -1.5;
|
||||
}();
|
||||
if(!isLink&&target.mayHaveShan()&&!player.hasSkillTag('directHit_ai',true,{
|
||||
target:target,
|
||||
card:card,
|
||||
},true)) return eff/1.2;
|
||||
return eff;
|
||||
},
|
||||
},
|
||||
tag:{
|
||||
|
@ -1070,13 +1093,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
result:{
|
||||
target:-1.5,
|
||||
player:function(player,target,card){
|
||||
if(get.cardtag(card,'yingbian_fujia')){
|
||||
var num=player.countCards('h',function(cardx){
|
||||
return cardx!=card&&(!card.cards||!card.cards.contains(cardx));
|
||||
});
|
||||
if(!game.hasPlayer(function(current){
|
||||
return current.countCards('h')>num;
|
||||
})) return 0;
|
||||
if(player.hasSkillTag('directHit_ai',true,{
|
||||
target:target,
|
||||
card:card,
|
||||
},true)){
|
||||
return 0;
|
||||
}
|
||||
if(get.damageEffect(target,player,target)>0&&get.attitude(player,target)>0&&get.attitude(target,player)>0){
|
||||
return 0;
|
||||
|
@ -1654,11 +1675,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(target.hasSkillTag('unequip2')) return;
|
||||
if(player.hasSkillTag('unequip',false,{
|
||||
name:card?card.name:null,
|
||||
target:player,
|
||||
target:target,
|
||||
card:card
|
||||
})||player.hasSkillTag('unequip_ai',false,{
|
||||
name:card?card.name:null,
|
||||
target:player,
|
||||
target:target,
|
||||
card:card
|
||||
})) return;
|
||||
if(card.name=='sha'&&get.color(card)=='black') return 'zerotarget';
|
||||
|
@ -1847,7 +1868,16 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
trigger._result.bool=false;
|
||||
trigger._result.result=null;
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(get.attitude(player,arg.target)<0&&arg.card.name=='sha'&&player.countCards('he',function(card){
|
||||
return card!=player.getEquip('guanshi')&&card!=arg.card&&(!arg.card.cards||!arg.card.cards.contains(card))&&get.value(card)<5;
|
||||
})>1) return true;
|
||||
return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
fangtian_skill:{
|
||||
equipSkill:true,
|
||||
|
@ -1979,7 +2009,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
if(event.responded) return false;
|
||||
if(event.bagua_skill) return false;
|
||||
if(!event.filterCard({name:'shan'},player,event)) return false;
|
||||
if(!event.filterCard||!event.filterCard({name:'shan'},player,event)) return false;
|
||||
if(event.name=='chooseToRespond'&&!lib.filter.cardRespondable({name:'shan'},player,event)) return false;
|
||||
if(player.hasSkillTag('unequip2')) return false;
|
||||
var evt=event.getParent();
|
||||
|
@ -2020,11 +2050,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
if(target.hasSkillTag('unequip2')) return;
|
||||
if(player.hasSkillTag('unequip',false,{
|
||||
name:card?card.name:null,
|
||||
target:player,
|
||||
target:target,
|
||||
card:card
|
||||
})||player.hasSkillTag('unequip_ai',false,{
|
||||
name:card?card.name:null,
|
||||
target:player,
|
||||
target:target,
|
||||
card:card
|
||||
})) return;
|
||||
if(get.tag(card,'respondShan')) return 0.5;
|
||||
|
|
|
@ -230,12 +230,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
subtype:'equip5',
|
||||
loseDelay:false,
|
||||
onEquip:function(){
|
||||
player.logSkill('tianjitu');
|
||||
if(player.countCards('he',function(cardx){
|
||||
return cardx!=card;
|
||||
})) player.chooseToDiscard(true,function(card){
|
||||
return card!=_status.event.card;
|
||||
},'he').set('card',card);
|
||||
})>0){
|
||||
player.logSkill('tianjitu');
|
||||
player.chooseToDiscard(true,function(card){
|
||||
return card!=_status.event.card;
|
||||
},'he').set('card',card);
|
||||
}
|
||||
},
|
||||
onLose:function(){
|
||||
var next=game.createEvent('tianjitu_lose');
|
||||
|
@ -252,6 +254,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
},
|
||||
ai:{
|
||||
value:function(card,player){
|
||||
if(player.countCards('h')>3||get.position(card)!='e') return 0.5;
|
||||
return (player.countCards('h')-5)/3;
|
||||
},
|
||||
equipValue:function(card,player){
|
||||
if(player.countCards('h')>3||get.position(card)!='e') return 0.5;
|
||||
return (player.countCards('h')-5)/3;
|
||||
},
|
||||
basic:{
|
||||
equipValue:0.5
|
||||
}
|
||||
|
|
136
character/diy.js
136
character/diy.js
|
@ -383,6 +383,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
player.removeSkill('hiroto_huyu2');
|
||||
player.removeSkill('hiroto_zonglve');
|
||||
player.removeGaintag('hiroto_huyu2');
|
||||
var target=player.storage.hiroto_huyu2;
|
||||
if(target&&target.isAlive()){
|
||||
var cards=[];
|
||||
|
@ -398,6 +399,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
mark:'character',
|
||||
intro:{content:'已成为$的工具人'},
|
||||
group:'hiroto_huyu_gain',
|
||||
},
|
||||
hiroto_huyu_gain:{
|
||||
trigger:{player:'gainBegin'},
|
||||
silent:true,
|
||||
filter:function(event,player){
|
||||
if(player==_status.currentPhase) event.gaintag.add('hiroto_huyu2');
|
||||
return false;
|
||||
},
|
||||
},
|
||||
hiroto_zonglve:{
|
||||
enable:'phaseUse',
|
||||
|
@ -515,13 +525,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
position:'he',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.draw(cards.length*2);
|
||||
'step 1'
|
||||
if(get.itemtype(result)=='cards'){
|
||||
player.addTempSkill('shizuku_sizhi2');
|
||||
player.markAuto('shizuku_sizhi2',result);
|
||||
}
|
||||
player.draw(cards.length*2).gaintag=['shizuku_sizhi2'];
|
||||
player.addTempSkill('shizuku_sizhi2');
|
||||
},
|
||||
ai:{
|
||||
order:5,
|
||||
|
@ -529,49 +534,36 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
shizuku_sizhi2:{
|
||||
intro:{
|
||||
mark:function(dialog,content,player){
|
||||
if(content&&content.length){
|
||||
if(player==game.me||player.isUnderControl()){
|
||||
dialog.addAuto(content);
|
||||
}
|
||||
else{
|
||||
return '本回合以此法获得了'+get.cnNumber(content.length)+'张牌';
|
||||
}
|
||||
}
|
||||
},
|
||||
content:'cards',
|
||||
onremove:function(player){
|
||||
player.removeGaintag('shizuku_sizhi2');
|
||||
},
|
||||
onremove:true,
|
||||
mod:{
|
||||
targetInRange:function(card,player,target){
|
||||
if(!card.cards) return;
|
||||
var storage=player.getStorage('shizuku_sizhi2');
|
||||
for(var i of card.cards){
|
||||
if(!storage.contains(i)||get.color(i)!='black') return;
|
||||
if(!i.hasGaintag('shizuku_sizhi2')||get.color(i)!='black') return;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
cardUsable:function(card,player,target){
|
||||
if(!card.cards) return;
|
||||
var storage=player.getStorage('shizuku_sizhi2');
|
||||
for(var i of card.cards){
|
||||
if(!storage.contains(i)||get.color(i)!='black') return;
|
||||
if(!i.hasGaintag('shizuku_sizhi2')||get.color(i)!='black') return;
|
||||
}
|
||||
return Infinity;
|
||||
},
|
||||
ignoredHandcard:function(card,player){
|
||||
if(player.getStorage('shizuku_sizhi2').contains(card)&&get.color(card)=='red'){
|
||||
if(card.hasGaintag('shizuku_sizhi2')&&get.color(card)=='red'){
|
||||
return true;
|
||||
}
|
||||
},
|
||||
cardDiscardable:function(card,player,name){
|
||||
if(name=='phaseDiscard'&&player.getStorage('shizuku_sizhi2').contains(card)&&get.color(card)=='red'){
|
||||
if(name=='phaseDiscard'&&card.hasGaintag('shizuku_sizhi2')&&get.color(card)=='red'){
|
||||
return false;
|
||||
}
|
||||
},
|
||||
aiOrder:function(player,card,num){
|
||||
if(player.getStorage('shizuku_sizhi2').contains(card)&&get.color(card)=='black') return num-0.1;
|
||||
if(get.itemtype(card)=='card'&&card.hasGaintag('shizuku_sizhi2')&&get.color(card)=='black') return num-0.1;
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -2608,18 +2600,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return 3;
|
||||
});
|
||||
'step 1'
|
||||
if(result.control=='cancel2'){event.finish();return;}
|
||||
if(result.control=='cancel2') return;
|
||||
player.logSkill('shiorimiyuki_tingxian');
|
||||
var num=1+result.index;
|
||||
player.draw(num);
|
||||
'step 2'
|
||||
event.cards=result;
|
||||
player.draw(num).gaintag=['shiorimiyuki_tingxian'];
|
||||
player.recover();
|
||||
'step 3'
|
||||
if(get.itemtype(cards)=='cards'){
|
||||
trigger.shiorimiyuki_tingxian=cards;
|
||||
player.addTempSkill('shiorimiyuki_tingxian2');
|
||||
}
|
||||
player.addTempSkill('shiorimiyuki_tingxian2');
|
||||
},
|
||||
},
|
||||
shiorimiyuki_tingxian2:{
|
||||
|
@ -2628,25 +2614,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
charlotte:true,
|
||||
mod:{
|
||||
aiOrder:function(player,card,num){
|
||||
var cards=_status.event.getParent('phaseUse').shiorimiyuki_tingxian;
|
||||
if(cards&&cards.contains(card)) return num+2;
|
||||
if(get.itemtype(card)=='card'&&card.hasGaintag('shiorimiyuki_tingxian')) return num+2;
|
||||
},
|
||||
aiValuetarget:function(player,card,num){
|
||||
var cards=_status.event.getParent('phaseUse').shiorimiyuki_tingxian;
|
||||
if(cards&&cards.contains(card)) return 0;
|
||||
aiValue:function(player,card,num){
|
||||
if(get.itemtype(card)=='card'&&card.hasGaintag('shiorimiyuki_tingxian')) return 0;
|
||||
},
|
||||
},
|
||||
filter:function(event,player){
|
||||
var hs=player.getCards('h');
|
||||
return Array.isArray(event.shiorimiyuki_tingxian)&&event.shiorimiyuki_tingxian.filter(function(card){
|
||||
return hs.contains(card);
|
||||
}).length>0
|
||||
return player.countCards('h',function(card){
|
||||
return card.hasGaintag('shiorimiyuki_tingxian');
|
||||
})>0;
|
||||
},
|
||||
content:function(){
|
||||
var hs=player.getCards('h');
|
||||
player.loseHp(trigger.shiorimiyuki_tingxian.filter(function(card){
|
||||
return hs.contains(card);
|
||||
}).length);
|
||||
player.loseHp(player.countCards('h',function(card){
|
||||
return card.hasGaintag('shiorimiyuki_tingxian');
|
||||
}));
|
||||
player.removeGaintag('shiorimiyuki_tingxian');
|
||||
},
|
||||
},
|
||||
shizuru_nianli:{
|
||||
|
@ -3965,6 +3948,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
trigger.directHit.addArray(game.players);
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return arg.card.name==player.storage.riki_spwenji_respond;
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -4113,6 +4102,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(trigger.name=='useCard') trigger.directHit.addArray(game.players);
|
||||
else trigger.directHit.add(player);
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return arg.card.name=='sha';
|
||||
},
|
||||
},
|
||||
global:'doruji_feiqu_ai',
|
||||
},
|
||||
doruji_feiqu_ai:{
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return arg.card.name=='sha'&&(arg.target.hasSkill('doruji_feiqu')||arg.target.hasSkill('godan_feiqu'));
|
||||
},
|
||||
},
|
||||
},
|
||||
akane_jugu:{
|
||||
audio:2,
|
||||
|
@ -4306,30 +4310,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(get.itemtype(trigger.respondTo[1])=='card') cards.push(trigger.respondTo[1]);
|
||||
else if(trigger.respondTo[1].cards) cards.addArray(trigger.respondTo[1].cards);
|
||||
cards=cards.filterInD('od');
|
||||
trigger.player.gain(cards,'gain2','log');
|
||||
trigger.player.gain(cards,'gain2','log').gaintag.add('sasami_funan');
|
||||
trigger.player.addTempSkill('sasami_funan_use');
|
||||
if(!trigger.player.storage.sasami_funan_use){
|
||||
trigger.player.storage.sasami_funan_use=[];
|
||||
}
|
||||
trigger.player.storage.sasami_funan_use.addArray(cards);
|
||||
}
|
||||
'step 1'
|
||||
var cards=trigger.cards.filterInD('od');
|
||||
player.gain(cards,'log','gain2');
|
||||
},
|
||||
subSkill:{
|
||||
jiexun:{
|
||||
charlotte:true,
|
||||
mark:true,
|
||||
intro:{
|
||||
content:'你发动“复难”时,无须令其他角色获得你使用的牌'
|
||||
},
|
||||
},
|
||||
use:{
|
||||
onremove:true,
|
||||
onremove:function(player){
|
||||
player.removeGaintag('sasami_funan');
|
||||
},
|
||||
charlotte:true,
|
||||
mod:{
|
||||
cardEnabled2:function(card,player){
|
||||
if(player.storage.sasami_funan_use&&player.storage.sasami_funan_use.contains(card)){
|
||||
if(get.itemtype(card)=='card'&&card.hasGaintag('sasami_funan')){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -5690,6 +5686,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
init:function(player,skill){
|
||||
if(!player.storage[skill]) player.storage[skill]=[];
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return player.storage.yukine_magic&&player.storage.yukine_magic.contains(arg.card.name);
|
||||
},
|
||||
},
|
||||
},
|
||||
komari_tiankou:{
|
||||
trigger:{
|
||||
|
@ -6504,6 +6506,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var next=player.chooseToUse();
|
||||
next.set('norestore',true);
|
||||
next.set('_backupevent','nsdaizhanx');
|
||||
next.set('custom',{
|
||||
add:{},
|
||||
replace:{window:function(){}}
|
||||
});
|
||||
next.backup('nsdaizhanx');
|
||||
},
|
||||
},
|
||||
|
@ -11854,8 +11860,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
rin_baoqiu_info:'锁定技,你的攻击范围+2。当你使用【杀】指定目标后,你进行判定。若结果:为红色,此【杀】对其的伤害值基数+1;为黑色,其无法闪避此【杀】;为♠/♥,此【杀】不计入使用次数限制且你摸一张牌;为♦/♣,目标角色的所有非锁定技失效直到回合结束,且你弃置其一张牌。',
|
||||
sasami_miaobian:'喵变',
|
||||
sasami_miaobian_info:'当你的体力值变为:3以下时,你获得技能〖公清〗,2以下时,你获得技能〖复难〗,1以下时,你获得技能〖暴球〗',
|
||||
"sasami_gongqing":"公清",
|
||||
"sasami_gongqing_info":"锁定技。当你受到伤害时,若伤害来源的攻击范围:<3,则你令此伤害的数值减为1。>3,你令此伤害+1。",
|
||||
sasami_gongqing:"公清",
|
||||
sasami_gongqing_info:"锁定技。当你受到伤害时,若伤害来源的攻击范围:<3,则你令此伤害的数值减为1。>3,你令此伤害+1。",
|
||||
sasami_funan:'复难',
|
||||
sasami_funan_info:'其他角色使用或打出牌响应你使用的牌时,你可令其获得你使用的牌(其本回合不能使用或打出这些牌),然后你获得其使用或打出的牌。',
|
||||
sasami_baoqiu:'暴球',
|
||||
|
|
|
@ -1946,10 +1946,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(get.tag(card,'respondSha')&¤t<0) return 0.6
|
||||
}
|
||||
},
|
||||
respondSha:true,
|
||||
order:4,
|
||||
useful:-1,
|
||||
value:-1
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return arg.card.name=='sha'&&get.suit(arg.card)=='heart';
|
||||
},
|
||||
}
|
||||
},
|
||||
wuhun:{
|
||||
|
|
|
@ -9,13 +9,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer"],
|
||||
mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning"],
|
||||
mobile_sunben:["re_sunben"],
|
||||
mobile_standard:["xin_xiahoudun"],
|
||||
mobile_standard:["xin_xiahoudun","xin_zhangfei"],
|
||||
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian"],
|
||||
mobile_yijiang1:["re_jikang","old_bulianshi","xin_liaohua","xin_caozhang","re_xusheng","xin_chengpu","xin_jianyong","xin_gongsunzan","xin_zhuran","re_lingtong","re_liubiao"],
|
||||
mobile_sp:["old_yuanshu","re_wangyun","re_baosanniang","re_weiwenzhugezhi","re_zhanggong","re_xugong","re_heqi","liuzan","xin_hansui"],
|
||||
},
|
||||
},
|
||||
character:{
|
||||
xin_zhangfei:['male','shu',4,['new_repaoxiao','liyong']],
|
||||
xin_hansui:['male','qun',4,['xinniluan','xiaoxi_hansui']],
|
||||
hucheer:['male','qun',4,['daoji']],
|
||||
re_lingtong:['male','wu',4,['rexuanfeng']],
|
||||
|
@ -313,6 +314,80 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//铁骑飞
|
||||
liyong:{
|
||||
audio:'retishen',
|
||||
trigger:{player:'shaMiss'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return player.isPhaseUsing();
|
||||
},
|
||||
content:function(){
|
||||
trigger.getParent().liyong=true;
|
||||
player.addTempSkill('liyong2','phaseUseEnd');
|
||||
},
|
||||
},
|
||||
liyong2:{
|
||||
audio:'retishen',
|
||||
mark:true,
|
||||
intro:{
|
||||
content:'铁骑!强命!加伤!然后掉血嘞…',
|
||||
},
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(!event.card||event.card.name!='sha') return false;
|
||||
var evt=event.getParent();
|
||||
if(evt.liyong) return false;
|
||||
var history=player.getHistory('useCard',function(evt){
|
||||
return evt.card.name=='sha';
|
||||
});
|
||||
var evt2=history[history.indexOf(evt)-1];
|
||||
return evt2&&evt2.liyong;
|
||||
},
|
||||
logTarget:'target',
|
||||
content:function(){
|
||||
var target=trigger.target;
|
||||
target.addTempSkill('fengyin');
|
||||
trigger.directHit.add(target);
|
||||
var id=target.playerid;
|
||||
var map=trigger.customArgs;
|
||||
if(!map[id]) map[id]={};
|
||||
if(!map[id].extraDamage) map[id].extraDamage=0;
|
||||
map[id].extraDamage++;
|
||||
trigger.getParent().liyong2=true;
|
||||
},
|
||||
group:['liyong3','liyong4'],
|
||||
},
|
||||
liyong3:{
|
||||
trigger:{source:'damageSource'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return event.card&&event.card.name=='sha'&&
|
||||
event.player.isAlive()&&event.getParent(2).liyong2==true;
|
||||
},
|
||||
content:function(){
|
||||
player.loseHp();
|
||||
},
|
||||
},
|
||||
liyong4:{
|
||||
trigger:{player:'useCardAfter'},
|
||||
forced:true,
|
||||
silent:true,
|
||||
filter:function(evt,player){
|
||||
if(!evt.card||evt.card.name!='sha') return false;
|
||||
if(evt.liyong) return false;
|
||||
var history=player.getHistory('useCard',function(evt){
|
||||
return evt.card.name=='sha';
|
||||
});
|
||||
var evt2=history[history.indexOf(evt)-1];
|
||||
return evt2&&evt2.liyong;
|
||||
},
|
||||
content:function(){
|
||||
player.removeSkill('liyong2');
|
||||
},
|
||||
},
|
||||
//韩遂
|
||||
xinniluan:{
|
||||
trigger:{global:'phaseJieshuBegin'},
|
||||
|
@ -687,7 +762,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
return event.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
|
||||
var info=get.info(skill);
|
||||
return info&&!info.juexingji&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
return info&&!info.juexingji&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
}).length>0;
|
||||
},
|
||||
logTarget:'player',
|
||||
|
@ -700,7 +775,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.awakenSkill('quanfeng');
|
||||
var list=trigger.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
|
||||
var info=get.info(skill);
|
||||
return info&&!info.juexingji&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
return info&&!info.juexingji&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
});
|
||||
if(list.length==1) event._result={control:list[0]};
|
||||
else player.chooseControl(list).set('prompt','选择获得'+get.translation(trigger.player)+'的一个技能').set('forceDie',true).set('ai',function(){
|
||||
|
@ -6479,7 +6554,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
chengzhao_info:'一名角色的结束阶段,若你于本回合内获得了两张以上的牌,则你可以与一名其他角色拼点。若你赢,你视为对其使用一张无视防具的【杀】。',
|
||||
yangyi:'杨仪',
|
||||
duoduan:'度断',
|
||||
duoduan_info:'每回合限一次,当你成为【杀】的目标后,你可以重铸一张牌。若如此做,此【杀】的使用者选择一项:摸两张牌令此【杀】无效,或弃置一张牌并令你不能闪避此【杀】。',
|
||||
duoduan_info:'每回合限一次,当你成为【杀】的目标后,你可以重铸一张牌。若如此做,你选择一项:①令使用者摸两张牌,且此【杀】无效。②令使用弃置一张牌,且你不能响应此【杀】。',
|
||||
gongsun:'共损',
|
||||
gongsun_info:'出牌阶段开始时,你可以弃置两张牌并指定一名其他角色。你选择一个基本牌或普通锦囊牌的牌名。直到你的下回合开始或你死亡,你与其不能使用或打出或弃置此名称的牌。',
|
||||
gongsun_shadow:'共损',
|
||||
|
@ -6575,7 +6650,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
hongyi2:'弘仪',
|
||||
hongyi_info:'出牌阶段限一次,你可以弃置X张牌并选择一名其他角色(X为场上已阵亡的角色数且至多为2)。你的下回合开始前,该角色造成伤害时进行判定,若结果为:黑色,此伤害-1。红色,受到伤害的角色摸一张牌。',
|
||||
quanfeng:'劝封',
|
||||
quanfeng_info:'锁定技,限定技,一名角色死亡时,你选择获得其的一个技能(主公技,限定技,觉醒技,带有Charlotte标签的技能除外),然后加1点体力上限并回复1点体力。',
|
||||
quanfeng_info:'锁定技,限定技,一名角色死亡时,你选择获得其的一个技能(主公技,限定技,觉醒技,隐匿技,带有Charlotte标签的技能除外),然后加1点体力上限并回复1点体力。',
|
||||
simashi:'司马师',
|
||||
baiyi:'败移',
|
||||
baiyi_info:'限定技,出牌阶段,若你已受伤,你可以交换两名其他角色的座次。',
|
||||
|
@ -6595,6 +6670,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xinniluan_info:'其他角色的结束阶段,若其本回合对除其以外的角色使用过牌,则你可以对其使用一张【杀】。若以此法使用的【杀】造成伤害,则你弃置其一张牌。',
|
||||
xiaoxi_hansui:'骁袭',
|
||||
xiaoxi_hansui_info:'你可以将一张黑色牌当做【杀】使用或打出。',
|
||||
xin_zhangfei:'手杀张飞',
|
||||
liyong:'厉勇',
|
||||
liyong2:'厉勇',
|
||||
liyong3:'厉勇',
|
||||
liyong_info:'锁定技,若你于出牌阶段使用的【杀】被【闪】抵消,本阶段你下一张【杀】不可被响应且伤害+1,指定的目标本回合非锁定技失效,当此【杀】造成伤害后,若目标角色未死亡,你失去1点体力。',
|
||||
mobile_standard:'手杀异构·标准包',
|
||||
mobile_shenhua:'手杀异构·神话再临',
|
||||
mobile_yijiang1:'手杀异构·一将成名',
|
||||
|
|
|
@ -34,7 +34,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
old_caochong:['male','wei',3,['oldrenxin','oldchengxiang']],
|
||||
yuji:['male','qun',3,['old_guhuo'],['forbidai']],
|
||||
zhangjiao:['male','qun',3,['leiji','guidao','huangtian'],['zhu']],
|
||||
old_zhangfei:['male','shu',4,['paoxiao','new_tishen']],
|
||||
old_zhangfei:['male','shu',4,['new_repaoxiao','new_tishen']],
|
||||
old_zhaoyun:['male','shu',4,['longdan','new_yajiao']],
|
||||
old_huatuo:['male','qun',3,['jijiu','chulao']],
|
||||
jsp_caoren:['male','wei',4,['kuiwei','yanzheng']],
|
||||
|
|
7326
character/ow.js
7326
character/ow.js
File diff suppressed because it is too large
Load Diff
|
@ -938,6 +938,7 @@ window.noname_character_rank={
|
|||
'mini_zhangchunhua',
|
||||
'hucheer',
|
||||
'jin_xiahouhui',
|
||||
'xin_zhangfei',
|
||||
],
|
||||
c:[
|
||||
'xiahoudun',
|
||||
|
@ -1526,6 +1527,7 @@ window.noname_character_rank={
|
|||
'xin_lingtong',
|
||||
'xin_liubiao',
|
||||
're_xinxianying',
|
||||
'xin_zhangfei',
|
||||
'wangrong',
|
||||
're_quyi',
|
||||
'hanfu',
|
||||
|
|
|
@ -1182,7 +1182,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
unequip_ai:true,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(get.attitude(player,arg.target)>0) return false;
|
||||
if(tag=='directHit_ai') return arg.target.hp>=Math.max(1,arg.target.countCards('h')-1);
|
||||
if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -1318,7 +1321,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
unequip_ai:true,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(tag=='directHit_ai') return arg.card.name=='sha'&&arg.target.countCards('e',function(card){
|
||||
return get.value(card)>1;
|
||||
})>0;
|
||||
if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -2943,7 +2950,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
unequip_ai:true,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(get.attitude(player,arg.target)>0) return false;
|
||||
if(tag=='directHit_ai') return arg.target.hp>=Math.max(1,arg.target.countCards('h')-1);
|
||||
if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -3616,7 +3626,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var skills=lib.character[name][3];
|
||||
for(var j=0;j<skills.length;j++){
|
||||
var info=lib.skill[skills[j]];
|
||||
if(info.charlotte||(info.unique&&!info.gainable)||info.juexingji||info.limited||info.zhuSkill) skills.splice(j--,1);
|
||||
if(info.charlotte||(info.unique&&!info.gainable)||info.juexingji||info.limited||info.zhuSkill||info.hiddenSkill) skills.splice(j--,1);
|
||||
}
|
||||
if(skills.length){
|
||||
player.storage.rehuashen.character.push(name);
|
||||
|
@ -4102,7 +4112,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
useShan:true,
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(get.tag(card,'respondShan')){
|
||||
if(get.tag(card,'respondShan')&&!player.hasSkillTag('directHit_ai',true,{
|
||||
target:target,
|
||||
card:card,
|
||||
},true)){
|
||||
var hastarget=game.hasPlayer(function(current){
|
||||
return get.attitude(target,current)<0;
|
||||
});
|
||||
|
@ -4881,7 +4894,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
result:{
|
||||
target:function (player,target){
|
||||
target:function(player,target){
|
||||
var hs=player.getCards('h');
|
||||
if(hs.length<3) return 0;
|
||||
if(target.countCards('h')>target.hp+1&&get.recoverEffect(target)>0){
|
||||
|
@ -4894,24 +4907,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
order:9,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(!arg.target.hasSkillTag('new_yijue2')) return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
"new_yijue2":{
|
||||
trigger:{
|
||||
player:"damageBegin1",
|
||||
},
|
||||
filter:function (event){
|
||||
filter:function(event){
|
||||
return event.source&&event.source.hasSkill('new_yijue')&&event.card&&event.card.name=='sha'&&get.suit(event.card)=='heart'&&event.notLink();
|
||||
},
|
||||
silent:true,
|
||||
popup:false,
|
||||
forced:true,
|
||||
content:function (){
|
||||
content:function(){
|
||||
trigger.num++;
|
||||
},
|
||||
mark:true,
|
||||
mod:{
|
||||
cardEnabled2:function (card){
|
||||
cardEnabled2:function(card){
|
||||
if(get.position(card)=='h') return false;
|
||||
},
|
||||
},
|
||||
|
@ -4919,10 +4936,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:"不能使用或打出手牌",
|
||||
},
|
||||
},
|
||||
paoxiao_re_zhangfei:{audio:2},
|
||||
"new_repaoxiao":{
|
||||
audio:"paoxiao",
|
||||
firstDo:true,
|
||||
audioname2:{old_guanzhang:'old_fuhun'},
|
||||
audioname2:{
|
||||
old_guanzhang:'old_fuhun',
|
||||
xin_zhangfei:'paoxiao_re_zhangfei',
|
||||
},
|
||||
audioname:['re_zhangfei','guanzhang','xiahouba'],
|
||||
trigger:{player:'useCard1'},
|
||||
forced:true,
|
||||
|
@ -5401,22 +5422,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
frequent:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
if(!player.storage.reluoshen) player.storage.reluoshen=[];
|
||||
if(event.cards==undefined) event.cards=[];
|
||||
player.addTempSkill('reluoshen_add');
|
||||
event.cards=[];
|
||||
"step 1"
|
||||
var next=player.judge(function(card){
|
||||
if(get.color(card)=='black') return 1.5;
|
||||
return -1.5;
|
||||
});
|
||||
if(get.mode()!='guozhan'&&!player.hasSkillTag('rejudge')) next.set('callback',function(){
|
||||
if(event.judgeResult.color=='black'&&get.position(card,true)=='o'){
|
||||
player.storage.reluoshen.push(card);
|
||||
player.gain(card,'gain2');
|
||||
player.gain(card,'gain2').gaintag.add('reluoshen');
|
||||
}
|
||||
});
|
||||
else next.set('callback',function(){
|
||||
if(event.judgeResult.color=='black') event.getParent().orderingCards.remove(card);
|
||||
});
|
||||
"step 1"
|
||||
"step 2"
|
||||
if(result.bool){
|
||||
event.cards.push(result.card);
|
||||
player.chooseBool('是否再次发动【洛神】?').set('frequentSkill','reluoshen');
|
||||
|
@ -5429,14 +5450,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
if(event.cards.length){
|
||||
player.gain(event.cards,'gain2');
|
||||
player.storage.reluoshen.addArray(event.cards);
|
||||
player.gain(event.cards,'gain2').gaintag.add('reluoshen');
|
||||
}
|
||||
event.finish();
|
||||
}
|
||||
"step 2"
|
||||
"step 3"
|
||||
if(result.bool){
|
||||
event.goto(0);
|
||||
event.goto(1);
|
||||
}
|
||||
else{
|
||||
for(var i=0;i<event.cards.length;i++){
|
||||
|
@ -5445,31 +5465,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
if(event.cards.length){
|
||||
player.gain(event.cards,'gain2');
|
||||
player.storage.reluoshen=event.cards.slice(0);
|
||||
player.gain(event.cards,'gain2').gaintag.add('reluoshen');
|
||||
}
|
||||
}
|
||||
},
|
||||
mod:{
|
||||
ignoredHandcard:function(card,player){
|
||||
if(player.storage.reluoshen&&player.storage.reluoshen.contains(card)){
|
||||
return true;
|
||||
}
|
||||
},
|
||||
cardDiscardable:function(card,player,name){
|
||||
if(name=='phaseDiscard'&&player.storage.reluoshen&&player.storage.reluoshen.contains(card)){
|
||||
return false;
|
||||
}
|
||||
},
|
||||
},
|
||||
group:'reluoshen_clear',
|
||||
subSkill:{
|
||||
clear:{
|
||||
trigger:{player:'phaseAfter'},
|
||||
silent:true,
|
||||
content:function(){
|
||||
delete player.storage.reluoshen;
|
||||
}
|
||||
add:{
|
||||
mod:{
|
||||
ignoredHandcard:function(card,player){
|
||||
if(card.hasGaintag('reluoshen')){
|
||||
return true;
|
||||
}
|
||||
},
|
||||
cardDiscardable:function(card,player,name){
|
||||
if(name=='phaseDiscard'&&card.hasGaintag('reluoshen')){
|
||||
return false;
|
||||
}
|
||||
},
|
||||
},
|
||||
onremove:function(player){
|
||||
player.removeGaintag('reluoshen');
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -6841,7 +6857,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audioname:['boss_lvbu3'],
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
check:function(event,player){
|
||||
return get.attitude(player,event.target)<0;
|
||||
return get.attitude(player,event.target)<=0;
|
||||
},
|
||||
filter:function(event,player){
|
||||
return event.card.name=='sha';
|
||||
|
@ -6873,10 +6889,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
ignoreSkill:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(tag=='directHit_ai'){
|
||||
return get.attitude(player,arg.target)<=0;
|
||||
}
|
||||
if(!arg||arg.isLink||!arg.card||arg.card.name!='sha') return false;
|
||||
if(!arg.target||get.attitude(player,arg.target)>=0) return false;
|
||||
if(!arg.skill||!lib.skill[arg.skill]||lib.skill[arg.skill].charlotte||get.is.locked(arg.skill)||!arg.target.getSkills(true,false).contains(arg.skill)) return false;
|
||||
},
|
||||
directHit_ai:true,
|
||||
}
|
||||
},
|
||||
reyicong:{
|
||||
|
@ -7017,7 +7037,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
trigger.directHit.addArray(game.players);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return arg.card.name=='sha'&&get.color(arg.card)=='red';
|
||||
},
|
||||
},
|
||||
},
|
||||
zhuhai:{
|
||||
trigger:{global:'phaseJieshuBegin'},
|
||||
|
@ -7460,7 +7486,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
target.chooseToUse({name:'sha'},'挑衅:对'+get.translation(player)+'使用一张杀,或令其弃置你的一张牌').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
|
||||
target.chooseToUse(function(card,player,event){
|
||||
if(get.name(card)!='sha') return false;
|
||||
return lib.filter.filterCard.apply(this,arguments);
|
||||
},'挑衅:对'+get.translation(player)+'使用一张杀,或令其弃置你的一张牌').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
|
||||
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
|
||||
return lib.filter.filterTarget.apply(this,arguments);
|
||||
}).set('sourcex',player);
|
||||
|
@ -8096,7 +8125,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
reguhuo_ally_bg:'真',
|
||||
reguhuo_betray_bg:'假',
|
||||
rehuashen:'化身',
|
||||
rehuashen_info:'游戏开始后,你随机获得三张未加入游戏的武将牌,选一张置于你面前并声明该武将牌的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。你的每个准备阶段和结束后,你可以选择一项:①弃置至多两张未展示的化身牌并重新获得等量化身牌;②更换所展示的化身牌或技能。(你不可声明限定技、觉醒技或主公技)。',
|
||||
rehuashen_info:'游戏开始后,你随机获得三张未加入游戏的武将牌,选一张置于你面前并声明该武将牌的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。你的每个准备阶段和结束后,你可以选择一项:①弃置至多两张未展示的化身牌并重新获得等量化身牌;②更换所展示的化身牌或技能。(你不可声明限定技、觉醒技、隐匿技、主公技等特殊技能)。',
|
||||
rexinsheng:'新生',
|
||||
rexinsheng_info:'当你受到1点伤害后,你可以获得一张新的化身牌。',
|
||||
re_zhurong:'界祝融',
|
||||
|
|
|
@ -1058,11 +1058,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger:{
|
||||
player:"useCard",
|
||||
},
|
||||
filter:function (event,player){
|
||||
filter:function(event,player){
|
||||
return player.isPhaseUsing()&&(event.card.name=='sha'||get.type(event.card)=='trick');
|
||||
},
|
||||
check:function(trigger,player){
|
||||
if(player.countCards('h')<=player.hp+1&&((get.type(trigger.card)=='trick'&&game.countPlayer(function(current){return get.attitude(current,player)<=0&¤t.countCards('h',{name:'wuxie'})})>0)||trigger.card.name=='sha')) return true;
|
||||
check:function(event,player){
|
||||
if(['wuzhong','kaihua','dongzhuxianji'].contains(event.card.name)) return false;
|
||||
player._wanglie_temp=true;
|
||||
var eff=0;
|
||||
for(var i of event.targets){
|
||||
eff+=get.effect(i,event.card,player,player);
|
||||
}
|
||||
delete player._wanglie_temp;
|
||||
if(eff<0) return true;
|
||||
if(!player.countCards('h',function(card){
|
||||
return player.hasValueTarget(card,null,true);
|
||||
})) return true;
|
||||
if(get.tag(event.card,'damage')&&!player.needsToDiscard()&&!player.countCards('h',function(card){
|
||||
return get.tag(card,'damage')&&player.hasValueTarget(card,null,true);
|
||||
})) return true;
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
|
@ -1070,6 +1083,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
trigger.directHit.addArray(game.players);
|
||||
player.addTempSkill('drlt_wanglie2');
|
||||
},
|
||||
ai:{
|
||||
pretao:true,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(player._wanglie_temp) return false;
|
||||
player._wanglie_temp=true;
|
||||
var bool=function(){
|
||||
if(['wuzhong','kaihua','dongzhuxianji'].contains(arg.card.name)) return false;
|
||||
if(get.attitude(player,arg.target)>0||!player.isPhaseUsing()) return false;
|
||||
var cards=player.getCards('h',function(card){
|
||||
return card!=arg.card&&(!arg.card.cards||!arg.card.cards.contains(card));
|
||||
});
|
||||
var sha=player.getCardUsable('sha');
|
||||
if(arg.card.name=='sha') sha--;
|
||||
cards=cards.filter(function(card){
|
||||
if(card.name=='sha'&&sha<=0) return false;
|
||||
return player.hasValueTarget(card,null,true);
|
||||
});
|
||||
if(!cards.length) return true;
|
||||
if(!get.tag(arg.card,'damage')) return false;
|
||||
if(!player.needsToDiscard()&&!cards.filter(function(card){
|
||||
return get.tag(card,'damage');
|
||||
}).length) return true;
|
||||
return false;
|
||||
}();
|
||||
delete player._wanglie_temp;
|
||||
return bool;
|
||||
},
|
||||
},
|
||||
},
|
||||
"drlt_wanglie2":{
|
||||
mod:{
|
||||
|
@ -1078,7 +1120,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
|
||||
liangyin:{
|
||||
audio:2,
|
||||
group:["liangyin_1","liangyin_2"],
|
||||
|
@ -2231,7 +2272,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
unequip_ai:true,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(tag=='directHit_ai') return arg.card.name=='sha'&&arg.target.countCards('e',function(card){
|
||||
return get.value(card)>1;
|
||||
})>0;
|
||||
if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -2748,7 +2793,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
ai:{
|
||||
threaten:0.5
|
||||
threaten:0.5,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(get.attitude(player,arg.target)<=0&&arg.card.name=='sha'&&player.countCards('h',function(card){
|
||||
return card!=arg.card&&(!arg.card.cards||!arg.card.cards.contains(card));
|
||||
})>=arg.target.countCards('h')) return true;
|
||||
return false;
|
||||
},
|
||||
}
|
||||
},
|
||||
tiaoxin:{
|
||||
|
@ -2761,7 +2813,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
target.chooseToUse({name:'sha'},'挑衅:对'+get.translation(player)+'使用一张杀,或令其弃置你的一张牌').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
|
||||
target.chooseToUse(function(card,player,event){
|
||||
if(get.name(card)!='sha') return false;
|
||||
return lib.filter.filterCard.apply(this,arguments);
|
||||
},'挑衅:对'+get.translation(player)+'使用一张杀,或令其弃置你的一张牌').set('targetRequired',true).set('complexSelect',true).set('filterTarget',function(card,player,target){
|
||||
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
|
||||
return lib.filter.filterTarget.apply(this,arguments);
|
||||
}).set('sourcex',player);
|
||||
|
@ -3707,7 +3762,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var skills=lib.character[name][3].slice(0);
|
||||
for(var i=0;i<skills.length;i++){
|
||||
var info=lib.skill[skills[i]];
|
||||
if(info.limited||info.juexingji||info.charlotte||info.zhuSkill){
|
||||
if(info.limited||info.juexingji||info.charlotte||info.zhuSkill||info.hiddenSkill){
|
||||
skills.splice(i--,1);
|
||||
}
|
||||
}
|
||||
|
@ -3792,7 +3847,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(!info){
|
||||
continue;
|
||||
}
|
||||
if(!info.limited&&!info.juexingji&&!info.charlotte&&!info.zhuSkill){
|
||||
if(!info.limited&&!info.juexingji&&!info.charlotte&&!info.zhuSkill&&!info.hiddenSkill){
|
||||
add=true;break;
|
||||
}
|
||||
}
|
||||
|
@ -4733,7 +4788,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
map[id].shanRequired=2;
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(arg.card.name!='sha'||arg.target.sex!='female'||arg.target.countCards('h','shan')>1) return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
benghuai:{
|
||||
audio:2,
|
||||
|
@ -5917,7 +5978,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
attackFrom:function(from,to,distance){
|
||||
if(get.zhu(from,'shouyue')) return distance-1;
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(get.attitude(player,arg.target)>0||arg.card.name!='sha') return false;
|
||||
var length=arg.target.countCards('h');
|
||||
return (length>=player.hp||length<=player.getAttackRange());
|
||||
},
|
||||
},
|
||||
},
|
||||
kuanggu:{
|
||||
audio:2,
|
||||
|
@ -7402,7 +7471,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
beige_info:'当有角色受到【杀】造成的伤害后,你可以弃一张牌,并令其进行一次判定,若判定结果为:♥该角色回复1点体力;♦︎该角色摸两张牌;♣伤害来源弃两张牌;♠伤害来源将其武将牌翻面',
|
||||
duanchang_info:'锁定技,杀死你的角色失去当前的所有技能。',
|
||||
// fushen_info:'回合开始前,你可以选择与任意一名角色交换控制权,该角色可选择在下一个回合开始前与你换回',
|
||||
huashen_info:'所有人都展示武将牌后,你随机获得两张未加入游戏的武将牌,选一张置于你面前并声明该武将的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。在你的每个准备阶段和结束后,你可以替换化身牌,你须为新的化身重新声明一项技能(你不可声明限定技、觉醒技或主公技)。',
|
||||
huashen_info:'所有人都展示武将牌后,你随机获得两张未加入游戏的武将牌,选一张置于你面前并声明该武将的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。在你的每个准备阶段和结束后,你可以替换化身牌,你须为新的化身重新声明一项技能(你不可声明限定技、觉醒技、隐匿技、主公技等特殊技能)。',
|
||||
xinsheng_info:'每当你受到1点伤害后,你可获得一张新的化身牌。',
|
||||
jiangwei:'姜维',
|
||||
liushan:'刘禅',
|
||||
|
|
121
character/sp.js
121
character/sp.js
|
@ -566,7 +566,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
return event.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
|
||||
var info=get.info(skill);
|
||||
return info&&!info.juexingji&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
return info&&!info.juexingji&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
}).length>0;
|
||||
},
|
||||
logTarget:'player',
|
||||
|
@ -578,7 +578,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.awakenSkill('tuogu');
|
||||
var list=trigger.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
|
||||
var info=get.info(skill);
|
||||
return info&&!info.juexingji&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
return info&&!info.juexingji&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
});
|
||||
if(list.length==1) event._result={control:list[0]};
|
||||
else trigger.player.chooseControl(list).set('prompt','选择令'+get.translation(player)+'获得一个技能').set('forceDie',true).set('ai',function(){
|
||||
|
@ -603,7 +603,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
return event.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
|
||||
var info=get.info(skill);
|
||||
return info&&!info.juexingji&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
return info&&!info.juexingji&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
}).length>0;
|
||||
},
|
||||
logTarget:'player',
|
||||
|
@ -611,7 +611,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
var list=trigger.player.getStockSkills('仲村由理','天下第一').filter(function(skill){
|
||||
var info=get.info(skill);
|
||||
return info&&!info.juexingji&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
return info&&!info.juexingji&&!info.hiddenSkill&&!info.zhuSkill&&!info.charlotte&&!info.limited;
|
||||
});
|
||||
if(list.length==1) event._result={control:list[0]};
|
||||
else trigger.player.chooseControl(list).set('prompt','选择令'+get.translation(player)+'获得一个技能').set('forceDie',true).set('ai',function(){
|
||||
|
@ -3095,11 +3095,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
}
|
||||
});
|
||||
player.$throw(list);
|
||||
player.$throw(list,1000);
|
||||
player.lose(list,ui.discardPile,'visible');
|
||||
game.log(player,'将',list,'置入弃牌堆');
|
||||
}
|
||||
},
|
||||
mark:{
|
||||
trigger:{
|
||||
player:'gainBegin',
|
||||
global:'phaseBeginStart',
|
||||
},
|
||||
silent:true,
|
||||
filter:function(event,player){
|
||||
return event.name!='gain'||player!=_status.currentPhase;
|
||||
},
|
||||
content:function(){
|
||||
if(trigger.name=='gain') trigger.gaintag.add('zishu');
|
||||
else player.removeGaintag('zishu');
|
||||
},
|
||||
},
|
||||
draw:{
|
||||
trigger:{player:'gainAfter'},
|
||||
audio:"zishu",
|
||||
|
@ -3117,7 +3131,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
threaten:1.2,
|
||||
nogain:1
|
||||
},
|
||||
group:['zishu_draw','zishu_discard',]
|
||||
group:['zishu_draw','zishu_discard','zishu_mark']
|
||||
},
|
||||
xinyingyuan:{
|
||||
audio:'yingyuan',
|
||||
|
@ -3504,6 +3518,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return current!=player&&get.distance(current,player)<=1;
|
||||
}));
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return get.distance(arg.target,player)<=1;
|
||||
},
|
||||
},
|
||||
},
|
||||
wylianji:{
|
||||
enable:'phaseUse',
|
||||
|
@ -4858,8 +4878,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
delay:false,
|
||||
filterCard:{name:'sha'},
|
||||
content:function(){
|
||||
target.gain(cards,player,'giveAuto');
|
||||
target.storage.fuman3=cards[0];
|
||||
target.gain(cards,player,'giveAuto').gaintag.add('fuman');
|
||||
target.storage.fuman2=player;
|
||||
target.addTempSkill('fuman2',{player:'phaseAfter'});
|
||||
},
|
||||
|
@ -4879,13 +4898,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
fuman2:{
|
||||
mod:{
|
||||
aiOrder:function(player,card,num){
|
||||
if(card==player.storage.fuman3&&player.storage.fuman2.isIn()) return num+get.sgn(get.attitude(player,player.storage.fuman2));
|
||||
if(get.itemtype(card)=='card'&&card.hasGaintag('fuman')&&player.storage.fuman2.isIn()) return num+get.sgn(get.attitude(player,player.storage.fuman2));
|
||||
},
|
||||
},
|
||||
trigger:{player:'useCard'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.cards.contains(player.storage.fuman3)&&player.storage.fuman2.isIn();
|
||||
if(!player.storage.fuman2.isIn()) return false;
|
||||
return player.getHistory('lose',function(evt){
|
||||
if(evt.getParent()!=event) return false;
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains('fuman')) return true;
|
||||
}
|
||||
return false;
|
||||
}).length>0;
|
||||
},
|
||||
mark:true,
|
||||
intro:{
|
||||
|
@ -4900,7 +4926,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
onremove:function(player){
|
||||
delete player.storage.fuman2;
|
||||
delete player.storage.fuman3;
|
||||
player.removeGaintag('fuman');
|
||||
},
|
||||
},
|
||||
qizhou:{
|
||||
|
@ -5212,7 +5238,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
for(var i of list){
|
||||
skills.addArray((lib.character[i][3]||[]).filter(function(skill){
|
||||
var info=get.info(skill);
|
||||
return info&&!info.zhuSkill&&!info.limited&&!info.juexingji&&!info.charlotte;
|
||||
return info&&!info.zhuSkill&&!info.limited&&!info.juexingji&&!info.hiddenSkill&&!info.charlotte;
|
||||
}));
|
||||
}
|
||||
if(!list.length||!skills.length){event.finish();return;}
|
||||
|
@ -5341,6 +5367,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player:'damageEnd',
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event){
|
||||
return event.card&&event.card.name=='sha';
|
||||
},
|
||||
|
@ -5637,70 +5664,54 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(name=='phaseDiscard'&&get.color(card)=='black') return false;
|
||||
}
|
||||
},
|
||||
trigger:{global:'gainBegin'},
|
||||
trigger:{global:'gainAfter'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
if(event.source==player&&event.player!=player){
|
||||
for(var i=0;i<event.cards.length;i++){
|
||||
if(get.color(event.cards[i])=='black') return true;
|
||||
}
|
||||
if(event.player!=player){
|
||||
var hs=event.player.getCards('h');
|
||||
var evt=event.getl(player);
|
||||
return evt&&evt.cards2&&evt.cards2.filter(function(card){
|
||||
return hs.contains(card)&&get.color(card,event.player)=='black';
|
||||
}).length>0;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
trigger.player.addSkill('xiehui2');
|
||||
if(!trigger.player.storage.xiehui2){
|
||||
trigger.player.storage.xiehui2=[];
|
||||
}
|
||||
for(var i=0;i<trigger.cards.length;i++){
|
||||
if(get.color(trigger.cards[i])=='black'){
|
||||
trigger.player.storage.xiehui2.add(trigger.cards[i]);
|
||||
}
|
||||
}
|
||||
var hs=trigger.player.getCards('h');
|
||||
var cards=trigger.getl(player).cards2.filter(function(card){
|
||||
return hs.contains(card)&&get.color(card,trigger.player)=='black';
|
||||
});
|
||||
trigger.player.addGaintag(cards,'xiehui');
|
||||
}
|
||||
},
|
||||
xiehui2:{
|
||||
mark:true,
|
||||
intro:{
|
||||
content:'不能使用、打出或弃置获得的黑色牌',
|
||||
nocount:true
|
||||
},
|
||||
mod:{
|
||||
cardDiscardable:function(card,player){
|
||||
if(player.storage.xiehui2&&player.storage.xiehui2.contains(card)) return false;
|
||||
if(card.hasGaintag('xiehui')) return false;
|
||||
},
|
||||
cardEnabled2:function(card,player){
|
||||
if(player.storage.xiehui2&&player.storage.xiehui2.contains(card)) return false;
|
||||
if(get.itemtype(card)=='card'&&card.hasGaintag('xiehui')) return false;
|
||||
},
|
||||
},
|
||||
group:['xiehui3','xiehui4']
|
||||
},
|
||||
xiehui3:{
|
||||
trigger:{player:'changeHp'},
|
||||
forced:true,
|
||||
popup:false,
|
||||
charlotte:true,
|
||||
filter:function(event){
|
||||
return event.num<0;
|
||||
},
|
||||
content:function(){
|
||||
player.removeSkill('xiehui2');
|
||||
delete player.storage.xiehui2;
|
||||
}
|
||||
},
|
||||
xiehui4:{
|
||||
trigger:{player:'loseEnd'},
|
||||
silent:true,
|
||||
content:function(){
|
||||
if(player.storage.xiehui2){
|
||||
for(var i=0;i<player.storage.xiehui2.length;i++){
|
||||
if(trigger.cards.contains(player.storage.xiehui2[i])){
|
||||
player.storage.xiehui2.splice(i--,1);
|
||||
}
|
||||
}
|
||||
}
|
||||
// player.updateMarks();
|
||||
}
|
||||
},
|
||||
onremove:function(player){
|
||||
player.removeGaintag('xiehui');
|
||||
},
|
||||
},
|
||||
shanjia:{
|
||||
sync:function(player){
|
||||
|
@ -10043,10 +10054,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.chooseControl('basic','trick','equip','cancel2',function(){
|
||||
var source=_status.event.source;
|
||||
if(get.attitude(_status.event.player,source)>0) return 'cancel2';
|
||||
if(!source.storage.jilei2||!source.storage.jilei2.contains('basic')) return 'basic';
|
||||
if(_status.currentPhase!=source) return 'trick';
|
||||
if(lib.filter.cardUsable({name:'sha'},source)&&source.countCards('h')>=2) return 'basic';
|
||||
return 'trick';
|
||||
var list=['basic','trick','equip'].filter(function(name){
|
||||
return (!source.storage.jilei2||!source.storage.jilei2.contains(name));
|
||||
});
|
||||
if(!list.length) return 'cancel2';
|
||||
if(list.contains('trick')&&source.countCards('h',function(card){
|
||||
return get.type(card,source)=='trick'&&source.hasValueTarget(card);
|
||||
})>1) return 'trick';
|
||||
return list[0];
|
||||
}).set('prompt',get.prompt2('jilei',trigger.source)).set('source',trigger.source);
|
||||
'step 1'
|
||||
if(result.control!='cancel2'){
|
||||
|
@ -15557,9 +15572,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
olxingshen_info:'当你受到伤害后,你可以随机摸至多两张牌。若如此做,你获得X个“省”,且下一次发动〖严教〗展示牌时移去所有“省”并多展示等量的牌。(X为你已损失的体力值,且你至多拥有6个“省”)',
|
||||
caoshuang:'曹爽',
|
||||
tuogu:'托孤',
|
||||
tuogu_info:'限定技,一名角色死亡时,你可以令其选择其武将牌上的一个技能(主公技,限定技,觉醒技等特殊技能除外),然后你获得其选择的技能。',
|
||||
tuogu_info:'限定技,一名角色死亡时,你可以令其选择其武将牌上的一个技能(主公技,限定技,觉醒技,隐匿技等特殊技能除外),然后你获得其选择的技能。',
|
||||
retuogu:'托孤',
|
||||
retuogu_info:'一名角色死亡时,你可以令其选择其武将牌上的一个技能(主公技,限定技,觉醒技等特殊技能除外),然后你获得其选择的技能并失去上次因〖托孤〗获得的技能。',
|
||||
retuogu_info:'一名角色死亡时,你可以令其选择其武将牌上的一个技能(主公技,限定技,觉醒技,隐匿技等特殊技能除外),然后你获得其选择的技能并失去上次因〖托孤〗获得的技能。',
|
||||
shanzhuan:'擅专',
|
||||
shanzhuan_info:'当你对其他角色造成伤害后,若其判定区没有牌,则你你可以将其的一张牌置于其的判定区。若此牌不为延时锦囊牌且此牌为:红色,此牌视为【乐不思蜀】;黑色,此牌视为【兵粮寸断】。回合结束时,若你本回合内未造成伤害,你可摸一张牌。',
|
||||
spniluan:'逆乱',
|
||||
|
|
207
character/sp2.js
207
character/sp2.js
|
@ -233,25 +233,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
'step 0'
|
||||
player.addSkill('tairan2');
|
||||
if(!player.storage.tairan2) player.storage.tairan2={
|
||||
num:0,
|
||||
cards:[],
|
||||
};
|
||||
if(!player.storage.tairan2) player.storage.tairan2=0;
|
||||
var num=Math.min(player.maxHp,5)-player.hp;
|
||||
if(num){
|
||||
player.storage.tairan2.num+=num;
|
||||
if(num>0){
|
||||
player.storage.tairan2+=num;
|
||||
player.recover(num);
|
||||
}
|
||||
'step 1'
|
||||
player.drawTo(Math.min(player.maxHp,5));
|
||||
'step 2'
|
||||
if(get.itemtype(result)=='cards') player.storage.tairan2.cards.addArray(result);
|
||||
player.drawTo(Math.min(player.maxHp,5)).gaintag=['tairan'];
|
||||
},
|
||||
},
|
||||
tairan2:{
|
||||
mod:{
|
||||
aiValue:function(player,card,num){
|
||||
if(player.storage.tairan2.cards.contains(card)) return num/10;
|
||||
if(card.hasGaintag&&card.hasGaintag('tairan')) return num/10;
|
||||
},
|
||||
},
|
||||
audio:'tairan',
|
||||
|
@ -261,12 +256,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
onremove:true,
|
||||
content:function(){
|
||||
var map=player.storage.tairan2;
|
||||
if(map.num) player.loseHp(map.num);
|
||||
var hs=player.getCards('h');
|
||||
var cards=map.cards.filter(function(card){
|
||||
return hs.contains(card);
|
||||
if(map>0) player.loseHp(map);
|
||||
var hs=player.getCards('h',function(card){
|
||||
return card.hasGaintag('tairan');
|
||||
});
|
||||
if(cards.length) player.discard(cards);
|
||||
if(hs.length) player.discard(hs);
|
||||
player.removeSkill('tairan2');
|
||||
},
|
||||
},
|
||||
|
@ -289,7 +283,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
event.card=card;
|
||||
player.gain(card,'gain2');
|
||||
'step 1'
|
||||
if(player.getCards('h').contains(card)&&get.subtype(card)=='equip5') player.chooseUseTarget(card,true).nopopup=true;
|
||||
if(player.getCards('h').contains(card)&&get.subtype(card)=='equip5') player.chooseUseTarget(card).nopopup=true;
|
||||
},
|
||||
},
|
||||
jyishi:{
|
||||
|
@ -444,11 +438,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
player.showCards(result.cards);
|
||||
var type=get.type2(result.cards[0],target);
|
||||
if(!target.storage.choufa2) target.storage.choufa2=[];
|
||||
target.storage.choufa2.addArray(target.getCards('h',function(card){
|
||||
var cards=target.getCards('h',function(card){
|
||||
return get.type2(card,target)!=type;
|
||||
}));
|
||||
if(target.storage.choufa2.length) target.addTempSkill('choufa2',{player:'phaseAfter'});
|
||||
});
|
||||
if(cards.length){
|
||||
target.addTempSkill('choufa2',{player:'phaseAfter'});
|
||||
target.addGaintag(cards,'choufa');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:9,
|
||||
|
@ -460,22 +456,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
choufa2:{
|
||||
onremove:true,
|
||||
onremove:function(player){
|
||||
player.removeGaintag('choufa');
|
||||
},
|
||||
charlotte:true,
|
||||
mod:{
|
||||
cardname:function(card,player){
|
||||
if(player.storage.choufa2.contains(card)) return 'sha';
|
||||
if(card.hasGaintag('choufa')) return 'sha';
|
||||
},
|
||||
cardnature:function(card,player){
|
||||
if(player.storage.choufa2.contains(card)) return false;
|
||||
if(card.hasGaintag('choufa')) return false;
|
||||
},
|
||||
},
|
||||
trigger:{player:'loseEnd'},
|
||||
silent:true,
|
||||
content:function(){
|
||||
player.storage.choufa2.removeArray(trigger.hs);
|
||||
if(!player.storage.choufa2.length) player.removeSkill('choufa2');
|
||||
},
|
||||
},
|
||||
zhaoran:{
|
||||
audio:2,
|
||||
|
@ -631,21 +623,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var next=player.chooseButton(true);
|
||||
next.set('dialog',event.videoId);
|
||||
next.set('ai',function(button){
|
||||
if(_status.event.answer) return button.link==_status.event.answer?1:0;
|
||||
return get.value(button.link,_status.event.player);
|
||||
});
|
||||
if(player.hasSkillTag('viewHandcard',null,target,true)) next.set('answer',card);
|
||||
'step 3'
|
||||
game.broadcastAll('closeDialog',event.videoId);
|
||||
player.addTempSkill('yanxi2');
|
||||
var card2=result.links[0];
|
||||
if(card2==card){
|
||||
player.popup('洗具');
|
||||
cards.remove(card2);
|
||||
player.$gain2(cards);
|
||||
player.gain(cards,'log');
|
||||
player.gain(card,target,'bySelf','giveAuto');
|
||||
player.gain(cards,'log').gaintag.add('yanxi');
|
||||
player.gain(card,target,'bySelf','giveAuto').gaintag.add('yanxi');
|
||||
}
|
||||
else{
|
||||
player.popup('杯具');
|
||||
player.gain(card2,'gain2');
|
||||
player.gain(card2,'gain2').gaintag.add('yanxi');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
|
@ -656,6 +651,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
yanxi2:{
|
||||
mod:{
|
||||
ignoredHandcard:function(card,player){
|
||||
if(card.hasGaintag('yanxi')) return true;
|
||||
},
|
||||
cardDiscardable:function(card,player,name){
|
||||
if(name=='phaseDiscard'&&card.hasGaintag('yanxi')) return false;
|
||||
},
|
||||
},
|
||||
onremove:function(player){
|
||||
player.removeGaintag('yanxi');
|
||||
},
|
||||
},
|
||||
sanchen:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
|
@ -722,6 +730,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.loseMaxHp();
|
||||
player.addSkillLog('pozhu');
|
||||
},
|
||||
derivation:'pozhu',
|
||||
},
|
||||
pozhu:{
|
||||
enable:'phaseUse',
|
||||
|
@ -772,10 +781,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
forced:true,
|
||||
filter:function(event,player){
|
||||
var stat=player.getStat();
|
||||
return stat.kill&&stat.kill>0||stat.damage&&stat.damage>1;
|
||||
return stat.damage&&stat.damage>0;
|
||||
},
|
||||
content:function(){
|
||||
player.addMark('xijue',1);
|
||||
player.addMark('xijue',player.getStat().damage);
|
||||
},
|
||||
},
|
||||
xijue_tuxi:{
|
||||
|
@ -829,11 +838,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
var nono=(Math.abs(get.attitude(player,trigger.player))<3||trigger.player.hp>1||trigger.player.countCards('e'));
|
||||
var nono=(Math.abs(get.attitude(player,trigger.player))<3||trigger.player.hp>(player.countMark('xijue')*1.5)||trigger.player.countCards('e',function(card){
|
||||
return get.value(card,trigger.player)<=0;
|
||||
}));
|
||||
if(get.damageEffect(trigger.player,player,player)<=0){
|
||||
nono=true;
|
||||
}
|
||||
var next=player.chooseToDiscard('是否弃置一枚“爵”,对'+get.translation(trigger.player)+'发动【骁果】?',{type:'basic'});
|
||||
var next=player.chooseToDiscard('是否弃置一枚“爵”和一张基本牌,对'+get.translation(trigger.player)+'发动【骁果】?',{type:'basic'});
|
||||
next.set('ai',function(card){
|
||||
if(_status.event.nono) return 0;
|
||||
return 8-get.useful(card);
|
||||
|
@ -1022,6 +1033,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return current!=player&&get.distance(player,current)<=1;
|
||||
}));
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return get.distance(player,arg.target)<=1;
|
||||
},
|
||||
},
|
||||
},
|
||||
zhuide:{
|
||||
audio:2,
|
||||
|
@ -1298,8 +1315,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
if(result.bool){
|
||||
player.useCard(get.autoViewAs({name:'sha',nature:'ice'},result.cards),result.cards,false,trigger.player,'qingleng');
|
||||
if(!player.storage.qingleng||!player.storage.qingleng.contains(trigger.player)){
|
||||
player.draw();
|
||||
player.markAuto('qingleng',[trigger.player]);
|
||||
player.storage.qingleng.sortBySeat();
|
||||
}
|
||||
}
|
||||
},
|
||||
intro:{
|
||||
content:'已对$发动过此技能',
|
||||
},
|
||||
},
|
||||
xuanmu:{
|
||||
audio:2,
|
||||
|
@ -2103,13 +2128,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
position:'he',
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.draw(cards.length*2);
|
||||
'step 1'
|
||||
if(get.itemtype(result)=='cards'){
|
||||
player.addTempSkill('minsi2');
|
||||
player.markAuto('minsi2',result);
|
||||
}
|
||||
player.draw(cards.length*2).gaintag=['minsi2'];
|
||||
player.addTempSkill('minsi2');
|
||||
},
|
||||
ai:{
|
||||
order:5,
|
||||
|
@ -2117,41 +2137,29 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
minsi2:{
|
||||
intro:{
|
||||
mark:function(dialog,content,player){
|
||||
if(content&&content.length){
|
||||
if(player==game.me||player.isUnderControl()){
|
||||
dialog.addAuto(content);
|
||||
}
|
||||
else{
|
||||
return '本回合以此法获得了'+get.cnNumber(content.length)+'张牌';
|
||||
}
|
||||
}
|
||||
},
|
||||
content:'cards',
|
||||
onremove:function(player){
|
||||
player.removeGaintag('minsi2');
|
||||
},
|
||||
onremove:true,
|
||||
mod:{
|
||||
targetInRange:function(card,player,target){
|
||||
if(!card.cards) return;
|
||||
var storage=player.getStorage('minsi2');
|
||||
for(var i of card.cards){
|
||||
if(!storage.contains(i)||get.color(i)!='black') return;
|
||||
if(!i.hasGaintag('minsi2')||get.color(i)!='black') return;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
ignoredHandcard:function(card,player){
|
||||
if(player.getStorage('minsi2').contains(card)&&get.color(card)=='red'){
|
||||
if(card.hasGaintag('minsi2')&&get.color(card)=='red'){
|
||||
return true;
|
||||
}
|
||||
},
|
||||
cardDiscardable:function(card,player,name){
|
||||
if(name=='phaseDiscard'&&player.getStorage('minsi2').contains(card)&&get.color(card)=='red'){
|
||||
if(name=='phaseDiscard'&&card.hasGaintag('minsi2')&&get.color(card)=='red'){
|
||||
return false;
|
||||
}
|
||||
},
|
||||
aiOrder:function(player,card,num){
|
||||
if(player.getStorage('minsi2').contains(card)&&get.color(card)=='black') return num-0.1;
|
||||
if(get.itemtype(card)=='card'&&card.hasGaintag('minsi2')&&get.color(card)=='black') return num-0.1;
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -2243,16 +2251,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
event.finish();
|
||||
'step 2'
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current.hasSkill('panshi');
|
||||
});
|
||||
player.chooseCardTarget({
|
||||
prompt:get.prompt('cixiao'),
|
||||
prompt2:('弃置一张牌并将'+get.translation(game.filterPlayer(function(current){
|
||||
return current.hasSkill('panshi');
|
||||
}))+'的「义子」标记转移给其他角色'),
|
||||
prompt2:('弃置一张牌并将'+get.translation(list)+'的「义子」标记转移给其他角色'),
|
||||
position:'he',
|
||||
filterTarget:function(card,player,target){
|
||||
return player!=target&&!target.hasSkill('panshi');
|
||||
},
|
||||
filterCard:lib.filter.cardDiscardable,
|
||||
ai1:function(card){
|
||||
if(_status.event.goon) return 5-get.value(card);
|
||||
return 0;
|
||||
},
|
||||
ai2:function(target){
|
||||
var player=_status.event.player;
|
||||
var att=-get.attitude(player,target);
|
||||
return att*target.countCards('h');
|
||||
},
|
||||
goon:function(target){
|
||||
var att=-get.attitude(player,target);
|
||||
return att*target.countCards('h')<=0;
|
||||
}(list[0]),
|
||||
});
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
|
@ -4253,7 +4275,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var max=0;
|
||||
var min=1;
|
||||
target.countCards('e',function(card){
|
||||
var val=get.value(card);
|
||||
var val=get.value(card,target);
|
||||
if(val>max) max=val;
|
||||
if(val<min) min=val;
|
||||
});
|
||||
|
@ -4510,7 +4532,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 2'
|
||||
var target=targets.shift();
|
||||
event.target=target;
|
||||
if(target.isAlive()) target.chooseToDiscard('he','弃置一张牌,或本回合内不能使用或打出手牌').set('ai',function(card){
|
||||
if(target.isAlive()) target.chooseToDiscard('he','弃置一张牌,或本回合内不能使用或打出牌').set('ai',function(card){
|
||||
var player=_status.event.player;
|
||||
var source=_status.event.getTrigger().player;
|
||||
if(get.attitude(source,player)>0) return -1;
|
||||
|
@ -4521,13 +4543,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(target.isAlive()&&!result.bool) target.addTempSkill('xiying2');
|
||||
if(targets.length) event.goto(2);
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return arg.target.hasSkill('xiying2');
|
||||
},
|
||||
},
|
||||
},
|
||||
xiying2:{
|
||||
mark:true,
|
||||
intro:{content:'本回合内不能使用或打出牌'},
|
||||
mod:{
|
||||
cardEnabled2:function (card){
|
||||
if(get.position(card)=='h') return false;
|
||||
cardEnabled2:function(card){
|
||||
return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
|
@ -5737,7 +5765,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
game.expandSkills(list2);
|
||||
for(var k=0;k<list2.length;k++){
|
||||
var info=lib.skill[list2[k]];
|
||||
if(!info||!info.trigger||!info.trigger.player||info.silent||info.limited||info.juexingji||info.zhuanhuanji) continue;
|
||||
if(!info||!info.trigger||!info.trigger.player||info.silent||info.limited||info.juexingji||info.zhuanhuanji||info.hiddenSkill) continue;
|
||||
if(info.trigger.player==name2||Array.isArray(info.trigger.player)&&info.trigger.player.contains(name2)){
|
||||
if(info.init||info.ai&&(info.ai.combo||info.ai.notemp||info.ai.neg)) continue;
|
||||
if(info.filter){
|
||||
|
@ -5814,7 +5842,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
game.expandSkills(list2);
|
||||
for(var k=0;k<list2.length;k++){
|
||||
var info=lib.skill[list2[k]];
|
||||
if(!info||!info.enable||info.viewAs||info.limited||info.juexingji||info.zhuanhuanji) continue;
|
||||
if(!info||!info.enable||info.viewAs||info.limited||info.juexingji||info.zhuanhuanji||info.hiddenSkill) continue;
|
||||
if(info.enable=='phaseUse'||Array.isArray(info.enable)&&info.enable.contains('phaseUse')){
|
||||
if(info.init||info.onChooseToUse||info.ai&&(info.ai.combo||info.ai.notemp||info.ai.neg)) continue;
|
||||
if(info.filter){
|
||||
|
@ -6732,6 +6760,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return current!=player;
|
||||
}));
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return arg.card.name==player.storage.spwenji_respond;
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -7344,15 +7378,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
audio:'xinfu_bijing',
|
||||
filter:function (event,player){
|
||||
if(!player.storage.xinfu_bijing) return false;
|
||||
if(event.player==player) return false;
|
||||
return player.getHistory('lose',function(evt){
|
||||
return evt.cards.contains(player.storage.xinfu_bijing);
|
||||
for(var i in evt.gaintag_map){
|
||||
if(evt.gaintag_map[i].contains('xinfu_bijing')) return true;
|
||||
}
|
||||
}).length>0&&event.player.countCards('he')>0;
|
||||
},
|
||||
forced:true,
|
||||
logTarget:'player',
|
||||
content:function (){
|
||||
content:function(){
|
||||
trigger.player.chooseToDiscard(2,true,'he');
|
||||
},
|
||||
sub:true,
|
||||
|
@ -7362,13 +7397,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player:"phaseZhunbeiBegin",
|
||||
},
|
||||
forced:true,
|
||||
filter:function (event,player){
|
||||
if(!player.storage.xinfu_bijing)return false;
|
||||
return player.getCards('h').contains(player.storage.xinfu_bijing);
|
||||
filter:function(event,player){
|
||||
return player.getCards('h',function(card){
|
||||
return card.hasGaintag('xinfu_bijing');
|
||||
}).length>0;
|
||||
},
|
||||
content:function (){
|
||||
player.discard(player.storage.xinfu_bijing);
|
||||
delete player.storage.xinfu_bijing;
|
||||
player.discard(player.getCards('h',function(card){
|
||||
return card.hasGaintag('xinfu_bijing');
|
||||
}));
|
||||
},
|
||||
sub:true,
|
||||
},
|
||||
|
@ -7389,8 +7426,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
if(result.bool){
|
||||
player.logSkill('xinfu_bijing');
|
||||
//player.showCards(result.cards);
|
||||
player.storage.xinfu_bijing=result.cards[0];
|
||||
player.addGaintag(result.cards,'xinfu_bijing');
|
||||
}
|
||||
},
|
||||
},
|
||||
|
@ -8275,7 +8311,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
gaolan:'高览',
|
||||
xiying:'袭营',
|
||||
xiying2:'袭营',
|
||||
xiying_info:'出牌阶段开始时,你可以弃置一张非基本手牌,然后令所有其他角色依次选择一项:弃置一张牌,或本回合内不能使用或打出手牌。',
|
||||
xiying_info:'出牌阶段开始时,你可以弃置一张非基本手牌,然后令所有其他角色依次选择一项:弃置一张牌,或本回合内不能使用或打出牌。',
|
||||
lvkuanglvxiang:'吕旷吕翔',
|
||||
liehou:'列侯',
|
||||
liehou_info:'出牌阶段限一次,你可以令一名攻击范围内的角色交给你一张手牌,然后你将一张手牌交给攻击范围内的另一名角色。',
|
||||
|
@ -8476,7 +8512,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
huishi:'慧识',
|
||||
huishi_info:'摸牌阶段,你可以放弃摸牌,改为观看牌堆顶的X张牌,获得其中的一半(向下取整),然后将其余牌置入牌堆底。(X为牌堆数量的个位数)',
|
||||
qingleng:'清冷',
|
||||
qingleng_info:'一名角色的回合结束时,若其体力值与手牌数之和不小于X,你可将一张牌当无距离限制的冰属性【杀】对其使用。(X为牌堆数量的个位数)',
|
||||
qingleng_info:'一名角色的回合结束时,若其体力值与手牌数之和不小于X,则你可将一张牌当无距离限制的冰属性【杀】对其使用(X为牌堆数量的个位数)。若你本局游戏内未对其发动过此技能,则你摸一张牌。',
|
||||
xuanmu:'宣穆',
|
||||
xuanmu2:'宣穆',
|
||||
xuanmu_info:'锁定技,隐匿技。你于其他角色的回合登场时,防止你受到的伤害直到回合结束。',
|
||||
|
@ -8510,7 +8546,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhanghuyuechen:'张虎乐綝',
|
||||
xijue:'袭爵',
|
||||
xijue_gain:'袭爵',
|
||||
xijue_info:'锁定技,游戏开始时,你获得4枚“爵”。回合结束时,若你于本回合内造成过的伤害点数总和大于1,或于本回合内杀死过角色,则你获得一枚“爵”。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。',
|
||||
xijue_info:'锁定技,游戏开始时,你获得4枚“爵”。回合结束时,你获得X枚“爵”(X为你本回合内造成的伤害数)。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。',
|
||||
xijue_tuxi:'突袭',
|
||||
xijue_xiaoguo:'骁果',
|
||||
duyu:'杜预',
|
||||
|
@ -8525,7 +8561,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
shiren:'识人',
|
||||
shiren_info:'隐匿技。你于其他角色的回合内登场时,若其有手牌,则你可对其发动〖宴戏〗。',
|
||||
yanxi:'宴戏',
|
||||
yanxi_info:'出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆顶的两张牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。',
|
||||
yanxi2:'宴戏',
|
||||
yanxi_info:'出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆顶的两张牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗获得的牌,不计入当前回合的手牌上限。',
|
||||
jin_simazhao:'晋司马昭',
|
||||
jin_simazhao_ab:'司马昭',
|
||||
tuishi:'推弑',
|
||||
|
@ -8541,7 +8578,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
jin_xiahouhui:'晋夏侯徽',
|
||||
jin_xiahouhui_ab:'夏侯徽',
|
||||
baoqie:'宝箧',
|
||||
baoqie_info:'隐匿技,锁定技。你登场后,从牌堆中获得一张不为赠物的宝物牌。若此牌在你的手牌区内为宝物牌,则你使用此牌。',
|
||||
baoqie_info:'隐匿技,锁定技。你登场后,从牌堆中获得一张不为赠物的宝物牌。若此牌在你的手牌区内为宝物牌,则你可以使用此牌。',
|
||||
jyishi:'宜室',
|
||||
jyishi_info:'每回合限一次,当有其他角色于其出牌阶段内因弃置而失去手牌后,你可令其获得这些牌中位于弃牌堆的一张,然后你获得其余位于弃牌堆的牌。',
|
||||
shiduo:'识度',
|
||||
|
|
|
@ -1594,7 +1594,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(result.bool){
|
||||
trigger.getParent().directHit.add(trigger.target);
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(get.attitude(player,arg.target)>0||arg.card.name!='sha'||!ui.cardPile.firstChild||get.color(ui.cardPile.firstChild,player)!='red') return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
jizhi:{
|
||||
audio:2,
|
||||
|
@ -2397,7 +2403,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else{
|
||||
map[id].shanRequired=2;
|
||||
}
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(arg.card.name!='sha'||arg.target.countCards('h','shan')>1) return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
wushuang2:{
|
||||
audio:'wushuang',
|
||||
|
@ -2421,10 +2433,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
map[idt].shaReq[id]++;
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
target:function(card,player,target){
|
||||
if(card.name=='juedou'&&target.countCards('h')>0) return [1,0,0,-1];
|
||||
}
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(arg.card.name!='juedou'||Math.floor(arg.target.countCards('h','sha')/2)>player.countCards('h','sha')) return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
|
@ -2683,7 +2694,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xiahoudun:['re_xiahoudun','sp_xiahoudun','xin_xiahoudun','xiahoudun'],
|
||||
liubei:['re_liubei','sp_liubei','liubei'],
|
||||
guanyu:['re_guanyu','jsp_guanyu','guanyu'],
|
||||
zhangfei:['re_zhangfei','sp_zhangfei','old_zhangfei','zhangfei'],
|
||||
zhangfei:['re_zhangfei','sp_zhangfei','xin_zhangfei','old_zhangfei','zhangfei'],
|
||||
zhaoyun:['re_zhaoyun','sp_zhaoyun','jsp_zhaoyun','old_zhaoyun','zhaoyun'],
|
||||
machao:['re_machao','sp_machao','machao','old_machao'],
|
||||
zhugeliang:['re_zhugeliang','zhugeliang'],
|
||||
|
|
|
@ -606,20 +606,32 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
case 0:{
|
||||
if(game.hasPlayer(function(current){
|
||||
return lib.filter.targetEnabled2(event.card,player,current)&&!event.targets.contains(current)&&get.effect(current,event.card,player,player)>0;
|
||||
})) return 1.2+Math.random();
|
||||
})) return 1.6+Math.random();
|
||||
return 0;
|
||||
}
|
||||
case 1:{
|
||||
if(event.targets.filter(function(current){
|
||||
var eff1=get.effect(current,event.card,player,player);
|
||||
player._xinbenxi_ai=true;
|
||||
var eff2=get.effect(current,event.card,player,player);
|
||||
delete player._xinbenxi_ai;
|
||||
return eff1>eff2;
|
||||
}).length) return 1.9+Math.random();
|
||||
return Math.random();
|
||||
}
|
||||
case 2:{
|
||||
if(event.card.name=='sha'||event.card.name=='juedou'||get.type(event.type)=='trick'&&game.hasPlayer(function(current){
|
||||
return get.attitude(current,player)<0&¤t.hasWuxie();
|
||||
})) return 1+Math.random();
|
||||
return Math.random();
|
||||
var num=1.3;
|
||||
if(event.card.name=='sha'&&event.targets.filter(function(current){
|
||||
if(current.mayHaveShan()&&get.attitude(player,current)<=0){
|
||||
if(current.hasSkillTag('useShan')) num=1.9;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}).length) return num+Math.random();
|
||||
return 0.5+Math.random();
|
||||
}
|
||||
case 3:{
|
||||
return get.tag(event.card,'damage')+Math.random();
|
||||
return (get.tag(event.card,'damage')||0)+Math.random();
|
||||
}
|
||||
}
|
||||
});
|
||||
|
@ -665,17 +677,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
unequip:true,
|
||||
//norespond:true,
|
||||
unequip_ai:true,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(tag=='unequip'){
|
||||
if(arg&&player.storage.xinbenxi_unequip.contains(arg.card)) return true;
|
||||
return false;
|
||||
}
|
||||
if(tag=='norespond'&&Array.isArray(arg)){
|
||||
var evt=arg[2].getParent();
|
||||
if(evt.type=='card'&&player.storage.xinbenxi_directHit.contains(evt.card)) return true;
|
||||
return false;
|
||||
}
|
||||
if(_status.currentPhase!=player||game.hasPlayer(function(current){
|
||||
return get.distance(player,current)>1;
|
||||
})) return false;
|
||||
if(tag=='directHit_ai') return arg.card.name=='sha';
|
||||
if(arg.card.name!='sha'&&arg.card.name!='chuqibuyi') return false;
|
||||
var card=arg.target.getEquip(2);
|
||||
if(card&&card.name.indexOf('bagua')!=-1) return true;
|
||||
if(player._xinbenxi_ai) return false;
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
|
@ -2022,12 +2038,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(get.itemtype(trigger.respondTo[1])=='card') cards.push(trigger.respondTo[1]);
|
||||
else if(trigger.respondTo[1].cards) cards.addArray(trigger.respondTo[1].cards);
|
||||
cards=cards.filterInD('od');
|
||||
trigger.player.gain(cards,'gain2','log');
|
||||
trigger.player.gain(cards,'gain2','log').gaintag.add('funan');
|
||||
trigger.player.addTempSkill('funan_use');
|
||||
if(!trigger.player.storage.funan_use){
|
||||
trigger.player.storage.funan_use=[];
|
||||
}
|
||||
trigger.player.storage.funan_use.addArray(cards);
|
||||
}
|
||||
'step 1'
|
||||
var cards=trigger.cards.filterInD('od');
|
||||
|
@ -2042,10 +2054,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
use:{
|
||||
onremove:true,
|
||||
onremove:function(player){
|
||||
player.removeGaintag('funan');
|
||||
},
|
||||
charlotte:true,
|
||||
mod:{
|
||||
cardEnabled2:function(card,player){
|
||||
if(player.storage.funan_use&&player.storage.funan_use.contains(card)){
|
||||
if(get.itemtype(card)=='card'&&card.hasGaintag('funan')){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -2147,6 +2162,28 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(player._zhuandui_temp) return false;
|
||||
player._zhuandui_temp=true;
|
||||
var bool=function(){
|
||||
if(arg.card.name!='sha'||get.attitude(player,arg.target)>=0||!arg.target.countCards('h')) return false;
|
||||
if(arg.target.countCards('h')==1&&(!arg.target.getEquip('bagua')||player.hasSkillTag('unequip',false,{
|
||||
name:arg.card?arg.card.name:null,
|
||||
target:arg.target,
|
||||
card:arg.card
|
||||
})||player.hasSkillTag('unequip_ai',false,{
|
||||
name:arg.card?arg.card.name:null,
|
||||
target:arg.target,
|
||||
card:arg.card
|
||||
}))) return true;
|
||||
return player.countCards('h',function(card){
|
||||
return card!=arg.card&&(!arg.card.cards||!arg.card.cards.contains(card))&&get.value(card)<=4&&(card.number>=(11+arg.target.countCards('h')/2)||get.suit(card,player)=='heart');
|
||||
})>0;
|
||||
}();
|
||||
delete player._zhuandui_temp;
|
||||
return bool;
|
||||
},
|
||||
effect:{
|
||||
target:function(card,player,target,current){
|
||||
if(card.name=='sha'&¤t<0) return 0.7;
|
||||
|
@ -2161,7 +2198,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var player=_status.event.player;
|
||||
return (!player.hasCard(function(card){
|
||||
var val=get.value(card);
|
||||
return val<0||(val<=4&&card.number>=11);
|
||||
return val<0||(val<=4&&(card.number>=11||get.suit(card)=='heart'));
|
||||
},'h'))?20:0;
|
||||
},
|
||||
filter:function(event){
|
||||
|
@ -4697,15 +4734,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
group:['fulin_count','fulin_reset'],
|
||||
subSkill:{
|
||||
reset:{
|
||||
trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']},
|
||||
trigger:{player:['phaseBefore','phaseAfter']},
|
||||
silent:true,
|
||||
priority:10,
|
||||
content:function(){
|
||||
player.storage.fulin=[];
|
||||
player.removeGaintag('fulin');
|
||||
}
|
||||
},
|
||||
count:{
|
||||
trigger:{player:'gainEnd'},
|
||||
trigger:{player:'gainBegin'},
|
||||
audio:'fulin',
|
||||
forced:true,
|
||||
silent:true,
|
||||
|
@ -4713,25 +4750,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return _status.currentPhase==player;
|
||||
},
|
||||
content:function(){
|
||||
if(!player.storage.fulin){
|
||||
player.storage.fulin=[];
|
||||
}
|
||||
for(var i=0;i<trigger.cards.length;i++){
|
||||
player.storage.fulin.add(trigger.cards[i]);
|
||||
}
|
||||
trigger.gaintag.add('fulin');
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
onremove:function(player){
|
||||
player.removeGaintag('fulin');
|
||||
},
|
||||
},
|
||||
fulin2:{
|
||||
mod:{
|
||||
ignoredHandcard:function(card,player){
|
||||
if(player.storage.fulin&&player.storage.fulin.contains(card)){
|
||||
if(card.hasGaintag('fulin')){
|
||||
return true;
|
||||
}
|
||||
},
|
||||
cardDiscardable:function(card,player,name){
|
||||
if(name=='phaseDiscard'&&player.storage.fulin&&player.storage.fulin.contains(card)){
|
||||
if(name=='phaseDiscard'&&card.hasGaintag('fulin')){
|
||||
return false;
|
||||
}
|
||||
},
|
||||
|
@ -6905,6 +6940,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
effect:{
|
||||
player:function(card,player,target){
|
||||
if(_status.event.skill=='zhanjue'){
|
||||
if(player.hasSkillTag('directHit_ai',true,{
|
||||
target:target,
|
||||
card:card,
|
||||
},true)) return;
|
||||
if(player.countCards('h')>=3||target.countCards('h')>=3) return 'zeroplayertarget';
|
||||
if(player.countCards('h','tao')) return 'zeroplayertarget';
|
||||
if(target.countCards('h','sha')>1) return 'zeroplayertarget';
|
||||
|
@ -7761,7 +7800,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
ai:{
|
||||
unequip_ai:true,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(get.attitude(player,arg.target)>0||!player.isPhaseUsing()) return false;
|
||||
if(tag=='directHit_ai') return arg.target.hp>=Math.max(1,arg.target.countCards('h')-1);
|
||||
if(arg&&arg.name=='sha'&&arg.target.getEquip(2)) return true;
|
||||
return false;
|
||||
}
|
||||
|
@ -8260,6 +8302,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
game.addVideo('storage',result.targets[0],['qianxi2',event.color]);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(!arg.target.hasSkill('qianxi2')) return false;
|
||||
if(arg.card.name=='sha') return arg.target.storage.qianxi2=='red'&&(!arg.target.getEquip('bagua')||player.hasSkillTag('unequip',false,{
|
||||
name:arg.card?arg.card.name:null,
|
||||
target:arg.target,
|
||||
card:arg.card
|
||||
})||player.hasSkillTag('unequip_ai',false,{
|
||||
name:arg.card?arg.card.name:null,
|
||||
target:arg.target,
|
||||
card:arg.card
|
||||
}));
|
||||
return arg.target.storage.qianxi2=='black';
|
||||
}
|
||||
},
|
||||
},
|
||||
qianxi2:{
|
||||
//trigger:{global:'phaseAfter'},
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
window.noname_asset_list=[
|
||||
'v1.9.108.2.2',
|
||||
'v1.9.108.3',
|
||||
'audio/background/aozhan_chaoming.mp3',
|
||||
'audio/background/aozhan_online.mp3',
|
||||
'audio/background/aozhan_rewrite.mp3',
|
||||
|
@ -3657,6 +3657,7 @@ window.noname_asset_list=[
|
|||
'image/character/jin_xiahouhui.jpg',
|
||||
'image/character/zhanghuyuechen.jpg',
|
||||
'image/character/zhangling.jpg',
|
||||
'image/character/xin_zhangfei.jpg',
|
||||
|
||||
'image/character/baiwuchang.jpg',
|
||||
'image/character/baosanniang.jpg',
|
||||
|
|
162
game/game.js
162
game/game.js
|
@ -13776,7 +13776,8 @@
|
|||
else{
|
||||
event.targets[1].addJudge(link);
|
||||
}
|
||||
event.targets[0].$give(link,event.targets[1])
|
||||
event.targets[0].$give(link,event.targets[1],false);
|
||||
game.log(event.targets[0],'的',link,'被移动给了',event.targets[1])
|
||||
event.result.card=link;
|
||||
event.result.position=get.position(link);
|
||||
game.delay();
|
||||
|
@ -14477,20 +14478,21 @@
|
|||
}
|
||||
if(event.animate!=false){
|
||||
if(event.visible){
|
||||
player.gain(cards,'gain2');
|
||||
var next=player.gain(cards,'gain2');
|
||||
if(event.bottom) game.log(player,'从牌堆底摸了'+get.cnNumber(num)+'张牌(',cards,')');
|
||||
else game.log(player,'摸了'+get.cnNumber(num)+'张牌(',cards,')');
|
||||
}
|
||||
else{
|
||||
player.gain(cards,'draw');
|
||||
var next=player.gain(cards,'draw');
|
||||
}
|
||||
}
|
||||
else{
|
||||
player.gain(cards);
|
||||
var next=player.gain(cards);
|
||||
if(event.$draw){
|
||||
player.$draw(cards.length);
|
||||
}
|
||||
}
|
||||
if(event.gaintag) next.gaintag.addArray(event.gaintag);
|
||||
event.result=cards;
|
||||
},
|
||||
discard:function(){
|
||||
|
@ -14673,6 +14675,7 @@
|
|||
if(lib.config.reverse_sort) sort=-sort;
|
||||
cards[num].fix();
|
||||
cards[num].style.transform='';
|
||||
cards[num].addGaintag(event.gaintag);
|
||||
if(_status.discarded){
|
||||
_status.discarded.remove(cards[num]);
|
||||
}
|
||||
|
@ -14690,14 +14693,14 @@
|
|||
}
|
||||
var addv=function(){
|
||||
if(player==game.me){
|
||||
game.addVideo('gain12',player,[get.cardsInfo(frag1.childNodes),get.cardsInfo(frag2.childNodes)]);
|
||||
game.addVideo('gain12',player,[get.cardsInfo(frag1.childNodes),get.cardsInfo(frag2.childNodes),event.gaintag]);
|
||||
}
|
||||
};
|
||||
var broadcast=function(){
|
||||
game.broadcast(function(player,cards,num){
|
||||
player.directgain(cards);
|
||||
game.broadcast(function(player,cards,num,gaintag){
|
||||
player.directgain(cards,null,gaintag);
|
||||
_status.cardPileNum=num;
|
||||
},player,cards,ui.cardPile.childNodes.length);
|
||||
},player,cards,ui.cardPile.childNodes.length,event.gaintag);
|
||||
};
|
||||
if(event.animate=='draw'){
|
||||
player.$draw(cards.length);
|
||||
|
@ -14819,10 +14822,15 @@
|
|||
}
|
||||
}
|
||||
"step 1"
|
||||
event.gaintag_map={};
|
||||
var hs=[],es=[],js=[];
|
||||
var hej=player.getCards('hej');
|
||||
event.stockcards=cards.slice(0);
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(cards[i].gaintag&&cards[i].gaintag.length){
|
||||
event.gaintag_map[cards[i].cardid]=cards[i].gaintag.slice(0);
|
||||
cards[i].removeGaintag(true);
|
||||
}
|
||||
cards[i].style.transform+=' scale(0.2)';
|
||||
cards[i].classList.remove('glow');
|
||||
cards[i].recheck();
|
||||
|
@ -15863,6 +15871,22 @@
|
|||
},
|
||||
player:{
|
||||
//新函数
|
||||
addGaintag:function(cards,tag){
|
||||
game.addVideo('addGaintag',this,[get.cardsInfo(cards),tag]);
|
||||
game.broadcastAll(function(player,cards,tag){
|
||||
var hs=player.getCards('h');
|
||||
for(var i of cards){
|
||||
if(hs.contains(i)) i.addGaintag(tag);
|
||||
}
|
||||
},this,cards,tag);
|
||||
},
|
||||
removeGaintag:function(tag){
|
||||
game.addVideo('removeGaintag',this,tag);
|
||||
game.broadcastAll(function(player,tag){
|
||||
var cards=player.getCards('h');
|
||||
for(var i of cards) i.removeGaintag(tag);
|
||||
},this,tag);
|
||||
},
|
||||
canSave:function(target){
|
||||
var player=this;
|
||||
if(player.hasSkillTag('save',true,target,true)) return true;
|
||||
|
@ -16926,6 +16950,7 @@
|
|||
name1:this.name1,
|
||||
name2:this.name2,
|
||||
handcards:this.getCards('h'),
|
||||
gaintag:[],
|
||||
equips:this.getCards('e'),
|
||||
judges:this.getCards('j'),
|
||||
disableJudge:this.storage._disableJudge,
|
||||
|
@ -16947,6 +16972,9 @@
|
|||
for(var i=0;i<state.judges.length;i++){
|
||||
state.views[i]=state.judges[i].viewAs;
|
||||
}
|
||||
for(var i=0;i<state.handcards.length;i++){
|
||||
state.gaintag[i]=state.handcards[i].gaintag;
|
||||
}
|
||||
if(this.getModeState){
|
||||
state.mode=this.getModeState();
|
||||
}
|
||||
|
@ -18090,10 +18118,14 @@
|
|||
if(card.name=='du') addi+=5;
|
||||
var source=_status.event.source;
|
||||
var player=_status.event.player;
|
||||
if(source&&source!=player&&get.attitude(player,source)>1){
|
||||
return -get.number(card)-get.value(card)/2+addi;
|
||||
var getn=function(card){
|
||||
if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13;
|
||||
return get.number(card);
|
||||
}
|
||||
return get.number(card)-get.value(card)/2+addi;
|
||||
if(source&&source!=player&&get.attitude(player,source)>1){
|
||||
return -getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
next.setContent('chooseToCompareMultiple');
|
||||
}
|
||||
|
@ -18106,21 +18138,25 @@
|
|||
return ais();
|
||||
}
|
||||
var player=get.owner(card);
|
||||
var getn=function(card){
|
||||
if(player.hasSkill('tianbian')&&get.suit(card)=='heart') return 13;
|
||||
return get.number(card);
|
||||
}
|
||||
var event=_status.event.getParent();
|
||||
var to=(player==event.player?event.target:event.player);
|
||||
var addi=(get.value(card)>=8&&get.type(card)!='equip')?-10:0;
|
||||
if(card.name=='du') addi+=5;
|
||||
if(player==event.player){
|
||||
if(get.attitude(player,to)>0&&event.small){
|
||||
return -get.number(card)-get.value(card)/2+addi;
|
||||
return -getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
return get.number(card)-get.value(card)/2+addi;
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
else{
|
||||
if(get.attitude(player,to)>0&&!event.small){
|
||||
return -get.number(card)-get.value(card)/2+addi;
|
||||
return -getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
return get.number(card)-get.value(card)/2+addi;
|
||||
return getn(card)-get.value(card)/2+addi;
|
||||
}
|
||||
}
|
||||
next.setContent('chooseToCompare');
|
||||
|
@ -19159,7 +19195,7 @@
|
|||
game.addVideo('directequip',this,get.cardsInfo(cards));
|
||||
}
|
||||
},
|
||||
directgain:function(cards,broadcast){
|
||||
directgain:function(cards,broadcast,gaintag){
|
||||
var hs=this.getCards('h');
|
||||
for(var i=0;i<cards.length;i++){
|
||||
if(hs.contains(cards[i])){
|
||||
|
@ -19168,6 +19204,7 @@
|
|||
}
|
||||
for(var i=0;i<cards.length;i++){
|
||||
cards[i].fix();
|
||||
if(gaintag) cards[i].addGaintag(gaintag);
|
||||
var sort=lib.config.sort_card(cards[i]);
|
||||
if(this==game.me){
|
||||
cards[i].classList.add('drawinghidden');
|
||||
|
@ -19253,6 +19290,7 @@
|
|||
});
|
||||
if(map.cards.length>0) return map;
|
||||
};
|
||||
next.gaintag=[];
|
||||
return next;
|
||||
},
|
||||
give:function(cards,target,visible){
|
||||
|
@ -23366,6 +23404,28 @@
|
|||
}
|
||||
},
|
||||
card:{
|
||||
addGaintag:function(gaintag){
|
||||
if(Array.isArray(gaintag)) this.gaintag=gaintag.slice(0);
|
||||
else this.gaintag.add(gaintag);
|
||||
var str='';
|
||||
for(var gi=0;gi<this.gaintag.length;gi++){
|
||||
str+=get.translation(this.gaintag[gi]);
|
||||
if(gi<this.gaintag.length-1) str+=' ';
|
||||
}
|
||||
this.node.gaintag.innerHTML=str;
|
||||
},
|
||||
removeGaintag:function(tag){
|
||||
if(tag===true){
|
||||
if(this.gaintag&&this.gaintag.length||this.node.gaintag.innerHTML.length) this.addGaintag([]);
|
||||
}
|
||||
else if(this.hasGaintag(tag)){
|
||||
this.gaintag.remove(tag);
|
||||
this.addGaintag(this.gaintag);
|
||||
}
|
||||
},
|
||||
hasGaintag:function(tag){
|
||||
return this.gaintag&&this.gaintag.contains(tag);
|
||||
},
|
||||
init:function(card){
|
||||
if(Array.isArray(card)){
|
||||
if(card[2]=='huosha'){
|
||||
|
@ -23824,7 +23884,9 @@
|
|||
intro:node.querySelector('.intro'),
|
||||
background:node.querySelector('.background'),
|
||||
image:node.querySelector('.image'),
|
||||
gaintag:node.querySelector('.gaintag'),
|
||||
}
|
||||
node.node.gaintag.innerHTML='';
|
||||
var clone=true;
|
||||
var position;
|
||||
for(var i=0;i<arguments.length;i++){
|
||||
|
@ -26867,6 +26929,9 @@
|
|||
for(var i=0;i<info.equips.length;i++){
|
||||
player.$equip(info.equips[i]);
|
||||
}
|
||||
for(var i=0;i<info.handcards.length;i++){
|
||||
info.handcards[i].addGaintag(info.gaintag[i]);
|
||||
}
|
||||
for(var i=0;i<info.judges.length;i++){
|
||||
if(info.views[i]&&info.views[i]!=info.judges[i]){
|
||||
info.judges[i].classList.add('fakejudge');
|
||||
|
@ -29186,6 +29251,33 @@
|
|||
console.log(player);
|
||||
}
|
||||
},
|
||||
addGaintag:function(player,content){
|
||||
if(player&&content){
|
||||
var checkMatch=function(l1,l2){
|
||||
for(var i=0;i<l1.length;i++){
|
||||
for(var j=0;j<l2.length;j++){
|
||||
if(l2[j].suit==l1[i][0]&&l2[j].number==l1[i][1]&&l2[j].name==l1[i][2]){
|
||||
l2[j].addGaintag(content[1]);
|
||||
l2.splice(j--,1);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
checkMatch(content[0],player.getCards('h'));
|
||||
}
|
||||
else{
|
||||
console.log(player);
|
||||
}
|
||||
},
|
||||
removeGaintag:function(player,content){
|
||||
if(player&&content){
|
||||
player.removeGaintag(content);
|
||||
}
|
||||
else{
|
||||
console.log(player);
|
||||
}
|
||||
},
|
||||
line:function(player,content){
|
||||
if(player&&content){
|
||||
player.line(game.playerMap[content[0]],content[1]);
|
||||
|
@ -29351,10 +29443,12 @@
|
|||
var cards2=get.infoCards(cards12[1]);
|
||||
for(var i=0;i<cards1.length;i++){
|
||||
cards1[i].classList.add('drawinghidden');
|
||||
cards1[i].addGaintag(cards12[2]);
|
||||
player.node.handcards1.insertBefore(cards1[i],player.node.handcards1.firstChild);
|
||||
}
|
||||
for(var i=0;i<cards2.length;i++){
|
||||
cards2[i].classList.add('drawinghidden');
|
||||
cards2[i].addGaintag(cards12[2]);
|
||||
player.node.handcards2.insertBefore(cards2[i],player.node.handcards2.firstChild);
|
||||
}
|
||||
ui.updatehl();
|
||||
|
@ -43940,6 +44034,7 @@
|
|||
background:ui.create.div('.background',node),
|
||||
intro:ui.create.div('.intro',node),
|
||||
range:ui.create.div('.range',node),
|
||||
gaintag:ui.create.div('.gaintag',node),
|
||||
}
|
||||
for(var i in lib.element.card){
|
||||
node[i]=lib.element.card[i];
|
||||
|
@ -43950,6 +44045,7 @@
|
|||
}
|
||||
node.storage={};
|
||||
node.vanishtag=[];
|
||||
node.gaintag=[];
|
||||
node._uncheck=[];
|
||||
if(info!='noclick'){
|
||||
node.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.card);
|
||||
|
@ -50376,7 +50472,7 @@
|
|||
return num;
|
||||
},
|
||||
cardtag:function(item,tag){
|
||||
if(item.cardid&&_status.cardtag&&_status.cardtag[tag]&&_status.cardtag[tag].contains(item.cardid)){
|
||||
if(item.cardid&&(get.itemtype(item)=='card'||!item.cards||!item.cards.length||item.name==item.cards[0].name)&&_status.cardtag&&_status.cardtag[tag]&&_status.cardtag[tag].contains(item.cardid)){
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -52118,10 +52214,18 @@
|
|||
final=(result1*get.attitude(player2,player)+(target?result2*get.attitude(player2,target):0));
|
||||
}
|
||||
else final=(result1*get.attitude(player,player)+(target?result2*get.attitude(player,target):0));
|
||||
if(!isLink&&get.tag(card,'natureDamage')&&target.isLinked()&&!zerotarget){
|
||||
game.countPlayer(function(current){
|
||||
if(current!=target&¤t.isLinked()) final+=get.effect(current,card,player,player2,true);
|
||||
})
|
||||
if(!isLink&&get.tag(card,'natureDamage')&&!zerotarget){
|
||||
var info=get.info(card);
|
||||
if(!info||!info.ai||!info.ai.canLink){
|
||||
if(target.isLinked()) game.countPlayer(function(current){
|
||||
if(current!=target&¤t.isLinked()) final+=get.effect(current,card,player,player2,true);
|
||||
});
|
||||
}
|
||||
else if(info.ai.canLink(player,target,card)){
|
||||
game.countPlayer(function(current){
|
||||
if(current!=target&¤t.isLinked()) final+=get.effect(current,card,player,player2,true);
|
||||
});
|
||||
}
|
||||
}
|
||||
return final;
|
||||
},
|
||||
|
@ -52299,10 +52403,18 @@
|
|||
final=(result1*get.attitude(player2,player)+(target?result2*get.attitude(player2,target):0));
|
||||
}
|
||||
else final=(result1*get.attitude(player,player)+(target?result2*get.attitude(player,target):0));
|
||||
if(!isLink&&get.tag(card,'natureDamage')&&target.isLinked()&&!zerotarget){
|
||||
game.countPlayer(function(current){
|
||||
if(current!=target&¤t.isLinked()) final+=get.effect(current,card,player,player2,true);
|
||||
})
|
||||
if(!isLink&&get.tag(card,'natureDamage')&&!zerotarget){
|
||||
var info=get.info(card);
|
||||
if(!info||!info.ai||!info.ai.canLink){
|
||||
if(target.isLinked()) game.countPlayer(function(current){
|
||||
if(current!=target&¤t.isLinked()) final+=get.effect(current,card,player,player2,true);
|
||||
});
|
||||
}
|
||||
else if(info.ai.canLink(player,target,card)){
|
||||
game.countPlayer(function(current){
|
||||
if(current!=target&¤t.isLinked()) final+=get.effect(current,card,player,player2,true);
|
||||
});
|
||||
}
|
||||
}
|
||||
return final;
|
||||
},
|
||||
|
|
|
@ -1,21 +1,24 @@
|
|||
window.noname_update={
|
||||
version:'1.9.108.2.2',
|
||||
update:'1.9.108.2.1',
|
||||
version:'1.9.108.3',
|
||||
update:'1.9.108.2.2',
|
||||
changeLog:[
|
||||
'庆祝《Angel Beats! -1st beat-》汉化版发布,特别版本更新!',
|
||||
'手杀厉勇张飞',
|
||||
'晋势力技能修改(司马懿除外)',
|
||||
'手牌标记机制',
|
||||
'bug修复',
|
||||
],
|
||||
files:[
|
||||
//'card/extra.js',
|
||||
'card/extra.js',
|
||||
//'card/gujian.js',
|
||||
//'card/guozhan.js',
|
||||
//'card/gwent.js',
|
||||
//'card/huanlekapai.js',
|
||||
//'card/mtg.js',
|
||||
//'card/sp.js',
|
||||
//'card/standard.js',
|
||||
'card/standard.js',
|
||||
//'card/swd.js',
|
||||
//'card/yunchou.js',
|
||||
//'card/yingbian.js',
|
||||
'card/yingbian.js',
|
||||
//'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
'character/diy.js',
|
||||
|
@ -26,26 +29,27 @@ window.noname_update={
|
|||
//'character/hearth.js',
|
||||
'character/mobile.js',
|
||||
//'character/mtg.js',
|
||||
//'character/old.js',
|
||||
//'character/rank.js',
|
||||
'character/old.js',
|
||||
'character/ow.js',
|
||||
'character/rank.js',
|
||||
'character/refresh.js',
|
||||
'character/shenhua.js',
|
||||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
//'character/tw.js',
|
||||
//'character/standard.js',
|
||||
'character/standard.js',
|
||||
//'character/swd.js',
|
||||
//'character/xianjian.js',
|
||||
//'character/xinghuoliaoyuan.js',
|
||||
'character/yijiang.js',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
//'layout/default/layout.css',
|
||||
'layout/default/layout.css',
|
||||
//'layout/default/menu.css',
|
||||
//'layout/nova/layout.css',
|
||||
//'mode/identity.js',
|
||||
//'mode/doudizhu.js',
|
||||
//'mode/guozhan.js',
|
||||
'mode/guozhan.js',
|
||||
//'mode/chess.js',
|
||||
//'mode/tafang.js',
|
||||
//'mode/single.js',
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 99 KiB |
|
@ -1306,6 +1306,14 @@ body>.background.land {
|
|||
text-shadow: rgba(213, 194, 179,1) 0 0 3px,rgba(213, 194, 179,1) 0 0 3px,rgba(213, 194, 179,1) 0 0 3px,
|
||||
rgba(213, 194, 179,1) 0 0 3px,black 0 0 3px;
|
||||
}
|
||||
.card>.gaintag {
|
||||
bottom: 5px;
|
||||
left: 5px;
|
||||
text-align: left;
|
||||
color: white;
|
||||
text-shadow: rgba(255, 120, 0,1) 0 0 2px,rgba(255, 120, 0,1) 0 0 2px,rgba(255, 120, 0,1) 0 0 2px,
|
||||
rgba(255, 120, 0,1) 0 0 2px,black 0 0 1px;
|
||||
}
|
||||
.card>.name {
|
||||
top: 9px;
|
||||
left: 6px;
|
||||
|
@ -3363,6 +3371,7 @@ div:not(.handcards)>.card>.info>span,
|
|||
#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.name2,
|
||||
#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.info,
|
||||
#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.range,
|
||||
#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.gaintag,
|
||||
#arena.selecting:not(.video) .player[data-position='0'] .card:not(.selectable)>.addinfo,
|
||||
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.background,
|
||||
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.image,
|
||||
|
@ -3370,6 +3379,7 @@ div:not(.handcards)>.card>.info>span,
|
|||
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.name2,
|
||||
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.info,
|
||||
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.range,
|
||||
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.gaintag,
|
||||
#arena.selecting:not(.video) .player.current_action .card:not(.selectable)>.addinfo,
|
||||
#arena.selecting:not(.video) #me .card:not(.selectable)>.background,
|
||||
#arena.selecting:not(.video) #me .card:not(.selectable)>.image,
|
||||
|
@ -3377,6 +3387,7 @@ div:not(.handcards)>.card>.info>span,
|
|||
#arena.selecting:not(.video) #me .card:not(.selectable)>.name2,
|
||||
#arena.selecting:not(.video) #me .card:not(.selectable)>.info,
|
||||
#arena.selecting:not(.video) #me .card:not(.selectable)>.range,
|
||||
#arena.selecting:not(.video) #me .card:not(.selectable)>.gaintag,
|
||||
#arena.selecting:not(.video) #me .card:not(.selectable)>.addinfo,
|
||||
#arena.selecting:not(.video) .dialog:not(.noselect) .button:not(.selectable):not(.noclick):not(.replaceButton),
|
||||
.dead,.likedead {
|
||||
|
@ -3461,6 +3472,7 @@ div:not(.handcards)>.card>.info>span,
|
|||
.card.selectable>.name2,
|
||||
.card.selectable>.info,
|
||||
.card.selectable>.range,
|
||||
.card.selectable>.gaintag,
|
||||
.button.selectable {
|
||||
opacity: 1;
|
||||
}
|
||||
|
|
|
@ -6036,6 +6036,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
if(trigger.name=='addJudge'){
|
||||
trigger.cancel();
|
||||
var owner=get.owner(trigger.card);
|
||||
if(owner&&owner.getCards('hej').contains(trigger.card)) owner.lose(trigger.card,ui.discardPile);
|
||||
else game.cardsDiscard(trigger.card);
|
||||
game.log(trigger.card,'进入了弃牌堆');
|
||||
}
|
||||
else trigger.getParent().targets.remove(player);
|
||||
},
|
||||
|
@ -6049,7 +6053,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
gzqianxun:{
|
||||
audio:'qianxun',
|
||||
trigger:{target:'useCardToTarget',player:'addJudgeBefore'},
|
||||
trigger:{
|
||||
target:'useCardToTarget',
|
||||
player:'addJudgeBefore',
|
||||
},
|
||||
forced:true,
|
||||
priority:15,
|
||||
check:function(event,player){
|
||||
|
@ -6061,6 +6068,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
content:function(){
|
||||
if(trigger.name=='addJudge'){
|
||||
trigger.cancel();
|
||||
var owner=get.owner(trigger.card);
|
||||
if(owner&&owner.getCards('hej').contains(trigger.card)) owner.lose(trigger.card,ui.discardPile);
|
||||
else game.cardsDiscard(trigger.card);
|
||||
game.log(trigger.card,'进入了弃牌堆');
|
||||
}
|
||||
else trigger.getParent().targets.remove(player);
|
||||
},
|
||||
|
|
Loading…
Reference in New Issue