This commit is contained in:
libccy 2016-06-09 23:06:55 +08:00
parent 5898a646c8
commit 0fa6033d5d
8 changed files with 528 additions and 32 deletions

View File

@ -45,12 +45,10 @@ card.hearth={
selectTarget:-1, selectTarget:-1,
content:function(){ content:function(){
target.skip('phaseDiscard'); target.skip('phaseDiscard');
if(target.num('h')<=target.hp){
target.draw(); target.draw();
}
}, },
ai:{ ai:{
order:1, order:10,
result:{ result:{
target:1 target:1
} }
@ -656,7 +654,7 @@ card.hearth={
zhaomingdan:'照明弹', zhaomingdan:'照明弹',
zhaomingdan_info:'弃置一名其他角色判定区内的所有牌,然后摸一张牌', zhaomingdan_info:'弃置一名其他角色判定区内的所有牌,然后摸一张牌',
jihuocard:'激活', jihuocard:'激活',
jihuocard_info:'跳过本回合的弃牌阶段,若你手牌数不大于当前体力值,则摸一张牌', jihuocard_info:'跳过本回合的弃牌阶段,摸一张牌',
}, },
list:[ list:[
['heart',2,'shenenshu'], ['heart',2,'shenenshu'],

View File

@ -1223,6 +1223,15 @@ character.hearth={
player.storage.fenlie++; player.storage.fenlie++;
player.gain(cards,'draw'); player.gain(cards,'draw');
}, },
ai:{
effect:{
target:function(card){
if(card.name=='toulianghuanzhu'){
return [1,2];
}
}
}
},
group:'fenlie2' group:'fenlie2'
}, },
fenlie2:{ fenlie2:{
@ -1671,14 +1680,13 @@ character.hearth={
}, },
content:function(){ content:function(){
"step 0" "step 0"
var noneed=(trigger.card.name=='tao'&&trigger.targets[0]==player&&player.hp==player.maxHp-1);
player.chooseTarget('是否发动【灵咒】?').ai=function(target){ player.chooseTarget('是否发动【灵咒】?').ai=function(target){
var num=ai.get.attitude(player,target); var num=ai.get.attitude(player,target);
if(num>0){ if(num>0){
if(noneed&&player==target){ if(target==player){
num=0.5; num++;
} }
else if(target.hp==1){ if(target.hp==1){
num+=3; num+=3;
} }
else if(target.hp==2){ else if(target.hp==2){
@ -2980,7 +2988,7 @@ character.hearth={
} }
}, },
jihuo:{ jihuo:{
trigger:{player:'phaseEnd'}, trigger:{player:'phaseAfter'},
filter:function(event,player){ filter:function(event,player){
return !player.storage.jihuo&&player.num('h')>0; return !player.storage.jihuo&&player.num('h')>0;
}, },
@ -4532,7 +4540,7 @@ character.hearth={
hongxi:'虹吸', hongxi:'虹吸',
hongxi_info:'锁定技,每当有一名角色死亡,你将体力回复至体力上限', hongxi_info:'锁定技,每当有一名角色死亡,你将体力回复至体力上限',
jihuo:'激活', jihuo:'激活',
jihuo_info:'回合结束阶段,你可以弃置一张手牌并进行一个额外的回合', jihuo_info:'在你的回合结束后,你可以弃置一张手牌并进行一个额外的回合',
jianren:'剑刃', jianren:'剑刃',
jianren_info:'出牌阶段限一次,你可以弃置装备区内的武器牌,对所有其他角色造成一点伤害', jianren_info:'出牌阶段限一次,你可以弃置装备区内的武器牌,对所有其他角色造成一点伤害',
mengun:'闷棍', mengun:'闷棍',

View File

@ -3,11 +3,11 @@ character.ow={
character:{ character:{
ow_liekong:['female','shu',3,['shanxian','shanhui']], ow_liekong:['female','shu',3,['shanxian','shanhui']],
// ow_heibaihe:['female','shu',3,[]], // ow_heibaihe:['female','shu',3,[]],
ow_sishen:['female','shu',3,[]], ow_sishen:['male','shu',3,['hongxi','anying']],
ow_tianshi:['female','shu',3,[]], ow_tianshi:['female','qun',3,['shouhu','ziyu','feiying']],
ow_falaozhiying:['female','shu',3,[]], ow_falaozhiying:['female','shu',3,['dangji','huoyu','feiying']],
ow_zhixuzhiguang:['female','shu',3,[]], ow_zhixuzhiguang:['female','qun',3,['guangshu']],
ow_luxiao:['female','shu',3,[]], ow_luxiao:['male','wu',3,['yuedong','kuoyin','huhuan']],
ow_shibing:['female','shu',3,[]], ow_shibing:['female','shu',3,[]],
ow_yuanshi:['female','shu',3,[]], ow_yuanshi:['female','shu',3,[]],
// ow_mei:['female','shu',3,[]], // ow_mei:['female','shu',3,[]],
@ -15,6 +15,448 @@ character.ow={
ow_chanyata:['female','shu',3,[]], ow_chanyata:['female','shu',3,[]],
}, },
skill:{ skill:{
huoyu:{
enable:'phaseUse',
unique:true,
mark:true,
skillAnimation:true,
animationColor:'fire',
init:function(player){
player.storage.huoyu=false;
},
filter:function(event,player){
if(player.storage.huoyu) return false;
return true;
},
filterTarget:function(card,player,target){
return player.canUse('chiyuxi',target);
},
filterCard:{color:'red'},
selectCard:2,
position:'he',
check:function(card){
return 7-ai.get.value(card);
},
selectTarget:-1,
multitarget:true,
multiline:true,
line:'fire',
content:function(){
'step 0'
targets.sort(lib.sort.seat);
player.unmarkSkill('huoyu');
player.storage.huoyu=true;
player.useCard({name:'chiyuxi'},targets).animate=false;
'step 1'
player.useCard({name:'chiyuxi'},targets).animate=false;
},
ai:{
order:5,
result:{
target:function(player,target){
if(player.hasUnknown()) return 0;
return ai.get.effect(target,{name:'chiyuxi'},player,target);
}
},
},
intro:{
content:'limited'
}
},
dangji:{
trigger:{source:'damageAfter'},
direct:true,
filter:function(event,player){
if(player.num('he')==0) return false;
if(!event.card) return false;
if(event.card.name!='sha') return false;
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=event.player&&get.distance(event.player,game.players[i])<=1) return true;
}
return false;
},
content:function(){
"step 0"
var eff=0;
var targets=[];
event.targets=targets;
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=trigger.player&&get.distance(trigger.player,game.players[i])<=1){
eff+=ai.get.damageEffect(game.players[i],player,player);
targets.push(game.players[i]);
}
}
player.chooseToDiscard('是否发动【荡击】?').set('ai',function(card){
if(eff>0) return 7-ai.get.value(card);
return 0;
}).set('logSkill',['dangji',targets]);
"step 1"
if(result.bool){
event.targets.sort(lib.sort.seat);
}
else{
event.finish();
}
"step 2"
if(event.targets.length){
event.targets.shift().damage();
event.redo();
}
},
mod:{
targetInRange:function(card,player,target){
if(card.name=='sha'){
if(get.distance(player,target)<=1) return false;
return true;
}
}
}
},
yuedong:{
trigger:{player:'phaseEnd'},
direct:true,
content:function(){
'step 0'
var num=1+player.storage.yuedong_num;
player.chooseTarget('是否发动【乐动】?',[1,num],function(card,player,target){
if(player.storage.yuedong_recover){
return target.hp<target.maxHp;
}
return true;
}).set('ai',function(target){
if(player.storage.yuedong_recover){
return ai.get.recoverEffect(target,player,player);
}
return ai.get.attitude(player,target)/Math.sqrt(2+target.num('h'));
});
'step 1'
if(result.bool){
player.logSkill('yuedong',result.targets);
var eff=1+player.storage.yuedong_eff;
if(player.storage.yuedong_recover){
result.targets.sort(lib.sort.seat);
for(var i=0;i<result.targets.length;i++){
result.targets[i].recover(eff);
}
}
else{
game.asyncDraw(result.targets,eff);
}
}
},
ai:{
expose:0.2,
threaten:1.6
}
},
huhuan:{
enable:'phaseUse',
filterCard:true,
selectCard:2,
position:'he',
filter:function(event,player){
return player.num('he')>1&&!player.storage.yuedong_recover;
},
check:function(card){
return 6-ai.get.value(card);
},
content:function(){
player.storage.yuedong_recover=true;
},
ai:{
order:10.2,
result:{
player:function(player){
var num1=0,num2=0;
for(var i=0;i<game.players.length;i++){
if(ai.get.attitude(player,game.players[i])>0){
num2++;
if(game.players[i].hp<=2&&game.players[i].maxHp>2){
num1++;
if(game.players[i].hp==1){
num1++;
}
}
}
}
if(num1>=3){
return 1;
}
return 0;
}
}
}
},
kuoyin:{
enable:'phaseUse',
filterCard:true,
selectCard:function(){
if(_status.event.player.storage.yuedong_eff) return 1;
return [1,2];
},
position:'he',
filter:function(event,player){
if(player.storage.yuedong_eff&&player.storage.yuedong_num) return false;
return player.num('he')>0;
},
check:function(card){
var player=_status.event.player;
var num1=0,num2=0;
for(var i=0;i<game.players.length;i++){
if(ai.get.attitude(player,game.players[i])>0){
num2++;
if(game.players[i].hp<=2&&game.players[i].maxHp>2){
num1++;
}
}
}
if(player.storage.yuedong_recover){
if(num1>1&&!player.storage.yuedong_num){
if(ui.selected.cards.length) return 0;
return 7-ai.get.value(card);
}
return 0;
}
else{
if(num2>1&&!player.storage.yuedong_num){
if(ui.selected.cards.length) return 0;
return 7-ai.get.value(card);
}
if(num2>2){
return 6-ai.get.value(card);
}
return 5-ai.get.value(card);
}
},
content:function(){
if(cards.length==1){
player.storage.yuedong_num+=2;
}
else{
player.storage.yuedong_eff++;
}
},
ai:{
threaten:1.6,
order:10.1,
result:{
player:1
}
},
group:'kuoyin2'
},
kuoyin2:{
trigger:{player:'phaseBegin'},
forced:true,
popup:false,
silent:true,
content:function(){
player.storage.yuedong_recover=false;
player.storage.yuedong_num=0;
player.storage.yuedong_eff=0;
}
},
guangshu:{
enable:'phaseUse',
check:function(card){
var suit=get.suit(card);
if(suit=='heart'){
for(var i=0;i<game.players.length;i++){
if(game.players[i].hp==1&&ai.get.attitude(player,game.players[i])>0){
return 8-ai.get.value(card);
}
}
}
else if(suit=='spade'){
return 7-ai.get.value(card);
}
return 6-ai.get.value(card);
},
filter:function(event,player){
return player.num('he')>0;
},
filterTarget:function(card,player,target){
return !target.hasSkill('guangshu_heart')&&
!target.hasSkill('guangshu_spade')&&
!target.hasSkill('guangshu_club')&&
!target.hasSkill('guangshu_diamond');
},
filterCard:true,
position:'he',
content:function(){
target.addSkill('guangshu_'+get.suit(cards[0]));
},
ai:{
expose:0.2,
threaten:1.6,
order:5,
result:{
target:function(player,target){
if(!ui.selected.cards.length) return 0;
switch(get.suit(ui.selected.cards[0])){
case 'heart':if(target.hp==1) return 1;return 0.1;
case 'diamond':return 1+Math.sqrt(target.num('h'));
case 'club':return -target.num('h')-Math.sqrt(target.num('h','sha'));
case 'spade':return ai.get.damageEffect(target,player,target,'thunder');
default:return 0;
}
}
}
}
},
guangshu_diamond:{
mark:true,
intro:{
content:'下次造成伤害时摸两张牌'
},
trigger:{source:'damageEnd'},
forced:true,
content:function(){
player.draw(2);
player.removeSkill('guangshu_diamond');
}
},
guangshu_heart:{
mark:true,
intro:{
content:'进入濒死状态时回复一点体力'
},
trigger:{player:'dying'},
priority:6,
forced:true,
content:function(){
player.recover();
player.removeSkill('guangshu_heart');
}
},
guangshu_club:{
mark:true,
intro:{
content:'无法使用杀直到下一回合结束'
},
trigger:{player:'phaseEnd'},
forced:true,
popup:false,
content:function(){
player.removeSkill('guangshu_club');
},
mod:{
cardEnabled:function(card){
if(card.name=='sha') return false;
}
}
},
guangshu_spade:{
mark:true,
intro:{
content:'下个回合结束阶段受到一点无来源的雷电伤害'
},
trigger:{player:'phaseEnd'},
forced:true,
content:function(){
player.damage('thunder','nosource');
player.removeSkill('guangshu_spade');
}
},
ziyu:{
trigger:{global:'phaseEnd'},
direct:true,
filter:function(event,player){
return game.phaseNumber%4==0;
},
content:function(){
"step 0"
var controls=['draw_card'];
if(player.hp<player.maxHp){
controls.push('recover_hp');
}
controls.push('cancel');
player.chooseControl(controls).set('prompt','是否发动【自愈】?').set('ai',function(event,player){
if(player.hp<player.maxHp) return 'recover_hp';
return 'draw_card';
});
"step 1"
if(result.control!='cancel'){
player.logSkill('ziyu');
if(result.control=='draw_card'){
player.draw();
}
else{
player.recover();
}
}
}
},
ziyu_old:{
trigger:{global:'phaseBegin'},
direct:true,
filter:function(event,player){
return event.player.hasSkill('ziyu3');
},
content:function(){
"step 0"
var controls=['draw_card'];
if(player.hp<player.maxHp){
controls.push('recover_hp');
}
controls.push('cancel');
player.chooseControl(controls).set('prompt','是否发动【自愈】?').set('ai',function(event,player){
if(player.hp<player.maxHp) return 'recover_hp';
return 'draw_card';
});
"step 1"
if(result.control!='cancel'){
player.logSkill('ziyu');
if(result.control=='draw_card'){
player.draw();
}
else{
player.recover();
}
}
},
group:'ziyu2'
},
ziyu2:{
trigger:{global:'recoverEnd'},
forced:true,
popup:false,
silent:true,
filter:function(event,player){
return event.source==player&&event.player!=player;
},
content:function(){
trigger.player.addTempSkill('ziyu3',{player:'phaseEnd'});
}
},
ziyu3:{},
shouhu:{
mod:{
cardEnabled:function(card){
if(card.name=='sha') return false;
},
},
enable:'phaseUse',
filter:function(event,player){
return player.num('h','sha')>0;
},
filterTarget:function(card,player,target){
return target.hp<target.maxHp&&target!=player;
},
content:function(){
target.recover();
},
filterCard:{name:'sha'},
ai:{
order:7,
threaten:2,
result:{
target:function(player,target){
return ai.get.recoverEffect(target,player,target);
}
}
}
},
shanxian:{ shanxian:{
trigger:{global:'phaseBefore'}, trigger:{global:'phaseBefore'},
filter:function(event,player){ filter:function(event,player){
@ -107,6 +549,26 @@ character.ow={
} }
}, },
translate:{ translate:{
dangji:'荡击',
dangji_info:'你的杀只能对距离1以外的角色使用每当你使用杀造成伤害后你可以弃置一张牌对距离目标1以内的其他角色各造成一点伤害',
huoyu:'火雨',
huoyu_info:'限定技,出牌阶段,你可以弃置两张红色牌,视为使用两张炽羽袭',
yuedong:'乐动',
yuedong_info:'回合结束阶段,你可以令一名角色摸一张牌',
kuoyin:'扩音',
kuoyin_info:'出牌阶段你可以弃置一张牌令本回合乐动的目标数改为3或弃置两张牌令本回合乐动的摸牌或治疗量改为2',
huhuan:'互换',
huhuan_info:'出牌阶段,你可以弃置两张牌令本回合乐动的摸牌效果改回复体力',
guangshu:'光枢',
guangshu_heart:'光盾',
guangshu_spade:'光塔',
guangshu_club:'光井',
guangshu_diamond:'光流',
guangshu_info:'出牌阶段,你可以弃置一张牌,并指定一名角色,根据弃置牌的花色执行如下效果:♥该角色进入濒死状态时回复一点体力;♦︎该角色下次造成伤害时摸两张牌;♣该角色无法使用杀直到下一回合结束;♠该角色于下个回合结束阶段受到一点无来源的雷电伤害',
ziyu:'自愈',
ziyu_info:'在一名角色的回合结束阶段,你可以回复一点体力或摸一张牌,每隔四回合发动一次',
shouhu:'守护',
shouhu_info:'你不能使用杀;出牌阶段,你可以弃置一张杀令一名其他角色回复一点体力',
shanxian:'闪现', shanxian:'闪现',
shanxian_info:'在一名其他角色的回合开始前,若你的武将牌正面朝上,你可以进行一个额外回合,并在回合结束后将武将牌翻至背面。若如此做,你对其使用卡牌无视距离直到回合结束。', shanxian_info:'在一名其他角色的回合开始前,若你的武将牌正面朝上,你可以进行一个额外回合,并在回合结束后将武将牌翻至背面。若如此做,你对其使用卡牌无视距离直到回合结束。',
shanhui:'闪回', shanhui:'闪回',

View File

@ -3073,7 +3073,8 @@ character.swd={
target:function(card){ target:function(card){
if(card.name=='guohe'||card.name=='liuxinghuoyu') return 0.5; if(card.name=='guohe'||card.name=='liuxinghuoyu') return 0.5;
} }
} },
noh:true,
} }
}, },
miejing:{ miejing:{
@ -7078,7 +7079,10 @@ character.swd={
if(player.isTurnedOver()){ if(player.isTurnedOver()){
return 5-att; return 5-att;
} }
if(att<=-3){
return -att; return -att;
}
return 0;
}; };
"step 1" "step 1"
if(result.bool){ if(result.bool){

View File

@ -442,7 +442,7 @@ character.yijiang={
} }
var forced=false; var forced=false;
var str='获得其中一张牌并防止伤害'; var str='获得其中一张牌并防止伤害';
if(trigger.source.num('he')<num){ if(trigger.source.num('he')<event.num){
forced=true; forced=true;
} }
else{ else{
@ -989,18 +989,12 @@ character.yijiang={
} }
}, },
fulin:{ fulin:{
mod:{ trigger:{player:'phaseDiscardBegin'},
maxHandcard:function(player,num){ forced:true,
if(player.storage.fulin&&player.storage.fulin.length){ popup:false,
var hs=player.get('h'); silent:true,
for(var i=0;i<player.storage.fulin.length;i++){ content:function(){
if(hs.contains(player.storage.fulin[i])){ player.addTempSkill('fulin2','phaseDiscardAfter');
num++;
}
}
return num;
}
}
}, },
group:['fulin_count','fulin_reset'], group:['fulin_count','fulin_reset'],
subSkill:{ subSkill:{
@ -1033,6 +1027,21 @@ character.yijiang={
} }
} }
}, },
fulin2:{
mod:{
maxHandcard:function(player,num){
if(player.storage.fulin&&player.storage.fulin.length){
var hs=player.get('h');
for(var i=0;i<player.storage.fulin.length;i++){
if(hs.contains(player.storage.fulin[i])){
num++;
}
}
return num;
}
}
},
},
duliang:{ duliang:{
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,

View File

@ -1444,6 +1444,7 @@ character.yxs={
trigger.source.chooseToDiscard(2,'he',true); trigger.source.chooseToDiscard(2,'he',true);
}, },
ai:{ ai:{
expose:0.3,
result:{ result:{
target:function(card,player,target){ target:function(card,player,target){
if(player.num('he')>1&&get.tag(card,'damage')){ if(player.num('he')>1&&get.tag(card,'damage')){

View File

@ -9818,6 +9818,17 @@
} }
return false; return false;
}, },
hasUnknown:function(){
var mode=get.mode();
if(mode=='identity'||mode=='guozhan'){
for(var i=0;i<game.players.length;i++){
if(game.players[i].ai.shown==0&&game.players[i]!=this){
return true;
}
}
}
return false;
},
hasWuxie:function(){ hasWuxie:function(){
if(this.num('h','wuxie')) return true; if(this.num('h','wuxie')) return true;
var skills=this.get('s',true).concat(lib.skill.global); var skills=this.get('s',true).concat(lib.skill.global);
@ -25338,7 +25349,7 @@
else if(_status.event.skill&&!get.info(_status.event.skill).viewAs){ else if(_status.event.skill&&!get.info(_status.event.skill).viewAs){
targetprompt=get.info(_status.event.skill).targetprompt; targetprompt=get.info(_status.event.skill).targetprompt;
} }
else{ else if(_status.event.name=='chooseToUse'){
var currentcard=get.card(); var currentcard=get.card();
if(currentcard){ if(currentcard){
targetprompt=get.info(currentcard).targetprompt; targetprompt=get.info(currentcard).targetprompt;

View File

@ -6,7 +6,10 @@ window.noname_update={
files:{ files:{
global:[ global:[
'character/ow.js', 'character/ow.js',
'character/swd.js',
'character/gujian.js', 'character/gujian.js',
'character/hearth.js',
'character/yxs.js',
'card/swd.js', 'card/swd.js',
'card/hearth.js', 'card/hearth.js',
'card/shenqi.js', 'card/shenqi.js',