This commit is contained in:
libccy 2016-03-22 14:45:57 +08:00
parent 382b30eda4
commit b5405c291c
20 changed files with 801 additions and 515 deletions

View File

@ -117,9 +117,7 @@ card.guozhan={
},
ai:{
wuxie:function(){
if(lib.config.mode=='guozhan'){
return 0;
}
return 0;
},
basic:{
useful:3,

View File

@ -1,374 +0,0 @@
'use strict';
card.qimou={
card:{
chenhuodajie:{
fullskin:true,
type:'trick',
content:function(){
if(target.num('he')){
player.gainPlayerCard('he',target,true);
}
},
ai:{
order:1,
useful:6,
value:6,
result:{
target:-1
},
tag:{
loseCard:1
}
}
},
shushangkaihua:{
fullskin:true,
type:'trick',
enable:true,
selectTarget:-1,
multitarget:true,
multiline:true,
filterTarget:function(card,player,target){
if(player==target) return true;
var num=target.num('h');
for(var i=0;i<game.players.length;i++){
if(game.players[i].num('h')<num) return false;
}
return true;
},
content:function(){
// target.draw();
game.asyncDraw(targets);
},
ai:{
order:1,
value:5,
result:{
target:1
}
}
},
huoshaolianying:{
fullskin:true,
type:'trick',
filterTarget:function(card,player,target){
if(player==target) return false;
var link=false;
for(var i=0;i<game.players.length;i++){
if(game.players[i].isLinked()&&game.players[i]!=player){
link=true;break;
}
}
if(link){
if(!target.isLinked()) return false;
var distance=get.distance(player,target,'absolute');
for(var i=0;i<game.players.length;i++){
if(target!=game.players[i]&&
game.players[i]!=player&&
game.players[i].isLinked()){
if(get.distance(player,game.players[i],'absolute')<distance){
return false;
}
if(get.distance(player,game.players[i],'absolute')==distance&&
parseInt(game.players[i].dataset.position)<parseInt(target.dataset.position)){
return false;
}
}
}
return true;
}
else{
var dist=get.distance(player,target);
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&get.distance(player,game.players[i])<dist) return false;
}
return true;
}
},
enable:true,
selectTarget:-1,
content:function(){
target.damage('fire');
},
ai:{
order:5,
value:6,
tag:{
damage:1,
natureDamage:1,
fireDamage:1,
},
result:{
target:function(player,target){
if(target.hasSkillTag('nofire')||target.hasSkillTag('nodamage')) return 0;
if(target.skills.contains('xuying')&&target.num('h')==0) return 0;
if(!target.isLinked()){
return ai.get.damageEffect(target,player,target,'fire');
}
var num=0;
for(var i=0;i<game.players.length;i++){
if(game.players[i].isLinked()){
var eff=ai.get.damageEffect(game.players[i],player,target,'fire');
if(eff>0){
num++;
}
else if(eff<0){
num--;
}
}
}
return num;
}
}
}
},
yihuajiemu:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
if(target.isMin()) return false;
if(ui.selected.targets.length){
return target.get('e',{subtype:'equip5'}).length==0;
}
else{
return target.get('e',{subtype:'equip5'}).length>0;
}
},
selectTarget:2,
multitarget:true,
content:function(){
if(targets[0].get('e','5')){
targets[0].$give(targets[0].get('e','5'),targets[1]);
targets[1].equip(targets[0].get('e','5'));
game.delay();
}
},
ai:{
order:1,
result:{
target:function(player,target){
if(target.get('e',{subtype:'equip5'}).length){
if(ai.get.attitude(target,player)>0){
return -0.5;
}
return -1;
}
return 1;
}
},
tag:{
loseCard:1
}
}
},
fudichouxin:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return player!=target&&target.get('h').length;
},
content:function(){
"step 0"
player.chooseToCompare(target).clear=false;
"step 1"
if(result.bool){
player.gain([result.player,result.target]);
result.player.clone.moveDelete(player);
result.target.clone.moveDelete(player);
game.addVideo('gain2',player,get.cardsInfo([result.player,result.target]));
}
else if(!result.cancelled){
result.player.clone.delete();
result.target.clone.delete();
game.addVideo('deletenode',player,get.cardsInfo([result.player,result.target]));
}
},
ai:{
order:4,
result:{
target:function(player){
if(player.get('h').length<=1) return 0;
return -1;
},
player:function(player){
if(player.get('h').length<=1) return 0;
return 0.5;
}
},
tag:{
loseCard:1
}
}
},
shuiyanqijun:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return target.num('e');
},
selectTarget:-1,
content:function(){
if(target.num('e')) target.chooseToDiscard('e',true);
},
ai:{
order:9,
result:{
target:function(player,target){
if(target.num('e')) return -1;
return 0;
}
},
tag:{
multitarget:1,
multineg:1
}
}
},
toulianghuanzhu:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return target.num('h')>0;
},
selectTarget:2,
multitarget:true,
targetprompt:['被拿牌','得牌'],
content:function(){
"step 0"
targets[0].addTempSkill('toulianghuanzhu2','phaseAfter');
var hs=targets[0].get('h');
event.num=Math.min(2,hs.length);
if(event.num){
targets[1].gain(hs.randomGets(event.num));
targets[0].$give(event.num,targets[1]);
game.delay();
}
else{
event.finish();
}
"step 1"
if(targets[1].num('h')){
if(_status.auto&&targets[1]==game.me){
game.delay();
}
targets[1].chooseCard(true,event.num,'选择'+get.cnNumber(event.num)+'张手牌还给'+get.translation(targets[0])).ai=ai.get.disvalue;
}
else{
event.finish();
}
"step 2"
targets[0].gain(result.cards);
targets[1].$give(event.num,targets[0]);
},
ai:{
order:6.5,
tag:{
loseCard:1,
multitarget:1,
multineg:1
},
result:{
target:function(player,target){
if(ui.selected.targets.length){
if(target==player&&target.num('h')<=1) return 0;
return 0.5;
}
if(target.skills.contains('toulianghuanzhu2')) return 0;
return -0.5;
}
},
wuxie:function(){
return 0;
},
useful:3,
value:4
}
},
},
skill:{
toulianghuanzhu2:{},
_chenhuodajie:{
trigger:{global:'damageEnd'},
direct:true,
filter:function(event,player){
if(event.player==player) return false;
if(!event.player.num('he')) return false;
if(player.num('h','chenhuodajie')) return true;
var mn=player.get('e','5');
if(mn&&mn.name=='muniu'&&mn.cards&&mn.cards.length){
for(var i=0;i<mn.cards.length;i++){
if(mn.cards[i].name=='chenhuodajie') return true;
}
}
return false;
},
content:function(){
player.chooseToUse('是否对'+get.translation(trigger.player)+'使用趁火打劫?',function(card,player){
if(card.name!='chenhuodajie') return false;
var mod=game.checkMod(card,player,'unchanged','cardEnabled',player.get('s'));
if(mod!='unchanged') return mod;
return true;
},trigger.player,-1).targetRequired=true;
}
},
},
translate:{
geanguanhuo:'隔岸观火',
geanguanhuo_info:'指定任意两名角色进行拚点拚点输的一方掉1点血若点数一样则使用该锦囊的角色掉1点血。拚点的牌不用丢弃。',
toulianghuanzhu:'偷梁换柱',
toulianghuanzhu_info:'令一名角色获得另一名角色的两张手牌,然后还回两张手牌',
toulianghuanzhu_bg:'柱',
yihuajiemu:'移花接木',
yihuajiemu_info:'将一名角色的宝物牌转移至另一名角色',
fudichouxin:'釜底抽薪',
fudichouxin_info:'与一名角色进行拼点,若成功则获得双方拼点牌',
shuiyanqijun:'水淹七军',
shuiyanqijun_info:'令所有有装备的角色各弃置一张装备牌',
shushangkaihua:'树上开花',
shushangkaihua_info:'使用者与手牌数最少的所有角色各摸一张牌',
huoshaolianying:'火烧连营',
huoshaolianying_bg:'烧',
huoshaolianying_info:'对离你最近的一名横置角色使用(若无横置角色则改为对距离你最近的所有角色使用),对目标造成一点火焰伤害',
chenhuodajie:'趁火打劫',
chenhuodajie_info:'任意一名其他角色受到伤害时对其使用,获得其一张牌',
},
list:[
['heart',3,'yihuajiemu'],
["diamond",3,'guohe'],
['diamond',4,'fudichouxin'],
['diamond',1,'yihuajiemu'],
['club',6,'fudichouxin'],
['spade',1,'fudichouxin'],
['club',7,'shuiyanqijun'],
['diamond',7,'yihuajiemu'],
['club',8,'shuiyanqijun'],
['club',8,'guohe'],
['spade',9,'shuiyanqijun'],
['heart',9,'toulianghuanzhu'],
['club',10,'toulianghuanzhu'],
['spade',11,'toulianghuanzhu'],
['spade',13,'guohe'],
['heart',7,'huoshaolianying','fire'],
['diamond',12,'huoshaolianying','fire'],
['heart',6,'shushangkaihua'],
['club',1,'shushangkaihua'],
['diamond',6,'chenhuodajie'],
['diamond',9,'chenhuodajie'],
['club',3,'chenhuodajie'],
],
}

View File

@ -1,95 +0,0 @@
card.shenbing={
card:{
suolianjia:{
fullskin:true,
type:"equip",
subtype:"equip2",
skills:['suolianjia'],
onEquip:function(){
if(player.isLinked()==false) player.link();
},
onLose:function(){
if(player.isLinked()) player.link();
},
ai:{
basic:{
equipValue:5
},
},
},
huxinjing:{
fullskin:true,
type:"equip",
subtype:"equip2",
skills:['huxinjing'],
ai:{
basic:{
equipValue:6
},
},
}
},
skill:{
huxinjing:{
trigger:{player:'damageBegin'},
priority:10,
forced:true,
filter:function(event){
return event.num>0;
},
content:function(){
trigger.num--;
player.addSkill('huxinjing2');
// player.discard(player.get('e','2'));
}
},
huxinjing2:{
trigger:{player:'damageEnd'},
priority:10,
forced:true,
popup:false,
content:function(){
var cards=player.get('e','huxinjing');
if(cards.length){
player.discard(cards);
}
}
},
suolianjia:{
trigger:{player:'damageBefore'},
filter:function(event){
if(event.source&&event.source.num('s','unequip')) return;
if(event.nature) return true;
},
forced:true,
content:function(){
trigger.untrigger();
trigger.finish();
},
ai:{
nofire:true,
nothunder:true,
effect:{
target:function(card,player,target,current){
if(get.tag(card,'natureDamage')) return 'zerotarget';
if(card.name=='tiesuo'){
return [0,0];
}
}
}
}
},
},
translate:{
suolianjia:'锁链甲',
suolianjia_info:'锁定技,你防止即将受到的属性伤害,当装备时进入连环状态,当卸下时解除连环状态',
suolianjia_bg:'链',
huxinjing_bg:'镜',
huxinjing:'护心镜',
huxinjing_info:'抵消一点伤害',
},
list:[
['club',13,'suolianjia'],
['spade',9,'huxinjing'],
],
}

461
card/yibao.js → card/yunchou.js Executable file → Normal file
View File

@ -1,5 +1,320 @@
card.yibao={
card.yunchou={
card:{
suolianjia:{
fullskin:true,
type:"equip",
subtype:"equip2",
skills:['suolianjia'],
onEquip:function(){
if(player.isLinked()==false) player.link();
},
onLose:function(){
if(player.isLinked()) player.link();
},
ai:{
basic:{
equipValue:5
},
},
},
huxinjing:{
fullskin:true,
type:"equip",
subtype:"equip2",
skills:['huxinjing'],
ai:{
basic:{
equipValue:6
},
},
},
chenhuodajie:{
fullskin:true,
type:'trick',
content:function(){
if(target.num('he')){
player.gainPlayerCard('he',target,true);
}
},
ai:{
order:1,
useful:6,
value:6,
result:{
target:-1
},
tag:{
loseCard:1
}
}
},
shushangkaihua:{
fullskin:true,
type:'trick',
enable:true,
selectTarget:-1,
multitarget:true,
multiline:true,
filterTarget:function(card,player,target){
if(player==target) return true;
var num=target.num('h');
for(var i=0;i<game.players.length;i++){
if(game.players[i].num('h')<num) return false;
}
return true;
},
content:function(){
// target.draw();
game.asyncDraw(targets);
},
ai:{
order:1,
value:5,
result:{
target:1
}
}
},
huoshaolianying:{
fullskin:true,
type:'trick',
filterTarget:function(card,player,target){
if(player==target) return false;
var link=false;
for(var i=0;i<game.players.length;i++){
if(game.players[i].isLinked()&&game.players[i]!=player){
link=true;break;
}
}
if(link){
if(!target.isLinked()) return false;
var distance=get.distance(player,target,'absolute');
for(var i=0;i<game.players.length;i++){
if(target!=game.players[i]&&
game.players[i]!=player&&
game.players[i].isLinked()){
if(get.distance(player,game.players[i],'absolute')<distance){
return false;
}
if(get.distance(player,game.players[i],'absolute')==distance&&
parseInt(game.players[i].dataset.position)<parseInt(target.dataset.position)){
return false;
}
}
}
return true;
}
else{
var dist=get.distance(player,target);
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&get.distance(player,game.players[i])<dist) return false;
}
return true;
}
},
enable:true,
selectTarget:-1,
content:function(){
target.damage('fire');
},
ai:{
order:5,
value:6,
tag:{
damage:1,
natureDamage:1,
fireDamage:1,
},
result:{
target:function(player,target){
if(target.hasSkillTag('nofire')||target.hasSkillTag('nodamage')) return 0;
if(target.skills.contains('xuying')&&target.num('h')==0) return 0;
if(!target.isLinked()){
return ai.get.damageEffect(target,player,target,'fire');
}
var num=0;
for(var i=0;i<game.players.length;i++){
if(game.players[i].isLinked()){
var eff=ai.get.damageEffect(game.players[i],player,target,'fire');
if(eff>0){
num++;
}
else if(eff<0){
num--;
}
}
}
return num;
}
}
}
},
yihuajiemu:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
if(target.isMin()) return false;
if(ui.selected.targets.length){
return target.get('e',{subtype:'equip5'}).length==0;
}
else{
return target.get('e',{subtype:'equip5'}).length>0;
}
},
selectTarget:2,
multitarget:true,
content:function(){
if(targets[0].get('e','5')){
targets[0].$give(targets[0].get('e','5'),targets[1]);
targets[1].equip(targets[0].get('e','5'));
game.delay();
}
},
ai:{
order:1,
result:{
target:function(player,target){
if(target.get('e',{subtype:'equip5'}).length){
if(ai.get.attitude(target,player)>0){
return -0.5;
}
return -1;
}
return 1;
}
},
tag:{
loseCard:1
}
}
},
fudichouxin:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return player!=target&&target.get('h').length;
},
content:function(){
"step 0"
player.chooseToCompare(target).clear=false;
"step 1"
if(result.bool){
player.gain([result.player,result.target]);
result.player.clone.moveDelete(player);
result.target.clone.moveDelete(player);
game.addVideo('gain2',player,get.cardsInfo([result.player,result.target]));
}
else if(!result.cancelled){
result.player.clone.delete();
result.target.clone.delete();
game.addVideo('deletenode',player,get.cardsInfo([result.player,result.target]));
}
},
ai:{
order:4,
result:{
target:function(player){
if(player.get('h').length<=1) return 0;
return -1;
},
player:function(player){
if(player.get('h').length<=1) return 0;
return 0.5;
}
},
tag:{
loseCard:1
}
}
},
shuiyanqijun:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return target.num('e');
},
selectTarget:-1,
content:function(){
if(target.num('e')) target.chooseToDiscard('e',true);
},
ai:{
order:9,
result:{
target:function(player,target){
if(target.num('e')) return -1;
return 0;
}
},
tag:{
multitarget:1,
multineg:1
}
}
},
toulianghuanzhu:{
fullskin:true,
type:'trick',
enable:true,
filterTarget:function(card,player,target){
return target.num('h')>0;
},
selectTarget:2,
multitarget:true,
targetprompt:['被拿牌','得牌'],
content:function(){
"step 0"
targets[0].addTempSkill('toulianghuanzhu2','phaseAfter');
var hs=targets[0].get('h');
event.num=Math.min(2,hs.length);
if(event.num){
targets[1].gain(hs.randomGets(event.num));
targets[0].$give(event.num,targets[1]);
game.delay();
}
else{
event.finish();
}
"step 1"
if(targets[1].num('h')){
if(_status.auto&&targets[1]==game.me){
game.delay();
}
targets[1].chooseCard(true,event.num,'选择'+get.cnNumber(event.num)+'张手牌还给'+get.translation(targets[0])).ai=ai.get.disvalue;
}
else{
event.finish();
}
"step 2"
targets[0].gain(result.cards);
targets[1].$give(event.num,targets[0]);
},
ai:{
order:6.5,
tag:{
loseCard:1,
multitarget:1,
multineg:1
},
result:{
target:function(player,target){
if(ui.selected.targets.length){
if(target==player&&target.num('h')<=1) return 0;
return 0.5;
}
if(target.skills.contains('toulianghuanzhu2')) return 0;
return -0.5;
}
},
wuxie:function(){
return 0;
},
useful:3,
value:4
}
},
hufu:{
fullskin:true,
type:'basic',
@ -316,9 +631,9 @@ card.yibao={
if(target.hasSkillTag('nofire')) return 0;
var nh=target.num('he');
if(target==player) nh--;
if(nh==2) return -2.5;
if(nh==1) return -3;
return -2;
if(nh==2) return -5;
if(nh==1) return -6;
return -3;
}
},
tag:{
@ -433,6 +748,80 @@ card.yibao={
},
},
skill:{
huxinjing:{
trigger:{player:'damageBegin'},
priority:10,
forced:true,
filter:function(event){
return event.num>0;
},
content:function(){
trigger.num--;
player.addSkill('huxinjing2');
// player.discard(player.get('e','2'));
}
},
huxinjing2:{
trigger:{player:'damageEnd'},
priority:10,
forced:true,
popup:false,
content:function(){
var cards=player.get('e','huxinjing');
if(cards.length){
player.discard(cards);
}
}
},
suolianjia:{
trigger:{player:'damageBefore'},
filter:function(event){
if(event.source&&event.source.num('s','unequip')) return;
if(event.nature) return true;
},
forced:true,
content:function(){
trigger.untrigger();
trigger.finish();
},
ai:{
nofire:true,
nothunder:true,
effect:{
target:function(card,player,target,current){
if(get.tag(card,'natureDamage')) return 'zerotarget';
if(card.name=='tiesuo'){
return [0,0];
}
}
}
}
},
toulianghuanzhu2:{},
_chenhuodajie:{
trigger:{global:'damageEnd'},
direct:true,
filter:function(event,player){
if(event.player==player) return false;
if(!event.player.num('he')) return false;
if(player.num('h','chenhuodajie')) return true;
var mn=player.get('e','5');
if(mn&&mn.name=='muniu'&&mn.cards&&mn.cards.length){
for(var i=0;i<mn.cards.length;i++){
if(mn.cards[i].name=='chenhuodajie') return true;
}
}
return false;
},
content:function(){
player.chooseToUse('是否对'+get.translation(trigger.player)+'使用趁火打劫?',function(card,player){
if(card.name!='chenhuodajie') return false;
var mod=game.checkMod(card,player,'unchanged','cardEnabled',player.get('s'));
if(mod!='unchanged') return mod;
return true;
},trigger.player,-1).targetRequired=true;
}
},
dujian2:{},
qiankundai:{
mod:{
@ -483,6 +872,30 @@ card.yibao={
},
},
translate:{
suolianjia:'锁链甲',
suolianjia_info:'锁定技,你防止即将受到的属性伤害,当装备时进入连环状态,当卸下时解除连环状态',
suolianjia_bg:'链',
huxinjing_bg:'镜',
huxinjing:'护心镜',
huxinjing_info:'抵消一点伤害',
geanguanhuo:'隔岸观火',
geanguanhuo_info:'指定任意两名角色进行拚点拚点输的一方掉1点血若点数一样则使用该锦囊的角色掉1点血。拚点的牌不用丢弃。',
toulianghuanzhu:'偷梁换柱',
toulianghuanzhu_info:'令一名角色获得另一名角色的两张手牌,然后还回两张手牌',
toulianghuanzhu_bg:'柱',
yihuajiemu:'移花接木',
yihuajiemu_info:'将一名角色的宝物牌转移至另一名角色',
fudichouxin:'釜底抽薪',
fudichouxin_info:'与一名角色进行拼点,若成功则获得双方拼点牌',
shuiyanqijun:'水淹七军',
shuiyanqijun_info:'令所有有装备的角色各弃置一张装备牌',
shushangkaihua:'树上开花',
shushangkaihua_info:'使用者与手牌数最少的所有角色各摸一张牌',
huoshaolianying:'火烧连营',
huoshaolianying_bg:'烧',
huoshaolianying_info:'对离你最近的一名横置角色使用(若无横置角色则改为对距离你最近的所有角色使用),对目标造成一点火焰伤害',
chenhuodajie:'趁火打劫',
chenhuodajie_info:'任意一名其他角色受到伤害时对其使用,获得其一张牌',
huoshan:'火山',
huoshan_info:'出牌阶段对自己使用。若判定结果为红桃2~9则目标角色受到2点火焰伤害距离目标1以内的其他角色受到1点火焰伤害。若判定不为红桃2~9将之移动到下家的判定区里。',
hongshui:'洪水',
@ -509,22 +922,34 @@ card.yibao={
['diamond',3,'liuxinghuoyu','fire'],
['heart',6,'liuxinghuoyu','fire'],
['heart',9,'liuxinghuoyu','fire'],
//['heart',11,'liuxinghuoyu','fire'],
//['heart',12,'liuxinghuoyu','fire'],
['spade',3,'dujian'],
//['club',6,'dujian','poison'],
//['club',9,'dujian','poison'],
['club',11,'dujian'],
['club',12,'dujian'],
//['club',3,'sha','poison'],
//['club',4,'sha','poison'],
//['club',5,'sha','poison'],
//['spade',6,'sha','poison'],
//['spade',7,'sha','poison'],
//['club',3,'sha','poison'],
//['club',4,'sha','poison'],
//['club',5,'sha','poison'],
//['spade',6,'sha','poison'],
//['spade',7,'sha','poison'],
['heart',3,'yihuajiemu'],
["diamond",3,'guohe'],
['diamond',4,'fudichouxin'],
['diamond',1,'yihuajiemu'],
['club',6,'fudichouxin'],
['spade',1,'fudichouxin'],
['club',7,'shuiyanqijun'],
['diamond',7,'yihuajiemu'],
['club',8,'shuiyanqijun'],
['club',8,'guohe'],
['spade',9,'shuiyanqijun'],
['heart',9,'toulianghuanzhu'],
['club',10,'toulianghuanzhu'],
['spade',11,'toulianghuanzhu'],
['spade',13,'guohe'],
['heart',7,'huoshaolianying','fire'],
['diamond',12,'huoshaolianying','fire'],
['heart',6,'shushangkaihua'],
['club',1,'shushangkaihua'],
['diamond',6,'chenhuodajie'],
['diamond',9,'chenhuodajie'],
['club',3,'chenhuodajie'],
['club',13,'suolianjia'],
['spade',9,'huxinjing'],
],
}

View File

@ -14,19 +14,20 @@ character.hearth={
hs_medivh:['male','wei',3,['jingxiang','moying','mdzhoufu']],
hs_alleria:['male','wu',3,['fengxing','qiaodong','liegong']],
hs_magni:['male','shu',4,['zhongjia','dunji']],
hs_liadrin:['female','shu',4,['xueren']],
hs_neptulon:['male','wu',4,['liechao','qingliu']],
hs_wvelen:['male','qun',3,['shengyan','xianzhi']],
hs_antonidas:['male','wei',3,['yanshu','bingshuang']],
hs_alakir:['male','wei',3,['fengnu','shengdun']],
hs_zhouzhuo:['male','qun',3,['jubao','qice']],
hs_zhouzhuo:['male','qun',4,['yiwen']],
hs_yngvar:['male','qun',3,['huanwu']],
hs_bchillmaw:['male','wei',6,['hanshuang','bingshi']],
hs_malorne:['male','wu',3,['enze','chongsheng']],
hs_malygos:['male','wei',4,['malymowang']],
hs_xuefashi:['male','wei',2,['liehun','xjumo']],
hs_loatheb:['male','wu',5,['fengyin']],
hs_trueheart:['female','qun',3,['qianghua']],
hs_trueheart:['female','qun',3,['qianghuax']],
hs_sainaliusi:['male','wu',4,['chongsheng','yulu']],
hs_lrhonin:['male','wei',4,['bingyan','yufa']],
hs_bolvar:['male','wei',4,['yuanzheng','byuhuo']],
@ -37,6 +38,9 @@ character.hearth={
hs_nozdormu:['male','qun',5,['shixu']],
hs_sapphiron:['male','wei',4,['bingdong','stuxi']],
hs_kchromaggus:['male','wei',4,['fenlie']],
hs_lreno:['male','shu',4,['tanbao']],
hs_brann:['male','shu',4,['qianghua']],
hs_finley:['male','wu',3,['maoxian']],
hs_zhishigushu:['male','shu',4,['jiaohui']],
hs_zhanzhenggushu:['male','wei',6,['biri']],
@ -66,6 +70,257 @@ character.hearth={
hs_malfurion:['hs_malorne'],
},
skill:{
xueren:{
trigger:{source:'damageEnd'},
filter:function(event){
return event.card&&event.card.name=='sha'&&event.player.isAlive();
},
check:function(event,player){
if(ai.get.attitude(player,event.player)>=0) return false;
if(player.hp>2) return true;
if(player.hp<2) return false;
return player.hp>=event.player.hp;
},
content:function(){
'step 0'
trigger.player.loseHp();
'step 1'
player.loseHp();
'step 2'
player.draw(2);
}
},
maoxian:{
enable:'phaseUse',
usable:2,
direct:true,
delay:false,
unique:true,
getSkills:function(player,current){
var names=[];
var list=[];
var map={};
for(var i=0;i<game.players.length;i++){
if(game.players[i]==player) continue;
if(game.players[i].name&&lib.character[game.players[i].name]){
names.add(game.players[i].name);
}
if(game.players[i].name1&&lib.character[game.players[i].name1]){
names.add(game.players[i].name1);
}
if(game.players[i].name2&&lib.character[game.players[i].name2]){
names.add(game.players[i].name2);
}
}
for(var i=0;i<names.length;i++){
var info=lib.character[names[i]];
if(info){
var skills=info[3];
for(var j=0;j<skills.length;j++){
if(skills[j]==current) continue;
if(lib.translate[skills[j]+'_info']&&lib.skill[skills[j]]&&
!lib.skill[skills[j]].unique){
list.add(skills[j]);
map[skills[j]]=names[i];
}
}
}
}
return [list,map];
},
onremove:function(player){
delete player.additionalSkills.maoxian;
},
content:function(){
'step 0'
var lm=lib.skill.maoxian.getSkills(player,player.additionalSkills.maoxian);
var list=lm[0];
event.map=lm[1];
if(list.length){
player.chooseControl(list.randomGets(3)).prompt='选择一项作为你的技能';
}
else{
event.finish();
}
'step 1'
if(result.control){
var link=result.control;
player.addSkill(link);
player.skills.remove(link);
player.additionalSkills.maoxian=link;
player.popup(link);
var name=event.map[link];
var target;
for(var i=0;i<game.players.length;i++){
if(game.players[i]==player) continue;
if(game.players[i].name==name||
game.players[i].name1==name||
game.players[i].name2==name){
target=game.players[i];break;
}
}
if(target){
player.line(target,'green');
player.markSkillCharacter(target,get.translation(link),lib.translate[link+'_info'],'maoxian');
}
player.checkMarks();
game.delay();
}
},
ai:{
order:11,
result:{
player:function(player){
if(player.getStat().skill.maoxian) return 0;
return 1;
}
}
}
},
yiwen:{
trigger:{target:'useCardToBegin'},
filter:function(event,player){
return event.targets&&event.targets.length==1&&
event.target!=event.player&&_status.currentPhase==event.player&&
!event.player.skills.contains('yiwen2');
},
forced:true,
content:function(){
player.gain(game.createCard(trigger.card),'gain2');
trigger.player.addTempSkill('yiwen2','phaseAfter');
},
ai:{
threaten:0.7
}
},
yiwen2:{},
tanbao:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
if(player.hp==player.maxHp) return false;
var hs=player.get('h');
if(hs.length==0) return false;
var types=[];
for(var i=0;i<hs.length;i++){
var type=get.type(hs[i],'trick');
if(types.contains(type)){
return false;
}
else{
types.push(type);
}
}
return true;
},
content:function(){
'step 0'
player.showHandcards();
'step 1'
player.recover(player.num('h'));
},
ai:{
order:10,
result:{
player:1
}
}
},
tanbao_old:{
enable:'phaseUse',
usable:10,
filterCard:true,
position:'he',
check:function(card){
if(_status.event.player.hp==1){
return 7-ai.get.value(card);
}
return 6-ai.get.value(card);
},
selectCard:3,
filter:function(event,player){
return player.num('he')>=3;
},
content:function(){
'step 0'
event.cards=get.cards(3);
if(!event.isMine()) player.showCards(event.cards);
'step 1'
player.chooseCardButton('获得任意张类别不同的牌',[1,3],event.cards).filterButton=function(button){
var type=get.type(button.link,'trick');
for(var i=0;i<ui.selected.buttons.length;i++){
if(get.type(ui.selected.buttons[i].link,'trick')==type){
return false;
}
}
return true;
}
'step 2'
if(result.bool) player.gain(result.links,'gain2');
var types=[];
for(var i=0;i<event.cards.length;i++){
types.add(get.type(event.cards[i],'trick'));
}
if(types.length==3){
player.recover(player.maxHp-player.hp);
}
},
ai:{
order:5,
result:{
player:1
}
}
},
qianghuax:{
enable:'phaseUse',
usable:1,
filterCard:function(card){
var type=get.type(card,'trick');
for(var i=0;i<ui.selected.cards.length;i++){
if(type==get.type(ui.selected.cards[i],'trick')) return false;
}
return true;
},
position:'he',
check:function(card){
return 8-ai.get.value(card);
},
selectCard:[1,Infinity],
content:function(){
var cards2=[];
for(var i=0;i<cards.length;i++){
var type=get.type(cards[i],'trick');
var list=game.findCards(function(name){
if(cards[i].name==name) return;
if(get.type({name:name},'trick')==type){
return ai.get.value({name:name})>ai.get.value(cards[i]);
}
});
if(!list.length){
list=game.findCards(function(name){
if(cards[i].name==name) return;
if(get.type({name:name},'trick')==type){
return ai.get.value({name:name})==ai.get.value(cards[i]);
}
});
}
if(!list.length){
list=[cards[i].name];
}
cards2.push(game.createCard(list.randomGet()));
}
player.gain(cards2);
player.$draw(cards2);
game.log(player,'获得了',cards2);
},
ai:{
order:8,
result:{
player:1
}
}
},
zhuizong:{
enable:'phaseUse',
usable:1,
@ -691,7 +946,7 @@ character.hearth={
trigger:{player:'useCardAfter'},
filter:function(event,player){
if(event.parent.name=='qianghua') return false;
if(player.storage.qianghua>=2) return false;
if(player.storage.qianghua>=1) return false;
if(_status.currentPhase!=player) return false;
if(event.parent.parent.name!='phaseUse') return false;
if(!event.targets||!event.card) return false;
@ -722,7 +977,7 @@ character.hearth={
group:'qianghua_clear',
subSkill:{
clear:{
trigger:{player:'phaseBegin'},
trigger:{player:'phaseBefore'},
forced:true,
silent:true,
popup:false,
@ -3272,6 +3527,7 @@ character.hearth={
hs_anduin:'安度因',
hs_sthrall:'萨尔',
hs_waleera:'瓦莉拉',
hs_liadrin:'莉亚德琳',
hs_neptulon:'耐普图隆',
hs_wvelen:'维纶',
@ -3298,6 +3554,9 @@ character.hearth={
hs_edwin:'艾德温',
hs_lafamu:'拉法姆',
hs_yelise:'伊莉斯',
hs_lreno:'雷诺',
hs_finley:'芬利',
hs_brann:'布莱恩',
hs_ronghejuren:'熔核巨人',
hs_shanlingjuren:'山岭巨人',
@ -3317,6 +3576,19 @@ character.hearth={
hs_nate:'纳特',
hs_shifazhe:'嗜法者',
xueren:'血刃',
xueren_info:'每当你使用杀造成伤害,你可以令受伤害角色与你各流失一点体力,然后你摸两张牌',
maoxian:'冒险',
maoxian2:'冒险',
maoxian_info:'出牌阶段限两次,你可以从三个来自其他存活角色的技能中选择一个作为你的技能',
tanbao:'探秘',
tanbao_info:'出牌阶段限一次,若你的手牌类别均不相同,你可以展示手牌,然后回复等同于手牌数的体力',
yiwen:'轶闻',
yiwen_info:'锁定技,每当其他角色于回合内首次使用卡牌指定你为惟一目标,你获得一张此牌的复制',
tanbao_old:'探宝',
tanbao_old_info:'出牌阶段限一次,你可以弃置三张牌,然后展示牌堆顶的三张牌,然后获得其中任意张类别不同的牌;若三张牌类别均不相同,你回复全部体力值',
qianghuax:'强化',
qianghuax_info:'出牌阶段限一次,你可以弃置任意张不同类别的牌,然后展示并获得与弃置的牌类别相同且价值更高的牌',
zhuizong:'追踪',
zhuizong_info:'出牌阶段限一次,你可以弃置任意张牌,观看牌堆顶的等同于弃牌数四倍的牌,然后获得其中的一张牌',
xunbao:'寻宝',
@ -3367,8 +3639,8 @@ character.hearth={
nianfu_info:'出牌阶段限一次你可以指定一名其他角色随机弃置其1~2张装备牌',
shixu:'时序',
shixu_info:'锁定技所有角色于出牌阶段每消耗3秒便须于回合结束阶段弃置一张牌',
qianghua:'强化',
qianghua_info:'出牌阶段限两次,你可以令一张你使用的基本牌或非延时锦囊牌额外结算一次',
qianghua:'绝手',
qianghua_info:'在你的回合内,你可以令一张你使用的基本牌或非延时锦囊牌额外结算一次,每回合限一次',
jixuan:'疾旋',
jixuan_info:'锁定技,回合结束后,你进行一个额外的回合',
biri:'蔽日',

View File

@ -115,7 +115,6 @@ window.characterRank={
'swd_fuyan',
'pal_xuejian',
'swd_maixing',
'hs_zhouzhuo',
'xunyou',
're_daqiao',
'swd_fengyu',
@ -174,10 +173,12 @@ window.characterRank={
'sunluyu',
'swd_xiyan',
'hs_jiaziruila',
'hs_brann',
],
bp:[
'hs_hudunren',
'hs_nate',
'hs_finley',
'hs_shifazhe',
'hs_kchromaggus',
'hs_yelise',
@ -281,6 +282,9 @@ window.characterRank={
'wangji',
'swd_weida',
'swd_lilian',
'hs_lreno',
'hs_zhouzhuo',
'hs_liadrin',
],
b:[
'sp_xiahoudun',

View File

@ -901,6 +901,7 @@ character.shenhua={
},
duanchang:{
audio:4,
forbid:['boss'],
trigger:{player:'dieBegin'},
forced:true,
filter:function(event){
@ -1353,7 +1354,7 @@ character.shenhua={
trigger:{global:'dieEnd'},
priority:5,
filter:function(event){
return event.cards.length>0
return event.playerCards&&event.playerCards.length>0
},
content:function(){
"step 0"
@ -2993,7 +2994,7 @@ character.shenhua={
hunzi_info:'觉醒技回合开始阶段若你的体力为1你须减1点体力上限并永久获得技能“英姿”和“英魂”。',
zhiba_info:'主公技,其他吴势力角色的出牌阶段,可与你进行一次拼点,若该角色没赢,你可以获得双方拼点的牌;你的觉醒技发动后,你可以拒绝此拼点。每回合限一次。',
zhijian_info:'出牌阶段,你可以将你手牌中的一张装备牌置于一名其他角色装备区里(不得替换原装备),然后摸一张牌。',
guzheng_info:'其他角色的弃牌阶段结束时,你可将此阶段中弃掉的一张牌从弃牌堆返回该角色手牌;若如此做,你可以获得弃牌堆里其余于此阶段中弃掉的牌。',
guzheng_info:'其他角色的弃牌阶段结束时,你可将其弃置的一张牌返回其手牌,然后获得其弃置的其它牌',
beige_info:'一名角色每受到【杀】造成的一次伤害你可以弃一张牌并令其进行一次判定判定结果为♥该角色回复1点体力该角色摸两张牌♣伤害来源弃两张牌♠伤害来源将其武将牌翻面',
duanchang_info:'锁定技,杀死你的角色失去当前的所有技能直到游戏结束。',
// fushen_info:'回合开始前,你可以选择与任意一名角色交换控制权,该角色可选择在下一个回合开始前与你换回',

View File

@ -5225,7 +5225,7 @@ character.swd={
content:lib.translate[link+'_info']
});
game.addVideo('markCharacter',player,{
name:'get.translation(link)',
name:get.translation(link),
content:lib.translate[link+'_info'],
id:'tianshu',
target:target.name

View File

@ -3,18 +3,18 @@ character.xiake={
character:{
// xk_dongfangweiming:['male','shu',4,[]],
xk_guyuexuan:['male','qun',4,['rouquan','gzhenji']],
xk_jinji:['male','shu',4,['xueren','lianpo']],
xk_jinji:['male','shu',4,['lingfeng','lianpo']],
// xk_shenxiangyun:['female','wei',3,['zhenjiu']],
xk_fujianhan:['male','qun',4,['zuijian','zitong']],
},
skill:{
xueren:{
lingfeng:{
trigger:{source:'damageEnd'},
filter:function(event,player){
return event.parent.name!='xueren'&&event.player.isAlive();
return event.parent.name!='lingfeng'&&event.player.isAlive();
},
prompt:function(event,player){
return '是否对'+get.translation(event.player)+'发动【血刃】?';
return '是否对'+get.translation(event.player)+'发动【凌锋】?';
},
check:function(event,player){
if(ai.get.damageEffect(event.player,player,player)>0&&
@ -140,8 +140,8 @@ character.xiake={
xk_jinji:'荆棘',
xk_shenxiangyun:'沈湘芸',
xk_fujianhan:'傅剑寒',
xueren:'血刃',
xueren_info:'每当你造成一次伤害,你可流失一点体力并对目标再造成一点伤害',
lingfeng:'凌锋',
lingfeng_info:'每当你造成一次伤害,你可流失一点体力并对目标再造成一点伤害',
gzhenji:'震击',
gzhenji_info:'你使用杀造成伤害后,可以摸一张牌,并且本回合内可以额外使用一张杀',
rouquan:'柔拳',

View File

@ -168,7 +168,7 @@ character.yxs={
return 6-ai.get.value(card);
},
ai:{
order:7.5,
order:2,
result:{
target:function(player,target){
if(target.isLinked()) return 1;

View File

@ -1629,7 +1629,7 @@
if(this.innerHTML!='已隐藏'){
this.innerHTML='已隐藏';
game.saveConfig('hiddenModePack',['stone','chess','boss']);
game.saveConfig('hiddenCardPack',['zhenfa','qimou','yibao','shenbing','swd','shenqi','hearth','compensate']);
game.saveConfig('hiddenCardPack',['zhenfa','yunchou','swd','shenqi','hearth','compensate']);
game.saveConfig('hiddenCharacterPack',['diy','yxs','hearth','swd','gujian','xianjian','xiake','boss']);
var that=this;
setTimeout(function(){
@ -7283,6 +7283,43 @@
}
}
},
markSkillCharacter:function(target,name,content,id){
if(typeof target=='object'){
target=target.name;
}
if(this.marks[id]){
if(this.marks[id]._name==target){
return this;
}
this.marks[id].name=name+'_charactermark';
this.marks[id]._name=target;
this.marks[id].info={
name:name,
content:content
};
this.marks[id].setBackground(target,'character');
game.addVideo('changeMarkCharacter',this,{
id:id,
name:name,
content:content,
target:target
});
}
else{
this.marks[id]=this.markCharacter(target,{
name:name,
content:content
});
this.marks[id]._name=target;
game.addVideo('markCharacter',this,{
name:name,
content:content,
id:id,
target:target
});
}
return this;
},
markCharacter:function(name,info,learn,learn2){
if(typeof name=='object'){
name=name.name;
@ -10867,6 +10904,15 @@
console.log(player);
}
},
changeMarkCharacter:function(player,content){
if(player&&content&&player.marks[content.id]){
player.marks[content.id].info={
name:content.name,
content:content.content
};
player.marks[content.id].setBackground(content.target,'character');
}
},
mark:function(player,content){
if(player&&content){
var mark=player.mark(content.id,content);
@ -13533,6 +13579,17 @@
}
return list;
},
findCards:function(func){
var cards=[];
for(var i in lib.card){
if(!lib.translate[i+'_info']) continue;
if(lib.card[i].mode&&lib.card[i].mode.contains(lib.config.mode)==false) continue;
if(func(i,lib.card[i])){
cards.push(i);
}
}
return cards;
},
players:[],
dead:[],
imported:[],
@ -19210,7 +19267,7 @@
var clicklayer=function(e){
uiintro.delete();
this.remove();
game.resume2();
if(!ui.arena.classList.contains('menupaused')) game.resume2();
e.stopPropagation();
return false;
}
@ -19222,7 +19279,7 @@
var clickintro=function(){
layer.remove();
this.delete();
game.resume2();
if(!ui.arena.classList.contains('menupaused')) game.resume2();
};
uiintro.addEventListener('mouseleave',clickintro);
uiintro.addEventListener('click',clickintro);

View File

@ -23,9 +23,7 @@ card.pack={
guozhan:'国战',
mingzhong:'忠胆英杰',
zhenfa:'阵法',
qimou:'奇谋',
yibao:'异宝',
shenbing:'神兵',
yunchou:'运筹帷幄',
swd:'轩辕剑',
shenqi:'上古神器',
hearth:'炉石传说',

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -1041,8 +1041,8 @@ mode.identity={
case 'zhong':case 'mingzhong': return 6;
case 'nei':
if(game.players.length==2) return -10;
if(zhongmode&&to.ai.sizhong) return 6;
if(get.population('fan')==0) return -0.5;
if(zhongmode&&to.ai.sizhong&&to.ai.shown<1) return 6;
if(get.population('fan')==1&&get.population('nei')==1&&game.players.length==3){
var fan;
for(var i=0;i<game.players.length;i++){
@ -1082,8 +1082,8 @@ mode.identity={
case 'zhu': return 10;
case 'zhong':case 'mingzhong': return 4;
case 'nei':
if(zhongmode&&to.ai.sizhong) return 6;
if(get.population('fan')==0) return -2;
if(zhongmode&&to.ai.sizhong&&to.ai.shown<1) return 6;
return Math.min(3,-situation);
case 'fan': return -8;
}