This commit is contained in:
libccy 2017-01-18 16:58:53 +08:00
parent 9fca1cb77e
commit c306e2c870
16 changed files with 235 additions and 95 deletions

View File

@ -8,11 +8,50 @@ character.gujian={
gjqt_hongyu:['female','shu',4,['jianwu','meiying']],
gjqt_yuewuyi:['male','wei',4,['yanjia','xiuhua','liuying']],
gjqt_wenrenyu:['female','shu',4,['jizhan','qianjun']],
gjqt_wenrenyu:['female','shu',4,['chizhen','dangping']],
gjqt_xiayize:['male','qun',3,['xuanning','liuguang','yangming']],
gjqt_aruan:['female','wu',3,['zhaolu','jiehuo','yuling']],
},
skill:{
chizhen:{
trigger:{player:'phaseUseBegin'},
frequent:true,
content:function(){
'step 0'
event.num=Math.max(1,player.maxHp-player.hp);
player.draw(event.num);
'step 1'
player.chooseToDiscard('he',event.num,true);
'step 2'
var useCard=false;
if(result.bool&&result.cards){
for(var i=0;i<result.cards.length;i++){
if(result.cards[i].name=='sha'){
useCard=true;break;
}
}
}
if(useCard){
player.chooseTarget('是否视为使用一张决斗?',function(card,player,target){
return lib.filter.targetEnabled({name:'juedou'},player,target);
}).set('ai',function(target){
return ai.get.effect(target,{name:'juedou'},_status.event.player);
});
}
else{
event.finish();
}
'step 3'
if(result.bool){
player.useCard({name:'juedou'},result.targets);
}
},
ai:{
threaten:function(player,target){
return Math.sqrt(Math.max(1,target.maxHp-target.hp));
}
}
},
xiuhua:{
trigger:{global:'loseEnd'},
filter:function(event,player){
@ -1295,6 +1334,8 @@ character.gujian={
gjqt_xiayize:'夏夷则',
gjqt_aruan:'阿阮',
chizhen:'驰阵',
chizhen_info:'出牌阶段开始时你可以摸X张牌并弃置X张牌若你弃置了杀可以视为使用一张决斗X为你已损失的体力值+1',
xidie:'戏蝶',
xidie2:'戏蝶',
xidie_info:'回合开始阶段若你的手牌数大于体力值可以弃置至多X张牌并于回合结束阶段摸等量的牌X为你的体力值与手牌数之差且不超过3',
@ -1314,7 +1355,7 @@ character.gujian={
fumo:'伏魔',
fumo_info:'每当你受到一次伤害,可以弃置两张颜色相同的手牌并对伤害来源造成一点雷电伤害',
fanyin:'梵音',
fanyin_info:'回合结束阶段,你可以令一名角色重置武将牌。若其体力值是全场最少的之一,其回复一点体力。',
fanyin_info:'回合结束阶段,你可以令其他一名角色重置武将牌。若其体力值是全场最少的之一,其回复一点体力。',
mingkong:'明空',
mingkong_info:'锁定技,若你没有手牌,你受到的伤害-1然后伤害来源摸一张牌',
qinglan:'晴岚',

View File

@ -2,7 +2,7 @@
character.hearth={
character:{
hs_jaina:['female','wei',3,['huopu','aoshu','bingjia']],
hs_lrexxar:['male','shu',4,['shoulie','gongji']],
hs_lrexxar:['male','shu',4,['yushou']],
hs_wuther:['male','qun',4,['fengxian','jieming']],
hs_jgarrosh:['male','shu',4,['zhanhou','qiangxi']],
hs_malfurion:['male','wu',4,['jihuo']],
@ -11,8 +11,8 @@ character.hearth={
hs_sthrall:['male','wu',4,['tuteng','guozai','zuling']],
hs_waleera:['female','shu',3,['jianren','mengun','wlianji']],
hs_medivh:['male','wei',3,['jingxiang','moying','mdzhoufu']],
hs_alleria:['male','wu',3,['fengxing','qiaodong','liegong']],
hs_medivh:['male','wei',3,['jingxiang','zuzhou','mdzhoufu']],
hs_alleria:['male','wu',3,['fengxing','xinliegong']],
hs_magni:['male','shu',4,['zhongjia','dunji']],
hs_liadrin:['female','shu',4,['xueren']],
hs_morgl:['male','wu',3,['s_tuteng']],
@ -25,7 +25,7 @@ character.hearth={
hs_alakir:['male','wei',3,['fengnu','shengdun']],
hs_zhouzhuo:['male','qun',4,['yiwen']],
hs_yngvar:['male','qun',3,['huanwu']],
hs_bchillmaw:['male','wei',6,['hanshuang','bingshi']],
hs_bchillmaw:['male','wei',5,['hanshuang','bingshi']],
hs_malorne:['male','wu',3,['enze','chongsheng']],
hs_malygos:['male','wei',4,['malymowang']],
hs_xuefashi:['male','wei',2,['liehun','xjumo']],
@ -35,7 +35,7 @@ character.hearth={
hs_lrhonin:['male','wei',4,['bingyan','yufa']],
hs_bolvar:['male','wei',4,['yuanzheng','bzhuiji']],
hs_fuding:['male','wei',4,['shengdun','fbeifa']],
hs_xuanzhuanjijia:['male','shu',3,['jixuan']],
hs_xuanzhuanjijia:['male','shu',2,['jixuan']],
hs_ysera:['female','wu',4,['chenshui']],
hs_alextrasza:['female','shu',5,['fushi']],
hs_nozdormu:['male','qun',5,['shixu']],
@ -98,6 +98,93 @@ character.hearth={
hs_malfurion:['hs_malorne'],
},
skill:{
yushou:{
enable:'phaseUse',
filterCard:true,
position:'he',
check:function(card){
return 5-ai.get.value(card);
},
filter:function(event,player){
if(player.hasSkill('yushou_misha')&&player.hasSkill('yushou_huofu')&&player.hasSkill('yushou_leiouke')) return false;
return true;
},
content:function(){
if(!lib.character.stone_misha){
lib.character.stone_misha=['male','shu',3,['chaofeng'],['minskin','stone','mode:stone'],[3,3,'hunter']];
}
if(!lib.character.stone_huofu){
lib.character.stone_huofu=['male','qun',2,['stone_chongfeng'],['minskin','stone','mode:stone'],[3,4,'hunter']];
}
if(!lib.character.stone_leiouke){
lib.character.stone_leiouke=['male','shu',2,['hunter_zhanhuo'],['minskin','stone','mode:stone'],[3,1,'hunter']];
}
var list=['misha','leiouke','huofu'];
for(var i=0;i<list.length;i++){
if(player.hasSkill('yushou_'+list[i])){
list.splice(i--,1);
}
}
var skill=list.randomGet();
var name='yushou_'+skill;
player.addTempSkill(name,{player:'phaseBegin'});
player.markSkillCharacter(name,'stone_'+skill,lib.translate[name],lib.translate[name+'_info']);
},
ai:{
order:9.5,
result:{
player:1
}
}
},
yushou_misha:{
trigger:{player:'damageBegin'},
forced:true,
filter:function(event,player){
return event.num>=1;
},
usable:1,
content:function(){
if(trigger.num>=1){
trigger.num--;
}
},
ai:{
effect:{
target:function(card,player,target){
if(get.tag(card,'damage')){
if(player.hasSkill('jueqing')) return;
return 0.5;
}
}
}
},
},
yushou_huofu:{
enable:'phaseUse',
viewAs:{name:'juedou'},
filterCard:{color:'black'},
position:'he',
viewAsFilter:function(player){
if(!player.num('he',{color:'black'})) return false;
},
check:function(card){
return 6-ai.get.value(card);
},
ai:{
basic:{
order:10
}
}
},
yushou_leiouke:{
trigger:{source:'damageBegin'},
forced:true,
usable:1,
content:function(){
trigger.num++;
}
},
qingzun:{
subSkill:{
count:{
@ -2300,6 +2387,7 @@ character.hearth={
return event.parent.name!='jixuan';
},
content:function(){
player.draw();
player.phase();
},
ai:{
@ -3294,15 +3382,27 @@ character.hearth={
}
},
fengxing:{
trigger:{player:['useCard']},
frequent:true,
filter:function(event){
return event.card&&event.card.name=='sha';
trigger:{player:'loseEnd'},
direct:true,
filter:function(event,player){
return _status.currentPhase!=player&&!player.hasSkill('fengxing2')&&player.num('he')>0;
},
content:function(){
player.draw();
'step 0'
player.addTempSkill('fengxing2','phaseAfter');
player.chooseToDiscard('he',get.prompt('fengxing')).set('ai',function(card){
return 7-ai.get.value(card);
}).logSkill='fengxing';
'step 1'
if(result.bool){
player.draw(2);
}
},
ai:{
threaten:0.6
}
},
fengxing2:{},
fengxian:{
enable:'phaseUse',
usable:1,
@ -3664,9 +3764,9 @@ character.hearth={
}
},
bianxing2:{},
moying:{
zuzhou:{
trigger:{player:'phaseBegin'},
skillcheck:function(event,player){
filter:function(event,player){
if(!player.num('h',{suit:'spade'})) return false;
for(var i=0;i<game.players.length;i++){
if(game.players[i].num('j','shandian')){
@ -3681,26 +3781,11 @@ character.hearth={
},
content:function(){
'step 0'
if(!lib.skill.moying.skillcheck(trigger,player)){
player.draw();
event.finish();
return;
}
var card=null;
for(var i=0;i<ui.cardPile.childNodes.length;i++){
if(ui.cardPile.childNodes[i].name=='shandian'){
card=ui.cardPile.childNodes[i];break;
}
}
if(!card){
for(var i=0;i<ui.discardPile.childNodes.length;i++){
if(ui.discardPile.childNodes[i].name=='shandian'){
card=ui.discardPile.childNodes[i];break;
}
}
}
var card=get.cardPile('shandian',true);
if(card){
player.addJudge(card);
player.$draw(card);
game.delay();
}
else{
event.finish();
@ -3764,18 +3849,19 @@ character.hearth={
}
if(player.storage.mdzhoufu3.isAlive()){
// player.storage.mdzhoufu3.draw();
player.storage.mdzhoufu3.gain(player.judging[0],'gain2');
player.storage.mdzhoufu3.gain(player.judging[0]);
player.storage.mdzhoufu3.$gain2(player.judging[0]);
}
else{
ui.discardPile.appendChild(player.judging[0]);
game.delay(1.5);
}
player.removeSkill('mdzhoufu2');
"step 1"
player.judging[0]=player.storage.mdzhoufu2;
trigger.position.appendChild(player.storage.mdzhoufu2);
// trigger.untrigger();
game.log(player,'的判定牌改为',player.storage.mdzhoufu2);
player.removeSkill('mdzhoufu2');
delete player.storage.mdzhoufu2;
delete player.storage.mdzhoufu3;
},
@ -3783,7 +3869,7 @@ character.hearth={
content:'card'
},
},
moying_old:{
zuzhou_old:{
trigger:{player:'damageEnd',source:'damageEnd'},
check:function(event,player){
var target=(player==event.player)?event.source:event.player;
@ -3795,7 +3881,7 @@ character.hearth={
},
prompt:function(event,player){
var target=(player==event.player)?event.source:event.player;
return get.prompt('moying',target);
return get.prompt('zuzhou',target);
},
content:function(){
"step 0"
@ -3855,6 +3941,7 @@ character.hearth={
jingxiang:{
trigger:{player:'chooseToRespondBegin'},
direct:true,
usable:1,
filter:function(event,player){
if(event.responded) return false;
for(var i=0;i<game.players.length;i++){
@ -3866,27 +3953,31 @@ character.hearth={
},
content:function(){
"step 0"
var players=[];
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&game.players[i].num('h')){
players.push(game.players[i]);
}
}
if(!players.length){
event.finish();
return;
}
var target=players.randomGet();
event.target=target;
var cards=target.get('h');
player.chooseCardButton('镜像:选择'+get.translation(target)+'的一张卡手牌打出',cards).filterButton=function(button){
return trigger.filterCard(button.link);
}
player.chooseTarget(get.prompt('jingxiang'),function(card,player,target){
return target!=player&&target.num('h')>0;
}).ai=function(target){
return 1-ai.get.attitude(player,target);
};
"step 1"
if(result.bool){
player.logSkill('jingxiang',event.target);
var target=result.targets[0];
player.logSkill('jingxiang',target);
event.target=target;
var cards=target.get('h');
player.chooseCardButton('选择'+get.translation(target)+'的一张卡手牌打出',cards).filterButton=function(button){
return trigger.filterCard(button.link);
}
}
else{
event.finish();
}
"step 2"
if(result.bool){
game.log(player,'使用了',event.target,'的手牌');
event.target.$throw(result.links);
event.target.lose(result.links);
trigger.untrigger();
trigger.animate=false;
trigger.responded=true;
result.buttons[0].link.remove();
trigger.result={bool:true,card:result.buttons[0].link}
@ -3895,8 +3986,8 @@ character.hearth={
ai:{
effect:{
target:function(card){
if(get.tag(card,'respondShan')) return 0.7;
if(get.tag(card,'respondSha')) return 0.7;
if(get.tag(card,'respondShan')) return 0.4;
if(get.tag(card,'respondSha')) return 0.4;
}
}
},
@ -5248,6 +5339,14 @@ character.hearth={
hs_tyrande:'泰兰德',
hs_fenjie:'芬杰',
yushou:'御兽',
yushou_info:'出牌阶段,你可以弃置一张牌并召唤一个随机的野兽宠物,效果持续到你的下一回合开始',
yushou_misha:'米莎',
yushou_misha_info:'你每回合受到的首次伤害-1',
yushou_huofu:'霍弗',
yushou_huofu_info:'你可以将一张黑色牌当作决斗使用',
yushou_leiouke:'雷欧克',
yushou_leiouke_info:'你每回合造成的首次伤害+1',
hsqingyu_hufu:'青玉护符',
hsqingyu_hufu_info:'令一名角色获得一点护甲',
hsqingyu_zhao:'青玉之爪',
@ -5320,7 +5419,7 @@ character.hearth={
maoxian2:'冒险',
maoxian_info:'出牌阶段限两次,你可以从三个随机技能中选择一个作为你的技能',
tanmi:'探秘',
tanmi_info:'在一名其他角色的回合结束阶段,若你没有手牌,你可以摸两张牌并进行一个出牌阶段',
tanmi_info:'在一名其他角色的回合结束阶段,若你没有手牌,你可以摸两张牌并可以使用摸到的牌',
yiwen:'轶闻',
yiwen_info:'锁定技,每当其他角色于回合内首次使用卡牌指定你为惟一目标,你获得一张此牌的复制',
tanbao_old:'探宝',
@ -5386,7 +5485,7 @@ character.hearth={
qianghua:'绝手',
qianghua_info:'出牌阶段内,你可以令一张你使用的基本牌或非延时锦囊牌额外结算一次,每回合限一次',
jixuan:'疾旋',
jixuan_info:'锁定技,回合结束后,你进行一个额外的回合',
jixuan_info:'锁定技,回合结束后,你摸一张牌进行一个额外的回合',
biri:'蔽日',
biri_info:'每当距离你1以内的一名其他角色成为杀的惟一目标时若杀的使用者不是你你可以弃置一张闪取消之',
stuxi:'吐息',
@ -5476,7 +5575,7 @@ character.hearth={
aoshu_info:'出牌阶段限一次,你可以将一张黑桃牌当作无中生有使用',
fengxing:'风行',
fengxing_info:'每当你使用一张杀,你可以摸一张牌',
fengxing_info:'每当你于回合外首次失去牌,你可以弃置一张牌并摸两张牌',
xinci:'心刺',
xinci_info:'出牌阶段限一次,你可以弃置一张黑色牌令一名角色流失一点体力',
zhongjia:'战甲',
@ -5507,11 +5606,11 @@ character.hearth={
mdzhoufu:'缚魂',
mdzhoufu2:'缚魂',
mdzhoufu_info:'出牌阶段,你可以将一张黑色手牌置于一名其他角色的武将牌上,在其判定时以此牌作为判定结果,然后你获得亮出的判定牌',
moying:'诅咒',
moying_info:'锁定技,回合开始阶段,若场上没有闪电且你手牌中有黑桃牌,你将牌堆中的一张闪电置于你的判定区,否则你摸一张牌',
moying_old_info:'每当你造成或受到一次伤害,你可以令伤害目标或来源进行一次判定,若结果为黑色,其流失一点体力',
zuzhou:'诅咒',
zuzhou_info:'锁定技,回合开始阶段,若场上没有闪电且你手牌中有黑桃牌,你将牌堆中的一张闪电置于你的判定区',
zuzhou_old_info:'每当你造成或受到一次伤害,你可以令伤害目标或来源进行一次判定,若结果为黑色,其流失一点体力',
jingxiang:'镜像',
jingxiang_info:'每当你需要打出卡牌时,你可以观看一名随机角色的手牌并将其视为你的手牌打出',
jingxiang_info:'每回合限一次,当你需要打出卡牌时,你可以观看一名角色的手牌并将其视为你的手牌打出',
tuteng:'图腾',
tuteng_info:'出牌阶段,你可以获得一个随机图腾;每当你受到一次伤害,你随机失去一个图腾',
zuling:'祖灵',

View File

@ -19,6 +19,7 @@ window.characterRank={
],
ap:[
'swd_huiyan',
'hs_medivh',
'ow_dva',
'ow_mei',
'ow_yuanshi',
@ -82,7 +83,6 @@ window.characterRank={
'swd_hengai',
'jg_liubei',
're_huangyueying',
'hs_medivh',
'hs_bchillmaw',
'shen_zhugeliang',
'gjqt_fanglansheng',
@ -133,6 +133,7 @@ window.characterRank={
'huangzhong',
'pal_wangpengxu',
'yxs_luobinhan',
'hs_alleria',
],
am:[
'swd_duanmeng',
@ -294,7 +295,6 @@ window.characterRank={
'wutugu',
'swd_chunyuheng',
'hetaihou',
'hs_alleria',
'swd_fengtianling',
'kongrong',
'swd_qiner',

View File

@ -193,6 +193,9 @@ character.shenhua={
content:function(){
if(trigger.target.num('h')<=player.num('h')) trigger.directHit=true;
if(trigger.target.hp>=player.hp) player.addTempSkill('xinliegong2','shaAfter');
},
ai:{
threaten:0.5
}
},
xinliegong2:{

View File

@ -3060,7 +3060,7 @@ character.swd={
trigger:{source:'damageAfter'},
direct:true,
filter:function(event,player){
return event.parent.name!='dangping'&&!player.hasSkill('dangping2');
return event.parent.name!='dangping'&&!player.hasSkill('dangping2')&&player.num('he')>0;
},
content:function(){
"step 0"
@ -8619,7 +8619,7 @@ character.swd={
xielei:'挟雷',
xielei_info:'每当你使用或打出一张杀,可以弃置一张牌并对目标以外的一名角色造成一点雷电伤害',
dangping:'荡平',
dangping_info:'每当你造成一次伤害可以弃置一张手牌对其距离1以内的另一名角色造成一点伤害',
dangping_info:'每当你造成一次伤害可以弃置一张手牌对其距离1以内的另一名角色造成一点伤害,每回合限一次',
guisi:'归思',
guisi_info:'每当你成为杀的目标,你可以交给对方一张手牌并取消之',
duishi:'对诗',

View File

@ -5021,6 +5021,14 @@
window._status=_status;
},
p:function(name,i){
var list=['swd','hs','pal','gjqt','ow'];
if(!lib.character[name]){
for(var j=0;j<list.length;j++){
if(lib.character[list[j]+'_'+name]){
name=list[j]+'_'+name;break;
}
}
}
var target;
if(typeof i=='number'){
target=game.players[i];
@ -21003,11 +21011,12 @@
}
return null;
},
findCards:function(func){
findCards:function(func,all){
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(!all&&!lib.inpile.contains(i)) continue;
if(func(i,lib.card[i])){
cards.push(i);
}
@ -26217,9 +26226,9 @@
if(update.version!=lib.version||lib.config.debug){
var files=null;
var version=lib.version;
if(Array.isArray(update.files)&&update.minversion){
if(Array.isArray(update.files)&&update.update){
var version1=version.split('.');
var version2=update.minversion.split('.');
var version2=update.update.split('.');
for(var i=0;i<version1.length&&i<version2.length;i++){
if(version2[i]>version1[i]){
files=false;break;
@ -28563,16 +28572,12 @@
if(node.node.hp.childNodes.length==0){
node.node.name.style.top='8px';
}
// var name=get.translation(item);
node.node.name.innerHTML=get.slimName(item);
if(node.node.name.querySelectorAll('br').length>=4){
node.node.name.classList.add('long');
node.addEventListener('mouseenter',ui.click.buttonnameenter);
node.addEventListener('mouseleave',ui.click.buttonnameleave);
}
// for(var i=0;i<name.length;i++){
// node.node.name.innerHTML+=name[i]+'<br/>';
// }
node.node.intro.innerHTML=lib.config.intro;
if(!noclick){
if(lib.config.touchscreen){
@ -32816,7 +32821,7 @@
default: return 1;
}
},
cardPile:function(name){
cardPile:function(name,create){
var card;
for(var i=0;i<ui.cardPile.childNodes.length;i++){
card=ui.cardPile.childNodes[i];
@ -32844,6 +32849,9 @@
}
}
}
if(create){
return game.createCard(name);
}
return null;
},
aiStrategy:function(){

View File

@ -1,26 +1,15 @@
window.noname_update={
version:'1.9.4.1',
version:'1.9.4.2',
update:'1.9.4.1',
changeLog:[
'bug修复',
],
files:{
global:[
files:[
'game/game.js',
'game/config.js',
'character/shenhua.js',
'character/gujian.js',
'character/ow.js',
'character/swd.js',
'character/yijiang.js',
'character/yxs.js',
'character/sp.js',
'character/hearth.js',
'character/gujian.js',
'character/extra.js',
'card/guozhan.js',
'card/sp.js',
'card/swd.js',
],
'1.9.4':[],
}
'character/shenhua.js',
'character/rank.js',
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 KiB

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 80 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 79 KiB

After

Width:  |  Height:  |  Size: 75 KiB