Bug+调整

DIY武将调整
木马AI
出桃AI
秘计修改
UI小改进
修复酒池不能自救的Bug
雄异的AI问题
木马可显示信息
绝策Bug
This commit is contained in:
libccy 2015-07-08 12:14:53 +08:00
parent 838b0bedc0
commit c1f026180a
14 changed files with 133 additions and 69 deletions

View File

@ -6,7 +6,7 @@
"eqnull": true,
"newcap": false,
"browser": true,
"unused": true,
/*"unused": true,*/
"loopfunc": true,
"noyield": true,
"devel": true,

View File

@ -1,3 +1,4 @@
'use strict';
card.refresh={
card:{
muniu:{
@ -65,6 +66,7 @@ card.refresh={
respondSha:true,
respondShan:true,
order:1,
expose:0.1,
result:{
player:1
}

View File

@ -1,3 +1,4 @@
'use strict';
card.standard={
card:{
damage:{
@ -230,6 +231,11 @@ card.standard={
return 0;
}
}
if(lib.config.mode=='identity'&&player.identity=='zhu'&&target.identity=='nei'){
if(tri&&tri.name=='dying'&&tri.source&&tri.source.identity=='zhong'){
return 0;
}
}
if(lib.config.mode=='stone'&&target.isMin()&&
player!=target&&tri&&tri.name=='dying'&&player.side==target.side&&
tri.source!=target.getEnemy()){

View File

@ -22,6 +22,9 @@ character.fire={
return get.color(card)=='red';
},
viewAs:{name:'huogong',nature:'fire'},
viewAsFilter:function(player){
if(!player.num('h',{color:'red'})) return false;
},
prompt:'将一张红色牌当火攻使用',
check:function(card){
var player=_status.currentPhase;

View File

@ -747,7 +747,7 @@ character.mountain={
event.finish();
return;
}
player.chooseCardButton(event.cards,'选择令目标收回的牌');
player.chooseCardButton(event.cards,'固政:选择令'+get.translation(trigger.player)+'收回的牌');
"step 2"
if(result.bool){
player.logSkill('guzheng',trigger.player);

View File

@ -95,7 +95,8 @@ character.refresh={
},
content:function(){
"step 0"
player.chooseCard('鬼才:请选择代替判定的牌','he').ai=function(card){
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging)+',是否发动【鬼才】?','he').ai=function(card){
var trigger=_status.event.parent._trigger;
var player=_status.event.player;
var result=trigger.judge(card)-trigger.judge(trigger.player.judging);
@ -146,7 +147,7 @@ character.refresh={
return;
}
event.num--;
player.choosePlayerCard(trigger.source,ai.get.buttonValue,'he');
player.choosePlayerCard('是否对'+get.translation(trigger.source)+'发动【反馈】?',trigger.source,ai.get.buttonValue,'he');
"step 2"
if(result.bool){
player.logSkill('refankui',trigger.source);
@ -653,9 +654,9 @@ character.refresh={
effect:function(card,player,target){
if(get.tag(card,'damage')){
if(player.skills.contains('jueqing')) return [1,-2];
if(player.hp>=4) return [1,get.tag(card,damage)*2];
if(target.hp==3) return [1,get.tag(card,damage)*1.5];
if(target.hp==2) return [1,get.tag(card,damage)*0.5];
if(player.hp>=4) return [1,get.tag(card,'damage')*2];
if(target.hp==3) return [1,get.tag(card,'damage')*1.5];
if(target.hp==2) return [1,get.tag(card,'damage')*0.5];
}
}
},

View File

@ -1,3 +1,4 @@
'use strict';
character.sp={
character:{
yangxiu:['male','wei',3,['jilei','danlao'],['fullskin']],
@ -1170,7 +1171,7 @@ character.sp={
if(event.card.name!='sha') return false;
if(event.player==player) return false;
if(event.targets.contains(player)) return false;
if(player.tempSkills['yongjue2']) return false;
if(player.tempSkills.yongjue2) return false;
if(event.cards){
for(var i=0;i<event.cards.length;i++){
if(get.position(event.cards[i])=='d') return true;
@ -1566,7 +1567,7 @@ character.sp={
if(lib.config.mode=='identity'){
if(game.players[i].ai.shown<=0) return -10;
}
else if(lib.config.mode='guozhan'){
else if(lib.config.mode=='guozhan'){
if(game.players[i].identity=='unknown') return -10;
}
}
@ -1818,7 +1819,7 @@ character.sp={
save:true,
result:{
player:function(player){
if(player.tempSkills['aocai4']) return 0;
if(player.tempSkills.aocai4) return 0;
if(_status.dying) return ai.get.attitude(player,_status.dying);
return 1;
}
@ -1941,7 +1942,8 @@ character.sp={
if(player==_status.currentPhase) return false;
if(event.cards){
for(var i=0;i<event.cards.length;i++){
if(get.color(event.cards[i])=='red') return true;
if(get.color(event.cards[i])=='red'&&
event.cards[i].original!='j') return true;
}
}
return false;

View File

@ -117,7 +117,7 @@ character.standard={
},
content:function(){
"step 0"
player.choosePlayerCard(trigger.source,ai.get.buttonValue,'he');
player.choosePlayerCard('是否对'+get.translation(trigger.source)+'发动【反馈】?',trigger.source,ai.get.buttonValue,'he');
"step 1"
if(result.bool){
player.logSkill('fankui',trigger.source);
@ -145,7 +145,8 @@ character.standard={
},
content:function(){
"step 0"
player.chooseCard('鬼才:请选择代替判定的牌').ai=function(card){
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging)+',是否发动【鬼才】?').ai=function(card){
var trigger=_status.event.parent._trigger;
var player=_status.event.player;
var result=trigger.judge(card)-trigger.judge(trigger.player.judging);
@ -717,7 +718,7 @@ character.standard={
else{
top.unshift(cards.shift());
}
};
}
}
var bottom;
if(!stopped){
@ -1193,7 +1194,7 @@ character.standard={
target.recover();
},
ai:{
order:7.5,
order:5.5,
result:{
player:function(player){
if(player.hp<player.maxHp) return 4;
@ -1246,6 +1247,9 @@ character.standard={
prompt:'将一张红色牌当桃使用',
check:function(card){return 15-ai.get.value(card)},
ai:{
skillTagFilter:function(player){
return player.num('he',{color:'red'})>0;
},
threaten:1.5,
save:true,
}

View File

@ -166,6 +166,7 @@ character.swd={
return -1;
}
}
break;
}
case 'guozhan':{
if(player.identity=='unknown') return 0;
@ -1663,7 +1664,7 @@ character.swd={
order:12,
result:{
player:function(player){
if(player.tempSkills['jilve3']) return 0;
if(player.tempSkills.jilve3) return 0;
if(_status.dying) return ai.get.attitude(player,_status.dying);
return 1;
}
@ -2917,7 +2918,8 @@ character.swd={
},
content:function(){
"step 0"
player.chooseCard('请选择替换判定的牌','he').ai=function(card){
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging)+',是否发动【天道】?','he').ai=function(card){
var trigger=_status.event.parent._trigger;
var player=_status.event.player;
var result=trigger.judge(card)-trigger.judge(trigger.player.judging);
@ -3317,8 +3319,10 @@ character.swd={
group:['kunlunjing1','kunlunjing2'],
intro:{
content:function(storage,player){
return player.storage.kunlunjing3;
if(true){
return player.storage.kunlunjing3;
}
var table,str,st,tr,td;
for(var i=0;i<storage.length;i++){
if(game.players.contains(storage[i].player)){
st=storage[i];
@ -3359,7 +3363,7 @@ character.swd={
}
},
kunlunjing1:{
trigger:{player:['damageAfter','phaseBefore']},
trigger:{player:['phaseBefore']},
filter:function(event,player){
if(player.storage.kunlunjing2) return false;
if(player.storage.kunlunjing) return true;
@ -3369,7 +3373,7 @@ character.swd={
if(event.name=='phase'&&player.hp<3) return false;
var storage=event.player.storage.kunlunjing;
var num=0;
for(i=0;i<storage.length;i++){
for(var i=0;i<storage.length;i++){
if(game.players.contains(storage[i].player)){
var att=ai.get.attitude(player,storage[i].player);
var num2=storage[i].value-storage[i].player.num('he')+storage[i].player.num('j');
@ -3386,12 +3390,14 @@ character.swd={
},
content:function(){
"step 0"
game.delay(0.5);
"step 1"
event.player.storage.kunlunjing2=true;
ui.arena.classList.add('zoomout3');
ui.arena.delete();
ui.arena.hide();
game.delay(0,500);
"step 1"
"step 2"
var storage=event.player.storage.kunlunjing;
var player,frag;
var i,j;
@ -3443,7 +3449,7 @@ character.swd={
ui.arena.classList.remove('zoomout3');
ui.arena.classList.add('zoomin3');
ui.window.appendChild(ui.arena);
"step 2"
"step 3"
ui.arena.show();
ui.arena.classList.remove('zoomin3');
event.player.storage.kunlunjing3='已发动';
@ -3748,7 +3754,7 @@ character.swd={
player.storage.liaoyuan=event.num;
}
},
group:'liaoyuan2'
group:['liaoyuan2','liaoyuan3']
},
liaoyuan2:{
trigger:{source:'damageBegin'},
@ -3759,7 +3765,16 @@ character.swd={
},
content:function(){
trigger.num+=player.storage.liaoyuan;
player.storage.liaoyuan>0;
player.storage.liaoyuan=0;
}
},
liaoyuan3:{
trigger:{player:'shaEnd'},
forced:true,
popup:false,
silent:true,
content:function(){
player.storage.liaoyuan=0;
}
},
dunxing:{
@ -4339,7 +4354,7 @@ character.swd={
trigger:{player:'phaseAfter'},
frequent:true,
filter:function(event,player){
return get.cardCount(true,player)>=3;;
return get.cardCount(true,player)>=3;
},
content:function(){
player.phase();
@ -5749,8 +5764,14 @@ character.swd={
trigger:{source:'damageEnd'},
priority:1,
forced:true,
filter:function(event,player){
return player.hp<player.maxHp;
},
content:function(){
"step 0"
player.recover();
event.finish();
"step 1"
if(player.hp<player.maxHp){
player.chooseControl('draw_card','recover_hp',function(event,target){
if(player.num('h')>=player.hp) return 'recover_hp';
@ -5761,7 +5782,7 @@ character.swd={
player.draw();
event.finish();
}
"step 1"
"step 2"
if(result.control=='draw_card'){
player.draw();
}
@ -5985,21 +6006,15 @@ character.swd={
for(var i=0;i<game.players.length;i++){
list=list.concat(game.players[i].get('j'));
}
var dialog=ui.create.dialog('天轮:替换'+get.translation(trigger.player.judging)+
'('+get.translation(get.suit(trigger.player.judging))+get.translation(get.number(trigger.player.judging))+')',list);
var dialog=ui.create.dialog(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+get.translation(trigger.player.judging)+
',是否发动【天轮】?',list);
player.chooseButton(dialog,function(button){
var card=button.link;
var trigger=_status.event.parent._trigger;
var player=_status.event.player;
var result=trigger.judge(card)-trigger.judge(trigger.player.judging);
var attitude=ai.get.attitude(player,trigger.player);
if(attitude==0||result==0) return 1;
if(attitude>0){
return result+1;
}
else{
return -result+1;
}
return result*attitude;
});
"step 1"
if(result.bool){
@ -6009,10 +6024,8 @@ character.swd={
}
"step 2"
if(event.card){
player.logSkill('tianlun');
if(trigger.player.judging.clone) trigger.player.judging.clone.moveTo(player).delete();
else player.$draw();
player.gain(trigger.player.judging);
player.logSkill('tianlun',trigger.player);
ui.discardPile.appendChild(trigger.player.judging);
trigger.player.judging=event.card;
trigger.position.appendChild(event.card);
game.log(get.translation(trigger.player)+'的判定牌改为'+get.translation(event.card));
@ -7637,7 +7650,7 @@ character.swd={
daofa:'道法',
daofa_info:'每当有一名其他角色造成伤害,你可以令其弃置一张牌',
xiaomoyu:'魔愈',
xiaomoyu_info:'锁定技,每当你造成一次伤害,你摸一张牌或回复一点体力',
xiaomoyu_info:'锁定技,每当你造成一次伤害,你回复一点体力',
yihua:'移花',
yihua_info:'每当你成为其他角色的某张卡牌的惟一目标时,你可以弃置两张手牌,将使用者与目标对调',
youyin:'游吟',
@ -7860,7 +7873,7 @@ character.swd={
shengshou_info:'你可以将一张黑色手牌当作草药使用',
susheng_info:'在任意一名角色即将死亡时你可以弃置一张手牌防止其死亡并将其体力回复至1',
zhanlu_info:'出牌阶段,你可以弃置一张黑桃牌令至多3名角色各回复一点体力',
kunlunjing_info:'回合开始前或当你受到一次伤害后,你可以令场上所有牌还原到你上一回合结束后的位置;若在回合开始前发动,你流失一点体力',
kunlunjing_info:'回合开始前,你可以令场上所有牌还原到你上一回合结束时的位置,然后流失一点体力',
swd_xiuluo_info:'回合开始阶段,你可以弃一张手牌来弃置你判断区里的一张延时类锦囊(必须花色相同)',
xianyin_info:'出牌阶段,你可以令所有判定区内有牌的角色弃置判定区内的牌,然后交给你一张手牌',
qiaoxie_info:'每当你装备一张牌,可摸一张牌,每当你失去一张装备牌(不含替换),你可以弃置其他角色的一张牌',
@ -7882,7 +7895,7 @@ character.swd={
miles_xueyi_info:'锁定技,你防止即将受到的伤害,然后流失一点体力',
duanyi_info:'出牌阶段限一次你可以弃置两张杀对一名角色造成一点伤害然后其翻面并摸X张牌X为其已损失的体力值',
guxing_info:'出牌阶段你可以将最后至多X张手牌当杀使用此杀无视距离且可以指定至多3个目标每造成一次伤害你摸一张牌为你已损失的体力值且至少为。',
tianlun_info:'任意一名角色的判定生效前,你可以弃置一张场上角色的判定牌之',
tianlun_info:'任意一名角色的判定生效前,你可以弃置一张场上角色的判定牌替之',
longyin_info:'出牌阶段,你可以弃置任意张颜色相同且点数不同的牌,并获得逆时针座位距离与卡牌点数相同的角色区域内的一张牌。每阶段限一次',
lanzhi_info:'每当你即将造成伤害,可以防止此伤害,然后摸两张牌。每回合限发动一次。',
tianhuo_info:'出牌阶段,你可以令所有角色弃置其判定区域内的牌,并受到没有来源的等量火焰伤害,每阶段限一次',

View File

@ -338,7 +338,8 @@ character.wind={
direct:true,
content:function(){
"step 0"
player.chooseCard('请选择替换判定的牌','he',function(card){
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging)+',是否发动【鬼道】?','he',function(card){
return get.color(card)=='black';
}).ai=function(card){
var trigger=_status.event.parent._trigger;

View File

@ -513,10 +513,20 @@ character.woods={
return get.suit(card)=='spade';
},
viewAs:{name:'jiu'},
viewAsFilter:function(player){
if(!player.num('h',{suit:'spade'})) return false;
},
prompt:'将一张黑桃手牌当酒使用',
check:function(card){
if(_status.event.type=='dying') return 1;
return 4-ai.get.value(card);
},
ai:{
skillTagFilter:function(player){
return player.num('h',{suit:'spade'})>0;
},
threaten:1.5,
save:true,
}
},
roulin:{

View File

@ -1,3 +1,4 @@
'use strict';
character.xianjian={
character:{
pal_lixiaoyao:['male','qun',4,['xiaoyao','yujian'],['fullskin']],
@ -526,7 +527,7 @@ character.xianjian={
}
return false;
},
direct:true,
frequent:true,
content:function(){
"step 0"
if(trigger.delay==false) game.delay();
@ -538,16 +539,10 @@ character.xianjian={
}
}
if(cards.length){
player.chooseCardButton('聚宝:获得其中的一张非基本牌牌',cards);
}
"step 2"
if(result.bool){
var cards=result.links;
player.logSkill('jubao');
player.gain(cards);
player.$gain2(cards);
game.log(get.translation(player)+'获得了'+get.translation(cards));
var card=cards.randomGet();
player.gain(card);
player.$gain2(card);
game.log(get.translation(player)+'获得了'+get.translation(card));
}
},
ai:{
@ -864,7 +859,8 @@ character.xianjian={
}
},
order:10,
threaten:1.2
threaten:1.2,
exoise:0.2
},
mod:{
targetInRange:function(card,player,target){
@ -1142,6 +1138,7 @@ character.xianjian={
trigger:{player:['phaseBegin','dieBegin']},
forced:true,
popup:false,
silent:true,
content:function(){
"step 0"
event.players=game.players.slice(0);
@ -1369,7 +1366,7 @@ character.xianjian={
sajin:'洒金',
sajin_info:'出牌阶段,你可以弃置一张手牌并指定任意名角色进行判定,若判定花色与你弃置的牌相同,该角色回复一点体力',
jubao:'聚宝',
jubao_info:'当其他角色于你的回合外弃置非基本牌时,你可以获得其中的一张',
jubao_info:'当其他角色于你的回合外弃置非基本牌时,你可以随机获得其中的一张',
guiyuan:'归元',
guiyuan_info:'出牌阶段限一次,你可以弃置一张杀并回复一点体力',
shuangren:'双刃',

View File

@ -1,3 +1,4 @@
'use strict';
character.yijiang={
character:{
yujin:['male','wei',4,['yizhong'],['fullskin']],
@ -303,7 +304,7 @@ character.yijiang={
event.current.chooseToDiscard({subtype:'equip1'},'he','弃置一张武器牌或让'+
get.translation(target)+'摸一张牌').ai=function(card){
if(ai.get.attitude(event.current,target)<0) return 7-ai.get.value(card);
return -1.
return -1;
};
}
}
@ -692,7 +693,7 @@ character.yijiang={
return player.num('h')>0;
},
filterTarget:function(card,player,target){
return target.hp<target.maxHp&&!target.tempSkills['dingpin2'];
return target.hp<target.maxHp&&!target.tempSkills.dingpin2;
},
filterCard:true,
check:function(card){
@ -1009,7 +1010,7 @@ character.yijiang={
globalSilent:true,
trigger:{global:'phaseEnd'},
filter:function(event,player){
return event.player!=player&&!event.player.tempSkills['qieting3'];
return event.player!=player&&!event.player.tempSkills.qieting3;
},
frequent:true,
content:function(){
@ -1493,22 +1494,24 @@ character.yijiang={
event.num=player.maxHp-player.hp;
player.draw(event.num);
"step 1"
var check=player.num('h')-event.num;
player.chooseCardTarget({
selectCard:event.num,
filterTarget:function(card,player,target){
return player!=target;
},
ai1:function(card){
if(check<1) return 0;
if(player.hp>1&&check<2) return 0;
return ai.get.unuseful(card)+9;
},
ai2:function(target){
return ai.get.attitude(player,target);
return ai.get.attitude(player,target)-2;
},
prompt:'将'+event.num+'张手牌交给一名其他角色',
forced:true
});
"step 2"
if(result){
if(result.bool){
result.targets[0].gain(result.cards);
event.player.$give(result.cards.length,result.targets[0]);
}
@ -1598,7 +1601,6 @@ character.yijiang={
}
},
xinwuyan:{
check:function(){return false},
trigger:{target:'useCardToBefore',player:'useCardToBefore'},
forced:true,
priority:15,
@ -1771,6 +1773,7 @@ character.yijiang={
trigger:{source:'damageBefore'},
forced:true,
priority:10,
check:function(){return false;},
content:function(){
trigger.untrigger();
trigger.finish();
@ -3300,7 +3303,7 @@ character.yijiang={
anxu_info:'出牌阶段,你可以选择两名手牌数不相等的其他角色,令其中手牌少的角色获得手牌多的角色的一张手牌并展示之',
zongxuan_info:'每当你的牌被弃置,你可以将其按任意顺序置于牌堆顶',
zhiyan_info:'回合结束阶段,你可以令一名角色摸一张并展示之,若是装备牌,其立即装备之并回复一点体力',
miji_info:'回合结束阶段若你已受伤可以摸X张牌然后将等量的牌交给一名其他角色',
miji_info:'回合结束阶段若你已受伤可以摸X张牌然后可以将等量的牌交给一名其他角色X为你已损失的体力值',
zhenlie_info:'每当你成为其他角色的卡牌的目标时,你可以流失一点体力取消之,然后弃置对方一张牌',
chengxiang_info:'每当你受到一次伤害后你可以亮出牌堆顶的四张牌。然后获得其中任意数量点数之和小于13的牌将其余的牌置入弃牌堆。',
renxin_info:'每当体力值为1的一名其他角色受到伤害时你可以将武将牌翻面并弃置一张装备牌然后防止此伤害。',

View File

@ -1595,9 +1595,12 @@
else if(cards[i].parentNode.classList.contains('judges')){
cards[i].original='j';
}
else{
else if(cards[i].parentNode.id=='handcards1'||cards[i].parentNode.id=='handcards2'){
cards[i].original='h';
}
else{
cards[i].original=null;
}
}
if(event.position){
cards[i].goto(event.position);
@ -1888,8 +1891,9 @@
ui.restart=ui.create.control('restart',game.reload);
}
}
if(player==game.me&&ui.auto){
ui.auto.hide();
if(player==game.me){
if(ui.auto) ui.auto.hide();
if(ui.wuxie) ui.wuxie.hide();
}
player.$die(source);
},
@ -3418,6 +3422,7 @@
game.dead.remove(this);
if(this==game.me){
if(ui.auto) ui.auto.show();
if(ui.wuxie) ui.wuxie.show();
if(ui.revive){
ui.revive.close();
delete ui.revive;
@ -5578,6 +5583,7 @@
}
if(ui.auto) ui.auto.hide();
if(ui.wuxie) ui.wuxie.hide();
if(ui.revive){
ui.revive.close();
delete ui.revive;
@ -6070,6 +6076,7 @@
}
if(game.me.isAlive()){
if(ui.auto) ui.auto.show();
if(ui.wuxie) ui.wuxie.show();
if(ui.revive){
ui.revive.close();
delete ui.revive;
@ -6097,6 +6104,7 @@
if(game.me.isAlive()){
if(ui.auto) ui.auto.show();
if(ui.wuxie) ui.wuxie.show();
if(ui.revive){
ui.revive.close();
delete ui.revive;
@ -6443,6 +6451,7 @@
if(player==game.me){
ui.me.hide();
ui.auto.hide();
ui.wuxie.hide();
}
setTimeout(function(){
player.removeAttribute('style');
@ -9306,6 +9315,7 @@
if(this.classList.contains('dead')) return;
if(_status.over) return;
if(ui.auto) ui.auto.show();
if(ui.wuxie) ui.wuxie.show();
game.swapPlayer(this);
},
mousewheel:function(evt){
@ -10774,7 +10784,19 @@
else{
uiintro.add(get.translation(node));
}
if(lib.translate[name+'_info']){
if(node.name=='muniu'&&get.position(node)=='e'){
var num=0;
if(node.cards){
num=node.cards.length;
}
if(get.owner(node)==game.me&&num){
uiintro.add(node.cards,true,num>4);
}
else{
uiintro.add('<div class="text center">'+'共有'+get.cnNumber(num)+'张牌'+'</div>');
}
}
else if(lib.translate[name+'_info']){
uiintro.add('<div class="text">'+lib.translate[name+'_info']+'</div>');
}
uiintro.add(ui.create.div('.placeholder.slim'));