This commit is contained in:
libccy 2015-12-19 17:28:50 +08:00
parent 1ef34f8e58
commit 3026effcb0
27 changed files with 1025 additions and 48 deletions

View File

@ -39,7 +39,7 @@ character.hearth={
hs_huzhixiannv:['female','wu',3,['jingmeng','qingliu']],
// hs_tgolem:['male','qun',4,['guozai']],
hs_totemic:['male','wu',3,['s_tuteng']],
hs_xsylvanas:['female','qun',3,['busi','shixin','xmojian']],
hs_xsylvanas:['female','qun',3,['busi','xshixin','xmojian']],
hs_siwangzhiyi:['male','qun',12,['mieshi']],
hs_bilanyoulong:['male','wei',4,['lingzhou']],
},
@ -225,7 +225,7 @@ character.hearth={
}
},
xmojian2:{},
shixin:{
xshixin:{
trigger:{source:'damageEnd'},
forced:true,
filter:function(event,player){
@ -2223,8 +2223,8 @@ character.hearth={
lingzhou_info:'每当你使用一张锦囊牌,可令一名角色摸一张牌或回复一点体力',
mieshi:'灭世',
mieshi_info:'锁定技,回合结束阶段,你流失一点体力,并对一名随机的其他角色造成一点火焰伤害',
shixin:'蚀心',
shixin_info:'锁定技,每当你对一名其他角色造成一次伤害,受伤害角色与你各流失一点体力',
xshixin:'蚀心',
xshixin_info:'锁定技,每当你对一名其他角色造成一次伤害,受伤害角色与你各流失一点体力',
xmojian:'魔箭',
xmojian_info:'每当你翻面时,你可以指定一名角色视为对其使用了一张杀,每回合最多发动一次',
enze:'恩泽',

View File

@ -366,7 +366,7 @@ character.refresh={
},
discard:false,
prepare:function(cards,player,targets){
player.$give(1,targets[0]);
player.$give(cards,targets[0]);
},
content:function(){
"step 0"

View File

@ -35,6 +35,11 @@ character.sp={
wutugu:['male','qun',15,['ranshang','hanyong']],
sp_caiwenji:['female','wei',3,['chenqing','mozhi']],
zhugeguo:['female','shu',3,['yuhua','qirang']],
liuzan:['male','wu',4,['fenyin']],
lingcao:['male','wu',4,['dujin']],
sunru:['female','wu',3,['shixin','qingyi']],
lingju:['female','qun',3,['jieyuan','fenxin']],
lifeng:['male','shu',3,['tunchu','shuliang']],
},
perfectPair:{
zhugejin:['zhugeke'],
@ -46,8 +51,337 @@ character.sp={
zhangbao:['zhangliang','zhangjiao'],
zhangliang:['zhangjiao'],
maliang:['masu'],
lingcao:['lingtong'],
lingju:['diaochan','lvbu'],
},
skill:{
tunchu:{
trigger:{player:'phaseDrawBegin'},
check:function(event,player){
return player.num('h')-player.num('h',{type:'equip'})+2<=player.hp;
},
content:function(){
trigger.num+=2;
player.addTempSkill('tunchu_choose','phaseDrawAfter');
},
init:function(player){
player.storage.tunchu=[];
},
intro:{
content:'cards'
},
group:'tunchu_disable',
subSkill:{
choose:{
trigger:{player:'phaseDrawEnd'},
forced:true,
popup:false,
content:function(){
'step 0'
player.removeSkill('tunchu_choose');
if(player.num('h')){
player.chooseCard('h',true);
}
else{
event.finish();
}
'step 1'
player.lose(result.cards,ui.special);
player.storage.tunchu=player.storage.tunchu.concat(result.cards);
player.markSkill('tunchu');
player.syncStorage('tunchu');
}
},
disable:{
mod:{
cardEnabled:function(card,player){
if(player.storage.tunchu&&player.storage.tunchu.length&&
(card.name=='sha'||card.name=='juedou')){
return false;
}
},
cardUsable:function(card,player){
if(player.storage.tunchu&&player.storage.tunchu.length&&
(card.name=='sha'||card.name=='juedou')){
return false;
}
},
}
}
}
},
shuliang:{
trigger:{global:'phaseEnd'},
direct:true,
filter:function(event,player){
return player.storage.tunchu&&player.storage.tunchu.length>0&&event.player.num('h')==0;
},
content:function(){
'step 0'
var goon=(ai.get.attitude(player,trigger.player)>0);
player.chooseCardButton('是否对'+get.translation(trigger.player)+'发动【输粮】?',player.storage.tunchu).ai=function(){
if(goon) return 1;
return 0;
}
'step 1'
if(result.bool){
player.logSkill('shuliang',trigger.player);
player.storage.tunchu.remove(result.links[0]);
player.$throw(result.links);
ui.discardPile.appendChild(result.links[0]);
player.syncStorage('tunchu');
if(player.storage.tunchu.length==0){
player.unmarkSkill('tunchu');
}
trigger.player.draw(2);
}
}
},
jieyuan:{
group:['jieyuan_more','jieyuan_less'],
subSkill:{
more:{
trigger:{source:'damageBegin'},
direct:true,
filter:function(event,player){
if(!player.num('h',{color:'black'})) return false;
return event.player.hp>=player.hp&&player!=event.player;
},
content:function(){
'step 0'
var goon=(ai.get.attitude(player,trigger.player)<0);
var next=player.chooseToDiscard('是否对'+get.translation(trigger.player)+'发动【竭缘】?',{color:'black'});
next.ai=function(){
if(goon){
return 8-ai.get.value(card);
}
return 0;
}
next.logSkill=['jieyuan',trigger.player];
'step 1'
if(result.bool){
player.logSkill('jieyuan',trigger.player);
trigger.num++;
}
}
},
less:{
trigger:{player:'damageBegin'},
filter:function(event,player){
if(!player.num('h',{color:'red'})) return false;
return event.source&&event.source.hp>=player.hp&&player!=event.source;
},
direct:true,
content:function(){
"step 0"
var next=player.chooseToDiscard('竭缘:是否弃置一张红色手牌令伤害-1',{color:'red'});
next.ai=function(card){
if(player.hp==1||trigger.num>1){
return 9-ai.get.value(card);
}
if(player.hp==2){
return 8-ai.get.value(card);
}
return 7-ai.get.value(card);
};
next.logSkill='jieyuan';
"step 1"
if(result.bool){
game.delay();
trigger.num--;
}
}
}
},
ai:{
expose:0.2,
threaten:1.5
}
},
fenxin:{
mode:['identity'],
trigger:{source:'dieBegin'},
filter:function(event,player){
return event.player.identity!='zhu'&&player.identity!='zhu'&&
player.identity!='mingzhong'&&event.player.identity!='mingzhong';
},
check:function(event,player){
if(player.identity==event.player.identity) return Math.random()<0.5;
var stat=ai.get.situation();
switch(player.identity){
case 'fan':
if(stat<0) return false;
if(stat==0) return Math.random()<0.6;
return true;
case 'zhong':
if(stat>0) return false;
if(stat==0) return Math.random()<0.6;
return true;
case 'nei':
if(event.player.identity=='fan'&&stat<0) return true;
if(event.player.identity=='zhong'&&stat>0) return true;
if(stat==0) return Math.random()<0.7;
return false;
}
},
prompt:function(event,player){
return '焚心:是否与'+get.translation(event.player)+'交换身份?';
},
content:function(){
var identity=player.identity;
player.identity=trigger.player.identity;
if(player.identityShown||player==game.me){
player.setIdentity();
}
trigger.player.identity=identity;
player.line(trigger.player,'green');
}
},
qingyi:{
group:['qingyi1','qingyi2']
},
qingyi1:{
audio:2,
trigger:{player:'phaseBegin'},
direct:true,
content:function(){
"step 0"
player.addSkill('qingyi3');
var check= player.num('h')>2;
player.chooseTarget('是否发动【轻逸】?',function(card,player,target){
if(player==target) return false;
return player.canUse({name:'sha'},target);
}).ai=function(target){
if(!check) return 0;
return ai.get.effect(target,{name:'sha'},_status.event.player);
}
"step 1"
if(result.bool){
player.logSkill('qingyi1',result.targets);
player.useCard({name:'sha'},result.targets[0],false);
player.skip('phaseJudge');
player.skip('phaseDraw');
}
player.removeSkill('qingyi3');
}
},
qingyi2:{
audio:2,
trigger:{player:'phaseUseBefore'},
direct:true,
filter:function(event,player){
return player.num('he',{type:'equip'})>0;
},
content:function(){
"step 0"
player.addSkill('qingyi3');
var check=player.num('h')<=player.hp;
player.chooseCardTarget({
prompt:'是否发动【轻逸】?',
filterCard:function(card){
return get.type(card)=='equip'
},
position:'he',
filterTarget:function(card,player,target){
if(player==target) return false;
return player.canUse({name:'sha'},target);
},
ai1:function(card){
if(!check) return 0;
return 6-ai.get.value(card);
},
ai2:function(target){
if(!check) return 0;
return ai.get.effect(target,{name:'sha'},_status.event.player);
}
});
"step 1"
if(result.bool){
player.logSkill('qingyi2',result.targets);
player.discard(result.cards[0]);
player.useCard({name:'sha'},result.targets[0]);
trigger.untrigger();
trigger.finish();
}
player.removeSkill('qingyi3');
}
},
qingyi3:{
mod:{
targetInRange:function(card,player,target,now){
return true;
}
},
},
shixin:{
trigger:{player:'damageBefore'},
filter:function(event){
return event.nature=='fire';
},
forced:true,
content:function(){
trigger.untrigger();
trigger.finish();
},
ai:{
nofire:true,
effect:{
target:function(card,player,target,current){
if(get.tag(card,'fireDamage')) return 0;
}
}
}
},
fenyin:{
audio:2,
trigger:{player:'useCard'},
frequent:true,
filter:function(event,player){
if(!event.cards||event.cards.length!=1) return false;
if(_status.currentPhase!=player) return false;
if(!player.storage.fenyin) return false;
return get.color(player.storage.fenyin)!=get.color(event.cards[0]);
},
content:function(){
player.draw();
},
intro:{
content:'card'
},
group:['fenyin2','fenyin3']
},
fenyin3:{
trigger:{player:'useCard'},
priority:-1,
forced:true,
popup:false,
silent:true,
filter:function(event,player){
if(!event.cards||event.cards.length!=1) return false;
if(_status.currentPhase!=player) return false;
return true;
},
content:function(){
player.storage.fenyin=trigger.cards[0];
}
},
fenyin2:{
trigger:{player:'phaseAfter'},
forced:true,
silent:true,
popup:false,
content:function(){
player.storage.fenyin=null;
}
},
dujin:{
audio:2,
trigger:{player:'phaseDrawBegin'},
frequent:true,
content:function(){
trigger.num+=1+Math.floor(player.num('e')/2);
}
},
qirang:{
audio:2,
trigger:{player:'equipEnd'},
@ -3367,7 +3701,26 @@ character.sp={
mateng:'马腾',
sp_caiwenji:'sp蔡文姬',
zhugeguo:'诸葛果',
liuzan:'留赞',
lingcao:'凌操',
sunru:'孙茹',
lingju:'灵雎',
lifeng:'李丰',
tunchu:'屯储',
tunchu_info:'摸牌阶段摸牌时,你可以额外摸两张牌,若如此做,将一张手牌置于你的武将上,称为“粮”,只要你的武将牌上有“粮”,你便不能使用【杀】和【决斗】',
shuliang:'输粮',
shuliang_info:'每当一名角色的结束阶段开始时,若其没有手牌,你可以将一张“粮”置入弃牌堆,然后该角色摸两张牌',
jieyuan:'竭缘',
jieyuan_info:'当你对一名其他角色造成伤害时,若其体力值大于或等于你的体力值,你可弃置一张黑色手牌令此伤害+1当你受到一名其他角色造成的伤害时若其体力值大于或等于你的体力值你可弃置一张红色手牌令此伤害-1。',
fenxin:'焚心',
fenxin_info:'定技,当你杀死一名非主公角色时,在其翻开身份牌之前,你可以与该角色交换身份牌。(你的身份为主公时不能发动此技能)',
shixin:'释衅',
shixin_info:'锁定技,当你受到火属性伤害时,你防止此伤害',
qingyi:'轻逸',
qingyi_info:'你可以跳过摸牌阶段,或跳过出牌阶段并弃置一张装备牌,若如此则视为对任意一名使用一张【杀】',
dujin:'独进',
dujin_info:'摸牌阶段你可以额外摸X+1张牌X为你装备区里牌数的一半且向下取整',
yuhua:'羽化',
yuhua_info:'锁定技,弃牌阶段内,你的非基本牌不计入手牌数,且你不能弃置你的非基本牌',
qirang:'祈禳',
@ -3472,6 +3825,8 @@ character.sp={
jilei2:'鸡肋',
fulu:'符箓',
fuji:'助祭',
fenyin:'奋音',
fenyin_info:'你的回合内,当你使用牌时,若此牌与你于此回合内使用的上一张牌颜色不同,则你可以摸一张牌',
fuji_info:'当一名角色造成雷电伤害时,你可以令其进行一次判定,若结果为黑色,此伤害+1若结果为红色该角色获得此牌。',
fulu_info:'你可以将【杀】当雷【杀】使用。',
jilei_info:'每当你受到一次伤害,可以令伤害来源不能使用或打出其手牌直到回合结束',

View File

@ -884,6 +884,9 @@ character.standard={
tieji:{
audio:2,
trigger:{player:'shaBegin'},
check:function(event,player){
return ai.get.attitude(player,event.target)<=0;
},
content:function(){
"step 0"
player.judge(function(card){

View File

@ -166,17 +166,6 @@ character.swd={
threaten:2
}
},
miaobi:{
enable:'phaseUse',
viewAs:{name:'wugu'},
filterCard:{suit:'heart'},
filter:function(event,player){
return !player.getStat('skill').miaobi&&player.num('h',{suit:'heart'})>0;
},
check:function(card){
return 5-ai.get.value(card);
}
},
huajing:{
trigger:{source:'damageEnd'},
filter:function(event,player){
@ -7736,9 +7725,6 @@ character.swd={
}
}
},
zhexian:{
inherit:'lingbo'
}
},
translate:{
swd_yangshuo:'杨硕',
@ -7839,9 +7825,6 @@ character.swd={
jingjie_old_info:'限定技,出牌阶段,你可以令所有角色弃置所有牌,然后摸两张牌(不触发任何技能)',
kongmo:'恐魔',
kongmo_info:'锁定技,你使用基本牌或非延时锦囊牌后将额外结算一次卡牌效果',
miaobi:'妙笔',
miaobi_info:'出牌阶段限一次,你可以将一张红桃牌当作五谷丰登使用',
zhexian:'谪仙',
jufu:'巨斧',
jufu_info:'锁定技,当你有武器牌时,杀造成的伤害+1',
huajing:'化精',
@ -8231,7 +8214,6 @@ character.swd={
xingdian_info:'出牌阶段限一次,你可以弃置一张手牌,然后指定至多两名角色令其各弃置一张牌',
yulin_info:'每当你即将受到伤害,你可以弃置一张装备牌抵消此伤害',
funiao_info:'出牌阶段,你可以交给一名角色一张手牌,然后观看其手牌,每个阶段对一名角色只能发动一次',
zhexian_info:'每当你使用或打出一张闪,你可以摸两张牌',
lingbo_info:'每当你使用或打出一张闪,你可以摸两张牌',
xuehuang_info:'出牌阶段限一次,你可以弃置一张红色手牌令距离你一以内的所有角色受到一点火焰伤害',
zhuyu_info:'每当有横置的角色即将受到非火焰伤害,你可以弃置一张红色牌使其额外受到一点火焰伤害',

View File

@ -94,7 +94,7 @@ character.wind={
"step 0"
player.addSkill('shensu3');
var check= player.num('h')>2;
player.chooseTarget('是否发动神速?',function(card,player,target){
player.chooseTarget('是否发动神速',function(card,player,target){
if(player==target) return false;
return player.canUse({name:'sha'},target);
}).ai=function(target){

View File

@ -27,7 +27,7 @@ character.xianjian={
pal_hanlingsha:['female','shu',3,['tannang','tuoqiao']],
pal_liumengli:['female','wei',3,['tianxian','runxin','zhimeng']],
pal_murongziying:['male','wei',4,['xuanning','poyun','qianfang']],
pal_xuanxiao:['male','wei',4,['xuanyan','ningbin','fenxin']],
pal_xuanxiao:['male','wei',4,['xuanyan','ningbin','xfenxin']],
},
skill:{
@ -80,14 +80,14 @@ character.xianjian={
effect:{
target:function(card,player,target){
if(get.tag(card,'thunderDamage')){
if(target.hp<=1||!target.skills.contains('fenxin')) return [0,0];
if(target.hp<=1||!target.skills.contains('xfenxin')) return [0,0];
return [0,1.5];
}
}
}
},
},
fenxin:{
xfenxin:{
trigger:{player:'changeHp'},
forced:true,
filter:function(event){
@ -106,9 +106,9 @@ character.xianjian={
}
}
},
group:'fenxin2'
group:'xfenxin2'
},
fenxin2:{
xfenxin2:{
trigger:{source:'dieAfter'},
forced:true,
content:function(){
@ -1366,9 +1366,9 @@ character.xianjian={
xuanyan_info:'锁定技,你的火属性伤害+1你造成火属性伤害后流失1点体力',
ningbin:'凝冰',
ningbin_info:'锁定技每当你受到1次雷属性伤害你回复1点体力',
fenxin:'焚心',
fenxin2:'焚心',
fenxin_info:'锁定技,每当你的体力值发生改变,你摸等量的牌;每当你杀死一名角色,你增加一点体力上限并回复一点体力',
xfenxin:'焚心',
xfenxin2:'焚心',
xfenxin_info:'锁定技,每当你的体力值发生改变,你摸等量的牌;每当你杀死一名角色,你增加一点体力上限并回复一点体力',
luanjian:'乱剑',
luanjian_info:'你可以将两张杀当杀使用,此杀无视距离和防具,且可以指定任意名目标',
tianfu:'天符',

View File

@ -1018,6 +1018,8 @@ character.yijiang={
if(result&&result.cards){
event.card=result.cards[0];
event.current.lose(result.cards,ui.special);
var cardx=ui.create.card();
cardx.classList.add('infohidden')
event.current.$throw(ui.create.card(),1000);
}
else{
@ -2776,7 +2778,7 @@ character.yijiang={
direct:true,
content:function(){
"step 0"
var next=player.chooseToDiscard('he','是否弃置一张装备牌令伤害-1',function(card,player){
var next=player.chooseToDiscard('he','骄矜:是否弃置一张装备牌令伤害-1',function(card,player){
return get.type(card)=='equip';
});
next.ai=function(card){

View File

@ -8,8 +8,412 @@ character.yxs={
yxs_aijiyanhou:['female','qun',3,['seyou','sheshi']],
yxs_diaochan:['female','qun',3,['fengyi','wange']],
yxs_yangyuhuan:['female','wu',3,['fengyan','nichang']],
yxs_baosi:['female','qun',3,['jieyin','fenghuo']],
yxs_napolun:['male','qun',4,['tongling','fanpu']],
yxs_kaisa:['male','qun',4,['ducai']],
yxs_zhuyuanzhang:['male','qun',4,['qiangyun']],
yxs_jinke:['male','qun',3,['cike','qiangxi']],
yxs_libai:['male','qun',3,['miaobi','zhexian']],
yxs_luban:['male','qun',3,['guifu','lshengong']],
yxs_lvzhi:['female','qun',4,['zhensha','xumou']],
yxs_goujian:['male','qun',3,['keji','tuqiang']],
yxs_lishimin:['male','qun',4,['kongju']],
yxs_huamulan:['female','qun',3,['xiaoji','yizhuang']],
yxs_luobinhan:['male','qun',4,['xiadao','lzhangyi']],
},
skill:{
xiadao:{
enable:['chooseToRespond'],
filterCard:true,
viewAs:{name:'shan'},
viewAsFilter:function(player){
if(!player.num('h')) return false;
if(player.num('e')) return false;
},
prompt:'将一张手牌当闪打出',
check:function(){return 1},
ai:{
respondShan:true,
skillTagFilter:function(player){
if(!player.num('h')) return false;
if(player.num('e')) return false;
},
result:{
target:function(card,player,target,current){
if(get.tag(card,'respondShan')&&current<0&&!target.num('e')) return 0.6
}
}
}
},
lzhangyi:{
trigger:{player:'discardAfter'},
filter:function(event,player){
for(var i=0;i<event.cards.length;i++){
if(get.position(event.cards[i])=='d'){
return true;
}
}
return false;
},
direct:true,
popup:false,
content:function(){
"step 0"
if(trigger.delay==false) game.delay();
"step 1"
player.chooseTarget('是否发动【仗义】?',function(card,player,target){
return player!=target
}).ai=function(target){
return ai.get.attitude(player,target);
};
"step 2"
if(result.bool){
var target=result.targets[0];
player.logSkill('lzhangyi',target);
var cards=[];
for(var i=0;i<trigger.cards.length;i++){
if(get.position(trigger.cards[i])=='d'){
cards.push(trigger.cards[i]);
}
}
target.gain(cards);
if(event.isMine()){
target.$draw(cards);
}
else{
target.$gain2(cards);
}
if(target==game.me){
game.delay();
}
}
},
ai:{
threaten:0.9,
expose:0.1
}
},
yizhuang:{
trigger:{player:'phaseBegin'},
group:'yizhuang2',
direct:true,
content:function(){
"step 0"
player.unmark(player.storage.yizhuang+'_charactermark');
delete player.storage.yizhuang;
delete player.additionalSkills.yizhuang;
player.checkMarks();
if(player.num('he')){
player.chooseCardTarget({
prompt:'是否发动【易装】?',
filterCard:true,
position:'he',
filterTarget:function(card,player,target){
if(target==player) return false;
if(target.sex!='male') return false;
var name=target.name.indexOf('unknown')==0?target.name2:target.name;
var info=lib.character[name];
if(info){
var skills=info[3];
for(var j=0;j<skills.length;j++){
if(lib.translate[skills[j]+'_info']&&lib.skill[skills[j]]&&
!lib.skill[skills[j]].unique&&!player.skills.contains(skills[j])){
return true;
}
}
}
return false;
},
ai1:function(card){
return 7-ai.get.value(card);
},
ai2:function(target){
if(target.isMin()) return 0;
return 6-target.maxHp;
}
});
}
else{
event.finish();
}
"step 1"
if(result.bool){
player.discard(result.cards);
player.logSkill('yizhuang',result.targets);
var name=result.targets[0].name;
if(name.indexOf('unknown')==0){
name=result.targets[0].name2;
}
var list=[];
var skills=lib.character[name][3];
for(var j=0;j<skills.length;j++){
if(lib.translate[skills[j]+'_info']&&lib.skill[skills[j]]&&
!lib.skill[skills[j]].unique&&!player.skills.contains(skills[j])){
list.push(skills[j]);
}
}
for(var i=0;i<list.length;i++){
player.addSkill(list[i]);
player.skills.remove(list[i]);
}
player.additionalSkills.yizhuang=list;
player.markCharacter(name,null,true,true);
game.addVideo('markCharacter',player,{
name:'易装',
content:'',
id:'yizhuang',
target:name
});
player.storage.yizhuang=name;
}
},
ai:{
threaten:1.5
}
},
yizhuang2:{
trigger:{player:'damageAfter'},
priority:-15,
forced:true,
filter:function(event,player){
return player.additionalSkills.yizhuang?true:false;
},
content:function(){
player.unmark(player.storage.yizhuang+'_charactermark');
delete player.storage.yizhuang;
delete player.additionalSkills.yizhuang;
player.checkMarks();
}
},
kongju:{
mod:{
maxHandcard:function(player,num){
if(player.hp<player.maxHp) return num+player.maxHp-player.hp;
},
targetEnabled:function(card,player,target,now){
if(target.num('h')<target.maxHp){
if(card.name=='shunshou'||card.name=='guohe') return false;
}
else if(target.num('h')>target.maxHp){
if(card.name=='lebu') return false;
}
}
},
},
tuqiang:{
trigger:{player:'respond'},
filter:function(event,player){
return event.card.name=='shan';
},
frequent:true,
content:function(){
player.draw();
},
ai:{
mingzhi:false,
effect:{
target:function(card,player,target){
if(get.tag(card,'respondShan')){
return 0.8;
}
}
},
}
},
xumou:{
inherit:'jushou'
},
zhensha:{
trigger:{global:'dying'},
priority:11,
filter:function(event,player){
return event.player.hp<=0&&player.num('h','jiu')>0&&player!=event.player;
},
check:function(event,player){
return ai.get.attitude(player,event.player)<0;
},
direct:true,
content:function(){
'step 0'
var goon=(ai.get.attitude(player,trigger.player)<0);
var next=player.chooseToDiscard({name:'jiu'},'鸠杀:是否弃置一张酒令'+get.translation(trigger.player)+'立即死亡?');
next.ai=function(card){
if(goon) return 1;
return 0;
};
next.logSkill=['zhensha',trigger.player];
'step 1'
if(result.bool){
trigger.player.die();
}
else{
event.finish();
}
'step 2'
if(!trigger.player.isAlive()){
trigger.untrigger(true);
trigger.finish();
}
}
},
ducai:{
enable:'phaseUse',
usable:1,
unique:true,
forceunique:true,
check:function(card){
return 5-ai.get.value(card);
},
position:'he',
filterCard:true,
content:function(){
player.storage.ducai2=cards[0];
player.addTempSkill('ducai2',{player:'phaseBegin'});
},
ai:{
order:8,
result:{
player:1
}
},
global:'ducai3'
},
ducai2:{
mark:'card',
intro:{
content:'card'
}
},
ducai3:{
mod:{
cardEnabled:function(card,player){
if(player.skills.contains('ducai2')) return;
var suit;
for(var i=0;i<game.players.length;i++){
if(game.players[i].skills.contains('ducai2')){
suit=get.suit(game.players[i].storage.ducai2);
}
}
if(suit&&get.suit(card)==suit) return false;
},
cardUsable:function(card,player){
if(player.skills.contains('ducai2')) return;
var suit;
for(var i=0;i<game.players.length;i++){
if(game.players[i].skills.contains('ducai2')){
suit=get.suit(game.players[i].storage.ducai2);
}
}
if(suit&&get.suit(card)==suit) return false;
},
cardSavable:function(card,player){
if(player.skills.contains('ducai2')) return;
var suit;
for(var i=0;i<game.players.length;i++){
if(game.players[i].skills.contains('ducai2')){
suit=get.suit(game.players[i].storage.ducai2);
}
}
if(suit&&get.suit(card)==suit) return false;
}
},
},
tongling:{
init:function(player){
player.storage.tongling=0;
},
intro:{
content:'mark'
},
forced:true,
trigger:{global:'damageAfter'},
filter:function(event,player){
return event.player!=player&&player.storage.tongling<3;
},
content:function(){
player.storage.tongling++;
player.syncStorage('tongling');
player.markSkill('tongling');
}
},
fanpu:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.storage.tongling>=3;
},
promptfunc:function(){
return '令自己在本轮内不能成为出杀的目标(选择自己),或对攻击范围内的一名其他角色造成一点伤害'
},
filterTarget:function(card,player,target){
return player==target||get.distance(player,target,'attack')<=1;
},
content:function(){
if(target==player){
target.addTempSkill('fanpu_disable',{player:'phaseBegin'});
}
else{
target.damage();
}
player.storage.tongling-=3;
player.unmarkSkill('tongling');
player.syncStorage('tongling');
},
subSkill:{
disable:{
mark:true,
intro:{
content:'不能成为杀的目标'
},
mod:{
targetEnabled:function(card,player,target,now){
if(card.name=='sha') return false;
}
}
}
},
ai:{
order:2,
result:{
target:function(player,target){
if(player==target){
if(player.hp<=2&&!player.num('h','shan')){
return 2;
}
return 0;
}
else{
return ai.get.damageEffect(target,player,target);
}
}
}
}
},
fenghuo:{
enable:'chooseToUse',
filter:function(event,player){
return player.num('e')>0;
},
filterCard:true,
position:'e',
viewAs:{name:'nanman'},
prompt:'将一张装备区内的牌当南蛮入侵使用',
check:function(card){
var player=_status.currentPhase;
if(player.num('he',{subtype:get.subtype(card)})>1){
return 11-ai.get.equipValue(card);
}
if(player.num('h')<player.hp){
return 6-ai.get.value(card);
}
return 2-ai.get.equipValue(card);
},
ai:{
order:9,
threaten:1.1
}
},
nichang:{
trigger:{player:'phaseDrawBefore'},
check:function(event,player){
@ -908,6 +1312,141 @@ character.yxs={
expose:0.2,
threaten:1.5
}
},
qiangyun:{
trigger:{player:'loseEnd'},
frequent:true,
filter:function(event,player){
if(player.num('h')) return false;
for(var i=0;i<event.cards.length;i++){
if(event.cards[i].original=='h') return true;
}
return false;
},
content:function(){
player.draw(2);
},
ai:{
effect:{
target:function(card){
if(card.name=='guohe'||card.name=='liuxinghuoyu') return 0.5;
}
}
}
},
cike:{
trigger:{player:'shaBegin'},
check:function(event,player){
return ai.get.attitude(player,event.target)<=0;
},
content:function(){
"step 0"
player.judge();
"step 1"
if(result.color=='red'){
trigger.directHit=true;
}
else{
player.discardPlayerCard(trigger.target);
}
},
ai:{
threaten:1.2
}
},
miaobi:{
enable:'phaseUse',
viewAs:{name:'wugu'},
filterCard:{suit:'heart'},
filter:function(event,player){
return !player.getStat('skill').miaobi&&player.num('h',{suit:'heart'})>0;
},
check:function(card){
return 5-ai.get.value(card);
}
},
zhexian:{
inherit:'niepan',
},
guifu:{
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player!=target&&target.num('e')>0;
},
content:function(){
'step 0'
player.discardPlayerCard(target,'e',true);
'step 1'
game.asyncDraw([player,target]);
},
ai:{
order:8,
threaten:1.5,
result:{
target:-1,
player:0.5
}
}
},
lshengong:{
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player!=target&&target.num('e')>0;
},
check:function(card){
return 6-ai.get.value(card);
},
filterCard:true,
discard:false,
lose:false,
prepare:function(cards,player,targets){
player.line(targets,'green');
},
content:function(){
'step 0'
player.choosePlayerCard(target,'e',true).ai=ai.get.buttonValue;
'step 1'
if(result.links[0]){
cards[0].init([result.links[0].suit,result.links[0].number,result.links[0].name,result.links[0].nature]);
event.card=cards[0];
player.chooseTarget('选择一个角色装备'+get.translation(result.links),function(card,player,target){
return !target.isMin();
}).ai=function(target){
if(!target.num('e',{subtype:get.subtype(event.card)})){
return ai.get.attitude(player,target);
}
return 0;
}
}
else{
event.finish();
}
'step 2'
if(result.targets&&result.targets[0]&&event.card){
player.$give(event.card,result.targets[0]);
game.delay();
event.toequip=result.targets[0];
}
else{
event.finish();
}
'step 3'
if(event.toequip){
event.toequip.equip(event.card);
}
},
ai:{
order:9,
threaten:1.5,
result:{
player:function(player){
if(player.num('e')<3) return 1;
return 0;
}
}
}
}
},
translate:{
@ -919,7 +1458,56 @@ character.yxs={
yxs_aijiyanhou:'埃及艳后',
yxs_diaochan:'貂蝉',
yxs_yangyuhuan:'杨玉环',
yxs_baosi:'褒姒',
yxs_napolun:'拿破仑',
yxs_kaisa:'凯撒',
yxs_zhuyuanzhang:'朱元璋',
yxs_jinke:'荆轲',
yxs_libai:'李白',
yxs_luban:'鲁班',
yxs_lvzhi:'吕雉',
yxs_goujian:'勾践',
yxs_lishimin:'李世民',
yxs_huamulan:'花木兰',
yxs_luobinhan:'罗宾汉',
xiadao:'侠盗',
xiadao_info:'当你的装备区内没有牌时,你可以将一张手牌当作闪使用或打出',
lzhangyi:'仗义',
lzhangyi_info:'你可以将你弃置的卡牌交给一名其他角色',
yizhuang:'易装',
yizhuang2:'易装',
yizhuang_info:'回合开始阶段,你可以弃置一张牌并选择一名男性角色,获得其所有技能,直到你首次受到伤害',
kongju:'控局',
kongju_info:'锁定技,你的手牌上限为你的体力上限;当你的手牌数小于体力上限时,你不能成为过河拆桥或顺手牵羊的目标;当你的手牌数大于体力上限时,你不能成为乐不思蜀的目标',
tuqiang:'图强',
tuqiang_info:'每当你使用或打出一张闪,你可以摸一张牌',
zhensha:'鸩杀',
zhensha_info:'当场上有角色进入濒死状态时,你可以弃置一张酒,则该角色立即死亡。',
xumou:'蓄谋',
xumou_info:'回合结束阶段你可以将武将牌翻页并摸3张牌',
guifu:'鬼斧',
guifu_info:'出牌阶段限一次,你可以指定一名角色装备区内的一张牌,将其弃掉,自己和对方同时摸取一张牌',
lshengong:'神工',
lshengong_info:'出牌阶段限一次,你可以选定场上任意一名角色的装备区的牌,出自己的一张手牌复制该装备,然后可以选择装备上自己或者别的角色的装备区',
zhexian:'谪仙',
zhexian_info:'当你处于濒死状态时你可以丢弃你所有的牌和你判定区里的牌并重置你的武将牌然后摸三张牌且体力回复至3点。',
miaobi:'妙笔',
miaobi_info:'出牌阶段限一次,你可以将一张红桃牌当作五谷丰登使用',
cike:'刺客',
cike_info:'你对别的角色出【杀】时可以选择做一次判定:若判定牌为红色花色,则此【杀】不可回避,直接命中;若判定牌为黑色花色,你可以选择弃掉对方一张牌。',
qiangyun:'强运',
qiangyun_info:'每当你失去最后一张手牌,可摸两张牌',
ducai:'独裁',
ducai2:'独裁',
ducai3:'独裁',
ducai_info:'出牌阶段限一次,你可以弃置一张牌,则本轮内除你外的角色不能使用与该手牌花色相同的手牌',
tongling:'统领',
tongling_info:'每当其他角色受到一次伤害时你获得1个统领标记标记上限为3',
fanpu:'反扑',
fanpu_info:'出牌阶段限一次你可以弃掉3个统领标记并选择1项执行1本轮内不能成为【杀】的目标2对你攻击范围内的1名其他角色造成1点伤害。',
fenghuo:'烽火',
fenghuo_info:'你可以将一张装备区内的牌当作南蛮入侵使用',
weiyi:'威仪',
weiyi_info:'每当你受到一次伤害,可以令伤害来源弃置两张牌',
xieling:'挟令',

View File

@ -16,15 +16,16 @@
dieClose:[]
};
var lib={
version:1.71,
changeLog:[],
configprefix:'noname_0.9_',
updates:[
version:1.72,
changeLog:[
'DIY命名规则修改冒号改为竖线|',
'DIY技能引用现有配音',
'从现有技能创建新技能',
'记住对话框位置',
'新武将SP&英雄杀)'
],
configprefix:'noname_0.9_',
updates:[],
canvasUpdates:[],
video:[],
arenaReady:[],
@ -6641,7 +6642,6 @@
}
if(this.marks[name]){
this.marks[name].info=info;
this.updateMarks();
}
else{
if(card){
@ -6651,6 +6651,7 @@
this.marks[name]=this.mark(name,info);
}
}
this.updateMarks();
return this;
},
unmarkSkill:function(name){
@ -8011,6 +8012,7 @@
this.node.info.classList.add('red');
}
this.node.name.innerHTML='';
this.node.image.className='image';
var name=get.translation(card[2]);
if(card[2]=='sha'){
if(card[3]=='fire'){
@ -8040,6 +8042,10 @@
if(lib.nature.contains(card[3])) this.nature=card[3];
this.classList.add(card[3]);
}
else if(this.nature){
this.classList.remove(this.nature);
delete this.nature;
}
if(lib.card[card[2]].subtype) this.classList.add(lib.card[card[2]].subtype);
if(this.inits){
for(var i=0;i<lib.element.card.inits.length;i++){
@ -9347,6 +9353,7 @@
if(lib.config.mode!='chess'){
game.playerMap={};
}
game.finishCards();
'step 2'
if(event.video.length){
var content=event.video.shift();
@ -14528,7 +14535,8 @@
for(var i=0;i<skills.length;i++){
list2.push([skills[i],lib.translate[skills[i]]]);
}
ui.create.selectlist(list,list[0],addSkill).onchange=function(){
var selectname=ui.create.selectlist(list,list[0],addSkill);
selectname.onchange=function(){
var skills=lib.character[this.value][3];
skillopt.innerHTML='';
for(var i=0;i<skills.length;i++){
@ -14538,9 +14546,11 @@
skillopt.appendChild(option);
}
};
selectname.style.maxWidth='85px';
var skillopt=ui.create.selectlist(list2,list2[0],addSkill);
var editSkillButton=document.createElement('button');
editSkillButton.innerHTML='编辑';
editSkillButton.style.marginRight='3px';
addSkill.appendChild(editSkillButton);
var addSkillButton=document.createElement('button');
addSkillButton.innerHTML='添加';
@ -20560,7 +20570,7 @@
var list=lib.rank.s.concat(lib.rank.ap).concat(lib.rank.a).concat(lib.rank.am).
concat(lib.rank.bp).concat(lib.rank.b).concat(lib.rank.bm).concat(lib.rank.c).concat(lib.rank.d);
for(var i in lib.character){
if(i!='zuoci'&&!list.contains(i)) console.log(i);
if(i!='zuoci'&&i.indexOf('boss_')!=0&&!list.contains(i)) console.log(i);
}
},
h:function(player){

BIN
image/character/lifeng.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

BIN
image/character/lingju.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

BIN
image/character/sunru.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@ -447,6 +447,7 @@
top:170px;
text-align: left;
line-height: 20px;
white-space: nowrap;
}
.menu-buttons>.new_character>.add_skill.options{
top:145px;

View File

@ -405,7 +405,11 @@ mode.guozhan={
game.players[i].node.identity.firstChild.innerHTML='猜';
game.players[i].node.identity.dataset.color='unknown';
}
game.players[i].hiddenSkills=lib.character[game.players[i].name][3].concat(lib.character[game.players[i].name2][3]);
game.players[i].hiddenSkills=lib.character[game.players[i].name][3].slice(0);
var hiddenSkills2=lib.character[game.players[i].name2][3];
for(var j=0;j<hiddenSkills2.length;j++){
game.players[i].hiddenSkills.add(hiddenSkills2[j]);
}
game.players[i].group='unknown';
game.players[i].sex='unknown';
game.players[i].name1=game.players[i].name;
@ -768,24 +772,56 @@ mode.guozhan={
event.finish();
}
else{
event.name=(game.expandSkills(lib.character[player.name1][3]).contains(trigger.skill))?
player.name1:player.name2;
var info=get.info(trigger.skill);
var yes=!info.check||info.check(trigger._trigger,player);
player.chooseBool('是否明置'+get.translation(event.name)+'以发动'+get.translation(trigger.skill)+'').ai=function(){
return yes;
};
var bool1=(game.expandSkills(lib.character[player.name1][3]).contains(trigger.skill));
var bool2=(game.expandSkills(lib.character[player.name2][3]).contains(trigger.skill));
if(bool1&&bool2){
event.name=player.name1;
event.name2=player.name2;
var info=get.info(trigger.skill);
var yes=!info.check||info.check(trigger._trigger,player);
player.chooseBool('是否明置'+get.translation(event.name)+'以发动【'+get.translation(trigger.skill)+'】?').ai=function(){
return yes;
};
}
else{
event.name=bool1?player.name1:player.name2;
var info=get.info(trigger.skill);
var yes=!info.check||info.check(trigger._trigger,player);
player.chooseBool('是否明置'+get.translation(event.name)+'以发动【'+get.translation(trigger.skill)+'】?').ai=function(){
return yes;
};
}
}
"step 1"
if(result.bool){
if(event.name==player.name1) player.showCharacter(0);
else player.showCharacter(1);
trigger.revealed=true;
event.finish();
}
else if(event.name2){
var info=get.info(trigger.skill);
var yes=!info.check||info.check(trigger._trigger,player);
player.chooseBool('是否明置'+get.translation(event.name2)+'以发动【'+get.translation(trigger.skill)+'】?').ai=function(){
return yes;
};
}
else{
event.finish();
trigger.untrigger();
trigger.cancelled=true;
}
"step 2"
if(event.name2){
if(result.bool){
player.showCharacter(1);
trigger.revealed=true;
}
else{
trigger.untrigger();
trigger.cancelled=true;
}
}
}
},
},