This commit is contained in:
Spmario233 2019-06-13 20:51:34 +08:00 committed by GitHub
parent ded0163d73
commit 1ec748a61e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 1962 additions and 176 deletions

View File

@ -687,7 +687,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
players.sort(lib.sort.seat);
var choice=players[0];
var next=player.chooseTarget('是否移动木牛流马?',function(card,player,target){
return !target.isMin()&&player!=target&&!target.getEquip(5);
return !target.isMin()&&player!=target&&target.isEmpty(5);
});
next.set('ai',function(target){
return target==_status.event.choice?1:-1;

View File

@ -11,8 +11,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shen_simayi:['male','shen',4,['renjie','sbaiyin','lianpo'],['wei']],
shen_caocao:['male','shen',3,['guixin','feiying'],['wei']],
shen_lvbu:['male','shen',5,['baonu','wumou','ol_wuqian','ol_shenfen'],['qun']],
"shen_liubei":["male","shen",6,["nzry_longnu","nzry_jieying"],["shu"]],
"shen_luxun":["male","shen",4,["nzry_junlve","nzry_cuike","nzry_dinghuo"],["wu"]],
"shen_zhangliao":["male","shen",4,["drlt_duorui","drlt_zhiti"],["wei"]],
"shen_ganning":["male","shen",3,["drlt_poxi","drlt_jieying"],["wu"]],
},
characterIntro:{
shen_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。',
@ -20,6 +23,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shen_zhouyu:'字公瑾庐江舒县人。东汉末年名将。有姿貌、精音律江东有“曲有误周郎顾”之语。周瑜少与孙策交好后孙策遇刺身亡孙权继任。周瑜将兵赴丧以中护军的身份与长史张昭共掌众事建安十三年208年周瑜率东吴军与刘备军联合在赤壁击败曹操。此战也奠定了三分天下的基础。',
shen_zhugeliang:'字孔明、号卧龙汉族琅琊阳都人三国时期蜀汉丞相、杰出的政治家、军事家、发明家、文学家。在世时被封为武乡侯死后追谥忠武侯后来东晋政权推崇诸葛亮军事才能特追封他为武兴王。诸葛亮为匡扶蜀汉政权呕心沥血、鞠躬尽瘁、死而后已。其代表作有《前出师表》、《后出师表》、《诫子书》等。曾发明木牛流马等并改造连弩可一弩十矢俱发。于234年在宝鸡五丈原逝世。',
},
characterTitle:{
shen_ganning:"体力上限6",
},
skill:{
ol_shenfen:{
audio:2,
@ -939,7 +945,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.value(card);
};
"step 2"
player.lose(result.cards,ui.special)._triggered=null;
player.lose(result.cards,ui.special,'toStorage');
player.storage.qixing=result.cards;
game.addVideo('storage',player,['qixing',get.cardsInfo(player.storage.qixing),'cards']);
},
@ -985,7 +991,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
player.logSkill('qixing');
player.lose(result.cards,ui.special)._triggered=null;
player.lose(result.cards,ui.special,'toStorage');
player.storage.qixing=player.storage.qixing.concat(result.cards);
player.syncStorage('qixing');
event.num=result.cards.length;
@ -1006,7 +1012,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.delay(0.5);
}
"step 3"
player.gain(result.links)._triggered=null;
player.gain(result.links,'fromStorage');
for(var i=0;i<result.links.length;i++){
player.storage.qixing.remove(result.links[i]);
}
@ -1182,23 +1188,54 @@ game.import('character',function(lib,game,ui,get,ai,_status){
limited:true,
selectCard:[0,4],
line:'fire',
check:function(){return -1},
selectTarget:function(){
if(ui.selected.cards.length==4) return 1;
check:function (){return -1},
selectTarget:function (){
if(ui.selected.cards.length==4) return [1,2];
if(ui.selected.cards.length==0) return [1,3];
game.uncheck('target');
return [1,3];
},
content:function(){
multitarget:true,
multiline:true,
content:function (){
"step 0"
player.awakenSkill('yeyan');
player.storage.yeyan=true;
if(cards.length==4){
player.loseHp(3);
target.damage('fire',3,'nocard');
event.num=0;
"step 1"
if(cards.length==4) event.goto(2);
else {
if(event.num<targets.length){
targets[event.num].damage('fire',1,'nocard');
event.num++;
}
if(event.num==targets.length) event.finish();
else event.redo();
}
"step 2"
player.loseHp(3);
if(targets.length==1) event.goto(4);
else{
target.damage('fire','nocard');
player.chooseTarget('请选择受到2点伤害的角色',true,function(card,player,target){
return targets.contains(target)
}).set('ai',function(target){
return 1;
});
}
"step 3"
if(event.num<targets.length){
var dnum=1;
if(result.bool&&result.targets&&targets[event.num]==result.targets[0]) dnum=2;
targets[event.num].damage('fire',dnum,'nocard');
event.num++;
}
if(event.num==targets.length) event.finish();
else event.redo();
"step 4"
player.chooseControl("2点","3点").set('prompt','请选择伤害点数').set('ai',function(){
return "3点";
});
"step 5"
targets[0].damage('fire',result.control=="2点"?2:3,'nocard');
},
ai:{
order:1,
@ -1802,9 +1839,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
forced:true,
content:function(){
player.storage.nzry_junlve++;
player.storage.nzry_junlve+=trigger.num;
player.syncStorage('nzry_junlve');
game.log(player,'获得个“军略”标记');
game.log(player,'获得',trigger.num,'个“军略”标记');
},
},
"nzry_cuike":{
@ -1870,9 +1907,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
unique:true,
mark:true,
skillAnimation:true,
trigger:{
player:"phaseUseBegin",
},
enable:'phaseUse',
filter:function (event,player){
return !player.storage.nzry_dinghuo&&player.storage.nzry_junlve>0;
},
@ -1880,26 +1915,487 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var num=game.countPlayer(function(current){return get.attitude(player,current)<0&&current.isLinked()});
return player.storage.nzry_junlve>=num&&num==game.countPlayer(function(current){return get.attitude(player,current)<0});
},
filterTarget:function(card,player,target){
return target.isLinked();
},
selectTarget:function(){
return [1,_status.event.player.storage.nzry_junlve];
},
multiline:true,
multitarget:true,
content:function (){
'step 0'
player.awakenSkill('nzry_dinghuo');
player.storage.nzry_dinghuo=true;
player.chooseTarget([0,player.storage.nzry_junlve],'请选择【绽火】的目标',function(card,player,target){
/*player.chooseTarget([0,player.storage.nzry_junlve],'',function(card,player,target){
return target.isLinked();
}).ai=function(target){
return -get.attitude(player,target);
};*/
'step 1'
player.storage.nzry_junlve=0;
player.syncStorage('nzry_junlve');
game.log(player,'移去了所有“军略”标记');
for(var i=0;i<targets.length;i++){
targets[i].discard(targets[i].getCards('e'));
}
player.chooseTarget(true,'对一名目标角色造成1点火焰伤害',function(card,player,target){
return targets.contains(target);
}).ai=function(){return 1};
'step 2'
if(result.bool){
result.targets[0].damage('fire','nocard');
}
},
ai:{
order:1,
result:{
target:function(player,target){
if(target.hasSkillTag('nofire')) return 0;
if(lib.config.mode=='versus') return -1;
if(player.hasUnknown()) return 0;
return get.damageEffect(target,player)-target.countCards('e');
}
}
}
},
"drlt_duorui":{
audio:2,
init:function(player){
player.storage.drlt_duorui=[];
},
trigger:{
source:'damageAfter'
},
filter:function(event,player){
if(player.storage.drlt_duorui.length) return false;
return player!=event.player&&event.player.isAlive()&&_status.currentPhase==player;
},
check:function(event,player){
var list=[];
var skills=trigger.player.skills.slice(0);
for(var i=0;i<skills.length;i++){
var info=get.info(skills[i])
if(info!=undefined&&!info.charlotte&&(!info.unique||info.gainable)) list.push(skills[i]);
};
return !player.storage.disableEquip.contains('equip5')&&list.length>0;
},
content:function(){
'step 0'
event.skills=[];
var skills=trigger.player.skills.slice(0);
for(var i=0;i<skills.length;i++){
var info=get.info(skills[i])
if(info!=undefined&&!info.charlotte&&(!info.unique||info.gainable)) event.skills.push(skills[i]);
};
if(player.storage.disableEquip.length<5){
var list=['武器','防具','防御马','攻击马','宝物'];
for(var i=0;i<player.storage.disableEquip.length;i++){
list.remove(get.translation(player.storage.disableEquip[i]));
};
var list1=['equip1','equip2','equip3','equip4','equip5'];
for(var i=0;i<player.storage.disableEquip.length;i++){
list1.remove(player.storage.disableEquip[i]);
};
player.chooseControl(list).set('ai',function(event){
if(list1.contains('equip5')&&event.skills.length>0) return '宝物';
return list.randomGet();
}).set('prompt','请选择需要废除的栏位');
}
'step 1'
if(result.control!=undefined){
if(result.control=='武器') player.disableEquip('equip1');
if(result.control=='防具') player.disableEquip('equip2');
if(result.control=='防御马') player.disableEquip('equip3');
if(result.control=='攻击马') player.disableEquip('equip4');
if(result.control=='宝物') player.disableEquip('equip5');
}
if(event.skills.length>0){
player.chooseControl(event.skills).set('prompt','请选择要获得的技能');
}
else event.finish();
'step 2'
player.addTempSkill(result.control,{player:'dieAfter'});
player.storage.drlt_duorui=[result.control];
player.storage.drlt_duorui_player=trigger.player;
trigger.player.storage.drlt_duorui=[result.control];
trigger.player.addTempSkill('drlt_duorui1',{player:'phaseAfter'});
},
group:['duorui_clear'],
},
"duorui_clear":{
trigger:{global:['phaseAfter','dieAfter'],},
filter:function(event,player){
if(!player.storage.drlt_duorui_player||!player.storage.drlt_duorui) return false;
return player.storage.drlt_duorui_player==event.player&&player.storage.drlt_duorui.length;
},
silent:true,
forced:true,
popup:false,
content:function(){
player.removeSkill(player.storage.drlt_duorui[0]);
delete player.storage.drlt_duorui_player;
player.storage.drlt_duorui=[];
},
},
"drlt_duorui1":{
init:function(player,skill){
player.disableSkill(skill,player.storage.drlt_duorui);
},
onremove:function(player,skill){
"step 0"
player.enableSkill(skill);
"step 1"
delete player.storage.drlt_duorui;
},
locked:true,
mark:true,
intro:{
content:function(storage,player,skill){
var list=[];
for(var i in player.disabledSkills){
if(player.disabledSkills[i].contains(skill)) list.push(i);
};
if(list.length){
var str='失效技能:';
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);
};
},
},
},
"drlt_zhiti":{
audio:2,
locked:true,
group:["drlt_zhiti_1","drlt_zhiti_2","drlt_zhiti_3","drlt_zhiti_4","drlt_zhiti_5"],
subSkill:{
'1':{
audio:2,
trigger:{
global:'juedouAfter'
},
forced:true,
filter:function(event,player){
return event.targets&&event.targets.contains(player)&&event.turn!=player&&player.storage.disableEquip!=undefined&&player.storage.disableEquip.length>0;
},
content:function(){
'step 0'
var list=[];
for(var i=0;i<player.storage.disableEquip.length;i++){
list.push(get.translation(player.storage.disableEquip[i]));
};
player.chooseControl(list).set('ai',function(event){
return list.randomGet();
}).set('prompt','请选择需要恢复的栏位');;
'step 1'
if(result.control=='武器') player.enableEquip('equip1');
if(result.control=='防具') player.enableEquip('equip2');
if(result.control=='防御马') player.enableEquip('equip3');
if(result.control=='攻击马') player.enableEquip('equip4');
if(result.control=='宝物') player.enableEquip('equip5');
},
},
'2':{
audio:2,
trigger:{
player:'juedouAfter',
},
forced:true,
filter:function(event,player){
return event.turn!=player&&player.storage.disableEquip!=undefined&&player.storage.disableEquip.length>0;
},
content:function(){
'step 0'
var list=[];
for(var i=0;i<player.storage.disableEquip.length;i++){
list.push(get.translation(player.storage.disableEquip[i]));
};
player.chooseControl(list).set('ai',function(event){
return list.randomGet();
}).set('prompt','请选择需要恢复的栏位');;
'step 1'
if(result.control=='武器') player.enableEquip('equip1');
if(result.control=='防具') player.enableEquip('equip2');
if(result.control=='防御马') player.enableEquip('equip3');
if(result.control=='攻击马') player.enableEquip('equip4');
if(result.control=='宝物') player.enableEquip('equip5');
},
},
'3':{
audio:2,
trigger:{
player:'chooseToCompareAfter'
},
forced:true,
filter:function(event,player){
return event.result.bool==true&&player.storage.disableEquip!=undefined&&player.storage.disableEquip.length>0;
},
content:function(){
'step 0'
var list=[];
for(var i=0;i<player.storage.disableEquip.length;i++){
list.push(get.translation(player.storage.disableEquip[i]));
};
player.chooseControl(list).set('ai',function(event){
return list.randomGet();
}).set('prompt','请选择需要恢复的栏位');;
'step 1'
if(result.control=='武器') player.enableEquip('equip1');
if(result.control=='防具') player.enableEquip('equip2');
if(result.control=='防御马') player.enableEquip('equip3');
if(result.control=='攻击马') player.enableEquip('equip4');
if(result.control=='宝物') player.enableEquip('equip5');
},
},
'4':{
audio:2,
trigger:{
global:'chooseToCompareAfter'
},
forced:true,
filter:function(event,player){
return (event.targets!=undefined&&event.targets.contains(player)||event.target==player)&&event.result.bool==false&&player.storage.disableEquip!=undefined&&player.storage.disableEquip.length>0;
},
content:function(){
'step 0'
var list=[];
for(var i=0;i<player.storage.disableEquip.length;i++){
list.push(get.translation(player.storage.disableEquip[i]));
};
player.chooseControl(list).set('ai',function(event){
return list.randomGet();
}).set('prompt','请选择需要恢复的栏位');;
'step 1'
if(result.control=='武器') player.enableEquip('equip1');
if(result.control=='防具') player.enableEquip('equip2');
if(result.control=='防御马') player.enableEquip('equip3');
if(result.control=='攻击马') player.enableEquip('equip4');
if(result.control=='宝物') player.enableEquip('equip5');
},
},
'5':{
audio:2,
trigger:{
player:['damageEnd']
},
forced:true,
filter:function(event,player){
return player.storage.disableEquip!=undefined&&player.storage.disableEquip.length>0;
},
content:function(){
'step 0'
var list=[];
for(var i=0;i<player.storage.disableEquip.length;i++){
list.push(get.translation(player.storage.disableEquip[i]));
};
player.chooseControl(list).set('ai',function(event){
return list.randomGet();
}).set('prompt','请选择需要恢复的栏位');;
'step 1'
if(result.control=='武器') player.enableEquip('equip1');
if(result.control=='防具') player.enableEquip('equip2');
if(result.control=='防御马') player.enableEquip('equip3');
if(result.control=='攻击马') player.enableEquip('equip4');
if(result.control=='宝物') player.enableEquip('equip5');
},
},
},
},
"_drlt_zhiti":{
mod:{
maxHandcard:function (player,num){
if(player.maxHp>player.hp&&game.countPlayer(function(current){return current!=player&&current.hasSkill('drlt_zhiti')&&get.distance(current,player,'attack')<=1})) return num-1;
},
},
},
'drlt_poxi':{
init:function (player,skill){
if(player.hasStockSkill(skill)&&!player.storage[skill]){
player.gainMaxHp(3);
player.storage[skill]=true;
}
},
audio:2,
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
//return target!=player&&target.countCards('h')>0;
return target!=player;
},
content:function(){
'step 0'
event.list1=[];
event.list2=[];
if(target.countCards('h')>0){
var chooseButton=player.chooseButton(4,'hidden',['你的手牌',player.getCards('h'),get.translation(target.name)+'的手牌',target.getCards('h'),'hidden']);
}else{
var chooseButton=player.chooseButton(4,'hidden',['你的手牌',player.getCards('h'),'hidden']);
}
chooseButton.set('ai',function(button){
//if(button.link.name=='du') return 1;
return 0;
});
chooseButton.filterButton=function(button){
for(var i=0;i<ui.selected.buttons.length;i++){
if(get.suit(button.link)==get.suit(ui.selected.buttons[i].link)) return false;
};
return true;
};
'step 1'
if(result.bool){
player.line(result.targets);
player.storage.nzry_junlve=0;
player.syncStorage('nzry_junlve');
game.log(player,'移去了所有“军略”标记');
for(var i=0;i<result.targets.length;i++){
result.targets[i].discard(result.targets[i].get('e'));
result.targets[i].damage('fire');
var list=result.links;
for(var i=0;i<list.length;i++){
if(get.owner(list[i])==player){
event.list1.push(list[i]);
}else{
event.list2.push(list[i]);
};
};
target.discard(event.list2);
player.discard(event.list1);
};
'step 2'
if(event.list1.length+event.list2.length==4){
if(event.list1.length==0) player.loseMaxHp();
if(event.list1.length==1){
var evt=_status.event;
for(var i=0;i<10;i++){
if(evt&&evt.getParent)evt=evt.getParent();
if(evt.name=='phaseUse'){
evt.skipped=true;
break;
};
};
player.addTempSkill('drlt_poxi1',{player:'phaseAfter'});
};
if(event.list1.length==3) player.recover();
if(event.list1.length==4) player.draw(4);
};
},
ai:{
order:13,
result:{
target:function(target,player){
return -1;
},
},
},
},
'drlt_poxi1':{
mod:{
maxHandcard:function (player,num){
return num-1;
},
},
},
'drlt_jieying':{
audio:2,
init:function (player){
player.storage.drlt_jieying=0;
},
marktext:"营",
intro:{
content:function(storage){
return '当前有'+storage+'个“营”';
},
},
mark:true,
group:["drlt_jieying_1","drlt_jieying_2","drlt_jieying_3"],
subSkill:{
'1':{
audio:'drlt_jieying',
trigger:{
global:'gameStart'
},
forced:true,
content:function(){
player.storage.drlt_jieying++;
player.syncStorage('drlt_jieying');
game.log(player,'获得了“营”标记');
},
},
'2':{
audio:'drlt_jieying',
trigger:{
player:"phaseEnd",
},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('drlt_jieying'),function(card,player,target){
return target.storage.drlt_jieying==undefined;
}).ai=function(target){
if(get.attitude(player,target)>0)
return 0.1;
if(get.attitude(player,target)<1&&(target.isTurnedOver()||target.countCards('h')<1))
return 0.2;
if(get.attitude(player,target)<1&&target.countCards('h')>0&&target.countCards('j',{name:'lebu'})>0)
return target.countCards('h')*0.8+target.getHandcardLimit()*0.7+2;
if(get.attitude(player,target)<1&&target.countCards('h')>0)
return target.countCards('h')*0.8+target.getHandcardLimit()*0.7;
return 1;
};
'step 1'
if(result.bool){
var target=result.targets[0];
player.line(target);
player.logSkill('drlt_jieying');
delete player.storage.drlt_jieying;
player.unmarkSkill('drlt_jieying');
game.log(player,'失去了“营”标记');
player.storage.drlt_jieying1=target;
if(target.storage.drlt_jieying==undefined) target.storage.drlt_jieying=0;
target.storage.drlt_jieying++;
target.markSkill('drlt_jieying');
game.log(target,'获得了“营”标记');
};
},
},
'3':{
audio:'drlt_jieying',
trigger:{
global:'phaseAfter'
},
forced:true,
filter:function(event,player){
return event.player!=player&&event.player.storage.drlt_jieying!=undefined
},
content:function(){
if(trigger.player.countCards('h')>0){
trigger.player.give(trigger.player.getCards('h'),player);
}
if(player.storage.drlt_jieying==undefined) player.storage.drlt_jieying=0;
player.storage.drlt_jieying++;
delete trigger.player.storage.drlt_jieying;
trigger.player.unmarkSkill('drlt_jieying');
player.markSkill('drlt_jieying');
game.log(player,'获得了“营”标记');
},
},
},
},
'_drlt_jieying':{
mod:{
cardUsable:function (card,player,num){
if(player.storage.drlt_jieying!=undefined&&card.name=='sha') return num+1;
},
maxHandcard:function (player,num){
if(player.storage.drlt_jieying!=undefined) return num+1;
},
},
audio:'drlt_jieying',
trigger:{
player:'phaseDrawBegin'
},
forced:true,
filter:function(event,player){
return player.storage.drlt_jieying!=undefined;
},
content:function(){
trigger.num++;
},
},
},
@ -1910,13 +2406,27 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"nzry_cuike":"摧克",
"nzry_cuike_info":"出牌阶段开始时,若“军略”标记的数量为奇数,你可以对一名角色造成一点伤害;若“军略”标记的数量为偶数你可以横置一名角色并弃置其区域内的一张牌。若“军略”标记的数量超过7个你可以移去全部“军略”标记并对所有其他角色造成一点伤害",
"nzry_dinghuo":"绽火",
"nzry_dinghuo_info":"限定技,出牌阶段开始时,你可以移去全部“军略”标记,令至多等量的已横置角色弃置所有装备区内的牌,然后受到1点火焰伤害",
"nzry_dinghuo_info":"限定技,出牌阶段,你可以移去全部“军略”标记,令至多等量的已横置角色弃置所有装备区内的牌。然后,你对其中一名角色造成1点火焰伤害",
"shen_liubei":"神刘备",
"nzry_longnu":"龙怒",
"nzry_longnu_info":"转换技锁定技①出牌阶段开始时你流失1点体力并摸一张牌然后本回合你的红色手牌均视为火杀且无距离限制。②出牌阶段开始时你减1点体力上限并摸一张牌然后本回合你的锦囊牌均视为雷杀且无使用次数限制",
"nzry_jieying":"结营",
"nzry_jieying_info":"锁定技,你始终处于横置状态;已横置的角色手牌上限+2;结束阶段,你横置一名其他角色",
"shen_ganning":"神甘宁",
"shen_zhangliao":"神张辽",
"drlt_poxi":"魄袭",
"drlt_poxi_info":"出牌阶段限一次你可以观看一名其他角色的手牌然后你可以弃置你与其手牌中的四张花色不同的牌。若如此做根据此次弃置你的牌的数量执行以下效果1.没有扣减一点体力上限2.一张,立即结束出牌阶段且本回合手牌上限-1三张恢复一点体力四张摸四张牌",
"drlt_jieying":"劫营",
"drlt_jieying_info":"游戏开始时,你获得一个“营”标记。结束阶段,你可以将“营”标记置于一名角色的武将牌旁;有“营”标记的角色摸牌阶段多摸一张牌、出牌阶段可多使用一张【杀】、手牌上限+1。有“营”标记的其他角色的回合结束后你获得其所有手牌并收回“营”标记。",
"drlt_duorui1":"失效技能",
"drlt_duorui1_bg":"锐",
"drlt_duorui":"夺锐",
"drlt_duorui_info":"当你于出牌阶段内对一名其他角色造成伤害后,你可以废除你装备区内的一个装备栏(若已全部废除则可以跳过此步骤),然后获得其的一个技能直到其的下回合结束或其死亡(觉醒技,限定技,主公技等特殊技能除外)。若如此做,该角色该技能失效且你不能再发动〖夺锐〗直到你失去此技能。",
"drlt_zhiti":"止啼",
"drlt_zhiti_info":"锁定技,你范围内已受伤的其他角色手牌上限-1当你拼点或【决斗】胜利或受到伤害后你恢复一个装备栏",
shen_zhaoyun:'神赵云',
shen_guanyu:'神关羽',
shen_lvmeng:'神吕蒙',

View File

@ -29,6 +29,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_machao:['male','qun',4,['zhuiji','cihuai']],
old_bulianshi:['female','wu',3,['old_anxu','zhuiyi']],
old_zhugezhan:["male","shu",3,["old_zuilun","old_fuyin"]],
zhangliang:["male","qun",3,["old_jijun","old_fangtong"]],
},
characterFilter:{
old_lingju:function(mode){
@ -36,6 +38,118 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
old_zuilun:{
subSkill:{
e:{},
h:{},
},
enable:"phaseUse",
usable:2,
filterTarget:function (card,player,target){
if(player==target) return false;
var pos='he';
if(player.hasSkill('old_zuilun_h')) pos='e';
if(player.hasSkill('old_zuilun_e')) pos='h';
return target.countGainableCards(player,pos)>0;
},
content:function (){
'step 0'
var pos='he';
if(player.hasSkill('old_zuilun_h')) pos='e';
if(player.hasSkill('old_zuilun_e')) pos='h';
player.gainPlayerCard(target,pos,true);
'step 1'
if(result.bool&&result.cards&&result.cards.length){
target.draw();
var pos=result.cards[0].original;
if(pos=='h'||pos=='e') player.addTempSkill('old_zuilun_'+pos,'phaseUseAfter');
}
},
ai:{
order:7,
result:{
target:-1,
},
},
},
old_fuyin:{
mod:{
targetEnabled:function(card,player,target){
if((card.name=='juedou'||card.name=='sha'||card.name=='huogong')&&player!=target&&player.countCards('h')>=target.countCards('h')&&!target.isEmpty(2)) return false;
},
},
},
"old_jijun":{
marktext:"方",
intro:{
content:"cards",
},
enable:"phaseUse",
filterCard:true,
selectCard:[1,Infinity],
filter:function (event,player){
return player.countCards('h')>0;
},
check:function (card){
var player=_status.event.player;
if(player.storage.old_jijun&&(36-player.storage.old_jijun.length)<=player.countCards('h')) return 1;
return 5-get.value(card);
},
discard:false,
lose:false,
content:function (){
player.lose(cards,ui.special,'toStorage');
player.$give(cards,player);
if(!player.storage.old_jijun) player.storage.old_jijun=[];
player.storage.old_jijun.addArray(cards);
player.markSkill('old_jijun');
},
},
"old_fangtong":{
trigger:{
player:"phaseEnd",
},
forced:true,
skillAnimation:true,
filter:function (event,player){
return (player.storage.old_jijun&&player.storage.old_jijun.length>35);
},
content:function (){
var bool=false;
if(player==game.me) bool=true;
else switch(get.mode()){
case 'identity':{
game.showIdentity();
var id1=player.identity;
var id2=game.me.identity;
if(['zhu','zhong','mingzhong'].contains(id1)){
if(['zhu','zhong','mingzhong'].contains(id2)) bool=true;
break;
}
else if(id1=='fan'){
if(id2=='fan') bool=true;
break;
}
break;
}
case 'guozhan':{
if(game.me.isFriendOf(player)) bool=true;
break;
}
case 'versus':{
if(player.side==game.me.side) bool=true;
break;
}
case 'boss':{
if(player.side==game.me.side) bool=true;
break;
}
default:{}
}
game.over(bool);
},
},
oldanxu:{
enable:'phaseUse',
usable:1,
@ -460,7 +574,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_zhuzhi:'旧朱治',
old_machao:'旧马超',
old_bulianshi:'旧步练师',
old_zhugezhan:"旧诸葛瞻",
zhangliang:'张梁',
"old_jijun":"集军",
"old_jijun_info":"出牌阶段,你可以将任意张手牌置于你的武将牌上。(均称为“方”)",
"old_fangtong":"方统",
"old_fangtong_info":"锁定技结束阶段若你的“方”的数目大于等于36则你所在的游戏阵营直接取得游戏胜利。",
old_zuilun:"罪论",
old_zuilun_info:"出牌阶段,你可以获得一名其他角色的一张牌(手牌、装备区各一次),然后该角色摸一张牌。",
old_fuyin:"父荫",
old_fuyin_info:"锁定技,若你的装备区内没有防具牌,手牌数大于或等于你的其他角色不能使用【杀】、【决斗】或【火攻】指定你为目标",
oldanxu:'安恤',
oldanxu_info:'出牌阶段限一次,你可以选择手牌数不相等的两名其他角色,令其中手牌少的角色获得手牌多的角色的一张手牌并展示之,然后若此牌不为黑桃,你摸一张牌。',
oldfaen:'法恩',

View File

@ -93,7 +93,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true,
content:function (){
'step 0'
player.gainPlayerCard(get.prompt('new_liyu',trigger.player),trigger.player,'he').set('ai',function(card){
player.gainPlayerCard(get.prompt('new_liyu',trigger.player),trigger.player,'he','visibleMove').set('ai',function(card){
var player=_status.event.player;
var evt=_status.event.target;
if(get.type(card)=='equip'){
@ -113,7 +113,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
});
'step 1'
if(result.bool){
player.showCards(result.cards);
player.logSkill('new_liyu',trigger.player);
if(get.type(result.cards[0])!='equip'){
trigger.player.draw();
@ -950,7 +949,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(target.sex!='male') return false;
var card=ui.selected.cards[0];
if(!card) return false;
if(get.position(card)=='e'&&target.countCards('e',{subtype:get.subtype(card)})) return false;
if(get.position(card)=='e'&&!target.isEmpty(get.subtype(card))) return false;
return true;
},
discard:false,

File diff suppressed because it is too large Load Diff

View File

@ -46,7 +46,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
caoang:['male','wei',4,['kaikang']],
sp_caoren:['male','wei',4,['weikui','lizhan']],
zhangbao:['male','qun',3,['zhoufu','yingbin']],
zhangliang:['male','qun',3,['fulu','fuji']],
huangjinleishi:['female','qun',3,['fulu','fuji']],
maliang:['male','shu',3,['zishu','yingyuan']],
sp_pangtong:['male','qun',3,['manjuan','zuixiang']],
zhugedan:['male','wei',4,['gongao','juyi']],
@ -241,8 +241,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangliang:'东汉末年黄巾起义首领之一张角的三弟。中平元年184随兄起义号称“人公将军”。遭到朝廷所派左中郎将皇甫嵩进攻时他率军在广宗今河北威县进行反击。后因警戒疏忽遭到汉军夜袭兵败身亡。',
},
characterTitle:{
"baosanniang":"Sukincen",
'zhaotongzhaoguang':"Sukincen"
//"baosanniang":"Sukincen",
//'zhaotongzhaoguang':"Sukincen"
},
perfectPair:{
yuejin:['re_lidian'],
@ -441,7 +441,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(player.storage.new_xingwu.length<2){
player.$give(result.cards,player);
}
player.lose(result.cards,ui.special);
player.lose(result.cards,ui.special,'toStorage');
player.storage.new_xingwu=player.storage.new_xingwu.concat(result.cards);
player.markSkill('new_xingwu');
player.syncStorage('new_xingwu');
@ -811,7 +811,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target)
if(target.getEquip(2)&&!player.getEquip(2)){
if(target.getEquip(2)&&player.isEmpty(2)){
return -2*att;
}
return -att;
@ -2050,7 +2050,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
player.chooseTarget(get.prompt('shuimeng'),function(card,player,target){
return target!=player&&target.countCards('h');
return player.canCompare(target);
}).set('ai',function(target){
if(!_status.event.goon) return 0;
return -get.attitude(_status.event.player,target);
@ -2918,7 +2918,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return true;
},
filterTarget:function(card,player,target){
return target.countCards('h')&&target!=player;
return player.canCompare(target);
},
ai:{
order:2.8,
@ -3186,7 +3186,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
});
}
player.chooseTarget(get.prompt('shuangren'),function(card,player,target){
return target!=player&&target.countCards('h');
return player.canCompare(target);
}).set('ai',function(target){
var player=_status.event.player;
if(_status.event.goon&&get.attitude(player,target)<0){
@ -4862,7 +4862,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
player.logSkill('tuifeng');
player.lose(result.cards,ui.special);
player.lose(result.cards,ui.special,'toStorage');
player.$give(result.cards,player);
for(var i=0;i<result.cards.length;i++){
player.storage.tuifeng.push(result.cards[i]);
@ -4953,7 +4953,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
filterTarget:function(card,player,target){
if(ui.selected.targets.length){
return target.countCards('h')>0&&target.distanceTo(ui.selected.targets[0])<=1;
return ui.selected.targets[0].canCompare(target)&&target.distanceTo(ui.selected.targets[0])<=1;
}
return true;
},
@ -5070,7 +5070,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')>0;
return player.canCompare(target);
},
selectTarget:[1,3],
filter:function(event,player){
@ -5106,8 +5106,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.die();
}
else{
// player.chooseToDiscard('弃置一张牌,或摸一张牌').set('ai',function(){return -1;});
event.finish();
player.chooseToDiscard('弃置一张牌,或摸一张牌').set('ai',function(){return -1;});
//event.finish();
}
}
'step 1'
@ -5281,7 +5281,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 2'
if(result.bool){
var card=result.cards[0];
player.lose(card,ui.special);
player.lose(card,ui.special,'toStorage');
player.storage.shefu.push(card);
player.syncStorage('shefu');
player.markSkill('shefu');
@ -5739,7 +5739,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player!=target&&target.countCards('h');
return player.canCompare(target);
},
filter:function(event,player){
return player.countCards('h')>0;
@ -5841,7 +5841,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
inherit:'bagua_skill',
filter:function(event,player){
if(!lib.skill.bagua_skill.filter(event,player)) return false;
if(player.getEquip(2)) return false;
if(!player.isEmpty(2)) return false;
return true;
},
ai:{
@ -6038,6 +6038,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
ui.special.appendChild(trigger.card);
trigger.player.markSkill('zhenwei2');
event.trigger("addCardToStorage");
}
trigger.cancel();
trigger.player.addSkill('zhenwei2');
@ -6076,7 +6077,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player!=target&&target.countCards('h');
return player.canCompare(target);
},
filter:function(event,player){
return player.countCards('h')>0;
@ -6370,7 +6371,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool&&result.links&&result.links.length){
target.$give(result.links,player);
target.lose(result.links,ui.special);
target.lose(result.links,ui.special,'toStorage');
player.storage.yinling.push(result.links[0]);
player.markSkill('yinling');
player.syncStorage('yinling');
@ -6416,8 +6417,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return player.countCards('he',{suit:'diamond'})>0;
},
discard:false,
lose:false,
prepare:'give',
content:function(){
player.lose(cards,ui.special,'toStorage');
if(target.hasSkill('yanxiao2')&&target.storage.yanxiao2){
target.storage.yanxiao2.push(cards[0]);
target.syncStorage('yanxiao2');
@ -6449,7 +6452,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true,
content:function(){
var cards=player.storage.yanxiao2.concat(player.getCards('j'));
player.gain(cards,'gain2','log');
player.gain(cards,'gain2','log','fromStorage');
delete player.storage.yanxiao2;
player.removeSkill('yanxiao2');
},
@ -6666,7 +6669,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.logSkill('yinbing');
game.log(player,'将',result.cards,'置于武将牌上');
player.storage.yinbing=player.storage.yinbing.concat(result.cards);
player.lose(result.cards,ui.special);
player.lose(result.cards,ui.special,'toStorage');
player.markSkill('yinbing');
player.syncStorage('yinbing');
}
@ -6776,7 +6779,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else{
var target=result.targets[0];
target.recover();
target.gain(player.storage.yinbing.slice(0),'gain2','log');
target.gain(player.storage.yinbing.slice(0),'gain2','log','fromStorage');
target.draw(player.storage.yinbing.length);
player.storage.yinbing.length=0;
}
@ -6977,7 +6980,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 2'
if(result.bool){
event.target.$give(result.links,player);
event.target.lose(result.links,ui.special);
event.target.lose(result.links,ui.special,'toStorage');
player.storage.fentian=player.storage.fentian.concat(result.links);
player.syncStorage('fentian');
setTimeout(function(){
@ -7121,7 +7124,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
'step 1'
if(result.bool){
player.lose(result.cards,ui.special);
player.lose(result.cards,ui.special,'toStorage');
player.storage.tunchu.addArray(result.cards);
player.markSkill('tunchu');
player.syncStorage('tunchu');
@ -7760,7 +7763,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseCard(2,'he',true,'选择两张牌作为“米”');
'step 1'
player.storage.yishe=result.cards;
player.lose(result.cards,ui.special);
player.lose(result.cards,ui.special,'toStorage');
player.syncStorage('yishe');
player.markSkill('yishe');
}
@ -7778,7 +7781,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
player.logSkill('bushi');
trigger.player.gain(result.links[0],'draw2','log');
trigger.player.gain(result.links[0],'draw2','log','fromStorage');
player.storage.yishe.remove(result.links[0]);
player.syncStorage('yishe');
if(player.storage.yishe.length==0){
@ -8583,7 +8586,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
prepare:'throw',
discard:false,
lose:false,
content:function(){
player.lose(cards,ui.special,'toStorage');
target.$gain2(cards);
target.storage.zhoufu2=cards[0];
target.addSkill('zhoufu2');
@ -8830,7 +8835,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.$give(result.cards,trigger.target);
game.delay();
event.card=result.cards[0];
if(get.type(event.card)!='equip') event.finish();
if(get.type(event.card)!='equip'||trigger.target.isDisabled(get.subtype(event.card))) event.finish();
"step 2"
if(!trigger.target.isMin()){
trigger.target.chooseBool('是否装备'+get.translation(event.card)+'').set('ai',function(){
@ -10523,7 +10528,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.logSkill('bifa',result.targets[0]);
result.targets[0].addSkill('bifa2');
result.targets[0].storage.bifa=[result.cards[0],player];
player.lose(result.cards[0],result.targets[0].node.special);
player.lose(result.cards[0],result.targets[0].node.special,'toStorage');
player.$give(1,result.targets[0]);
}
},
@ -10554,7 +10559,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool&&!event.directfalse){
player.storage.bifa[1].gain(result.cards,player);
player.$give(result.cards,player.storage.bifa[1]);
player.gain(player.storage.bifa[0],'draw2','log');
player.gain(player.storage.bifa[0],'draw2','log','fromStorage');
}
else{
player.storage.bifa[0].discard();
@ -10771,7 +10776,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
position:'he',
filterTarget:function(card,player,target){
return !target.getEquip(card);
return target.isEmpty(get.subtype(card));
},
ai1:function(card){
return 6-get.value(card);
@ -10923,7 +10928,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
"step 1"
player.chooseTarget(true,'选择拼点目标',function(card,player,target){
return target.countCards('h')&&target!=_status.event.target1&&target!=player;
return _status.event.target1.canCompare(target)&&target!=player;
}).set('ai',function(target){
var player=_status.event.player;
var eff=get.effect(target,{name:'sha'},_status.event.target1,player);
@ -11153,7 +11158,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sunhao:'孙皓',
chengyu:'程昱',
simalang:'司马朗',
zhangliang:'张梁',
tianfeng:'田丰',
sp_pangtong:'sp庞统',
sp_jiaxu:'sp贾诩',
@ -11228,6 +11232,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
beimihu:'卑弥呼',
luzhi:'鲁芝',
sp_liuqi:'刘琦',
huangjinleishi:'黄巾雷使',
lijue:"李傕",
zhangji:"张济",
@ -11444,7 +11449,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yongdi_info:'限定技,当你受到伤害后,你可令一名其他男性角色增加一点体力上限,然后若该角色的武将牌上有主公技且其不为主公,其获得此主公技',
gushe:'鼓舌',
gushe_bg:'舌',
gushe_info:'出牌阶段限一次,你可以用一张手牌与至多三名角色同时拼点,然后依次结算拼点结果,若你赢,对方选择一项1.弃置一张牌2.令你摸一张牌。若你没赢你获得一个“饶舌”标记你有7个饶舌标记时你死亡',
gushe_info:'出牌阶段限一次,你可以用一张手牌与至多三名角色同时拼点,然后依次结算拼点结果,没赢的角色选择一项1.弃置一张牌2.令你摸一张牌。若你没赢你获得一个“饶舌”标记你有7个饶舌标记时你死亡',
jici:'激词',
jici_info:'当你发动“鼓舌”拼点的牌亮出后若点数小于X你可令点数+X若点数等于X你可令你本回合发动“鼓舌”的次数上限+1X为你“饶舌”标记的数量',
shefu:'设伏',

View File

@ -30,6 +30,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lvbu:['male','qun',4,['wushuang']],
diaochan:['female','qun',3,['lijian','biyue']],
huaxiong:['male','qun',6,['yaowu']],
gongsunzan:['male','qun',4,['yicong']],
caozhang:['male','wei',4,['new_jiangchi']],
xf_yiji:["male","shu",3,["xinfu_jijie","xinfu_jiyuan"],[]],

View File

@ -209,7 +209,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(var i=0;i<event.toequip.length;i++){
if(get.type(card)=='equip'&&get.subtype(card)==get.subtype(event.toequip[i])) bool1=false;
}
return (get.type(card)=='equip'&&!event.toequip.contains(card)&&bool1);
return (get.type(card)=='equip'&&!event.toequip.contains(card)&&!target.isDisabled(get.subtype(card))&&bool1);
});
if(equip) event.toequip.push(equip);
else event.num=0;
@ -1874,8 +1874,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
priority:15,
filter:function (event,player){
if(player.hasSkill('smh_huoji')||player.hasSkill('smh_lianhuan')) return false;
if(player.getEquip(2)) return false;
if(player.storage.lose_pos_equip&&player.storage.lose_pos_equip.contains('equip2')) return false;
if(!player.isEmpty(2)) return false;
if(event.nature) return true;
return get.type(event.card,'trick')=='trick';
},
@ -3073,6 +3072,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.addVideo('gain2',player,get.cardsInfo([result.node]));
player.markSkill('xinfu_jijun');
game.addVideo('storage',player,['xinfu_jijun',get.cardsInfo(player.storage.xinfu_jijun),'cards']);
event.trigger("addCardToStorage");
}
},
init:function (player){
@ -3561,7 +3561,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(get.suit(cards[i])=='heart') togain.push(cards[i]);
}
player.logSkill('xinfu_yingshi',result.targets);
player.lose(togain,ui.special);
player.lose(togain,ui.special,'toStorage');
player.$give(togain,result.targets[0]);
result.targets[0].storage.yingshi_heart=togain;
result.targets[0].addSkill('yingshi_heart');
@ -3586,7 +3586,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
player.$give(result.links,trigger.source);
trigger.source.gain(result.links);
trigger.source.gain(result.links,'fromStorage');
player.storage.yingshi_heart.remove(result.links[0]);
player.syncStorage('yingshi_heart');
player.updateMarks('yingshi_heart');
@ -4376,7 +4376,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var next=player.chooseTarget(2,function(card,player,target){
if(ui.selected.targets.length){
if(!event.ingame){
return !target.getEquip(2)?true:false;
return target.isEmpty(2)?true:false;
}
var from=ui.selected.targets[0];
if(target.isMin()) return false;
@ -4384,7 +4384,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(var i=0;i<es.length;i++){
if(['equip3','equip4'].contains(get.subtype(es[i]))&&target.getEquip('liulongcanjia')) continue;
if(es[i].name=='liulongcanjia'&&target.countCards('e',{subtype:['equip3','equip4']})>1) continue;
if(!target.getEquip(get.subtype(es[i]))) return true;
if(target.isEmpty(get.subtype(es[i]))) return true;
}
return false;
}
@ -4407,7 +4407,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(var i=0;i<es.length;i++){
if(['equip3','equip4'].contains(get.subtype(es[i]))&&current.getEquip('liulongcanjia')) continue;
else if(es[i].name=='liulongcanjia'&&target.countCards('e',{subtype:['equip3','equip4']})>1) continue;
else if(!current.getEquip(get.subtype(es[i]))) return true;
else if(current.isEmpty(get.subtype(es[i]))) return true;
}
return false;
}
@ -4421,7 +4421,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(i=0;i<es.length;i++){
if(['equip3','equip4'].contains(get.subtype(es[i]))&&target.getEquip('liulongcanjia')) continue;
if(es[i].name=='liulongcanjia'&&target.countCards('e',{subtype:['equip3','equip4']})>1) continue;
if(!target.getEquip(get.subtype(es[i]))) break;
if(target.isEmpty(get.subtype(es[i]))) break;
}
if(i==es.length) return 0;
}
@ -5085,8 +5085,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return [1,3-player.storage.xinfu_zhaoxin.length];
},
discard:false,
lose:false,
content:function (){
'step 0'
player.lose(cards,ui.special,'toStorage')
player.$give(cards,player);
player.storage.xinfu_zhaoxin=player.storage.xinfu_zhaoxin.concat(cards);
player.markSkill('xinfu_zhaoxin');
@ -5137,7 +5139,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 3'
if(result.bool){
player.storage.xinfu_zhaoxin.remove(event.card);
player.give(event.card,trigger.player,true);
player.$give(event.card,trigger.player);
trigger.player.gain(event.card,'fromStorage');
if(player.storage.xinfu_zhaoxin.length) player.markSkill('xinfu_zhaoxin');
else player.unmarkSkill('xinfu_zhaoxin');
player.chooseBool('是否对'+get.translation(trigger.player)+'造成一点伤害?').ai=function(){

View File

@ -311,7 +311,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.hp=true;
}
event.equip=get.cardPile(function(card){
return get.type(card)=='equip';
return get.type(card)=='equip'&&!target.isDisabled(get.subtype(card));
});
if(target.isMinEquip()){
target.equip(event.equip||game.createCard(get.inpilefull('equip').randomGet()),true);
@ -544,7 +544,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.attitude(player,event.target)<0;
},
filter:function(event,player){
return player.countCards('h')>0&&event.target.countCards('h')>0&&event.target!=player;
return player.canCompare(event.target);
},
logTarget:'target',
content:function(){
@ -562,7 +562,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.effect(player,event.card,event.player,player)<0;
},
filter:function(event,player){
return player.countCards('h')>0&&event.player.countCards('h')>0&&event.player!=player;
return player.canCompare(event.target);
},
logTarget:'player',
content:function(){
@ -794,7 +794,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.index==0){
target.loseHp();
event.card=get.cardPile(function(card){
return get.type(card)=='equip';
return get.type(card)=='equip'&&!target.isDisabled(get.subtype(card));
});
if(event.card){
target.equip(event.card,true).set('delay',true);
@ -1012,6 +1012,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.delay();
player.storage.bizhuan.push(card);
player.markSkill('bizhuan');
event.trigger("addCardToStorage");
},
mod:{
maxHandcard:function(player,num){
@ -1076,7 +1077,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
player.logSkill('tongbo');
player.lose(result.cards,ui.special)._triggered=null;
player.lose(result.cards,ui.special,'toStorage');
player.storage.bizhuan=player.storage.bizhuan.concat(result.cards);
player.syncStorage('bizhuan');
event.num=result.cards.length;
@ -1136,7 +1137,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.delay(0.5);
}
"step 3"
player.gain(result.links)._triggered=null;
player.gain(result.links,'fromStorage');
for(var i=0;i<result.links.length;i++){
player.storage.bizhuan.remove(result.links[i]);
}
@ -2991,7 +2992,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
target.$give(result.cards,player);
target.lose(result.cards,ui.special);
target.lose(result.cards,ui.special,'toStorage');
player.storage.kuangbi_draw=result.cards;
player.storage.kuangbi_draw_source=target;
player.syncStorage('kuangbi_draw');
@ -3021,7 +3022,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
var cards=player.storage.kuangbi_draw;
if(cards){
player.gain(cards,'gain2');
player.gain(cards,'gain2','fromStorage');
var target=player.storage.kuangbi_draw_source;
if(target&&target.isAlive()){
target.draw(cards.length);
@ -3423,7 +3424,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool&&result.cards&&result.cards.length){
event.target.$give(result.cards,player);
player.storage.jieyue2=result.cards[0];
event.target.lose(result.cards[0],ui.special);
event.target.lose(result.cards[0],ui.special,'toStorage');
player.syncStorage('jieyue2');
player.addSkill('jieyue2');
}
@ -3482,7 +3483,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseBegin'},
forced:true,
content:function(){
player.gain(player.storage.jieyue2,'gain2');
player.gain(player.storage.jieyue2,'gain2','fromStorage');
player.storage.jieyue2=null;
player.removeSkill('jieyue2');
}
@ -3527,7 +3528,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player!=target&&target.countCards('h')>0;
return player.canCompare(target);
},
filter:function(event,player){
return player.countCards('h')>0;
@ -3661,7 +3662,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.chunlao=player.storage.chunlao.concat(result.cards);
player.syncStorage('chunlao');
player.markSkill('chunlao');
player.lose(result.cards,ui.special);
player.lose(result.cards,ui.special,'toStorage');
player.$give(result.cards,player);
}
},
@ -5610,7 +5611,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
game.addVideo('storage',trigger.target,['xinpojun2',get.cardsInfo(trigger.target.storage.xinpojun2),'cards']);
trigger.target.addSkill('xinpojun2');
trigger.target.lose(result.links,ui.special);
trigger.target.lose(result.links,ui.special,'toStorage');
}
},
ai:{
@ -5627,7 +5628,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
if(player.storage.xinpojun2){
player.gain(player.storage.xinpojun2);
player.gain(player.storage.xinpojun2,'fromStorage');
delete player.storage.xinpojun2;
}
player.removeSkill('xinpojun2');
@ -6188,7 +6189,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
"step 0"
player.chooseTarget(get.prompt('qiaoshui'),function(card,player,target){
return player!=target&&target.countCards('h')>0;
return player.canCompare(target);
}).set('ai',function(target){
return -get.attitude(_status.event.player,target)/target.countCards('h');
});
@ -6671,7 +6672,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
"step 2"
if(result.cards&&result.cards.length){
player.lose(result.cards,ui.special);
player.lose(result.cards,ui.special,'toStorage');
player.storage.quanji=player.storage.quanji.concat(result.cards);
player.syncStorage('quanji');
player.markSkill('quanji');
@ -6855,7 +6856,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
var next;
if(trigger.player.hasCard(function(card){
return !player.getEquip(card);
return player.isEmpty(get.subtype(card));
},'e')){
next=player.chooseControl('移动装备','draw_card','cancel2',function(event,player){
var source=_status.event.source;
@ -6883,7 +6884,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.control=='移动装备'){
player.logSkill('qieting',trigger.player);
player.choosePlayerCard(trigger.player,'e','将一张装备牌移至你的装备区').set('filterButton',function(button){
return !_status.event.player.getEquip(button.link);
return _status.event.player.isEmpty(get.subtype(button.link));
});
}
else{
@ -6931,8 +6932,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
logTarget:'player',
filter:function(event,player){
return player.hp<player.maxHp&&event.player!=player&&
player.countCards('h')>0&&event.player.countCards('h')>0;
return player.hp<player.maxHp&&player.canCompare(event.player);
},
content:function(){
"step 0"
@ -7057,6 +7057,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{player:'dieBegin'},
direct:true,
skillAnimation:true,
content:function(){
"step 0"
player.chooseTarget(get.prompt('zhuiyi'),function(card,player,target){
@ -7076,11 +7077,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
var target=result.targets[0];
player.logSkill('zhuiyi',target);
target.recover();
target.draw(3);
var next=game.createEvent('zhuiyi',null,trigger.parent);
next.player=target;
next.source=player;
next.setContent(lib.skill.zhuiyi.contentx);
}
},
contentx:function(){
event.source.logSkill('zhuiyi',player);
event.source.line(player,'green');
player.recover();
player.draw(3);
},
ai:{
expose:0.5,
}
@ -7114,14 +7122,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gainner=targets[1];
giver=targets[0];
}
gainner.gainPlayerCard(giver,true);
gainner.gainPlayerCard(giver,true,'h','visibleMove');
event.gainner=gainner;
event.giver=giver;
'step 1'
if(result.cards){
event.bool=false;
var card=result.cards[0];
event.gainner.showCards(card);
if(get.suit(card)!='spade') event.bool=true;
}
'step 2'
@ -7431,7 +7438,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
case 'trick':event.effect='';break;
case 'equip':event.effect='recover';break;
}
if(get.type(card)=='equip'){
if(get.type(card)=='equip'&&!event.target.isDisabled(get.sub(card))){
event.target.equip(card);
event.target.$draw(card);
game.delay();
@ -8887,7 +8894,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.xiansi=player.storage.xiansi.concat(result.links);
player.markSkill('xiansi');
player.syncStorage('xiansi');
event.current.lose(result.links,ui.special);
event.current.lose(result.links,ui.special,'toStorage');
event.current.$give(result.links,player);
event.goto(2);
}
@ -9187,7 +9194,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
logTarget:'player',
filter:function(event,player){
return event.player!=player&&event.player.countCards('h')>0&&player.countCards('h')>0;
return player.canCompare(event.player);
},
content:function(){
"step 0"
@ -9241,6 +9248,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.storage.zyexin.push(card);
player.$draw(card);
player.markSkill('zyexin');
event.trigger("addCardToStorage");
game.addVideo('storage',player,['zyexin',get.cardsInfo(player.storage.zyexin),'cards']);
},
group:'zyexin2'
@ -9258,7 +9266,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:'用任意数量的手牌与等量的“权”交换',
content:function(){
"step 0"
player.lose(cards,ui.special)._triggered=null;
player.lose(cards,ui.special,'toStorage');
player.storage.zyexin=player.storage.zyexin.concat(cards);
player.chooseCardButton(player.storage.zyexin,'选择'+cards.length+'张牌作为手牌',cards.length,true).ai=function(button){
return get.value(button.link);
@ -9267,7 +9275,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.delay();
}
"step 1"
player.gain(result.links)._triggered=null;
player.gain(result.links,'toStorage');
for(var i=0;i<result.links.length;i++){
player.storage.zyexin.remove(result.links[i]);
}

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'1.9.85.1',
'1.9.87',
'audio/background/music_danji.mp3',
'audio/background/music_default.mp3',
'audio/background/music_diaochan.mp3',
@ -1747,6 +1747,18 @@ window.noname_asset_list=[
'image/card/zixin.png',
'image/card/ziyangdan.png',
'image/card/zong.png',
'image/character/chendao.jpg',
'image/character/guanqiujian.jpg',
'image/character/haozhao.jpg',
'image/character/huangjinleishi.jpg',
'image/character/lukang.jpg',
'image/character/old_zhugezhan.jpg',
'image/character/shen_ganning.jpg',
'image/character/shen_zhangliao.jpg',
'image/character/yl_yuanshu.jpg',
'image/character/zhangxiu.jpg',
'image/character/zhoufei.jpg',
'image/character/zhugezhan.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',
'image/character/beimihu.jpg',

View File

@ -9250,6 +9250,36 @@
},
element:{
content:{
disableEquip:function(){
event.trigger('disableEquip');
if(!player.isDisabled(event.pos)){
player.storage.disableEquip.add(event.pos);
//player.markSkill('_disableEquip');
player.syncStorage('_disableEquip');
var str=event.pos.slice(event.pos.length-1,event.pos.length);
if(player.get('e',str)!=undefined) player.discard(player.get('e',str));
game.log(player,'废除了',get.translation(event.pos),'栏');
player.$disableEquip(event.pos);
}
},
enableEquip:function(){
event.trigger('enableEquip');
if(player.storage.disableEquip.contains(event.pos)){
player.storage.disableEquip.remove(event.pos);
player.syncStorage('_disableEquip');
//if(player.storage.disableEquip.length==0) player.unmarkSkill('_disableEquip');
};
game.log(player,'恢复了',get.translation(event.pos),'栏');
player.$enableEquip(event.pos);
},
disableJudge:function(){
var js=player.getCards('j');
if(js.length) player.discard(js);
player.storage._disableJudge=true;
player.markSkill('_disableJudge');
game.log(player,'废除了判定区');
},
/*----分界线----*/
phasing:function(){
'step 0'
while(ui.dialogs.length){
@ -12145,7 +12175,7 @@
}
event.result.cards=event.result.links.slice(0);
event.cards=cards;
if(!_status.connectMode&&(target.isUnderControl(true)||player.isUnderControl(true)||event.visible)){
if((!_status.connectMode&&(target.isUnderControl(true)||player.isUnderControl(true)))||event.visibleMove){
target.$give(cards,player);
}
else{
@ -12292,12 +12322,12 @@
var from=ui.selected.targets[0];
var js=from.getCards('j');
for(var i=0;i<js.length;i++){
if(!target.hasJudge(js[i])) return true;
if(!target.storage._disableJudge&&!target.hasJudge(js[i])) return true;
}
if(target.isMin()) return false;
var es=from.getCards('e');
for(var i=0;i<es.length;i++){
if(!target.getEquip(get.subtype(es[i]))) return true;
if(target.isEmpty(get.subtype(es[i]))) return true;
}
return false;
}
@ -12317,7 +12347,7 @@
if(get.attitude(player,current)>0){
var es=target.getCards('e');
for(var i=0;i<es.length;i++){
if(!current.getEquip(get.subtype(es[i]))) return true;
if(current.isEmpty(get.subtype(es[i]))) return true;
}
}
})){
@ -12330,7 +12360,7 @@
var es=ui.selected.targets[0].getCards('e');
var i;
for(i=0;i<es.length;i++){
if(!target.getEquip(get.subtype(es[i]))){
if(target.isEmpty(get.subtype(es[i]))){
break;
}
}
@ -12371,10 +12401,10 @@
},targets[0]).set('targets0',targets[0]).set('targets1',targets[1]).set('filterButton',function(button){
var targets1=_status.event.targets1;
if(get.position(button.link)=='j'){
return !targets1.hasJudge(button.link);
return !targets1.storage._disableJudge&&!targets1.hasJudge(button.link);
}
else{
return !targets1.countCards('e',{subtype:get.subtype(button.link)});
return targets1.isEmpty(get.subtype(button.link));
}
});
}
@ -14135,6 +14165,89 @@
},
},
player:{
//新函数
canCompare:function(target){
if(this==target) return false;
if(!this.countCards('h')||!target.countCards('h')) return false;
if(this.hasSkillTag('noCompareSource')||target.hasSkillTag('noCompareTarget')) return false;
return true;
},
disableEquip:function(pos){
if(typeof pos=='number') pos='equip'+pos;
var next=game.createEvent('disableEquip');
next.player=this;
next.pos=pos;
next.source=_status.event.player;
next.setContent('disableEquip');
return next;
},
$disableEquip:function(skill){
game.broadcast(function(player,skill){
player.$disableEquip(skill);
},this,skill);
var pos={equip1:'武器栏',equip2:'防具栏',equip3:'+1马栏',equip4:'-1马栏',equip5:'宝物栏'}[skill];
var card=game.createCard('feichu_'+skill,pos,'');
card.fix();
card.style.transform='';
card.classList.remove('drawinghidden');
card.classList.add('feichu');
delete card._transform;
var player=this;
var equipNum=get.equipNum(card);
var equipped=false;
for(var i=0;i<player.node.equips.childNodes.length;i++){
if(get.equipNum(player.node.equips.childNodes[i])>=equipNum){
player.node.equips.insertBefore(card,player.node.equips.childNodes[i]);
equipped=true;
break;
}
}
if(!equipped){
player.node.equips.appendChild(card);
if(_status.discarded){
_status.discarded.remove(card);
}
}
return player;
},
enableEquip:function(pos){
if(typeof pos=='number') pos='equip'+pos;
var next=game.createEvent('enableEquip');
next.player=this;
next.pos=pos;
next.source=_status.event.player;
next.setContent('enableEquip');
return next;
},
$enableEquip:function(skill){
game.broadcast(function(player,skill){
player.$enableEquip(skill);
},this,skill);
var player=this;
for(var i=0;i<player.node.equips.childNodes.length;i++){
if(player.node.equips.childNodes[i].name=='feichu_'+skill){
player.node.equips.removeChild(player.node.equips.childNodes[i]);
break;
}
}
return player;
},
isDisabled:function(arg){
if(typeof arg=='number') arg='equip'+arg;
if(this.storage.disableEquip&&this.storage.disableEquip.contains(arg)) return true;
return false;
},
isEmpty:function(num){
return !this.isDisabled(num)&&!this.getEquip(num);
},
disableJudge:function(){
var next=game.createEvent('disableJudge');
next.player=this;
next.source=_status.event.player;
next.setContent('disableJudge');
return next;
},
//原有函数
init:function(character,character2,skill){
if(typeof character=='string'&&!lib.character[character]){
lib.character[character]=get.character(character);
@ -15101,7 +15214,7 @@
}
else if(arg1[i]=='e'){
for(j=0;j<this.node.equips.childElementCount;j++){
if(!this.node.equips.childNodes[j].classList.contains('removing')){
if(!this.node.equips.childNodes[j].classList.contains('removing')&&!this.node.equips.childNodes[j].classList.contains('feichu')){
cards.push(this.node.equips.childNodes[j]);
}
}
@ -16315,6 +16428,9 @@
else if(arguments[i]=='visible'){
next.visible=true;
}
else if(arguments[i]=='visibleMove'){
next.visibleMove=true;
}
else if(typeof arguments[i]=='function'){
if(next.ai) next.filterButton=arguments[i];
else next.ai=arguments[i];
@ -16394,7 +16510,7 @@
var att2=get.attitude(player,current2);
if(att2<=0) return false;
}
return current!=current2&&!current2.isMin()&&!current2.getEquip(get.subtype(es[i]));
return current!=current2&&!current2.isMin()&&current2.isEmpty(get.subtype(es[i]));
})){
return true;
}
@ -16408,7 +16524,7 @@
var att2=get.attitude(player,current2);
if(att2>0) return false;
}
return current!=current2&&!current2.hasJudge(js[i]);
return current!=current2&&!current2.storage._disableJudge&&!current2.hasJudge(js[i]);
})){
return true;
}
@ -16828,6 +16944,9 @@
else if(arguments[i]==='log'){
next.log=true;
}
else if(arguments[i]=='fromStorage'){
next.fromStorage=true;
}
else if(typeof arguments[i]=='string'){
next.animate=arguments[i];
}
@ -16882,6 +17001,9 @@
else if(get.objtype(arguments[i])=='div'){
next.position=arguments[i];
}
else if(arguments[i]=='toStorage'){
next.toStorage=true;
}
}
if(next.cards){
var hej=this.getCards('hej');
@ -20127,36 +20249,42 @@
}
},
$equip:function(card){
game.broadcast(function(player,card){
player.$equip(card);
},this,card);
card.fix();
card.style.transform='';
card.classList.remove('drawinghidden');
delete card._transform;
var player=this;
var equipNum=get.equipNum(card);
var equipped=false;
for(var i=0;i<player.node.equips.childNodes.length;i++){
if(get.equipNum(player.node.equips.childNodes[i])>=equipNum){
player.node.equips.insertBefore(card,player.node.equips.childNodes[i]);
equipped=true;
break;
}
if(this.storage.disableEquip!=undefined&&this.storage.disableEquip.contains(get.subtype(card))){
this.gain(card,'gain2');
game.log(this,'装备失败');
}
if(!equipped){
player.node.equips.appendChild(card);
if(_status.discarded){
_status.discarded.remove(card);
else{
game.broadcast(function(player,card){
player.$equip(card);
},this,card);
card.fix();
card.style.transform='';
card.classList.remove('drawinghidden');
delete card._transform;
var player=this;
var equipNum=get.equipNum(card);
var equipped=false;
for(var i=0;i<player.node.equips.childNodes.length;i++){
if(get.equipNum(player.node.equips.childNodes[i])>=equipNum){
player.node.equips.insertBefore(card,player.node.equips.childNodes[i]);
equipped=true;
break;
}
}
}
var info=get.info(card);
if(info.skills){
for(var i=0;i<info.skills.length;i++){
player.addSkillTrigger(info.skills[i]);
if(!equipped){
player.node.equips.appendChild(card);
if(_status.discarded){
_status.discarded.remove(card);
}
}
}
return player;
var info=get.info(card);
if(info.skills){
for(var i=0;i<info.skills.length;i++){
player.addSkillTrigger(info.skills[i]);
}
}
return player;
};
},
$gain:function(card,log,init){
if(init!==false){

View File

@ -1,25 +1,26 @@
window.noname_update={
version:'1.9.86.1',
update:'1.9.85.1',
version:'1.9.87',
update:'1.9.86.1',
changeLog:[
'雷包武将by 极光)',
'旧张梁,黄巾雷使',
'修复BUG',
//'阴包武将by 极光)',
'新手杀字体(方正隶变体)'
],
files:[
'card/sp.js',
//'character/diy.js',
'character/yxs.js',
/*'character/extra.js',
'character/old.js',*/
//'character/yxs.js',
'character/extra.js',
'character/old.js',
'character/refresh.js',
/*'character/shenhua.js',
'character/shenhua.js',
'character/sp.js',
'character/standard.js',
'character/xinghuoliaoyuan.js',
'character/yijiang.js',*/
'character/yijiang.js',
'game/asset.js',
//'game/config.js',
//'game/game.js',
'game/game.js',
'game/package.js'
]
};

BIN
image/character/chendao.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 196 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

BIN
image/character/haozhao.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

BIN
image/character/lukang.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 193 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 232 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

BIN
image/character/zhoufei.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 214 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB