削弱部分DIY武将

This commit is contained in:
libccy 2015-06-12 13:35:29 +08:00
parent 94656f4856
commit f6a068e43e
8 changed files with 160 additions and 64 deletions

View File

@ -565,7 +565,7 @@ character.extra={
if(target.isMin()) return 0; if(target.isMin()) return 0;
if(target.skills.contains('biantian2')) return 0; if(target.skills.contains('biantian2')) return 0;
var att=ai.get.attitude(player,target); var att=ai.get.attitude(player,target);
if(att>=5){ if(att>=4){
if(target.hp==1&&target.maxHp>2) return att; if(target.hp==1&&target.maxHp>2) return att;
if(target.hp==2&&target.maxHp>3&&target.num('he')==0) return att*0.7; if(target.hp==2&&target.maxHp>3&&target.num('he')==0) return att*0.7;
return 0; return 0;

View File

@ -584,9 +584,13 @@ character.gujian={
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return player!=target&&player.next!=target&&player.canUse('sha',target,false); return player!=target&&player.next!=target&&player.canUse('sha',target,false);
}, },
filter:function(event,player){
var min=Math.max(1,player.maxHp-player.hp);
return lib.filter.filterCard({name:'sha'},player);
},
content:function(){ content:function(){
game.swapSeat(player,target,true,true); game.swapSeat(player,target,true,true);
player.useCard({name:'sha'},target,false); player.useCard({name:'sha'},target);
}, },
ai:{ ai:{
result:{ result:{
@ -1023,7 +1027,7 @@ character.gujian={
boyun2:'拨云', boyun2:'拨云',
boyun_info:'在你的回合内,你可以弃置一张装备牌,并展示牌堆顶的一张牌,若其为装备牌,你须将其交给任意一张角色并对其造成一点伤害,否则你摸一张牌', boyun_info:'在你的回合内,你可以弃置一张装备牌,并展示牌堆顶的一张牌,若其为装备牌,你须将其交给任意一张角色并对其造成一点伤害,否则你摸一张牌',
jizhan:'疾战', jizhan:'疾战',
jizhan_info:'出牌阶段,你可以将移动到任意一名角色的前一位,视为对其使用了一张杀,每阶段限一次', jizhan_info:'出牌阶段限一次,你可以将移动到任意一名角色的前一位,视为对其使用了一张杀',
qianjun:'千军', qianjun:'千军',
qianjun_info:'每当你使用一张杀你可以弃置一张非基本牌令距离目标1以内的所有角色成为额外目标', qianjun_info:'每当你使用一张杀你可以弃置一张非基本牌令距离目标1以内的所有角色成为额外目标',
xuanning:'玄凝', xuanning:'玄凝',

View File

@ -1,3 +1,4 @@
'use strict';
character.hearth={ character.hearth={
character:{ character:{
// hs_jaina:['female','wei',3,[],['fullskin']], // hs_jaina:['female','wei',3,[],['fullskin']],
@ -38,9 +39,41 @@ character.hearth={
} }
}, },
tzhenji:{ tzhenji:{
trigger:{player:'respond'}, trigger:{player:'discardAfter'},
filter:function(event,player){ direct:true,
return event.card.name=='shan'; filter:function(event){
if(event.cards){
for(var i=0;i<event.cards.length;i++){
if(get.color(event.cards[i])=='black') return true;
}
}
return false;
},
content:function(){
"step 0";
player.chooseTarget('是否发动【震击】?').ai=function(target){
return ai.get.damageEffect(target,player,player,'thunder')-(target.num('he')?1:0);
};
"step 1"
if(result.bool){
game.delay(0.5);
var target=result.targets[0];
player.logSkill('tzhenji',target,'thunder');
target.damage('thunder',Math.floor(Math.random()*2));
var cs=target.get('he');
if(cs.length){
target.discard(cs.randomGet());
}
}
},
ai:{
threaten:0.7
}
},
tzhenji_old:{
trigger:{player:['useCard','respondEnd']},
filter:function(event){
return get.suit(event.card)=='spade';
}, },
direct:true, direct:true,
content:function(){ content:function(){
@ -52,26 +85,32 @@ character.hearth={
if(result.bool){ if(result.bool){
player.logSkill('tzhenji',result.targets,'thunder'); player.logSkill('tzhenji',result.targets,'thunder');
event.target=result.targets[0]; event.target=result.targets[0];
event.target.judge(function(card){ event.target.judge();
if(get.color(card)=='black') return -2;
return 0;
});
} }
else{ else{
event.finish(); event.finish();
} }
"step 2" "step 2"
if(result.bool==false){ if(result.color=='red'){
event.target.damage('fire');
}
else{
event.target.damage('thunder'); event.target.damage('thunder');
var cs=event.target.get('he'); var cs=event.target.get('he');
if(cs.length){ if(cs.length){
event.target.discard(cs.randomGet()); event.target.discard(cs.randomGet());
} }
cs=player.get('he');
if(cs.length){
player.discard(cs.randomGet());
}
} }
}, },
ai:{ ai:{
effect:{ expose:0.2,
target:function(card,player,target,current){ threaten:1.2,
effect_old:{
target:function(card,player,target){
if(get.tag(card,'respondShan')){ if(get.tag(card,'respondShan')){
var hastarget=false; var hastarget=false;
for(var i=0;i<game.players.length;i++){ for(var i=0;i<game.players.length;i++){
@ -91,7 +130,7 @@ character.hearth={
return [0,0]; return [0,0];
} }
if(nh==0){ if(nh==0){
return [1.5,0]; return 1.5;
} }
return [1,0.05]; return [1,0.05];
} }
@ -135,7 +174,7 @@ character.hearth={
usable:1, usable:1,
filterCard:true, filterCard:true,
check:function(card){ check:function(card){
return 8-ai.get.value(card); return 6-ai.get.value(card);
}, },
filter:function(event,player){ filter:function(event,player){
var rand=['tuteng1','tuteng2','tuteng3','tuteng4']; var rand=['tuteng1','tuteng2','tuteng3','tuteng4'];
@ -213,6 +252,9 @@ character.hearth={
intro:{ intro:{
content:'每当你造成一次伤害,你摸一张牌' content:'每当你造成一次伤害,你摸一张牌'
}, },
filter:function(event){
return event.num>0;
},
trigger:{source:'damageAfter'}, trigger:{source:'damageAfter'},
forced:true, forced:true,
content:function(){ content:function(){
@ -226,7 +268,7 @@ character.hearth={
}, },
trigger:{player:'damageBegin'}, trigger:{player:'damageBegin'},
forced:true, forced:true,
filter:function(event,player){ filter:function(event){
return event.num>0; return event.num>0;
}, },
content:function(){ content:function(){
@ -240,7 +282,7 @@ character.hearth={
}, },
trigger:{source:'damageBegin'}, trigger:{source:'damageBegin'},
forced:true, forced:true,
filter:function(event,player){ filter:function(event){
return event.card&&get.type(event.card)=='trick'; return event.card&&get.type(event.card)=='trick';
}, },
content:function(){ content:function(){
@ -322,7 +364,7 @@ character.hearth={
tuteng3:'石爪图腾', tuteng3:'石爪图腾',
tuteng4:'空气之怒图腾', tuteng4:'空气之怒图腾',
tzhenji:'震击', tzhenji:'震击',
tzhenji_info:'每当你使用或打出一张闪,可以指定一名角色进行判定,若结果为黑色,其受到一点雷电伤害并随机弃置一张牌', tzhenji_info:'每当你因弃置而失去黑色牌可对一名角色造成0~1点雷电伤害然后随机弃置其一张牌',
fenliu:'分流', fenliu:'分流',
fenliu_info:'出牌阶段限一次你可以失去一点体力并获得3张牌', fenliu_info:'出牌阶段限一次你可以失去一点体力并获得3张牌',
hongxi:'虹吸', hongxi:'虹吸',

View File

@ -31,14 +31,14 @@ character.swd={
swd_xiarou:['female','shu',3,['xianghui','huiqi'],['fullskin']], swd_xiarou:['female','shu',3,['xianghui','huiqi'],['fullskin']],
swd_moye:['female','wu',3,['rexue','liuli'],['fullskin']], swd_moye:['female','wu',3,['rexue','liuli'],['fullskin']],
swd_zhaoyun:['male','shu',4,['ningjian','pozhen','tanlin'],['fullskin']], swd_zhaoyun:['male','shu',4,['longdan','pozhen','tanlin'],['fullskin']],
swd_hengai:['female','shu',3,['funiao','ningxian','lingbo'],['fullskin']], swd_hengai:['female','shu',3,['funiao','ningxian','lingbo'],['fullskin']],
swd_duanmeng:['female','shu',4,['jizhan','lieren'],['fullskin']], swd_duanmeng:['female','shu',4,['jizhan','lieren'],['fullskin']],
swd_jiangwu:['male','shu',4,['yijue','dangping'],['fullskin']], swd_jiangwu:['male','shu',4,['yijue','dangping'],['fullskin']],
swd_tuwei:['male','shu',3,['zhanlu','susheng'],['fullskin']], swd_tuwei:['male','shu',3,['zhanlu','susheng'],['fullskin']],
swd_yeyaxi:['female','shu',3,['rexue','huopu'],['fullskin']], swd_yeyaxi:['female','shu',3,['rexue','huopu'],['fullskin']],
swd_muyun:['male','wei',4,['ningjian','polang','jikong'],['fullskin']], swd_muyun:['male','wei',4,['zhuhai','polang','jikong'],['fullskin']],
swd_lanyin:['female','wei',3,['xingdian','yulin','luomei'],['fullskin']], swd_lanyin:['female','wei',3,['xingdian','yulin','luomei'],['fullskin']],
swd_zhiyin:['female','wei',3,['xuehuang','ningshuang','zhuyu'],['fullskin']], swd_zhiyin:['female','wei',3,['xuehuang','ningshuang','zhuyu'],['fullskin']],
swd_qiner:['female','wei',3,['huanyin','tianhuo','xuanzhou'],['fullskin']], swd_qiner:['female','wei',3,['huanyin','tianhuo','xuanzhou'],['fullskin']],
@ -656,10 +656,10 @@ character.swd={
}, },
lianda2:{}, lianda2:{},
huiqi:{ huiqi:{
trigger:{player:'changeHp'}, trigger:{player:'damageEnd'},
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){
return event.num<0&&player.hp<player.maxHp; return player.hp<player.maxHp;
}, },
content:function(){ content:function(){
"step 0" "step 0"
@ -682,7 +682,7 @@ character.swd={
"step 1" "step 1"
if(result.bool){ if(result.bool){
player.logSkill('huiqi',result.targets); player.logSkill('huiqi',result.targets);
result.targets[0].draw(Math.min(3,player.maxHp-player.hp)); result.targets[0].draw(player.maxHp-player.hp);
} }
}, },
ai:{ ai:{
@ -3715,43 +3715,70 @@ character.swd={
} }
}, },
liaoyuan:{ liaoyuan:{
trigger:{player:'shaAfter'}, trigger:{player:'shaBegin'},
direct:true, direct:true,
filter:function(event,player){ filter:function(event,player){
if(get.itemtype(event.cards)!='cards') return false; if(get.itemtype(event.cards)!='cards') return false;
if(player.num('he',{suit:get.suit(event.cards)})>0){ return player.num('he',{suit:get.suit(event.cards)})>0;
for(var i=0;i<event.targets.length;i++){
if(event.targets[i].isAlive()) return true;
}
}
return false;
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.storage.liaoyuan=0;
event.num=0;
event.cards=[];
"step 1"
var suit=get.suit(trigger.cards); var suit=get.suit(trigger.cards);
player.chooseCard('he','是否将一张'+get.translation(suit)+'牌当杀对'+ event.suit=suit;
get.translation(trigger.targets)+'使用?',{suit:suit}).ai=function(card){ player.chooseCard('he','是否发动【燎原】?',{suit:suit}).ai=function(card){
var eff=0; if(ai.get.attitude(player,trigger.target)>=0) return 0;
for(var i=0;i<trigger.targets.length;i++){ if(ai.get.effect(trigger.target,{name:'sha'},player,player)>0){
eff+=ai.get.effect(trigger.targets[i],{name:'sha'},player,player);
}
if(eff>0){
return 7-ai.get.value(card); return 7-ai.get.value(card);
} }
return 0;
} }
"step 1" "step 2"
if(result.bool){ if(result.bool){
player.logSkill('liaoyuan'); if(event.num==0){
if(result.cards[0].name=='sha'){ player.logSkill('liaoyuan');
player.useCard(result.cards,trigger.targets);
} }
else{ player.discard(result.cards);
player.useCard({name:'sha'},result.cards,trigger.targets); event.num++;
if(player.num('he',{suit:event.suit})>1){
event.goto(1);
} }
} }
"step 3"
if(event.num){
trigger.target.chooseToRespond({name:'shan'}).ai=ai.get.unuseful2;
}
else{
event.finish();
}
"step 4"
if(result.bool){
event.num--;
event.goto(3);
}
else{
trigger.untrigger();
trigger.directHit=true;
player.storage.liaoyuan=event.num;
}
},
group:'liaoyuan2'
},
liaoyuan2:{
trigger:{source:'damageBegin'},
forced:true,
popup:false,
filter:function(event,player){
return event.card&&event.card.name=='sha'&&player.storage.liaoyuan>0;
},
content:function(){
trigger.num+=player.storage.liaoyuan;
player.storage.liaoyuan>0;
} }
}, },
dunxing:{ dunxing:{
mod:{ mod:{
targetEnabled:function(card,player,target){ targetEnabled:function(card,player,target){
@ -4096,7 +4123,9 @@ character.swd={
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
player.chooseToDiscard('he','是否发动【唤魂】?').ai=function(card){ player.chooseToDiscard('he','是否发动【唤魂】?',function(card){
return get.color(card)=='red';
}).ai=function(card){
if(ai.get.attitude(player,trigger.player)>0){ if(ai.get.attitude(player,trigger.player)>0){
return 8-ai.get.value(card); return 8-ai.get.value(card);
} }
@ -7595,7 +7624,7 @@ character.swd={
xianghui:'祥晖', xianghui:'祥晖',
xianghui_info:'出牌阶段限一次,你可以弃置一张红色手牌,然后令场上体力值最少的角色各回复一点体力', xianghui_info:'出牌阶段限一次,你可以弃置一张红色手牌,然后令场上体力值最少的角色各回复一点体力',
huiqi:'回气', huiqi:'回气',
huiqi_info:'每当你的体力值减少可令一名角色摸X张牌X为你已损失的体力值且最多为3', huiqi_info:'每当你受到一次伤害可令一名角色摸X张牌X为你已损失的体力值',
toudan:'投弹', toudan:'投弹',
toudan_info:'出牌阶段限一次你可以弃置一张黑桃牌对一名其他角色造成一点火焰伤害然后令距离该角色1以内的所有角色弃置一张牌', toudan_info:'出牌阶段限一次你可以弃置一张黑桃牌对一名其他角色造成一点火焰伤害然后令距离该角色1以内的所有角色弃置一张牌',
shending:'神丁', shending:'神丁',
@ -7922,10 +7951,10 @@ character.swd={
huanyin_info:'锁定技,每当你成为其他角色的卡牌的目标时,你进行一次判定,若为黑桃则取消之,若为红桃你摸一张牌', huanyin_info:'锁定技,每当你成为其他角色的卡牌的目标时,你进行一次判定,若为黑桃则取消之,若为红桃你摸一张牌',
luomu_info:'锁定技,每当你造成伤害时,受伤害角色随机弃置一张牌', luomu_info:'锁定技,每当你造成伤害时,受伤害角色随机弃置一张牌',
poxing_info:'锁定技,每当你即将造成伤害,若目标的体力值大于你,你令伤害+1', poxing_info:'锁定技,每当你即将造成伤害,若目标的体力值大于你,你令伤害+1',
liaoyuan_info:'每当你使用一张杀结算完毕后,可以将一张与此牌花色相同的牌当杀对目标使用', liaoyuan_info:'每当你使用一张杀指定目标后,你可以弃置任意张与此杀花色相同的牌,若如此做,目标需额外打出等量的闪,否则此杀不可闪避且伤害+XX为少打出的闪的个数',
yuhuo_info:'限定技,濒死阶段,你可以重置角色牌,减少一点体力上限,然后将体力回复至体力上限', yuhuo_info:'限定技,濒死阶段,你可以重置角色牌,减少一点体力上限,然后将体力回复至体力上限',
yishan_info:'每当你受到一次伤害,你可以重新获得最近失去的两张牌', yishan_info:'每当你受到一次伤害,你可以重新获得最近失去的两张牌',
huanhun_info:'当一名角色进入濒死状态时,你可以弃置一张牌令其进行一次判定,若结果为红色,其回复一点体力', huanhun_info:'当一名角色进入濒死状态时,你可以弃置一张红色令其进行一次判定,若结果为红色,其回复一点体力',
daixing_info:'回合结束阶段你可以弃置至多X张牌并抵挡等量伤害效果在下一个回合结束阶段失效X为现存角色数-1', daixing_info:'回合结束阶段你可以弃置至多X张牌并抵挡等量伤害效果在下一个回合结束阶段失效X为现存角色数-1',
swd_wuxie_info:'锁定技,你不能成为其他角色的延时锦囊的目标', swd_wuxie_info:'锁定技,你不能成为其他角色的延时锦囊的目标',
qingcheng_info:'回合开始阶段,你可以进行判定,若为红色则可以继续判定,判定结束后将判定成功的牌收入手牌', qingcheng_info:'回合开始阶段,你可以进行判定,若为红色则可以继续判定,判定结束后将判定成功的牌收入手牌',

View File

@ -135,6 +135,9 @@ character.woods={
event.player.classList.contains('dead')==false&& event.player.classList.contains('dead')==false&&
event.player.num('h')&&player.num('h')); event.player.num('h')&&player.num('h'));
}, },
check:function(event,player){
return ai.get.attitude(player,event.player)<=0;
},
priority:5, priority:5,
content:function(){ content:function(){
"step 0" "step 0"

View File

@ -31,18 +31,18 @@ character.xianjian={
}, },
skill:{ skill:{
xuanyan:{ xuanyan:{
trigger:{source:'damageBefore'}, // trigger:{source:'damageBefore'},
forced:true, // forced:true,
priority:5, // priority:5,
check:function(event,player){ // check:function(event,player){
return player.hp>3; // return player.hp>3;
}, // },
filter:function(event){ // filter:function(event){
return event.card&&get.color(event.card)=='red'; // return event.card&&get.color(event.card)=='red';
}, // },
content:function(){ // content:function(){
trigger.nature='fire'; // trigger.nature='fire';
}, // },
group:['xuanyan2','xuanyan3'] group:['xuanyan2','xuanyan3']
}, },
xuanyan2:{ xuanyan2:{
@ -1327,7 +1327,7 @@ character.xianjian={
xuanyan:'玄炎', xuanyan:'玄炎',
xuanyan2:'玄炎', xuanyan2:'玄炎',
xuanyan_info:'锁定技,你的红色牌造成的伤害均视为火属性;你的火属性伤害+1你造成火属性后流失1点体力', xuanyan_info:'锁定技,你的火属性伤害+1你造成火属性伤害后流失1点体力',
ningbin:'凝冰', ningbin:'凝冰',
ningbin_info:'锁定技每当你造成或受到1次雷属性伤害你回复1点体力', ningbin_info:'锁定技每当你造成或受到1次雷属性伤害你回复1点体力',
fenxin:'焚心', fenxin:'焚心',

View File

@ -1,7 +1,7 @@
character.xswd={ character.xswd={
character:{ character:{
swd_wushi:['male','wei',3,['zhoufu','yingbin','xuying']], swd_wushi:['male','wei',3,['zhoufu','yingbin','xuying']],
swd_lanmoshen:['female','wei',4,['bingjian','lieren'],['fullskin']], swd_lanmoshen:['female','wei',3,['bingjian','lieren'],['fullskin']],
swd_huanglei:['male','qun',3,['jilve','gongshen'],['fullskin']], swd_huanglei:['male','qun',3,['jilve','gongshen'],['fullskin']],
swd_libai:['female','qun',3,['miaobi','zhexian']], swd_libai:['female','qun',3,['miaobi','zhexian']],
swd_kendi:['male','qun',3,['guanxing','jianyan']], swd_kendi:['male','qun',3,['guanxing','jianyan']],

View File

@ -1636,8 +1636,25 @@ window.play={};
} }
} }
player.changeHp(-num,false); player.changeHp(-num,false);
player.popup(-num,event.nature); if(player._damagetimeout!=source){
player.$damage(source); player.$damage(source);
player._damagetimeout=source;
setTimeout(function(){
delete player._damagetimeout;
},500);
}
if(player._damagepopup){
player._damagepopup-=num;
player._damagenature=event.nature;
}
else{
player._damagepopup=-num;
setTimeout(function(){
player.popup(player._damagepopup,player._damagenature);
delete player._damagepopup;
delete player._damagenature;
},300);
}
event.trigger('damage'); event.trigger('damage');
"step 1" "step 1"
if(player.hp<=0&&player.isAlive()){ if(player.hp<=0&&player.isAlive()){
@ -3517,6 +3534,7 @@ window.play={};
var that=this; var that=this;
setTimeout(function(){that._popup();},1000); setTimeout(function(){that._popup();},1000);
} }
return node;
}, },
_popup:function(){ _popup:function(){
if(this.popups.length){ if(this.popups.length){