This commit is contained in:
libccy 2015-09-22 11:53:35 +08:00
parent 507dcea9ea
commit e55ad39a76
10 changed files with 217 additions and 39 deletions

View File

@ -1,6 +1,2 @@
1.2.11 1.2.12
火攻bug AI
铁索结算问题
酒杀AI
新卡
牌堆修正

View File

@ -389,7 +389,7 @@ card.hearth={
filterTarget:function(card,player,target){return player==target}, filterTarget:function(card,player,target){return player==target},
content:function(){ content:function(){
target.gainMaxHp(); target.gainMaxHp();
target.loseHp(); target.discard(target.get('h'));
}, },
ai:{ ai:{
basic:{ basic:{
@ -399,12 +399,9 @@ card.hearth={
order:1, order:1,
result:{ result:{
target:function(player,target){ target:function(player,target){
if(target.hp==target.maxHp){ var nh=target.num('h');
if(target.num('h','tao')) return 1; if(nh<=1) return 1;
if(target.num('h','caoyao')) return 1; if(nh==2&&target.hp==target.maxHp) return 1;
if(target.num('h','zhiliaobo')) return 1;
if(target.num('h')<target.hp) return 1;
}
return 0; return 0;
}, },
}, },
@ -485,9 +482,7 @@ card.hearth={
type:'trick', type:'trick',
enable:true, enable:true,
selectTarget:-1, selectTarget:-1,
filterTarget:function(card,player,target){ filterTarget:true,
return target.num('he')>0;
},
content:function(){ content:function(){
"step 0" "step 0"
target.chooseToDiscard([1,2],'he').ai=function(card){ target.chooseToDiscard([1,2],'he').ai=function(card){
@ -525,6 +520,7 @@ card.hearth={
if(target==player) nh--; if(target==player) nh--;
if(nh==2) return -2.5; if(nh==2) return -2.5;
if(nh==1) return -3; if(nh==1) return -3;
if(nh==0) return -4;
return -2; return -2;
}, },
}, },
@ -558,9 +554,9 @@ card.hearth={
zhiliaobo:'治疗波', zhiliaobo:'治疗波',
zhiliaobo_info:'对一名受伤角色使用,令其回复一点体力,若其仍处于受伤状态,则进行一次判定,若结果为红色则再回复一点体力', zhiliaobo_info:'对一名受伤角色使用,令其回复一点体力,若其仍处于受伤状态,则进行一次判定,若结果为红色则再回复一点体力',
yuansuhuimie:'元素毁灭', yuansuhuimie:'元素毁灭',
yuansuhuimie_info:'对所有有手牌的角色使用令目标弃置1~2张牌并受到2-X点雷电伤害X为其弃置的手牌数', yuansuhuimie_info:'对所有角色使用令目标弃置1~2张牌并受到2-X点雷电伤害X为其弃置的手牌数',
xingjiegoutong:'星界沟通', xingjiegoutong:'星界沟通',
xingjiegoutong_info:'增加一点体力上限,然后流失一点体力', xingjiegoutong_info:'增加一点体力上限,弃置你的所有手牌',
tanshezhiren:'弹射之刃', tanshezhiren:'弹射之刃',
tanshezhiren_info:'弃置一名随机角色的手牌,重复此过程直到有一名角色失去最后一张手牌', tanshezhiren_info:'弃置一名随机角色的手牌,重复此过程直到有一名角色失去最后一张手牌',
chuansongmen:'传送门', chuansongmen:'传送门',

View File

@ -205,7 +205,10 @@ card.qimou={
ai:{ ai:{
order:9, order:9,
result:{ result:{
target:-1 target:function(player,target){
if(target.num('e')) return -1;
return 0;
}
}, },
tag:{ tag:{
multitarget:1, multitarget:1,

View File

@ -8,7 +8,7 @@ character.hearth={
hs_malfurion:['male','wu',4,['jihuo'],['fullskin']], hs_malfurion:['male','wu',4,['jihuo'],['fullskin']],
hs_guldan:['male','qun',3,['fenliu','hongxi'],['fullskin']], hs_guldan:['male','qun',3,['fenliu','hongxi'],['fullskin']],
hs_anduin:['male','qun',3,['shengguang','shijie','anying'],['fullskin']], hs_anduin:['male','qun',3,['shengguang','shijie','anying'],['fullskin']],
hs_sthrall:['male','wu',4,['tuteng','tzhenji'],['fullskin']], hs_sthrall:['male','wu',4,['tuteng','guozai'],['fullskin']],
hs_waleera:['female','qun',3,['jianren','mengun','wlianji'],['fullskin']], hs_waleera:['female','qun',3,['jianren','mengun','wlianji'],['fullskin']],
hs_medivh:['male','wei',3,['jingxiang','moying','mdzhoufu'],['fullskin']], hs_medivh:['male','wei',3,['jingxiang','moying','mdzhoufu'],['fullskin']],
@ -28,7 +28,7 @@ character.hearth={
hs_wujiyuansu:['male','qun',3,['wujiwuji'],['fullskin']], hs_wujiyuansu:['male','qun',3,['wujiwuji'],['fullskin']],
hs_mijiaojisi:['female','qun',3,['kuixin'],['fullskin']], hs_mijiaojisi:['female','qun',3,['kuixin'],['fullskin']],
hs_huzhixiannv:['female','wu',3,['jingmeng','qingliu'],['fullskin']], hs_huzhixiannv:['female','wu',3,['jingmeng','qingliu'],['fullskin']],
hs_tgolem:['male','qun',4,['guozai'],['fullskin']], // hs_tgolem:['male','qun',4,['guozai'],['fullskin']],
hs_totemic:['male','wu',3,['s_tuteng'],['fullskin']], hs_totemic:['male','wu',3,['s_tuteng'],['fullskin']],
}, },
perfectPair:{ perfectPair:{
@ -1211,11 +1211,11 @@ character.hearth={
game.delay(0.5); game.delay(0.5);
var target=result.targets[0]; var target=result.targets[0];
player.logSkill('tzhenji',target,'thunder'); player.logSkill('tzhenji',target,'thunder');
target.damage('thunder');
var cs=target.get('he'); var cs=target.get('he');
if(cs.length){ if(cs.length){
target.discard(cs.randomGet()); target.discard(cs.randomGet());
} }
target.damage('thunder');
player.addTempSkill('tzhenji2','phaseAfter'); player.addTempSkill('tzhenji2','phaseAfter');
} }
}, },
@ -1232,6 +1232,27 @@ character.hearth={
} }
}, },
tzhenji2:{}, tzhenji2:{},
zuling:{
trigger:{player:'phaseBegin'},
forced:true,
filter:function(event,player){
if(player.storage.zuling) return false;
var rand=['tuteng1','tuteng2','tuteng3','tuteng4'];
var num=0;
for(var i=0;i<player.skills.length;i++){
if(rand.contains(player.skills[i])) num++;
if(num>=3) return true;
}
return false;
},
content:function(){
var rand=['tuteng1','tuteng2','tuteng3','tuteng4'];
for(var i=0;i<rand.length;i++){
player.removeSkill(rand[i]);
}
player.storage.zuling=true;
}
},
tzhenji_old:{ tzhenji_old:{
trigger:{player:['useCard','respondEnd']}, trigger:{player:['useCard','respondEnd']},
filter:function(event){ filter:function(event){
@ -1334,6 +1355,7 @@ character.hearth={
s_tuteng:{ s_tuteng:{
trigger:{player:'phaseBegin'}, trigger:{player:'phaseBegin'},
forced:true, forced:true,
unique:true,
content:function(){ content:function(){
var rand=['tuteng1','tuteng2','tuteng4', var rand=['tuteng1','tuteng2','tuteng4',
'tuteng5','tuteng6','tuteng7']; 'tuteng5','tuteng6','tuteng7'];
@ -1365,24 +1387,118 @@ character.hearth={
tuteng:{ tuteng:{
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
filter:function(event,player){ unique:true,
var rand=['tuteng1','tuteng2','tuteng3','tuteng4']; direct:true,
for(var i=0;i<player.skills.length;i++){ check:function(){
rand.remove(player.skills[i]); return 0;
if(rand.length==0) return false; },
delay:0,
init:function(){
for(var i=1;i<=8;i++){
lib.translate['tuteng'+i+'_info']=lib.skill['tuteng'+i].intro.content;
} }
return true;
}, },
position:'he', position:'he',
content:function(){ content:function(){
'step 0'
var rand=['tuteng1','tuteng2','tuteng3','tuteng4']; var rand=['tuteng1','tuteng2','tuteng3','tuteng4'];
var rand2=[];
var randx=[];
var rand2x=[];
if(player.storage.tuteng_awake){
rand=rand.concat(['tuteng5','tuteng6','tuteng7','tuteng8']);
}
for(var i=0;i<player.skills.length;i++){ for(var i=0;i<player.skills.length;i++){
if(rand.contains(player.skills[i])){
rand.remove(player.skills[i]); rand.remove(player.skills[i]);
rand2.push(player.skills[i]);
}
} }
if(rand.length){ if(rand.length){
if(event.isMine()&&rand.length>1){
var dialog=ui.create.dialog();
for(var i=0;i<rand.length;i++){
randx[i]=['','',rand[i]];
}
for(var i=0;i<rand2.length;i++){
rand2x[i]=['','',rand2[i]];
}
dialog.add('选择一个图腾');
dialog.add([randx,'vcard']);
if(rand2.length>=3){
dialog.add('替换一个已有图腾');
dialog.add([rand2x,'vcard']);
player.chooseButton(dialog,2,true).filterButton=function(button){
if(ui.selected.buttons.length){
var current=ui.selected.buttons[0].name;
if(rand.contains(current)){
return rand2.contains(button.name);
}
else{
return rand.contains(button.name);
}
}
return true;
};
}
else{
player.chooseButton(dialog,true);
}
for(var i=0;i<dialog.buttons.length;i++){
var item=dialog.buttons[i]
if(i==4){
item.parentNode.insertBefore(document.createElement('br'),item);
}
item.style.zoom=0.7;
}
}
else{
if(player.hp<player.maxHp&&rand.contains('tuteng1')){
player.addSkill('tuteng1');
}
else{
player.addSkill(rand.randomGet()); player.addSkill(rand.randomGet());
} }
player.addTempSkill('tuteng_h','phaseAfter'); if(rand2.length>=3){
player.removeSkill(rand2.randomGet());
}
game.delay();
event.finish();
}
}
else{
event.finish();
}
'step 1'
if(result.buttons.length==1){
player.addSkill(result.buttons[0].name);
}
else if(result.buttons.length==2){
var skill1=result.buttons[0].name;
var skill2=result.buttons[1].name;
if(player.skills.contains(skill1)){
player.removeSkill(skill1);
player.addSkill(skill2);
}
else{
player.removeSkill(skill2);
player.addSkill(skill1);
}
}
player.addSkill(event.choice);
if(!player.storage.tuteng_awake){
var rand=['tuteng1','tuteng2','tuteng3','tuteng4',
'tuteng5','tuteng6','tuteng7','tuteng8'];
var num=0;
for(var i=0;i<player.skills.length;i++){
if(rand.contains(player.skills[i])) num++;
if(num>=3){
player.storage.tuteng_awake=true;
player.popup('图腾已解锁');
break;
}
}
}
}, },
ai:{ ai:{
order:11, order:11,
@ -1391,7 +1507,7 @@ character.hearth={
}, },
effect:function(card,player){ effect:function(card,player){
if(get.tag(card,'damage')){ if(get.tag(card,'damage')){
if(player.skills.contains('jueqing')) return [1,1]; if(player.skills.contains('jueqing')) return;
return 1.2; return 1.2;
} }
}, },
@ -1411,14 +1527,16 @@ character.hearth={
forced:true, forced:true,
popup:false, popup:false,
filter:function(event,player){ filter:function(event,player){
var tuteng=['tuteng1','tuteng2','tuteng3','tuteng4']; var tuteng=['tuteng1','tuteng2','tuteng3','tuteng4',
'tuteng5','tuteng6','tuteng7','tuteng8'];
for(var i=0;i<player.skills.length;i++){ for(var i=0;i<player.skills.length;i++){
if(tuteng.contains(player.skills[i])) return true; if(tuteng.contains(player.skills[i])) return true;
} }
return false; return false;
}, },
content:function(){ content:function(){
var tuteng=['tuteng1','tuteng2','tuteng3','tuteng4']; var tuteng=['tuteng1','tuteng2','tuteng3','tuteng4',
'tuteng5','tuteng6','tuteng7','tuteng8'];
var rand=[]; var rand=[];
for(var i=0;i<player.skills.length;i++){ for(var i=0;i<player.skills.length;i++){
if(tuteng.contains(player.skills[i])){ if(tuteng.contains(player.skills[i])){
@ -1432,6 +1550,7 @@ character.hearth={
}, },
tuteng1:{ tuteng1:{
mark:'image', mark:'image',
nopop:true,
intro:{ intro:{
content:'回合结束阶段,你回复一点体力' content:'回合结束阶段,你回复一点体力'
}, },
@ -1446,6 +1565,7 @@ character.hearth={
}, },
tuteng2:{ tuteng2:{
mark:'image', mark:'image',
nopop:true,
intro:{ intro:{
content:'每当你造成一点伤害,你摸一张牌' content:'每当你造成一点伤害,你摸一张牌'
}, },
@ -1460,6 +1580,7 @@ character.hearth={
}, },
tuteng3:{ tuteng3:{
mark:'image', mark:'image',
nopop:true,
intro:{ intro:{
content:'你受到的伤害-1' content:'你受到的伤害-1'
}, },
@ -1474,6 +1595,7 @@ character.hearth={
}, },
tuteng4:{ tuteng4:{
mark:'image', mark:'image',
nopop:true,
intro:{ intro:{
content:'你的锦囊牌造成的伤害+1' content:'你的锦囊牌造成的伤害+1'
}, },
@ -1488,6 +1610,7 @@ character.hearth={
}, },
tuteng5:{ tuteng5:{
mark:'image', mark:'image',
nopop:true,
intro:{ intro:{
content:'回合结束阶段,你摸一张牌' content:'回合结束阶段,你摸一张牌'
}, },
@ -1499,6 +1622,7 @@ character.hearth={
}, },
tuteng6:{ tuteng6:{
mark:'image', mark:'image',
nopop:true,
intro:{ intro:{
content:'你的杀造成的伤害+1' content:'你的杀造成的伤害+1'
}, },
@ -1513,6 +1637,7 @@ character.hearth={
}, },
tuteng7:{ tuteng7:{
mark:'image', mark:'image',
nopop:true,
intro:{ intro:{
content:'回合结束阶段,你令一名其他角色回复一点体力' content:'回合结束阶段,你令一名其他角色回复一点体力'
}, },
@ -1540,6 +1665,18 @@ character.hearth={
} }
} }
}, },
tuteng8:{
mark:'image',
nopop:true,
intro:{
content:'当计算你与其它角色的距离时,始终-1'
},
mod:{
globalFrom:function(from,to,distance){
return distance-1;
}
}
},
fenliu:{ fenliu:{
enable:'phaseUse', enable:'phaseUse',
prompt:'流失1点体力并摸两张牌', prompt:'流失1点体力并摸两张牌',
@ -1586,24 +1723,51 @@ character.hearth={
card:{ card:{
tuteng1:{ tuteng1:{
image:'card/tuteng1', image:'card/tuteng1',
color:'white',
noname:true,
textShadow:'black 0 0 2px',
}, },
tuteng2:{ tuteng2:{
image:'card/tuteng2', image:'card/tuteng2',
color:'white',
noname:true,
textShadow:'black 0 0 2px',
}, },
tuteng3:{ tuteng3:{
image:'card/tuteng3', image:'card/tuteng3',
color:'white',
noname:true,
textShadow:'black 0 0 2px',
}, },
tuteng4:{ tuteng4:{
image:'card/tuteng4', image:'card/tuteng4',
color:'white',
noname:true,
textShadow:'black 0 0 2px',
}, },
tuteng5:{ tuteng5:{
image:'card/tuteng5', image:'card/tuteng5',
color:'white',
noname:true,
textShadow:'black 0 0 2px',
}, },
tuteng6:{ tuteng6:{
image:'card/tuteng6', image:'card/tuteng6',
color:'white',
noname:true,
textShadow:'black 0 0 2px',
}, },
tuteng7:{ tuteng7:{
image:'card/tuteng7', image:'card/tuteng7',
color:'white',
noname:true,
textShadow:'black 0 0 2px',
},
tuteng8:{
image:'card/tuteng8',
color:'white',
noname:true,
textShadow:'black 0 0 2px',
}, },
}, },
translate:{ translate:{
@ -1711,7 +1875,9 @@ character.hearth={
jingxiang:'镜像', jingxiang:'镜像',
jingxiang_info:'每当你需要打出卡牌时,你可以观看一名随机角色的手牌并将其视为你的手牌打出', jingxiang_info:'每当你需要打出卡牌时,你可以观看一名随机角色的手牌并将其视为你的手牌打出',
tuteng:'图腾', tuteng:'图腾',
tuteng_info:'出牌阶段限一次,你可以随机获得一个图腾,并令你本回合的手牌上限-1每当你受到一次伤害你随机失去一个图腾', tuteng_info:'出牌阶段你可以获得一个基础图腾当你的图腾数量达到3时你解锁全部图腾每当你受到一次伤害你随机失去一个图腾',
zuling:'祖灵',
zuling_info:'觉醒技回合开始阶段若你拥有至少3个图腾你失去所有图腾并解锁强化图腾',
tuteng1:'治疗图腾', tuteng1:'治疗图腾',
tuteng2:'灼热图腾', tuteng2:'灼热图腾',
tuteng3:'石爪图腾', tuteng3:'石爪图腾',
@ -1719,6 +1885,7 @@ character.hearth={
tuteng5:'法力之潮图腾', tuteng5:'法力之潮图腾',
tuteng6:'火舌图腾', tuteng6:'火舌图腾',
tuteng7:'活力图腾', tuteng7:'活力图腾',
tuteng8:'图腾魔像',
tzhenji:'震击', tzhenji:'震击',
tzhenji_info:'每当你因弃置而失去黑色牌可对一名角色造成1点雷电伤害并随机弃置其一张牌每回合限发动一次', tzhenji_info:'每当你因弃置而失去黑色牌可对一名角色造成1点雷电伤害并随机弃置其一张牌每回合限发动一次',
fenliu:'分流', fenliu:'分流',

View File

@ -78,6 +78,7 @@ character.jiange={
"step 1" "step 1"
if(event.targets.length){ if(event.targets.length){
event.targets.shift().damage('thunder'); event.targets.shift().damage('thunder');
event.redo();
} }
} }
}, },

View File

@ -2028,6 +2028,7 @@ character.swd={
} }
player.draw(); player.draw();
player.useCard({name:'sha'},cards,targets,'jianji',false).animate=false; player.useCard({name:'sha'},cards,targets,'jianji',false).animate=false;
player.line(targets,'fire');
"step 1" "step 1"
if(event.added){ if(event.added){
player.skills.remove('unequip'); player.skills.remove('unequip');

View File

@ -2051,7 +2051,7 @@ character.yijiang={
player.getStat('skill').qice--; player.getStat('skill').qice--;
for(var i in lib.card){ for(var i in lib.card){
if(lib.card[i].mode&&lib.card[i].mode.contains(lib.config.mode)==false) continue; if(lib.card[i].mode&&lib.card[i].mode.contains(lib.config.mode)==false) continue;
if(lib.card[i].type=='trick') list.push(['','',i]); if(lib.card[i].type=='trick') list.push(['锦囊','',i]);
} }
var dialog=ui.create.dialog([list,'vcard']); var dialog=ui.create.dialog([list,'vcard']);
player.chooseButton(dialog,function(button){ player.chooseButton(dialog,function(button){

View File

@ -4320,6 +4320,9 @@
if(this.node.background.innerHTML.length>1) this.node.background.classList.add('tight'); if(this.node.background.innerHTML.length>1) this.node.background.classList.add('tight');
else this.node.background.classList.remove('tight'); else this.node.background.classList.remove('tight');
} }
if(lib.card[card[2]].noname){
this.node.name.style.display='none';
}
if(lib.card[card[2]].color){ if(lib.card[card[2]].color){
this.style.color=lib.card[card[2]].color; this.style.color=lib.card[card[2]].color;
} }
@ -10739,6 +10742,7 @@
var skills=node.skills; var skills=node.skills;
var skills2=game.filterSkills(node.skills,node); var skills2=game.filterSkills(node.skills,node);
for(i=0;i<skills.length;i++){ for(i=0;i<skills.length;i++){
if(lib.skill[skills[i]]&&lib.skill[skills[i]].nopop) continue;
if(lib.translate[skills[i]+'_info']){ if(lib.translate[skills[i]+'_info']){
translation=get.translation(skills[i]).slice(0,2); translation=get.translation(skills[i]).slice(0,2);
if(!skills2.contains(skills[i])){ if(!skills2.contains(skills[i])){
@ -10828,7 +10832,7 @@
if(typeof info.mark=='function'){ if(typeof info.mark=='function'){
var stint=info.mark(uiintro,player.storage[node.skill],player); var stint=info.mark(uiintro,player.storage[node.skill],player);
if(stint){ if(stint){
if(stint.length<=10){ if(stint.length<=100){
uiintro.add('<div class="text center">'+stint+'</div>'); uiintro.add('<div class="text center">'+stint+'</div>');
} }
else{ else{
@ -10842,7 +10846,7 @@
if(stint[0]=='$'){ if(stint[0]=='$'){
uiintro.add('<div class="caption">'+stint.slice(1)+'</div>'); uiintro.add('<div class="caption">'+stint.slice(1)+'</div>');
} }
else if(stint.length<=10){ else if(stint.length<=100){
uiintro.add('<div class="text center">'+stint+'</div>'); uiintro.add('<div class="text center">'+stint+'</div>');
} }
else{ else{
@ -10886,8 +10890,13 @@
} }
} }
else if(lib.translate[name+'_info']){ else if(lib.translate[name+'_info']){
if(lib.translate[name+'_info'].length<=100){
uiintro.add('<div class="text center">'+lib.translate[name+'_info']+'</div>');
}
else{
uiintro.add('<div class="text">'+lib.translate[name+'_info']+'</div>'); uiintro.add('<div class="text">'+lib.translate[name+'_info']+'</div>');
} }
}
uiintro.add(ui.create.div('.placeholder.slim')); uiintro.add(ui.create.div('.placeholder.slim'));
} }
else if(node.classList.contains('character')){ else if(node.classList.contains('character')){

BIN
image/card/tuteng8.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@ -27,6 +27,11 @@ html{
text-shadow:none; text-shadow:none;
background: url('wood3.png'); background: url('wood3.png');
} }
.marks>.card:not(.fullskin){
color: white;
text-shadow: black 0 0 2px;
background: linear-gradient(#4b4b4b, #464646);
}
#me>div>.card,#arena>.card:not(*:empty){ #me>div>.card,#arena>.card:not(*:empty){
box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px; box-shadow: rgba(0, 0, 0, 0.2) 0 0 0 1px, rgba(0, 0, 0, 0.45) 0 3px 10px;
} }