Add files via upload
This commit is contained in:
parent
67cabb26c1
commit
c82fa9f289
|
@ -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'))){
|
||||
return 0;
|
||||
}
|
||||
shas.sort(function(a,b){
|
||||
return get.order(b)-get.order(a);
|
||||
})
|
||||
var card;
|
||||
if(shas.length){
|
||||
for(var i=0;i<shas.length;i++){
|
||||
|
|
|
@ -157,13 +157,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
useful:[5,1],
|
||||
value:[5,1],
|
||||
},
|
||||
order:function(){
|
||||
order:function(item){
|
||||
if(_status.event.player.hasSkillTag('presha',true,null,true)) return 10;
|
||||
if(lib.linked.contains(get.nature(item))) return 3.1;
|
||||
return 3;
|
||||
},
|
||||
result:{
|
||||
target:function(player,target,card){
|
||||
if(player.hasSkill('jiu')&&!target.hasSkillTag('filterDamage',null,{
|
||||
target:function(player,target,card,isLink){
|
||||
if(!isLink&&player.hasSkill('jiu')&&!target.hasSkillTag('filterDamage',null,{
|
||||
player:player,
|
||||
card:card,
|
||||
jiu:true,
|
||||
|
|
|
@ -265,7 +265,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
result:{
|
||||
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;
|
||||
},
|
||||
},
|
||||
|
@ -466,7 +470,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
ai:{
|
||||
order:9.5,
|
||||
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;
|
||||
},
|
||||
basic:{
|
||||
|
@ -479,7 +490,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
var val=0;
|
||||
var card=target.getEquip(2);
|
||||
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;
|
||||
},
|
||||
|
@ -567,7 +582,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
|
|||
result:{
|
||||
keepAI:true,
|
||||
target:function(player,target){
|
||||
return -1-target.countCards('h');
|
||||
return -0.5-2*target.countCards('h');
|
||||
},
|
||||
},
|
||||
}
|
||||
|
|
|
@ -1656,6 +1656,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var check=function(list){
|
||||
for(var i=0;i<list.length;i++){
|
||||
var info=lib.skill[list[i]];
|
||||
if(info&&info.shaRelated) return true;
|
||||
if(info&&info.trigger){
|
||||
for(var j in info.trigger){
|
||||
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(cond.indexOf('damageBefore')!=-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('damageSource')!=-1) return true;
|
||||
if(cond.indexOf('damageAfter')!=-1) return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -797,7 +797,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:true,
|
||||
trigger:{player:'useCard'},
|
||||
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){
|
||||
player.storage.jilue_jizhi=0;
|
||||
|
@ -1838,7 +1838,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
game.broadcastAll('closeDialog',event.videoId);
|
||||
var cards2=event.cards2;
|
||||
player.gain(cards2,'log','gain2');
|
||||
game.delay();
|
||||
},
|
||||
ai:{
|
||||
threaten:1.2
|
||||
|
|
|
@ -1050,6 +1050,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
for(var i=0;i<list.length;i++){
|
||||
var info=lib.skill[list[i]];
|
||||
if(!info) continue;
|
||||
if(info.shaRelated) return true;
|
||||
if(info.trigger){
|
||||
for(var j in info.trigger){
|
||||
if(j=='player'||j=='global'){
|
||||
|
|
|
@ -8464,7 +8464,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 0'
|
||||
target.chooseCard('h',true,'重铸一张手牌');
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
if(result.bool&&result.cards.length){
|
||||
target.$throw(result.cards);
|
||||
target.lose(result.cards,ui.discardPile);
|
||||
var type=get.type(result.cards[0],'trick');
|
||||
|
|
2380
character/mobile.js
2380
character/mobile.js
File diff suppressed because it is too large
Load Diff
|
@ -242,6 +242,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
repojun:{
|
||||
shaRelated:true,
|
||||
audio:2,
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
direct:true,
|
||||
|
@ -892,6 +893,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
//if(name=='phaseBegin'&&game.phaseNumber==1) return false;
|
||||
return player.storage.rehuashen&&player.storage.rehuashen.character.length>0;
|
||||
},
|
||||
banned:['lisu','sp_xiahoudun'],
|
||||
addHuashen:function(player){
|
||||
if(!player.storage.rehuashen) return;
|
||||
if(!_status.characterlist){
|
||||
|
@ -912,7 +914,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
var bool=false;
|
||||
for(var i=0;i<_status.characterlist.length;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];
|
||||
for(var j=0;j<skills.length;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.addTempSkill('shuangxiong2');
|
||||
player.storage.shuangxiong=get.color(card2);
|
||||
game.delay();
|
||||
},
|
||||
},
|
||||
"reshuangxiong2":{
|
||||
|
@ -4181,6 +4182,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
retieji:{
|
||||
shaRelated:true,
|
||||
audio:2,
|
||||
audioname:['boss_lvbu3'],
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
|
@ -4620,7 +4622,515 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
maixie: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:{
|
||||
re_zhangliao:'界张辽',
|
||||
|
@ -4847,6 +5357,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
rehuashen_info:'游戏开始后,你随机获得三张未加入游戏的武将牌,选一张置于你面前并声明该武将牌的一项技能,你拥有该技能且同时将性别和势力属性变成与该武将相同直到该化身被替换。你的每个准备阶段和结束后,你可以选择一项:①弃置至多两张未展示的化身牌并重新获得等量化身牌;②更换所展示的化身牌或技能。(你不可声明限定技、觉醒技或主公技)。',
|
||||
rexinsheng:'新生',
|
||||
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:'当你于回合外失去牌时,你可以进行一次判定。若判定结果为♥,你获得此判定牌。否则你将此牌置于你的武将牌上,称之为【田】。锁定技,你计算与其他角色的距离时-X(X为你武将牌上【田】的数目)',
|
||||
retiaoxin_info:'出牌阶段限一次,你可以指定一名有牌的其他角色,该角色需对你使用一张【杀】,否则你弃置其一张牌。',
|
||||
rebeige_info:'当有角色受到【杀】造成的伤害后,你可以弃一张牌,并令其进行一次判定,若判定结果为:♥该角色回复X点体力(X为伤害点数);♦︎该角色摸三张牌;♣伤害来源弃两张牌;♠伤害来源将其武将牌翻面',
|
||||
re_liushan:'手杀刘禅',
|
||||
re_sunben:'界孙笨',
|
||||
re_zhangzhang:'界张昭张纮',
|
||||
rehunzi:'魂姿',
|
||||
rehunzi_info:'觉醒技,准备阶段,若你的体力值不大于2,你减1点体力上限,并获得技能〖英姿〗和〖英魂〗。',
|
||||
zhijian_info:'出牌阶段,你可以将手牌中的一张装备牌置于一名其他角色装备区里(不得替换原装备),然后摸一张牌。当你使用装备牌时,你可以摸一张牌。',
|
||||
refangquan:'放权',
|
||||
refangquan_info:'你可跳过你的出牌阶段,若如此做,你本回合的手牌上限+X(X为你已损失的体力值),且回合结束时,你可以弃置一张手牌并令一名其他角色进行一个额外的回合。',
|
||||
re_wuguotai:'界吴国太',
|
||||
re_gaoshun:'界高顺',
|
||||
re_xusheng:'界徐盛',
|
||||
|
|
|
@ -593,7 +593,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
"xinfu_fuyin":{
|
||||
usable:1,
|
||||
trigger:{
|
||||
target:"useCardToTargeted",
|
||||
},
|
||||
|
@ -601,15 +600,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
audio:2,
|
||||
filter:function (event,player){
|
||||
if(event.player.countCards('h')<player.countCards('h')) return false;
|
||||
if(event.card.name=='sha'||event.card.name=='juedou') return true;
|
||||
return false;
|
||||
if(event.card.name!='sha'&&event.card.name!='juedou') return true;
|
||||
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 (){
|
||||
trigger.getParent().excluded.add(player);
|
||||
},
|
||||
},
|
||||
|
||||
|
||||
"drlt_qianjie":{
|
||||
group:["drlt_qianjie_1","drlt_qianjie_2","drlt_qianjie_3"],
|
||||
locked:true,
|
||||
|
@ -2171,6 +2172,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
jianchu:{
|
||||
shaRelated:true,
|
||||
audio:2,
|
||||
audioname:['re_pangde'],
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
|
@ -2658,6 +2660,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
xinliegong:{
|
||||
shaRelated:true,
|
||||
mod:{
|
||||
targetInRange:function(card,player,target){
|
||||
if(card.name=='sha'&&card.number){
|
||||
|
@ -3276,6 +3279,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
jiang:{
|
||||
shaRelated:true,
|
||||
audio:2,
|
||||
audioname:['sp_lvmeng','re_sunben','re_sunce'],
|
||||
trigger:{
|
||||
|
@ -4136,6 +4140,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
lieren:{
|
||||
shaRelated:true,
|
||||
audio:2,
|
||||
audioname:['boss_lvbu3'],
|
||||
trigger:{source:'damageSource'},
|
||||
|
@ -5541,6 +5546,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhuSkill:true,
|
||||
},
|
||||
mengjin:{
|
||||
shaRelated:true,
|
||||
audio:2,
|
||||
trigger:{player:'shaMiss'},
|
||||
//priority:-1,
|
||||
|
@ -5821,6 +5827,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
liegong:{
|
||||
shaRelated:true,
|
||||
audio:2,
|
||||
audioname:['re_huangzhong'],
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
|
@ -6661,6 +6668,366 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
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:{
|
||||
|
@ -6746,7 +7113,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"nzry_kuizhu":"溃诛",
|
||||
"nzry_kuizhu_info":"弃牌阶段结束后,你可以选择一项:令至多X名角色各摸一张牌,或对任意名体力值之和为X的角色造成一点伤害,若不少于2名角色,你须受到一点伤害。(X为你此阶段弃置的牌数)",
|
||||
"nzry_zhizheng":"掣政",
|
||||
"nzry_zhizheng_info":"锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色数,你可以弃置其中一名角色一张牌",
|
||||
"nzry_zhizheng_info":"锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色的数量,则你弃置其中一名角色的一张牌。",
|
||||
"nzry_lijun1":"立军",
|
||||
"nzry_lijun":"立军",
|
||||
"nzry_lijun_info":"主公技,其他吴势力角色的回合限一次,其使用的【杀】结算后,可以将此【杀】交给你,然后你可以令其摸一张牌",
|
||||
|
@ -7075,6 +7442,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
|
||||
gzduanliang:'断粮',
|
||||
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_huo:'神话再临·火',
|
||||
|
|
3027
character/sp.js
3027
character/sp.js
File diff suppressed because it is too large
Load Diff
|
@ -1482,6 +1482,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
tieji:{
|
||||
audio:2,
|
||||
shaRelated:true,
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
check:function(event,player){
|
||||
return get.attitude(player,event.target)<=0;
|
||||
|
@ -2277,6 +2278,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
wushuang:{
|
||||
shaRelated:true,
|
||||
audio:2,
|
||||
audioname:['re_lvbu','shen_lvbu'],
|
||||
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:{
|
||||
caocao:'曹操',
|
||||
|
@ -2624,6 +2688,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
yaowu_info:'锁定技,当任意一名角色使用红色【杀】对你造成伤害时,该角色回复1点体力或摸一张牌。',
|
||||
"new_jiangchi":"将驰",
|
||||
"new_jiangchi_info":"摸牌阶段结束时,你可以选择一项:1、摸一张牌,若如此做,你本回合内不能使用或打出【杀】。 2、弃置一张牌,若如此做,出牌阶段你使用【杀】无距离限制且你可以额外使用一张【杀】,直到回合结束。",
|
||||
"xinfu_jijie":"机捷",
|
||||
"xinfu_jijie_info":"出牌阶段限一次。你可以观看牌堆底的一张牌,然后将其交给一名角色。",
|
||||
"xinfu_jiyuan":"急援",
|
||||
"xinfu_jiyuan_info":"当一名角色进入濒死状态时,或你交给一名其他角色牌时,你可以令其摸一张牌。",
|
||||
|
||||
standard_2008:"2008版标准包",
|
||||
standard_2013:"2013版标准包",
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1865,6 +1865,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
zhuandui:{
|
||||
shaRelated:true,
|
||||
audio:2,
|
||||
group:['zhuandui_respond','zhuandui_use'],
|
||||
subSkill:{
|
||||
|
@ -5634,6 +5635,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
longyin:{
|
||||
shaRelated:true,
|
||||
trigger:{global:'useCard'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
|
@ -5935,7 +5937,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 2'
|
||||
var num2=0,players=game.filterPlayer();
|
||||
for(var i=0;i<players.length;i++){
|
||||
if(target.inRange(players[i])<=1){
|
||||
if(target.inRange(players[i])){
|
||||
num2++;
|
||||
}
|
||||
}
|
||||
|
@ -7064,6 +7066,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
xinpojun:{
|
||||
shaRelated:true,
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
window.noname_asset_list=[
|
||||
'1.9.98.4.1',
|
||||
'1.9.98.4.2',
|
||||
'audio/background/aozhan_chaoming.mp3',
|
||||
'audio/background/aozhan_online.mp3',
|
||||
'audio/background/aozhan_rewrite.mp3',
|
||||
|
@ -8,6 +8,7 @@ window.noname_asset_list=[
|
|||
'audio/background/music_diaochan.mp3',
|
||||
'audio/background/music_shezhan.mp3',
|
||||
'audio/background/music_jifeng.mp3',
|
||||
'audio/background/music_philosophy.mp3',
|
||||
'audio/background/music_jilve.mp3',
|
||||
'audio/card/default.mp3',
|
||||
|
||||
|
@ -543,7 +544,7 @@ window.noname_asset_list=[
|
|||
'audio/die/tw_beimihu.mp3',
|
||||
'audio/die/yuantanyuanshang.mp3',
|
||||
'audio/die/shenpei.mp3',
|
||||
'audio/die/re_gaoshun.mp3',
|
||||
'audio/die/re_gaoshun.mp3',
|
||||
'audio/die/re_wuguotai.mp3',
|
||||
'audio/die/re_xusheng.mp3',
|
||||
'audio/die/zhangyì.mp3',
|
||||
|
@ -2343,7 +2344,7 @@ window.noname_asset_list=[
|
|||
'audio/skill/reyingzi_re_sunce2.mp3',
|
||||
'audio/skill/yinghun_re_sunce1.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/reganlu2.mp3',
|
||||
'audio/skill/rejinjiu1.mp3',
|
||||
|
@ -2359,7 +2360,7 @@ window.noname_asset_list=[
|
|||
'audio/skill/zhongzuo1.mp3',
|
||||
'audio/skill/zhongzuo2.mp3',
|
||||
'audio/skill/buyi_re_wuguotai1.mp3',
|
||||
'audio/skill/busuan1.mp3',
|
||||
'audio/skill/busuan1.mp3',
|
||||
'audio/skill/busuan2.mp3',
|
||||
'audio/skill/gxlianhua1.mp3',
|
||||
'audio/skill/gxlianhua2.mp3',
|
||||
|
@ -2848,13 +2849,13 @@ window.noname_asset_list=[
|
|||
'image/character/re_sunce.jpg',
|
||||
'image/character/ol_maliang.jpg',
|
||||
'image/character/ns_zhangwei.jpg',
|
||||
'image/character/jiakui.jpg',
|
||||
'image/character/jiakui.jpg',
|
||||
'image/character/re_gaoshun.jpg',
|
||||
'image/character/re_wuguotai.jpg',
|
||||
'image/character/re_xusheng.jpg',
|
||||
'image/character/zhangyì.jpg',
|
||||
'image/character/xin_xiahoudun.jpg',
|
||||
'image/character/key_yusa.jpg',
|
||||
'image/character/key_yusa.jpg',
|
||||
'image/character/sp_gongsunzan.jpg',
|
||||
'image/character/sp_liuxie.jpg',
|
||||
'image/character/sp_simazhao.jpg',
|
||||
|
|
19
game/game.js
19
game/game.js
|
@ -44811,7 +44811,7 @@
|
|||
ui.control.show();
|
||||
game.resume2();
|
||||
}
|
||||
else if(_status.event.isMine()&&!dialogtouched){
|
||||
else if((_status.event.isMine()||_status.event.forceMine)&&!dialogtouched){
|
||||
if(_status.event.custom.replace.window){
|
||||
_status.event.custom.replace.window();
|
||||
}
|
||||
|
@ -50268,7 +50268,7 @@
|
|||
}
|
||||
return result;
|
||||
},
|
||||
effect:function(target,card,player,player2){
|
||||
effect:function(target,card,player,player2,isLink){
|
||||
var event=_status.event;
|
||||
var eventskill=null;
|
||||
if(player==undefined) player=_status.event.player;
|
||||
|
@ -50284,8 +50284,8 @@
|
|||
}
|
||||
var result=get.result(card,eventskill);
|
||||
var result1=result.player,result2=result.target;
|
||||
if(typeof result1=='function') result1=result1(player,target,card);
|
||||
if(typeof result2=='function') result2=result2(player,target,card);
|
||||
if(typeof result1=='function') result1=result1(player,target,card,isLink);
|
||||
if(typeof result2=='function') result2=result2(player,target,card,isLink);
|
||||
|
||||
if(typeof result1!='number') result1=0;
|
||||
if(typeof result2!='number') result2=0;
|
||||
|
@ -50425,10 +50425,17 @@
|
|||
}
|
||||
if(zeroplayer) result1=0;
|
||||
if(zerotarget) result2=0;
|
||||
var final=0;
|
||||
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&¤t.isLinked) final+=get.effect(current,card,player,player2,true);
|
||||
})
|
||||
}
|
||||
return final;
|
||||
},
|
||||
damageEffect:function(target,player,viewer,nature){
|
||||
if(!player){
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
window.noname_update={
|
||||
version:'1.9.98.4.1',
|
||||
update:'1.9.98.4',
|
||||
version:'1.9.98.4.2',
|
||||
update:'1.9.98.4.1',
|
||||
changeLog:[
|
||||
'何太后,二袁,赵襄调整',
|
||||
'bug修复',
|
||||
],
|
||||
files:[
|
||||
|
@ -15,35 +14,35 @@ window.noname_update={
|
|||
//'card/guozhan.js',
|
||||
//'card/gwent.js',
|
||||
//'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
//'character/diy.js',
|
||||
'card/zhulu.js',
|
||||
'character/diy.js',
|
||||
'character/extra.js',
|
||||
//'character/hearth.js',
|
||||
//'character/gujian.js',
|
||||
'character/gujian.js',
|
||||
//'character/gwent.js',
|
||||
//'character/hearth.js',
|
||||
//'character/mobile.js',
|
||||
'character/hearth.js',
|
||||
'character/mobile.js',
|
||||
//'character/mtg.js',
|
||||
//'character/old.js',
|
||||
'character/refresh.js',
|
||||
'character/shenhua.js',
|
||||
'character/sp.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',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
//'layout/default/layout.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',
|
||||
//'mode/single.js',
|
||||
//'mode/stone.js',
|
||||
//'mode/brawl.js',
|
||||
//'mode/versus.js',
|
||||
|
|
|
@ -2470,7 +2470,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
break;
|
||||
case 'nei':
|
||||
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();
|
||||
if(strategy==4){
|
||||
if(from==to) return 10;
|
||||
|
|
Loading…
Reference in New Issue