Add files via upload

This commit is contained in:
Spmario233 2020-03-25 20:27:23 +08:00 committed by GitHub
parent 67cabb26c1
commit c82fa9f289
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 5272 additions and 5182 deletions

View File

@ -121,6 +121,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(shas.length>1&&(player.getCardUsable('sha')>1||player.countCards('h','zhuge'))){ if(shas.length>1&&(player.getCardUsable('sha')>1||player.countCards('h','zhuge'))){
return 0; return 0;
} }
shas.sort(function(a,b){
return get.order(b)-get.order(a);
})
var card; var card;
if(shas.length){ if(shas.length){
for(var i=0;i<shas.length;i++){ for(var i=0;i<shas.length;i++){

View File

@ -157,13 +157,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){
useful:[5,1], useful:[5,1],
value:[5,1], value:[5,1],
}, },
order:function(){ order:function(item){
if(_status.event.player.hasSkillTag('presha',true,null,true)) return 10; if(_status.event.player.hasSkillTag('presha',true,null,true)) return 10;
if(lib.linked.contains(get.nature(item))) return 3.1;
return 3; return 3;
}, },
result:{ result:{
target:function(player,target,card){ target:function(player,target,card,isLink){
if(player.hasSkill('jiu')&&!target.hasSkillTag('filterDamage',null,{ if(!isLink&&player.hasSkill('jiu')&&!target.hasSkillTag('filterDamage',null,{
player:player, player:player,
card:card, card:card,
jiu:true, jiu:true,

View File

@ -265,7 +265,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}, },
result:{ result:{
target:function(player,target){ target:function(player,target){
if(get.value(target.getCards('e'),target)<=0||target.hasSkillTag('noe')) return 1; var e5=target.getEquip(5);
if(e5&&e5.name=='muniu'&&e5.cards&&e5.cards.length>1) return -1;
if(target.countCards('e',function(card){
return get.value(card)<=0;
})||target.hasSkillTag('noe')) return 1;
return 0; return 0;
}, },
}, },
@ -466,7 +470,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
order:9.5, order:9.5,
equipValue:function(card,player){ equipValue:function(card,player){
if(get.position(card)=='e') return player.sex=='male'?(4/(1+player.countCards('he'))):0; if(get.position(card)=='e'){
if(player.sex!='male') return 0;
var num=player.countCards('he',function(cardx){
return cardx!=card;
});
if(num==0) return 0;
return 4/num;
}
return 1; return 1;
}, },
basic:{ basic:{
@ -479,7 +490,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
var val=0; var val=0;
var card=target.getEquip(2); var card=target.getEquip(2);
if(card) val=get.value(card); if(card) val=get.value(card);
return -1-val; var num=target.countCards('he',function(cardx){
return cardx!=card
});
if(num>0) val+=4/num;
return -val;
} }
return 0; return 0;
}, },
@ -567,7 +582,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
result:{ result:{
keepAI:true, keepAI:true,
target:function(player,target){ target:function(player,target){
return -1-target.countCards('h'); return -0.5-2*target.countCards('h');
}, },
}, },
} }

View File

@ -1656,6 +1656,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var check=function(list){ var check=function(list){
for(var i=0;i<list.length;i++){ for(var i=0;i<list.length;i++){
var info=lib.skill[list[i]]; var info=lib.skill[list[i]];
if(info&&info.shaRelated) return true;
if(info&&info.trigger){ if(info&&info.trigger){
for(var j in info.trigger){ for(var j in info.trigger){
var cond=info.trigger[j]; var cond=info.trigger[j];
@ -1671,7 +1672,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(j=='source'||j=='global'){ if(j=='source'||j=='global'){
if(cond.indexOf('damageBefore')!=-1) return true; if(cond.indexOf('damageBefore')!=-1) return true;
if(cond.indexOf('damageBegin')!=-1) return true; if(cond.indexOf('damageBegin')!=-1) return true;
if(cond.indexOf('damageBegin1')!=-1) return true;
if(cond.indexOf('damageBegin2')!=-1) return true;
if(cond.indexOf('damageEnd')!=-1) return true; if(cond.indexOf('damageEnd')!=-1) return true;
if(cond.indexOf('damageSource')!=-1) return true;
if(cond.indexOf('damageAfter')!=-1) return true; if(cond.indexOf('damageAfter')!=-1) return true;
} }
} }

View File

@ -797,7 +797,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:true, audio:true,
trigger:{player:'useCard'}, trigger:{player:'useCard'},
filter:function(event,player){ filter:function(event,player){
return (get.type(event.card)=='trick'&&event.card.isCard&&player.hasMark('renjie')); return (get.type(event.card,'trick')=='trick'&&event.card.isCard&&player.hasMark('renjie'));
}, },
init:function(player){ init:function(player){
player.storage.jilue_jizhi=0; player.storage.jilue_jizhi=0;
@ -1838,7 +1838,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.broadcastAll('closeDialog',event.videoId); game.broadcastAll('closeDialog',event.videoId);
var cards2=event.cards2; var cards2=event.cards2;
player.gain(cards2,'log','gain2'); player.gain(cards2,'log','gain2');
game.delay();
}, },
ai:{ ai:{
threaten:1.2 threaten:1.2

View File

@ -1050,6 +1050,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(var i=0;i<list.length;i++){ for(var i=0;i<list.length;i++){
var info=lib.skill[list[i]]; var info=lib.skill[list[i]];
if(!info) continue; if(!info) continue;
if(info.shaRelated) return true;
if(info.trigger){ if(info.trigger){
for(var j in info.trigger){ for(var j in info.trigger){
if(j=='player'||j=='global'){ if(j=='player'||j=='global'){

View File

@ -8464,7 +8464,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0' 'step 0'
target.chooseCard('h',true,'重铸一张手牌'); target.chooseCard('h',true,'重铸一张手牌');
'step 1' 'step 1'
if(result.bool){ if(result.bool&&result.cards.length){
target.$throw(result.cards); target.$throw(result.cards);
target.lose(result.cards,ui.discardPile); target.lose(result.cards,ui.discardPile);
var type=get.type(result.cards[0],'trick'); var type=get.type(result.cards[0],'trick');

File diff suppressed because it is too large Load Diff

View File

@ -242,6 +242,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
repojun:{ repojun:{
shaRelated:true,
audio:2, audio:2,
trigger:{player:'useCardToPlayered'}, trigger:{player:'useCardToPlayered'},
direct:true, direct:true,
@ -892,6 +893,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//if(name=='phaseBegin'&&game.phaseNumber==1) return false; //if(name=='phaseBegin'&&game.phaseNumber==1) return false;
return player.storage.rehuashen&&player.storage.rehuashen.character.length>0; return player.storage.rehuashen&&player.storage.rehuashen.character.length>0;
}, },
banned:['lisu','sp_xiahoudun'],
addHuashen:function(player){ addHuashen:function(player){
if(!player.storage.rehuashen) return; if(!player.storage.rehuashen) return;
if(!_status.characterlist){ if(!_status.characterlist){
@ -912,7 +914,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var bool=false; var bool=false;
for(var i=0;i<_status.characterlist.length;i++){ for(var i=0;i<_status.characterlist.length;i++){
var name=_status.characterlist[i]; var name=_status.characterlist[i];
if(name.indexOf('zuoci')!=-1||name.indexOf('key')==0||player.storage.rehuashen.character.contains(name)) continue; if(name.indexOf('zuoci')!=-1||name.indexOf('key')==0||lib.skill.rehuashen.banned.contains(name)||player.storage.rehuashen.character.contains(name)) continue;
var skills=lib.character[name][3]; var skills=lib.character[name][3];
for(var j=0;j<skills.length;j++){ for(var j=0;j<skills.length;j++){
var info=lib.skill[skills[j]]; var info=lib.skill[skills[j]];
@ -1805,7 +1807,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.gain(card2,'gain2'); player.gain(card2,'gain2');
player.addTempSkill('shuangxiong2'); player.addTempSkill('shuangxiong2');
player.storage.shuangxiong=get.color(card2); player.storage.shuangxiong=get.color(card2);
game.delay();
}, },
}, },
"reshuangxiong2":{ "reshuangxiong2":{
@ -4181,6 +4182,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
retieji:{ retieji:{
shaRelated:true,
audio:2, audio:2,
audioname:['boss_lvbu3'], audioname:['boss_lvbu3'],
trigger:{player:'useCardToPlayered'}, trigger:{player:'useCardToPlayered'},
@ -4620,7 +4622,515 @@ game.import('character',function(lib,game,ui,get,ai,_status){
maixie:true, maixie:true,
maixie_hp:true maixie_hp:true
} }
} },
refangquan:{
audio:2,
trigger:{player:'phaseUseBefore'},
filter:function(event,player){
return player.countCards('h')>0&&!player.hasSkill('fangquan3');
},
direct:true,
content:function(){
"step 0"
var fang=player.countMark('fangquan2')==0&&player.hp>=2&&player.countCards('h')<=player.hp+1;
player.chooseBool(get.prompt2('refangquan')).set('ai',function(){
if(!_status.event.fang) return false;
return game.hasPlayer(function(target){
if(target.hasJudge('lebu')||target==player) return false;
if(get.attitude(player,target)>4){
return (get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1)>0);
}
return false;
});
}).set('fang',fang);
"step 1"
if(result.bool){
player.logSkill('refangquan');
trigger.cancel();
player.addTempSkill('fangquan2','phaseAfter');
player.addMark('fangquan2',1,false);
player.addTempSkill('refangquan2');
//player.storage.fangquan=result.targets[0];
}
}
},
refangquan2:{
mod:{
maxHandcard:function(player,num){
return num+player.getDamagedHp();
},
},
},
rehunzi:{
inherit:'hunzi',
filter:function(event,player){
return player.hp<=2&&!player.storage.rehunzi;
},
ai:{
threaten:function(player,target){
if(target.hp<=2) return 2;
return 0.5;
},
maixie:true,
effect:{
target:function(card,player,target){
if(!target.hasFriend()) return;
if(get.tag(card,'damage')==1&&target.hp==3&&!target.isTurnedOver()&&
_status.currentPhase!=target&&get.distance(_status.currentPhase,target,'absolute')<=3) return [0.5,1];
}
}
}
},
rezhijian:{
inherit:'zhijian',
group:['rezhijian_use'],
subfrequent:['use'],
subSkill:{
use:{
audio:'rezhijian',
trigger:{player:'useCard'},
frequent:true,
filter:function(event,player){
return get.type(event.card)=='equip';
},
prompt:'是否发动【直谏】摸一张牌?',
content:function(){
player.draw('nodelay');
},
},
},
},
retuntian:{
audio:2,
trigger:{player:'loseEnd'},
frequent:true,
filter:function(event,player){
if(player==_status.currentPhase) return false;
for(var i=0;i<event.cards.length;i++){
if(event.cards[i].original&&event.cards[i].original!='j') return true;
}
return false;
},
content:function(){
player.judge(function(card){
return 1;
}).callback=lib.skill.retuntian.callback;
},
callback:function(){
'step 0'
if(event.judgeResult.suit=='heart'){
player.gain(card,'gain2');
event.finish();
}
else if(get.mode()=='guozhan'){
player.chooseBool('是否将'+get.translation(card)+'作为【田】置于武将牌上?').set('frequentSkill','retuntian').ai=function(){
return true;
};
}
else event.directbool=true;
'step 1'
if(!result.bool&&!event.directbool){
//game.cardsDiscard(card);
return;
};
event.node=event.judgeResult.node;
//event.trigger("addCardToStorage");
//event.card.fix();
player.storage.tuntian.push(event.card);
//event.card.goto(ui.special);
game.cardsGotoSpecial(card);
event.node.moveDelete(player);
game.broadcast(function(cardid,player){
var node=lib.cardOL[cardid];
if(node){
node.moveDelete(player);
}
},event.node.cardid,player);
game.addVideo('gain2',player,get.cardsInfo([event.node]));
player.markSkill('tuntian');
game.addVideo('storage',player,['tuntian',get.cardsInfo(player.storage.tuntian),'cards']);
},
init:function(player){
if(!player.storage.tuntian) player.storage.tuntian=[];
},
group:'tuntian_dist',
locked:false,
ai:{
effect:{
target:function(){
return lib.skill.tuntian.ai.effect.target.apply(this,arguments);
}
},
threaten:function(player,target){
if(target.countCards('h')==0) return 2;
return 0.5;
},
nodiscard:true,
nolose:true
}
},
retiaoxin:{
audio:'tiaoxin',
audioname:['sp_jiangwei','xiahouba','re_jiangwei'],
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return target!=player&&target.countCards('he');
},
content:function(){
"step 0"
target.chooseToUse({name:'sha'},'挑衅:对'+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);
"step 1"
if(result.bool==false&&target.countCards('he')>0){
player.discardPlayerCard(target,'he',true);
}
else{
event.finish();
}
},
ai:{
order:4,
expose:0.2,
result:{
target:-1,
player:function(player,target){
if(!target.canUse('sha',player)) return 0;
if(target.countCards('h')==0) return 0;
if(target.countCards('h')==1) return -0.1;
if(player.hp<=2) return -2;
if(player.countCards('h','shan')==0) return -1;
return -0.5;
}
},
threaten:1.1
}
},
rebeige:{
audio:'beige',
audioname:['re_caiwenji'],
trigger:{global:'damageEnd'},
filter:function(event,player){
return (event.card&&event.card.name=='sha'&&event.source&&
event.player.classList.contains('dead')==false&&player.countCards('he'));
},
direct:true,
checkx:function(event,player){
var att1=get.attitude(player,event.player);
var att2=get.attitude(player,event.source);
return att1>0&&att2<=0;
},
content:function(){
"step 0"
var next=player.chooseToDiscard('he',get.prompt2('rebeige',trigger.player));
var check=lib.skill.beige.checkx(trigger,player);
next.set('ai',function(card){
if(_status.event.goon) return 8-get.value(card);
return 0;
});
next.set('logSkill','beige');
next.set('goon',check);
"step 1"
if(result.bool){
trigger.player.judge();
}
else{
event.finish();
}
"step 2"
switch(result.suit){
case 'heart':trigger.player.recover(trigger.num);break;
case 'diamond':trigger.player.draw(3);break;
case 'club':trigger.source.chooseToDiscard('he',2,true);break;
case 'spade':trigger.source.turnOver();break;
}
},
ai:{
expose:0.3
}
},
rexingshang:{
audio:2,
trigger:{global:'die'},
filter:function(event,player){
return player.isDamaged()||event.player.countCards('he')>0;
},
direct:true,
content:function(){
"step 0"
var choice=[];
if(player.isDamaged()) choice.push('回复体力');
if(trigger.player.countCards('he')) choice.push('获得牌');
choice.push('cancel2');
player.chooseControl(choice).set('prompt',get.prompt2('rexingshang')).set('ai',function(){
if(choice.length==2) return 0;
if(get.value(trigger.player.getCards('he'))>8) return 1;
return 0;
});
"step 1"
if(result.control!='cancel2'){
player.logSkill(event.name,trigger.player);
if(result.control=='获得牌'){
event.togain=trigger.player.getCards('he');
player.gain(event.togain,trigger.player,'giveAuto');
}
else player.recover();
}
},
},
refangzhu:{
audio:2,
trigger:{
player:"damageEnd",
},
direct:true,
content:function (){
"step 0"
player.chooseTarget(get.prompt2('refangzhu'),function(card,player,target){
return player!=target
}).ai=function(target){
if(target.hasSkillTag('noturn')) return 0;
var player=_status.event.player;
if(get.attitude(_status.event.player,target)==0) return 0;
if(get.attitude(_status.event.player,target)>0){
if(target.classList.contains('turnedover')) return 1000-target.countCards('h');
if(player.getDamagedHp()<3) return -1;
return 100-target.countCards('h');
}
else{
if(target.classList.contains('turnedover')) return -1;
if(player.getDamagedHp()>=3) return -1;
return 1+target.countCards('h');
}
}
"step 1"
if(result.bool){
player.logSkill('refangzhu',result.targets);
event.target=result.targets[0]
event.target.chooseToDiscard('he',player.getDamagedHp()).set('ai',function(card){
var player=_status.event.player;
if(player.isTurnedOver()||_status.event.getTrigger().player.getDamagedHp()>2) return -1;
return (player.hp*player.hp)-get.value(card);
}).set('prompt','弃置'+get.cnNumber(player.getDamagedHp())+'张手牌并失去一点体力;或选择不弃置,将武将牌翻面并摸'+get.cnNumber(player.getDamagedHp())+'张牌。');
}
else event.finish();
"step 2"
if(result.bool){
event.target.loseHp();
}
else{
event.target.draw(player.getDamagedHp());
event.target.turnOver();
}
},
ai:{
maixie:true,
"maixie_hp":true,
effect:{
target:function (card,player,target){
if(get.tag(card,'damage')){
if(player.hasSkillTag('jueqing',false,target)) return [1,-2];
if(target.hp<=1) return;
if(!target.hasFriend()) return;
var hastarget=false;
var turnfriend=false;
var players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(get.attitude(target,players[i])<0&&!players[i].isTurnedOver()){
hastarget=true;
}
if(get.attitude(target,players[i])>0&&players[i].isTurnedOver()){
hastarget=true;
turnfriend=true;
}
}
if(get.attitude(player,target)>0&&!hastarget) return;
if(turnfriend||target.hp==target.maxHp) return [0.5,1];
if(target.hp>1) return [1,0.5];
}
},
},
},
},
repolu:{
audio:1,
trigger:{
source:'dieAfter',
player:'die',
},
forceDie:true,
filter:function(event,player,name){
return name=='die'||player.isAlive();
},
direct:true,
content:function(){
'step 0'
if(!player.storage.repolu) player.storage.repolu=0;
event.num=player.storage.repolu+1;
player.chooseTarget([1,Infinity],get.prompt('repolu'),'令任意名角色摸'+get.cnNumber(event.num)+'张牌').set('forceDie',true).ai=function(target){
return get.attitude(_status.event.player,target);
};
'step 1'
if(result.bool){
player.storage.repolu++;
result.targets.sortBySeat();
player.logSkill('repolu',result.targets);
game.asyncDraw(result.targets,num);
}
else event.finish();
'step 2'
game.delay();
},
},
rejiuchi:{
group:['jiuchi'],
audioname:['re_dongzhuo'],
trigger:{source:'damage'},
forced:true,
popup:false,
locked:false,
audio:'jiuchi',
filter:function(event,player){
return event.card&&event.card.name=='sha'&&event.getParent(2).jiu==true&&!player.hasSkill('rejiuchi_air');
},
content:function(){
player.logSkill('jiuchi');
player.addTempSkill('rejiuchi_air');
},
subSkill:{
air:{
sub:true,
init:function(player,skill){
player.disableSkill(skill,'benghuai');
},
onremove:function(player,skill){
player.enableSkill(skill);
},
},
},
},
relieren:{
shaRelated:true,
audio:2,
audioname:['boss_lvbu3'],
trigger:{player:'useCardToPlayered'},
filter:function(event,player){
return event.card.name=='sha'&&player.canCompare(event.target);
},
check:function(event,player){
return get.attitude(player,event.target)<0;
},
//priority:5,
content:function(){
"step 0"
player.chooseToCompare(trigger.target);
"step 1"
if(result.bool){
if(trigger.target.countGainableCards(player,'he')) player.gainPlayerCard(trigger.target,true,'he');
}
else{
var card1=result.player;
var card2=result.target;
if(get.position(card1)=='d') trigger.target.gain(card1,'gain2');
if(get.position(card2)=='d') player.gain(card2,'gain2');
}
}
},
rezaiqi:{
count:function(){
var num=0;
game.countPlayer2(function(current){
current.getHistory('lose',function(evt){
if(evt.position==ui.discardPile){
for(var i=0;i<evt.cards.length;i++){
if(get.color(evt.cards[i])=='red') num++;
}
}
})
});
game.getGlobalHistory('cardMove',function(evt){
if(evt.name=='cardsDiscard'){
for(var i=0;i<evt.cards.length;i++){
if(get.color(evt.cards[i])=='red') num++;
}
}
})
return num;
},
audio:2,
direct:true,
filter:function(event,player){
return lib.skill.rezaiqi.count()>0;
},
trigger:{
player:'phaseDiscardEnd'
},
content:function(){
'step 0'
player.chooseTarget([1,lib.skill.rezaiqi.count()],get.prompt2('rezaiqi')).ai=function(target){
return get.attitude(_status.event.player,target);
};
'step 1'
if(result.bool){
var targets=result.targets;
targets.sortBySeat();
player.line(targets,'fire');
player.logSkill('rezaiqi',targets);
event.targets=targets;
}
else event.finish();
'step 2'
event.current=targets.shift();
if(player.isHealthy()) event._result={index:0};
else event.current.chooseControl().set('choiceList',[
'摸一张牌',
'令'+get.translation(player)+'回复一点体力',
]).set('ai',function(){
if(get.attitude(event.current,player)>0) return 1;
return 0;
});
'step 3'
if(result.index==1){
event.current.line(player);
player.recover();
}
else event.current.draw();
game.delay();
if(targets.length) event.goto(2);
},
group:'rezaiqi_count',
},
rezaiqi_count:{
trigger:{
global:["loseEnd","cardsDiscardEnd"],
player:'phaseAfter',
},
silent:true,
forced:true,
popup:false,
filter:function (event,player,name){
if(name=='phaseAfter') return true;
if(_status.currentPhase!=player) return false;
var evt=event.getParent();
if(evt&&evt.name=='useCard'&&evt.card&&['equip','delay'].contains(get.type(evt.card))) return false;
var cards=event.cards;
for(var i=0;i<cards.length;i++){
if(get.color(cards[i])=='red'&&get.position(cards[i],true)=='d') return true;
}
return false;
},
content:function(){
if(event.triggername=='phaseAfter') player.storage.rezaiqi=0;
else{
var cards=trigger.cards;
for(var i=0;i<cards.length;i++){
if(get.color(cards[i])=='red'&&get.position(cards[i],true)=='d') player.storage.rezaiqi++;
}
}
},
},
}, },
translate:{ translate:{
re_zhangliao:'界张辽', re_zhangliao:'界张辽',
@ -4847,6 +5357,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rehuashen_info:'游戏开始后,你随机获得三张未加入游戏的武将牌,选一张置于你面前并声明该武将牌的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。你的每个准备阶段和结束后,你可以选择一项:①弃置至多两张未展示的化身牌并重新获得等量化身牌;②更换所展示的化身牌或技能。(你不可声明限定技、觉醒技或主公技)。', rehuashen_info:'游戏开始后,你随机获得三张未加入游戏的武将牌,选一张置于你面前并声明该武将牌的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。你的每个准备阶段和结束后,你可以选择一项:①弃置至多两张未展示的化身牌并重新获得等量化身牌;②更换所展示的化身牌或技能。(你不可声明限定技、觉醒技或主公技)。',
rexinsheng:'新生', rexinsheng:'新生',
rexinsheng_info:'当你受到1点伤害后你可以获得一张新的化身牌。', rexinsheng_info:'当你受到1点伤害后你可以获得一张新的化身牌。',
re_zhurong:'界祝融',
re_menghuo:'界孟获',
re_dongzhuo:'界董卓',
re_sunjian:'界孙坚',
re_caopi:'界曹丕',
rejiuchi:'酒池',
rejiuchi_info:'你可以将一张黑桃手牌当做【酒】使用。锁定技,当你于回合内使用带有【酒】效果的【杀】造成伤害时,你令你的【崩坏】失效直到回合结束。',
repolu:'破虏',
repolu_info:'当你杀死一名角色/死亡时你可以令任意名角色摸X+1张牌。X为你此前发动过【破虏】的次数',
rexingshang:'行殇',
rexingshang_info:'当其他角色死亡后你可以选择一项回复1点体力或获得其所有牌。',
refangzhu:'放逐',
refangzhu_info:'当你受到伤害后你可以令一名其他角色选择一项摸X张牌并将武将牌翻面或弃置X张牌并失去1点体力。X为你已损失的体力值',
relieren:'烈刃',
relieren_info:'当你使用【杀】指定目标后,你可以和目标角色进行拼点。若你赢,你获得其一张牌。若你没赢,你获得对方的拼点牌,其获得你的拼点牌。',
rezaiqi:'再起',
rezaiqi_info:'弃牌阶段结束时你可以令至多X名角色选择一项1.摸一张牌2.令你回复1点体力X为本回合进入弃牌堆的红色牌数',
re_dengai:'界邓艾',
re_jiangwei:'界姜维',
re_caiwenji:'界蔡文姬',
re_baosanniang:'手杀鲍三娘',
retuntian:'屯田',
retiaoxin:'挑衅',
rebeige:'悲歌',
retuntian_info:'当你于回合外失去牌时,你可以进行一次判定。若判定结果为♥,你获得此判定牌。否则你将此牌置于你的武将牌上,称之为【田】。锁定技,你计算与其他角色的距离时-XX为你武将牌上【田】的数目',
retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。',
rebeige_info:'当有角色受到【杀】造成的伤害后你可以弃一张牌并令其进行一次判定若判定结果为♥该角色回复X点体力(X为伤害点数);♦︎该角色摸三张牌;♣伤害来源弃两张牌;♠伤害来源将其武将牌翻面',
re_liushan:'手杀刘禅',
re_sunben:'界孙笨',
re_zhangzhang:'界张昭张纮',
rehunzi:'魂姿',
rehunzi_info:'觉醒技准备阶段若你的体力值不大于2你减1点体力上限并获得技能〖英姿〗和〖英魂〗。',
zhijian_info:'出牌阶段,你可以将手牌中的一张装备牌置于一名其他角色装备区里(不得替换原装备),然后摸一张牌。当你使用装备牌时,你可以摸一张牌。',
refangquan:'放权',
refangquan_info:'你可跳过你的出牌阶段,若如此做,你本回合的手牌上限+XX为你已损失的体力值且回合结束时你可以弃置一张手牌并令一名其他角色进行一个额外的回合。',
re_wuguotai:'界吴国太', re_wuguotai:'界吴国太',
re_gaoshun:'界高顺', re_gaoshun:'界高顺',
re_xusheng:'界徐盛', re_xusheng:'界徐盛',

View File

@ -593,7 +593,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
"xinfu_fuyin":{ "xinfu_fuyin":{
usable:1,
trigger:{ trigger:{
target:"useCardToTargeted", target:"useCardToTargeted",
}, },
@ -601,15 +600,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2, audio:2,
filter:function (event,player){ filter:function (event,player){
if(event.player.countCards('h')<player.countCards('h')) return false; if(event.player.countCards('h')<player.countCards('h')) return false;
if(event.card.name=='sha'||event.card.name=='juedou') return true; if(event.card.name!='sha'&&event.card.name!='juedou') return true;
return false; return !game.hasPlayer2(function(current){
return current.getHistory('useCard',function(evt){
return evt!=event.getParent()&&evt.card&&['sha','juedou'].contains(evt.card.name)&&evt.targets.contains(player);
}).length>0;
});
}, },
content:function (){ content:function (){
trigger.getParent().excluded.add(player); trigger.getParent().excluded.add(player);
}, },
}, },
"drlt_qianjie":{ "drlt_qianjie":{
group:["drlt_qianjie_1","drlt_qianjie_2","drlt_qianjie_3"], group:["drlt_qianjie_1","drlt_qianjie_2","drlt_qianjie_3"],
locked:true, locked:true,
@ -2171,6 +2172,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
jianchu:{ jianchu:{
shaRelated:true,
audio:2, audio:2,
audioname:['re_pangde'], audioname:['re_pangde'],
trigger:{player:'useCardToPlayered'}, trigger:{player:'useCardToPlayered'},
@ -2658,6 +2660,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
xinliegong:{ xinliegong:{
shaRelated:true,
mod:{ mod:{
targetInRange:function(card,player,target){ targetInRange:function(card,player,target){
if(card.name=='sha'&&card.number){ if(card.name=='sha'&&card.number){
@ -3276,6 +3279,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
jiang:{ jiang:{
shaRelated:true,
audio:2, audio:2,
audioname:['sp_lvmeng','re_sunben','re_sunce'], audioname:['sp_lvmeng','re_sunben','re_sunce'],
trigger:{ trigger:{
@ -4136,6 +4140,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
lieren:{ lieren:{
shaRelated:true,
audio:2, audio:2,
audioname:['boss_lvbu3'], audioname:['boss_lvbu3'],
trigger:{source:'damageSource'}, trigger:{source:'damageSource'},
@ -5541,6 +5546,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhuSkill:true, zhuSkill:true,
}, },
mengjin:{ mengjin:{
shaRelated:true,
audio:2, audio:2,
trigger:{player:'shaMiss'}, trigger:{player:'shaMiss'},
//priority:-1, //priority:-1,
@ -5821,6 +5827,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
liegong:{ liegong:{
shaRelated:true,
audio:2, audio:2,
audioname:['re_huangzhong'], audioname:['re_huangzhong'],
trigger:{player:'useCardToPlayered'}, trigger:{player:'useCardToPlayered'},
@ -6661,6 +6668,366 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
huangtian3:{}, huangtian3:{},
"xinfu_guhuo":{
derivation:["chanyuan"],
group:["guhuo_guess","guhuo_respond","guhuo_wuxie"],
enable:"chooseToUse",
filter:function (event,player){
if(player.hasSkill('guhuo_phase'))return false;
if(!player.countCards('h')) return false;
var list=['sha','shan','tao','jiu','taoyuan','wugu','juedou','huogong','jiedao','tiesuo','guohe','shunshou','wuzhong','wanjian','nanman'];
if(get.mode()=='guozhan'){
list=list.concat(['xietianzi','shuiyanqijunx','lulitongxin','lianjunshengyan','chiling','diaohulishan','yuanjiao','huoshaolianying']);
}
for(var i=0;i<list.length;i++){
if(event.filterCard({name:list[i]},player)) return true;
}
return false;
},
chooseButton:{
dialog:function (){
var list=[];
for(var i=0;i<lib.inpile.length;i++){
var name=lib.inpile[i];
if(name=='wuxie') continue;
if(name=='sha'){
list.push(['基本','','sha']);
list.push(['基本','','sha','fire']);
list.push(['基本','','sha','thunder']);
}
else if(get.type(name)=='trick') list.push(['锦囊','',name]);
else if(get.type(name)=='basic') list.push(['基本','',name]);
}
return ui.create.dialog('蛊惑',[list,'vcard']);
},
filter:function (button,player){
var evt=_status.event.getParent();
if(evt&&evt.filterCard){
return evt.filterCard({name:button.link[2]},player,evt);
}
return true;
},
backup:function (links,player){
return {
filterCard:true,
selectCard:1,
viewAs:{name:links[0][2],nature:links[0][3]},
}
},
prompt:function (links,player){
return '将一张手牌做当'+get.translation(links[0][2])+'使用';
},
},
ai:{
save:true,
respondShan:true,
skillTagFilter:function(player){
if(player.hasSkill('guhuo_phase')) return false;
},
},
},
"guhuo_guess":{
audio:2,
trigger:{
player:"useCardBefore",
},
filter:function (event,player){
return event.skill=="xinfu_guhuo_backup"||event.skill=="guhuo_wuxie";
},
forced:true,
direct:true,
priority:15,
content:function (){
'step 0'
player.logSkill('guhuo_guess');
player.addTempSkill('guhuo_phase');
player.popup(trigger.card.name,'metal');
player.lose(trigger.cards,ui.special);
player.line(trigger.targets,trigger.card.nature);
trigger.line=false;
trigger.animate=false;
event.prompt=get.translation(player)+'声明了'+get.translation(trigger.card.name)+',是否质疑?';
event.guessers=game.filterPlayer(function(current){
return current!=player&&!current.hasSkill('chanyuan');
});
event.guessers.sort(lib.sort.seat);
game.broadcastAll(function(card){
_status.guhuoNode=card.copy('thrown');
if(lib.config.cardback_style!='default'){
_status.guhuoNode.style.transitionProperty='none';
ui.refresh(_status.guhuoNode);
_status.guhuoNode.classList.add('infohidden');
ui.refresh(_status.guhuoNode);
_status.guhuoNode.style.transitionProperty='';
}
else{
_status.guhuoNode.classList.add('infohidden');
}
_status.guhuoNode.style.transform='perspective(600px) rotateY(180deg) translateX(0)';
player.$throwordered2(_status.guhuoNode);
},trigger.cards[0]);
event.onEnd01=function(){
_status.guhuoNode.removeEventListener('webkitTransitionEnd',event.onEnd01);
_status.guhuoNode.style.transition='all ease-in 0.3s';
_status.guhuoNode.style.transform='perspective(600px) rotateY(270deg) translateX(52px)';
var onEnd=function(){
_status.guhuoNode.classList.remove('infohidden');
_status.guhuoNode.style.transition='all 0s';
ui.refresh(_status.guhuoNode);
_status.guhuoNode.style.transform='perspective(600px) rotateY(-90deg) translateX(52px)';
ui.refresh(_status.guhuoNode);
_status.guhuoNode.style.transition='';
ui.refresh(_status.guhuoNode);
_status.guhuoNode.style.transform='';
_status.guhuoNode.removeEventListener('webkitTransitionEnd',onEnd);
}
_status.guhuoNode.listenTransition(onEnd);
};
'step 1'
if(event.guessers.length==0) event.goto(3);
else{
event.guessers[0].chooseControl('质疑','不质疑').set('prompt',event.prompt).set('ai',function(){
if(get.attitude(event.guessers[0],player)>0) return '不质疑';
return Math.random()<0.5?'不质疑':'质疑';
});
}
'step 2'
if(!result.control) result.control='不质疑';
event.guessers[0].chat(result.control);
game.delay(1);
if(result.control=='不质疑'){
game.log(event.guessers[0],'#g不质疑');
event.guessers.remove(event.guessers[0]);
event.goto(1);
}else{
game.log(event.guessers[0],'#y质疑');
}
'step 3'
game.broadcastAll(function(onEnd){
_status.guhuoNode.listenTransition(onEnd);
},event.onEnd01);
'step 4'
game.delay(3.2);
'step 5'
if(!event.guessers.length) event.finish();
'step 6'
if(trigger.card.name==trigger.cards[0].name){
event.guessers[0].popup('质疑错误','fire');
event.guessers[0].addSkill('chanyuan');
game.log(event.guessers[0],'获得了技能','#g【缠怨】');
}
else{
event.guessers[0].popup('质疑正确','wood');
game.log(player,'使用的',trigger.card,'作废了');
game.cardsDiscard(trigger.cards);
game.broadcastAll(ui.clear);
trigger.cancel();
if(trigger.name=='useCard'&&trigger.parent) trigger.parent.goto(0);
}
game.delay();
},
},
chanyuan:{
//charlotte:true,
firstDo:true,
trigger:{
player:["phaseBefore","changeHp"],
},
priority:99,
forced:true,
popup:false,
unique:true,
content:function (){
if(player.hp==1){
var skills=player.getSkills(true,false);
for(var i=0;i<skills.length;i++){
var info=get.info(skills[i]);
if(skills[i]=='chanyuan'||skills[i]=='rechanyuan'||info.charlotte){
skills.splice(i--,1);
}
}
player.disableSkill('chanyuan',skills);
}
else player.enableSkill('chanyuan');
},
mark:true,
intro:{
content:function (storage,player,skill){
var str='<li>锁定技你不能质疑于吉只要你的体力值为1你的其他技能便全部失效。';
var list=[];
for(var i in player.disabledSkills){
if(player.disabledSkills[i].contains(skill)){
list.push(i)
}
}
if(list.length){
str+='<br><li>失效技能:';
for(var i=0;i<list.length;i++){
if(lib.translate[list[i]+'_info']){
str+=get.translation(list[i])+'、';
}
}
return str.slice(0,str.length-1);
}else return str;
},
},
init:function (player,skill){
if(player.hp==1){
var skills=player.getSkills(true,false);
for(var i=0;i<skills.length;i++){
var info=get.info(skills[i]);
if(skills[i]=='chanyuan'||skills[i]=='rechanyuan'||info.charlotte){
skills.splice(i--,1);
}
}
player.disableSkill(skill,skills);
}
},
onremove:function (player,skill){
player.enableSkill(skill);
},
locked:true,
},
"guhuo_respond":{
trigger:{
player:"chooseToRespondBegin",
},
filter:function (event,player){
if(player.hasSkill('guhuo_phase'))return false;
if(event.responded) return false;
if(!event.filterCard({name:'shan'})&&!event.filterCard({name:'sha'})) return false;
if(!lib.filter.cardRespondable({name:'shan'},player,event)&&!lib.filter.cardRespondable({name:'sha'},player,event)) return false;
if(!player.countCards('h')) return false;
return true;
},
direct:true,
content:function (){
"step 0"
if(trigger.filterCard({name:'shan'})&&lib.filter.cardRespondable({name:'shan'},player,trigger)) event.name='shan';
else event.name='sha';
player.chooseCard('是否发动【蛊惑】,将一张手牌当做'+get.translation(event.name)+'打出?');
"step 1"
if(result.bool){
player.addTempSkill('guhuo_phase');
player.logSkill('guhuo_guess');
player.popup(event.name,'metal');
event.card=result.cards[0];
player.lose(event.card,ui.special);
event.prompt=get.translation(player)+'声明了'+get.translation(event.name)+',是否质疑?';
event.guessers=game.filterPlayer(function(current){
return current!=player&&!current.hasSkill('chanyuan');
});
event.guessers.sort(lib.sort.seat);
game.broadcastAll(function(card){
_status.guhuoNode=card.copy('thrown');
if(lib.config.cardback_style!='default'){
_status.guhuoNode.style.transitionProperty='none';
ui.refresh(_status.guhuoNode);
_status.guhuoNode.classList.add('infohidden');
ui.refresh(_status.guhuoNode);
_status.guhuoNode.style.transitionProperty='';
}
else{
_status.guhuoNode.classList.add('infohidden');
}
_status.guhuoNode.style.transform='perspective(600px) rotateY(180deg) translateX(0)';
player.$throwordered2(_status.guhuoNode);
},result.cards[0]);
event.onEnd01=function(){
_status.guhuoNode.removeEventListener('webkitTransitionEnd',event.onEnd01);
_status.guhuoNode.style.transition='all ease-in 0.3s';
_status.guhuoNode.style.transform='perspective(600px) rotateY(270deg) translateX(52px)';
var onEnd=function(){
_status.guhuoNode.classList.remove('infohidden');
_status.guhuoNode.style.transition='all 0s';
ui.refresh(_status.guhuoNode);
_status.guhuoNode.style.transform='perspective(600px) rotateY(-90deg) translateX(52px)';
ui.refresh(_status.guhuoNode);
_status.guhuoNode.style.transition='';
ui.refresh(_status.guhuoNode);
_status.guhuoNode.style.transform='';
_status.guhuoNode.removeEventListener('webkitTransitionEnd',onEnd);
}
_status.guhuoNode.listenTransition(onEnd);
};
}else event.finish();
"step 2"
if(event.guessers.length==0) event.goto(4);
else{
event.guessers[0].chooseControl('质疑','不质疑').set('prompt',event.prompt).set('ai',function(){
if(get.attitude(event.guessers[0],player)>0) return '不质疑';
return Math.random()<0.5?'不质疑':'质疑';
});
}
"step 3"
if(!result.control) result.control='不质疑';
event.guessers[0].chat(result.control);
game.delay();
if(result.control=='不质疑'){
game.log(event.guessers[0],'#g不质疑');
event.guessers.remove(event.guessers[0]);
event.goto(2);
}else{
game.log(event.guessers[0],'#y质疑');
}
"step 4"
game.broadcastAll(function(onEnd){
_status.guhuoNode.listenTransition(onEnd);
},event.onEnd01);
"step 5"
game.delay(3.2);
if(!event.guessers.length) event.goto(7);
"step 6"
if(event.name==event.card.name){
event.guessers[0].popup('质疑错误','fire');
event.guessers[0].addSkill('chanyuan');
game.log(event.guessers[0],'获得了技能','#g【缠怨】');
}
else{
event.guessers[0].popup('质疑正确','wood');
game.log(player,'打出的','#y'+get.translation(event.name),'作废了');
game.cardsDiscard(event.card);
event.finish();
}
"step 7"
trigger.untrigger();
trigger.responded=true;
trigger.result={bool:true,card:{name:event.name},cards:[event.card],noanimate:true};
},
ai:{
order:4,
useful:-1,
value:-1,
},
},
"guhuo_wuxie":{
log:false,
silent:true,
popup:false,
enable:"chooseToUse",
filterCard:true,
viewAsFilter:function (player){
if(player.hasSkill('guhuo_phase'))return false;
return player.countCards('h')>0;
},
viewAs:{
name:"wuxie",
},
check:function(card){
if(card.name=='wuxie') return 1000;
return 0;
},
prompt:"将一张手牌当无懈可击使用",
threaten:1.2,
},
"guhuo_phase":{},
}, },
//废除装备栏时显示的卡牌 //废除装备栏时显示的卡牌
card:{ card:{
@ -6746,7 +7113,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"nzry_kuizhu":"溃诛", "nzry_kuizhu":"溃诛",
"nzry_kuizhu_info":"弃牌阶段结束后你可以选择一项令至多X名角色各摸一张牌或对任意名体力值之和为X的角色造成一点伤害若不少于2名角色你须受到一点伤害。X为你此阶段弃置的牌数", "nzry_kuizhu_info":"弃牌阶段结束后你可以选择一项令至多X名角色各摸一张牌或对任意名体力值之和为X的角色造成一点伤害若不少于2名角色你须受到一点伤害。X为你此阶段弃置的牌数",
"nzry_zhizheng":"掣政", "nzry_zhizheng":"掣政",
"nzry_zhizheng_info":"锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色数,你可以弃置其中一名角色一张牌", "nzry_zhizheng_info":"锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色你弃置其中一名角色一张牌",
"nzry_lijun1":"立军", "nzry_lijun1":"立军",
"nzry_lijun":"立军", "nzry_lijun":"立军",
"nzry_lijun_info":"主公技,其他吴势力角色的回合限一次,其使用的【杀】结算后,可以将此【杀】交给你,然后你可以令其摸一张牌", "nzry_lijun_info":"主公技,其他吴势力角色的回合限一次,其使用的【杀】结算后,可以将此【杀】交给你,然后你可以令其摸一张牌",
@ -7075,6 +7442,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gzduanliang:'断粮', gzduanliang:'断粮',
gzduanliang_info:'你可以将一张黑色基本牌或黑色装备牌当【兵粮寸断】使用你可以对距离为2的角色使用【兵粮寸断】', gzduanliang_info:'你可以将一张黑色基本牌或黑色装备牌当【兵粮寸断】使用你可以对距离为2的角色使用【兵粮寸断】',
"xinfu_guhuo":"蛊惑",
"xinfu_guhuo_info":"每名角色的回合限一次,你可以扣置一张手牌当做一张基本牌或普通锦囊牌使用或打出。其他角色依次选择是否质疑。一旦有其他角色质疑则翻开此牌:若为假则此牌作废,若为真,则质疑角色获得技能〖缠怨〗。",
"guhuo_guess":"蛊惑",
"guhuo_guess_info":"",
chanyuan:"缠怨",
"chanyuan_info":"锁定技你不能质疑于吉当你的体力值为1时你的其他技能失效。",
"guhuo_respond":"蛊惑",
"guhuo_respond_info":"",
"guhuo_wuxie":"蛊惑",
"guhuo_wuxie_info":"",
"guhuo_phase":"蛊惑",
"guhuo_phase_info":"",
shenhua_feng:'神话再临·风', shenhua_feng:'神话再临·风',
shenhua_huo:'神话再临·火', shenhua_huo:'神话再临·火',

File diff suppressed because it is too large Load Diff

View File

@ -1482,6 +1482,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
tieji:{ tieji:{
audio:2, audio:2,
shaRelated:true,
trigger:{player:'useCardToPlayered'}, trigger:{player:'useCardToPlayered'},
check:function(event,player){ check:function(event,player){
return get.attitude(player,event.target)<=0; return get.attitude(player,event.target)<=0;
@ -2277,6 +2278,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
wushuang:{ wushuang:{
shaRelated:true,
audio:2, audio:2,
audioname:['re_lvbu','shen_lvbu'], audioname:['re_lvbu','shen_lvbu'],
forced:true, forced:true,
@ -2464,6 +2466,68 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
}, },
"xinfu_jijie":{
enable:"phaseUse",
usable:1,
audio:2,
//filter:function(){
//return ui.cardPile.hasChildNodes();
//},
content:function (){
'step 0'
//event.card=ui.cardPile.lastChild;
event.card=get.bottomCards()[0];
var content=['牌堆底的一张牌',[event.card]];
game.log(player,'观看了牌堆底的一张牌');
player.chooseControl('ok').set('dialog',content);
'step 1'
player.chooseTarget('选择获得此牌的角色').set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(_status.event.du){
if(target.hasSkillTag('nodu')) return 0.5;
return -att;
}
if(att>0){
if(_status.event.player!=target) att+=2;
return att+Math.max(0,5-target.countCards('h'));
}
return att;
}).set('du',event.card.name=='du').set('same',event.same);
'step 2'
if(result.bool){
event.target=result.targets[0];
player.line(event.target,'green');
player.give(event.card,event.target);
}
else ui.cardPile.appendChild(event.card);
game.updateRoundNumber();
},
ai:{
order:7.2,
result:{
player:1,
},
},
},
"xinfu_jiyuan":{
trigger:{
global:"dying",
source:"gainAfter",
},
//priority:6,
audio:2,
filter:function (event,player){
if(event.name=='dying') return true;
return event.player!=player&&event.bySelf!=true;
},
check:function (event,player){
return get.attitude(player,event.player)>0;
},
logTarget:"player",
content:function (){
trigger.player.draw();
},
},
}, },
translate:{ translate:{
caocao:'曹操', caocao:'曹操',
@ -2624,6 +2688,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yaowu_info:'锁定技当任意一名角色使用红色【杀】对你造成伤害时该角色回复1点体力或摸一张牌。', yaowu_info:'锁定技当任意一名角色使用红色【杀】对你造成伤害时该角色回复1点体力或摸一张牌。',
"new_jiangchi":"将驰", "new_jiangchi":"将驰",
"new_jiangchi_info":"摸牌阶段结束时你可以选择一项1、摸一张牌若如此做你本回合内不能使用或打出【杀】。 2、弃置一张牌若如此做出牌阶段你使用【杀】无距离限制且你可以额外使用一张【杀】直到回合结束。", "new_jiangchi_info":"摸牌阶段结束时你可以选择一项1、摸一张牌若如此做你本回合内不能使用或打出【杀】。 2、弃置一张牌若如此做出牌阶段你使用【杀】无距离限制且你可以额外使用一张【杀】直到回合结束。",
"xinfu_jijie":"机捷",
"xinfu_jijie_info":"出牌阶段限一次。你可以观看牌堆底的一张牌,然后将其交给一名角色。",
"xinfu_jiyuan":"急援",
"xinfu_jiyuan_info":"当一名角色进入濒死状态时,或你交给一名其他角色牌时,你可以令其摸一张牌。",
standard_2008:"2008版标准包", standard_2008:"2008版标准包",
standard_2013:"2013版标准包", standard_2013:"2013版标准包",

File diff suppressed because it is too large Load Diff

View File

@ -1865,6 +1865,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
zhuandui:{ zhuandui:{
shaRelated:true,
audio:2, audio:2,
group:['zhuandui_respond','zhuandui_use'], group:['zhuandui_respond','zhuandui_use'],
subSkill:{ subSkill:{
@ -5634,6 +5635,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
longyin:{ longyin:{
shaRelated:true,
trigger:{global:'useCard'}, trigger:{global:'useCard'},
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){
@ -5935,7 +5937,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 2' 'step 2'
var num2=0,players=game.filterPlayer(); var num2=0,players=game.filterPlayer();
for(var i=0;i<players.length;i++){ for(var i=0;i<players.length;i++){
if(target.inRange(players[i])<=1){ if(target.inRange(players[i])){
num2++; num2++;
} }
} }
@ -7064,6 +7066,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
xinpojun:{ xinpojun:{
shaRelated:true,
trigger:{player:'useCardToPlayered'}, trigger:{player:'useCardToPlayered'},
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[ window.noname_asset_list=[
'1.9.98.4.1', '1.9.98.4.2',
'audio/background/aozhan_chaoming.mp3', 'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3', 'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3', 'audio/background/aozhan_rewrite.mp3',
@ -8,6 +8,7 @@ window.noname_asset_list=[
'audio/background/music_diaochan.mp3', 'audio/background/music_diaochan.mp3',
'audio/background/music_shezhan.mp3', 'audio/background/music_shezhan.mp3',
'audio/background/music_jifeng.mp3', 'audio/background/music_jifeng.mp3',
'audio/background/music_philosophy.mp3',
'audio/background/music_jilve.mp3', 'audio/background/music_jilve.mp3',
'audio/card/default.mp3', 'audio/card/default.mp3',
@ -543,7 +544,7 @@ window.noname_asset_list=[
'audio/die/tw_beimihu.mp3', 'audio/die/tw_beimihu.mp3',
'audio/die/yuantanyuanshang.mp3', 'audio/die/yuantanyuanshang.mp3',
'audio/die/shenpei.mp3', 'audio/die/shenpei.mp3',
'audio/die/re_gaoshun.mp3', 'audio/die/re_gaoshun.mp3',
'audio/die/re_wuguotai.mp3', 'audio/die/re_wuguotai.mp3',
'audio/die/re_xusheng.mp3', 'audio/die/re_xusheng.mp3',
'audio/die/zhangyì.mp3', 'audio/die/zhangyì.mp3',
@ -2343,7 +2344,7 @@ window.noname_asset_list=[
'audio/skill/reyingzi_re_sunce2.mp3', 'audio/skill/reyingzi_re_sunce2.mp3',
'audio/skill/yinghun_re_sunce1.mp3', 'audio/skill/yinghun_re_sunce1.mp3',
'audio/skill/yinghun_re_sunce2.mp3', 'audio/skill/yinghun_re_sunce2.mp3',
'audio/skill/buyi_re_wuguotai2.mp3', 'audio/skill/buyi_re_wuguotai2.mp3',
'audio/skill/reganlu1.mp3', 'audio/skill/reganlu1.mp3',
'audio/skill/reganlu2.mp3', 'audio/skill/reganlu2.mp3',
'audio/skill/rejinjiu1.mp3', 'audio/skill/rejinjiu1.mp3',
@ -2359,7 +2360,7 @@ window.noname_asset_list=[
'audio/skill/zhongzuo1.mp3', 'audio/skill/zhongzuo1.mp3',
'audio/skill/zhongzuo2.mp3', 'audio/skill/zhongzuo2.mp3',
'audio/skill/buyi_re_wuguotai1.mp3', 'audio/skill/buyi_re_wuguotai1.mp3',
'audio/skill/busuan1.mp3', 'audio/skill/busuan1.mp3',
'audio/skill/busuan2.mp3', 'audio/skill/busuan2.mp3',
'audio/skill/gxlianhua1.mp3', 'audio/skill/gxlianhua1.mp3',
'audio/skill/gxlianhua2.mp3', 'audio/skill/gxlianhua2.mp3',
@ -2848,13 +2849,13 @@ window.noname_asset_list=[
'image/character/re_sunce.jpg', 'image/character/re_sunce.jpg',
'image/character/ol_maliang.jpg', 'image/character/ol_maliang.jpg',
'image/character/ns_zhangwei.jpg', 'image/character/ns_zhangwei.jpg',
'image/character/jiakui.jpg', 'image/character/jiakui.jpg',
'image/character/re_gaoshun.jpg', 'image/character/re_gaoshun.jpg',
'image/character/re_wuguotai.jpg', 'image/character/re_wuguotai.jpg',
'image/character/re_xusheng.jpg', 'image/character/re_xusheng.jpg',
'image/character/zhangyì.jpg', 'image/character/zhangyì.jpg',
'image/character/xin_xiahoudun.jpg', 'image/character/xin_xiahoudun.jpg',
'image/character/key_yusa.jpg', 'image/character/key_yusa.jpg',
'image/character/sp_gongsunzan.jpg', 'image/character/sp_gongsunzan.jpg',
'image/character/sp_liuxie.jpg', 'image/character/sp_liuxie.jpg',
'image/character/sp_simazhao.jpg', 'image/character/sp_simazhao.jpg',

View File

@ -44811,7 +44811,7 @@
ui.control.show(); ui.control.show();
game.resume2(); game.resume2();
} }
else if(_status.event.isMine()&&!dialogtouched){ else if((_status.event.isMine()||_status.event.forceMine)&&!dialogtouched){
if(_status.event.custom.replace.window){ if(_status.event.custom.replace.window){
_status.event.custom.replace.window(); _status.event.custom.replace.window();
} }
@ -50268,7 +50268,7 @@
} }
return result; return result;
}, },
effect:function(target,card,player,player2){ effect:function(target,card,player,player2,isLink){
var event=_status.event; var event=_status.event;
var eventskill=null; var eventskill=null;
if(player==undefined) player=_status.event.player; if(player==undefined) player=_status.event.player;
@ -50284,8 +50284,8 @@
} }
var result=get.result(card,eventskill); var result=get.result(card,eventskill);
var result1=result.player,result2=result.target; var result1=result.player,result2=result.target;
if(typeof result1=='function') result1=result1(player,target,card); if(typeof result1=='function') result1=result1(player,target,card,isLink);
if(typeof result2=='function') result2=result2(player,target,card); if(typeof result2=='function') result2=result2(player,target,card,isLink);
if(typeof result1!='number') result1=0; if(typeof result1!='number') result1=0;
if(typeof result2!='number') result2=0; if(typeof result2!='number') result2=0;
@ -50425,10 +50425,17 @@
} }
if(zeroplayer) result1=0; if(zeroplayer) result1=0;
if(zerotarget) result2=0; if(zerotarget) result2=0;
var final=0;
if(player2){ if(player2){
return (result1*get.attitude(player2,player)+(target?result2*get.attitude(player2,target):0)); final=(result1*get.attitude(player2,player)+(target?result2*get.attitude(player2,target):0));
} }
return (result1*get.attitude(player,player)+(target?result2*get.attitude(player,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&&current.isLinked) final+=get.effect(current,card,player,player2,true);
})
}
return final;
}, },
damageEffect:function(target,player,viewer,nature){ damageEffect:function(target,player,viewer,nature){
if(!player){ if(!player){

View File

@ -1,8 +1,7 @@
window.noname_update={ window.noname_update={
version:'1.9.98.4.1', version:'1.9.98.4.2',
update:'1.9.98.4', update:'1.9.98.4.1',
changeLog:[ changeLog:[
'何太后,二袁,赵襄调整',
'bug修复', 'bug修复',
], ],
files:[ files:[
@ -15,35 +14,35 @@ window.noname_update={
//'card/guozhan.js', //'card/guozhan.js',
//'card/gwent.js', //'card/gwent.js',
//'card/zhenfa.js', //'card/zhenfa.js',
//'card/zhulu.js', 'card/zhulu.js',
//'character/diy.js', 'character/diy.js',
'character/extra.js', 'character/extra.js',
//'character/hearth.js', //'character/hearth.js',
//'character/gujian.js', 'character/gujian.js',
//'character/gwent.js', //'character/gwent.js',
//'character/hearth.js', 'character/hearth.js',
//'character/mobile.js', 'character/mobile.js',
//'character/mtg.js', //'character/mtg.js',
//'character/old.js', //'character/old.js',
'character/refresh.js', 'character/refresh.js',
'character/shenhua.js', 'character/shenhua.js',
'character/sp.js', 'character/sp.js',
//'character/tw.js', //'character/tw.js',
//'character/standard.js', 'character/standard.js',
//'character/swd.js', //'character/swd.js',
//'character/xianjian.js', //'character/xianjian.js',
'character/xinghuoliaoyuan.js', 'character/xinghuoliaoyuan.js',
'character/yijiang.js', 'character/yijiang.js',
'character/yxs.js', //'character/yxs.js',
//'extension/boss/extension.js', //'extension/boss/extension.js',
//'layout/default/layout.css', //'layout/default/layout.css',
//'layout/nova/layout.css', //'layout/nova/layout.css',
'mode/identity.js', 'mode/identity.js',
//'mode/doudizhu.js', //'mode/doudizhu.js',
'mode/guozhan.js', //'mode/guozhan.js',
//'mode/chess.js', //'mode/chess.js',
//'mode/tafang.js', //'mode/tafang.js',
'mode/single.js', //'mode/single.js',
//'mode/stone.js', //'mode/stone.js',
//'mode/brawl.js', //'mode/brawl.js',
//'mode/versus.js', //'mode/versus.js',

View File

@ -2470,7 +2470,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
break; break;
case 'nei': case 'nei':
if(identity2=='zhu'&&game.players.length==2) return -10; if(identity2=='zhu'&&game.players.length==2) return -10;
if(identity2!='zhu'&&game.players.length==3) return -8; if(from!=to&&identity2!='zhu'&&game.players.length==3) return -8;
var strategy=get.aiStrategy(); var strategy=get.aiStrategy();
if(strategy==4){ if(strategy==4){
if(from==to) return 10; if(from==to) return 10;