v1.9.90.1

This commit is contained in:
Spmario233 2019-07-20 22:58:35 +08:00 committed by GitHub
parent 6bc5401cfa
commit 1b09055fbd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
17 changed files with 322 additions and 195 deletions

View File

@ -576,11 +576,11 @@ game.import('card',function(lib,game,ui,get,ai,_status){
jiu:'酒', jiu:'酒',
jiu_info:'出牌阶段,对自己使用,令自己的下一张使用的【杀】造成的伤害+1每回合限使用1次濒死阶段对自己使用回复1点体力', jiu_info:'出牌阶段,对自己使用,令自己的下一张使用的【杀】造成的伤害+1每回合限使用1次濒死阶段对自己使用回复1点体力',
huogong:'火攻', huogong:'火攻',
tiesuo:'铁连环', tiesuo:'铁连环',
tiesuo_info:'出牌阶段使用选择1至2个角色分别横置或重置这些角色', tiesuo_info:'出牌阶段使用选择1至2个角色分别横置或重置这些角色',
huogong_bg:'攻', huogong_bg:'攻',
huogong_info:'目标角色展示一张手牌然后若你能弃掉一张与所展示牌相同花色的手牌则火攻对该角色造成1点火焰伤害。', huogong_info:'目标角色展示一张手牌然后若你能弃掉一张与所展示牌相同花色的手牌则火攻对该角色造成1点火焰伤害。',
tiesuo_bg:'', tiesuo_bg:'',
bingliang:'兵粮寸断', bingliang:'兵粮寸断',
hualiu:'骅骝', hualiu:'骅骝',
zhuque:'朱雀羽扇', zhuque:'朱雀羽扇',

View File

@ -128,7 +128,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
'step 0' 'step 0'
player.draw(2); player.draw(2);
'step 1' 'step 1'
player.loseHp(); if(player.hp>1) player.loseHp();
} }
}, },
yuxi:{ yuxi:{
@ -1283,7 +1283,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
feilongduofeng3:'飞龙夺凤', feilongduofeng3:'飞龙夺凤',
feilongduofeng_info:'当你使用【杀】指定一名角色为目标后,你可令该角色弃置一张牌。当你使用【杀】令其他角色进入濒死状态时,你可以获得其一张手牌。', feilongduofeng_info:'当你使用【杀】指定一名角色为目标后,你可令该角色弃置一张牌。当你使用【杀】令其他角色进入濒死状态时,你可以获得其一张手牌。',
taipingyaoshu:'太平要术', taipingyaoshu:'太平要术',
taipingyaoshu_info:'锁定技,防止你受到的所有属性伤害;全场每有一名与你势力相同的角色存活,你的手牌上限便+1当你失去装备区里的【太平要术】时你摸两张牌然后失去1点体力。', taipingyaoshu_info:'锁定技,防止你受到的所有属性伤害;全场每有一名与你势力相同的角色存活,你的手牌上限便+1当你失去装备区里的【太平要术】时你摸两张牌然后若你的体力值大于1失去1点体力。',
yuxi_skill:'玉玺', yuxi_skill:'玉玺',
yuxi_skill2:'玉玺', yuxi_skill2:'玉玺',
yuxi:'玉玺', yuxi:'玉玺',

View File

@ -16,7 +16,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"shen_liubei":["male","shen",6,["nzry_longnu","nzry_jieying"],["shu"]], "shen_liubei":["male","shen",6,["nzry_longnu","nzry_jieying"],["shu"]],
"shen_luxun":["male","shen",4,["nzry_junlve","nzry_cuike","nzry_dinghuo"],["wu"]], "shen_luxun":["male","shen",4,["nzry_junlve","nzry_cuike","nzry_dinghuo"],["wu"]],
"shen_zhangliao":["male","shen",4,["drlt_duorui","drlt_zhiti"],["wei"]], "shen_zhangliao":["male","shen",4,["drlt_duorui","drlt_zhiti"],["wei"]],
"shen_ganning":["male","shen",3,["drlt_poxi","drlt_jieying"],["wu"]], "shen_ganning":["male","shen","3/6",["drlt_poxi","drlt_jieying"],["wu"]],
}, },
characterIntro:{ characterIntro:{
shen_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。', shen_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。',
@ -25,7 +25,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shen_zhugeliang:'字孔明、号卧龙汉族琅琊阳都人三国时期蜀汉丞相、杰出的政治家、军事家、发明家、文学家。在世时被封为武乡侯死后追谥忠武侯后来东晋政权推崇诸葛亮军事才能特追封他为武兴王。诸葛亮为匡扶蜀汉政权呕心沥血、鞠躬尽瘁、死而后已。其代表作有《前出师表》、《后出师表》、《诫子书》等。曾发明木牛流马等并改造连弩可一弩十矢俱发。于234年在宝鸡五丈原逝世。', shen_zhugeliang:'字孔明、号卧龙汉族琅琊阳都人三国时期蜀汉丞相、杰出的政治家、军事家、发明家、文学家。在世时被封为武乡侯死后追谥忠武侯后来东晋政权推崇诸葛亮军事才能特追封他为武兴王。诸葛亮为匡扶蜀汉政权呕心沥血、鞠躬尽瘁、死而后已。其代表作有《前出师表》、《后出师表》、《诫子书》等。曾发明木牛流马等并改造连弩可一弩十矢俱发。于234年在宝鸡五丈原逝世。',
}, },
characterTitle:{ characterTitle:{
shen_ganning:"体力上限6", //shen_ganning:"体力上限6",
}, },
skill:{ skill:{
"new_wuhun":{ "new_wuhun":{
@ -48,17 +48,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
contentx:function (){ contentx:function (){
"step 0" "step 0"
source.line(player,{color:[255, 255, 0]}); var num=0;
source.logSkill('new_wuhun_die',player); for(var i=0;i<game.players.length;i++){
game.delay(2); var current=game.players[i];
if(current!=player&&current.storage.new_wuhun_mark&&current.storage.new_wuhun_mark>num){
num=current.storage.new_wuhun_mark;
}
}
player.chooseTarget(true,'请选择【武魂】的目标',function(card,player,target){
return target!=player&&target.storage.new_wuhun_mark==num;
}).set('ai',function(target){
return -get.attitude(_status.event.player,target);
}).set('forceDie',true);
"step 1" "step 1"
player.judge(function(card){ if(result.bool&&result.targets&&result.targets.length){
var target=result.targets[0];
event.target=target;
player.logSkill('new_wuhun_die',target);
player.line(target,{color:[255, 255, 0]});
game.delay(2);
}
"step 2"
target.judge(function(card){
if(['tao','taoyuan'].contains(card.name)) return 10; if(['tao','taoyuan'].contains(card.name)) return 10;
return -10; return -10;
}); });
"step 2" "step 3"
if(!result.bool){ if(!result.bool){
lib.element.player.die.apply(player,[]); lib.element.player.die.apply(target,[]);
} }
}, },
subSkill:{ subSkill:{
@ -77,25 +94,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
content:function (){ content:function (){
"step 0" "step 0"
var num=0;
for(var i=0;i<game.players.length;i++){
var current=game.players[i];
if(current!=player&&current.storage.new_wuhun_mark&&current.storage.new_wuhun_mark>num){
num=current.storage.new_wuhun_mark;
}
}
player.chooseTarget(true,'请选择【武魂】的目标',function(card,player,target){
return target!=player&&target.storage.new_wuhun_mark==num;
}).ai=function(target){
return -get.attitude(_status.event.player,target);
};
"step 1"
if(result.bool&&result.targets&&result.targets.length){
var next=game.createEvent('new_wuhun',null,trigger.parent); var next=game.createEvent('new_wuhun',null,trigger.parent);
next.player=result.targets[0]; next.forceDie=true;
next.source=player; next.player=player;
next.setContent(lib.skill.new_wuhun.contentx); next.setContent(lib.skill.new_wuhun.contentx);
}
}, },
sub:true, sub:true,
}, },
@ -452,7 +454,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return event.num>0; return event.num>0;
}, },
content:function(){ content:function(){
player.storage.baonu+=trigger.num; if(player==trigger.player) player.storage.baonu+=trigger.num;
if(player==trigger.source) player.storage.baonu+=trigger.num;
player.markSkill('baonu'); player.markSkill('baonu');
player.syncStorage('baonu'); player.syncStorage('baonu');
}, },
@ -2315,12 +2318,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
'drlt_poxi':{ 'drlt_poxi':{
init:function (player,skill){
if(player.hasStockSkill(skill)&&!player.storage[skill]){
player.gainMaxHp(3);
player.storage[skill]=true;
}
},
audio:2, audio:2,
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,

View File

@ -1868,9 +1868,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.num=trigger.num; event.num=trigger.num;
"step 1" "step 1"
player.judge(function(card){ player.judge(function(card){
if(get.color(card)=='red') return _status.event.eff; if(get.color(card)=='red') return 1;
return 0; return 0;
}).set('eff',get.damageEffect(trigger.source,player,player)); });
"step 2" "step 2"
if(result.color=='black'){ if(result.color=='black'){
if(trigger.source.countCards('he')){ if(trigger.source.countCards('he')){
@ -1882,13 +1882,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
event.num--; event.num--;
if(event.num>0){ if(event.num>0){
player.chooseBool('是否继续发动?'); player.chooseBool(get.prompt2('reganglie'));
} }
else{ else{
event.finish(); event.finish();
} }
"step 3" "step 3"
if(result.bool){ if(result.bool){
player.logSkill('reganglie',trigger.source);
event.goto(1); event.goto(1);
} }
}, },

View File

@ -63,7 +63,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
perfectPair:{ perfectPair:{
jiaxu:['liqueguosi'], jiaxu:['liqueguosi'],
yuanshao:['yanwen'], re_yuanshao:['yanwen'],
menghuo:['zhurong'], menghuo:['zhurong'],
sp_zhugeliang:['pangtong'], sp_zhugeliang:['pangtong'],
sunce:['zhouyu','taishici','daqiao'], sunce:['zhouyu','taishici','daqiao'],
@ -1180,9 +1180,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
forced:true, forced:true,
filter:function(event,player){ filter:function(event,player){
return event.player.storage.nzry_huaiju&&event.player.storage.nzry_huaiju>0; return !event.tachibanaed&&event.player.storage.nzry_huaiju&&event.player.storage.nzry_huaiju>0;
}, },
content:function(){ content:function(){
trigger.tachibanaed=true;
player.line(trigger.player,'green'); player.line(trigger.player,'green');
if(trigger.name=='damage'){ if(trigger.name=='damage'){
trigger.cancel(); trigger.cancel();
@ -1279,7 +1280,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseControl().set('ai',function(){ player.chooseControl().set('ai',function(){
if(game.countPlayer(function(current){return get.attitude(player,current)<0&&current.hp==trigger.num})>0&&trigger.num<=3) return 1; if(game.countPlayer(function(current){return get.attitude(player,current)<0&&current.hp==trigger.num})>0&&trigger.num<=3) return 1;
return 0; return 0;
}).set('choiceList',[event.str1,event.str2]); }).set('choiceList',[event.str1,event.str2]).set('prompt','是否发动【溃诛】?');
'step 1' 'step 1'
event.control=[event.str1,event.str2][result.index]; event.control=[event.str1,event.str2][result.index];
'step 2' 'step 2'
@ -1293,10 +1294,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
num+=targets[i].hp; num+=targets[i].hp;
}; };
return num+target.hp<=trigger.num; return num+target.hp<=trigger.num;
}).ai=function(target){ }).set('ai',function(target){
if(ui.selected.targets[0]!=undefined) return -1; if(ui.selected.targets[0]!=undefined) return -1;
return get.attitude(player,target)<0; return get.attitude(player,target)<0;
}; }).promptbar='none';
}else{ }else{
player.chooseTarget('请选择【溃诛】的目标',[1,trigger.num]).ai=function(target){ player.chooseTarget('请选择【溃诛】的目标',[1,trigger.num]).ai=function(target){
return get.attitude(player,target); return get.attitude(player,target);
@ -1369,7 +1370,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
content:function(){ content:function(){
'step 0' 'step 0'
player.chooseTarget(get.prompt('nzry_zhizheng'),function(card,player,target){ player.chooseTarget(get.prompt2('nzry_zhizheng'),function(card,player,target){
return get.distance(target,player,'attack')>1&&target.countDiscardableCards(player,'he'); return get.distance(target,player,'attack')>1&&target.countDiscardableCards(player,'he');
}).ai=function(target){ }).ai=function(target){
return -get.attitude(player,target); return -get.attitude(player,target);
@ -1528,9 +1529,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2, audio:2,
prompt2:"当你使用牌指定目标时,若此牌与你本回合使用的牌类型均不同(包括装备牌),则你可以将此牌置于牌堆顶,然后摸一张牌", prompt2:"当你使用牌指定目标时,若此牌与你本回合使用的牌类型均不同(包括装备牌),则你可以将此牌置于牌堆顶,然后摸一张牌",
trigger:{ trigger:{
player:['useCard','respond'], player:['useCard','useCardAfter','respond'],
}, },
filter:function (event,player){ filter:function (event,player,name){
if(name=='useCard'&&!['equip','delay'].contains(get.type(event.card))) return false;
if(name=='useCardAfter'&&['equip','delay'].contains(get.type(event.card))) return false;
return ((event.name=='respond'&&event.card.name=='shan'&&event.parent.parent.name=='sha')||event.name=='useCard')&&event.cards.length>0&&player.storage.nzry_shicai!=undefined&&!player.storage.nzry_shicai.contains(get.type(event.card,'trick')); return ((event.name=='respond'&&event.card.name=='shan'&&event.parent.parent.name=='sha')||event.name=='useCard')&&event.cards.length>0&&player.storage.nzry_shicai!=undefined&&!player.storage.nzry_shicai.contains(get.type(event.card,'trick'));
}, },
check:function (event,player){ check:function (event,player){
@ -2187,7 +2190,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lianhuan4:{ lianhuan4:{
mod:{ mod:{
selectTarget:function(card,player,range){ selectTarget:function(card,player,range){
if(card.name=='tiesuo'&&range[1]<3) range[1]=3; if(card.name=='tiesuo'&&player.hasSkill('xinlianhuan')&&range[1]<3) range[1]=3;
}, },
}, },
}, },
@ -3139,12 +3142,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2, audio:2,
// unique:true, // unique:true,
// gainable:true, // gainable:true,
group:["guzheng_count"],
subSkill:{
count:{
trigger:{global:'discardAfter'}, trigger:{global:'discardAfter'},
forced:true,
silent:true,
popup:false,
filter:function(event,player){
if(event.guzhenged) return false;
if(!event.cards||!event.cards.length) return false;
var evt=event.getParent('phaseDiscard');
return evt&&evt.name=='phaseDiscard'&&evt.player!=player;
},
content:function(){
var evt=event.getParent('phaseDiscard');
trigger.guzhenged=true;
if(!evt.guzhengcards) evt.guzhengcards=[];
evt.guzhengcards.addArray(trigger.cards);
},
sub:true,
},
},
trigger:{global:'phaseDiscardAfter'},
filter:function(event,player){ filter:function(event,player){
if(event.player!=player&&event.player.isIn()&& if(event.player!=player&&event.player.isIn()&&
event.cards&&event.cards.length&&event.getParent(2).name=='phaseDiscard'){ event.guzhengcards&&event.guzhengcards.length){
for(var i=0;i<event.cards.length;i++){ for(var i=0;i<event.guzhengcards.length;i++){
if(get.position(event.cards[i])=='d'){ if(get.position(event.guzhengcards[i])=='d'){
return true; return true;
} }
} }
@ -3154,10 +3179,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
checkx:function(event,player){ checkx:function(event,player){
var du=false; var du=false;
var num=0; var num=0;
for(var i=0;i<event.cards.length;i++){ for(var i=0;i<event.guzhengcards.length;i++){
if(get.position(event.cards[i])=='d'){ if(get.position(event.guzhengcards[i])=='d'){
num++; num++;
if(event.cards[i].name=='du'){ if(event.guzhengcards[i].name=='du'){
du=true; du=true;
} }
} }
@ -3174,7 +3199,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true, direct:true,
content:function(){ content:function(){
"step 0" "step 0"
event.cards=trigger.cards.slice(0); event.cards=trigger.guzhengcards.slice(0);
for(var i=0;i<event.cards.length;i++){ for(var i=0;i<event.cards.length;i++){
if(get.position(event.cards[i])!='d'){ if(get.position(event.cards[i])!='d'){
event.cards.splice(i,1);i--; event.cards.splice(i,1);i--;
@ -4040,6 +4065,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
return target.isMinHandcard(); return target.isMinHandcard();
}, },
prompt:'将一半的手牌交给场上手牌数最少的一名角色',
forced:true, forced:true,
ai2:function(target){ ai2:function(target){
return get.attitude(_status.event.player,target); return get.attitude(_status.event.player,target);
@ -6307,7 +6333,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"nzry_chenglve":"成略", "nzry_chenglve":"成略",
"nzry_chenglve_info":"转换技,出牌阶段限一次,①你可以摸一张牌,然后弃置两张手牌。②你可以摸两张牌,然后弃置一张手牌。若如此做,直到本回合结束,你使用与弃置牌花色相同的牌无距离和次数限制", "nzry_chenglve_info":"转换技,出牌阶段限一次,①你可以摸一张牌,然后弃置两张手牌。②你可以摸两张牌,然后弃置一张手牌。若如此做,直到本回合结束,你使用与弃置牌花色相同的牌无距离和次数限制",
"nzry_shicai":"恃才", "nzry_shicai":"恃才",
"nzry_shicai_info":"当你使用牌指定目标时,若此牌与你本回合使用的牌类型均不同(包括装备牌),则你可以将此牌置于牌堆顶,然后摸一张牌", "nzry_shicai_info":"当你使用牌时,若此牌与你本回合使用的牌类型均不同(包括装备牌),则你可以将此牌置于牌堆顶,然后摸一张牌",
"nzry_cunmu":"寸目", "nzry_cunmu":"寸目",
"nzry_cunmu_info":"锁定技,当你摸牌时,改为从牌堆底摸牌", "nzry_cunmu_info":"锁定技,当你摸牌时,改为从牌堆底摸牌",
"nzry_kuizhu":"溃诛", "nzry_kuizhu":"溃诛",
@ -6440,7 +6466,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hunzi_info:'觉醒技准备阶段若你的体力为1你须减1点体力上限并永久获得技能“英姿”和“英魂”。', hunzi_info:'觉醒技准备阶段若你的体力为1你须减1点体力上限并永久获得技能“英姿”和“英魂”。',
zhiba_info:'主公技,其他吴势力角色的出牌阶段,可与你进行一次拼点,若该角色没赢,你可以获得双方拼点的牌;你的觉醒技发动后,你可以拒绝此拼点。每回合限一次。', zhiba_info:'主公技,其他吴势力角色的出牌阶段,可与你进行一次拼点,若该角色没赢,你可以获得双方拼点的牌;你的觉醒技发动后,你可以拒绝此拼点。每回合限一次。',
zhijian_info:'出牌阶段,你可以将你手牌中的一张装备牌置于一名其他角色装备区里(不得替换原装备),然后摸一张牌。', zhijian_info:'出牌阶段,你可以将你手牌中的一张装备牌置于一名其他角色装备区里(不得替换原装备),然后摸一张牌。',
guzheng_info:'其他角色的弃牌阶段结束时,你可将其弃置的一张牌返回其手牌,然后获得其弃置的其它牌', guzheng_info:'其他角色的弃牌阶段结束时,你可将本阶段进入弃牌堆的一张牌返回其手牌,然后获得其它牌',
beige_info:'一名角色每受到【杀】造成的一次伤害你可以弃一张牌并令其进行一次判定判定结果为♥该角色回复1点体力该角色摸两张牌♣伤害来源弃两张牌♠伤害来源将其武将牌翻面', beige_info:'一名角色每受到【杀】造成的一次伤害你可以弃一张牌并令其进行一次判定判定结果为♥该角色回复1点体力该角色摸两张牌♣伤害来源弃两张牌♠伤害来源将其武将牌翻面',
duanchang_info:'锁定技,杀死你的角色失去当前的所有技能直到游戏结束。', duanchang_info:'锁定技,杀死你的角色失去当前的所有技能直到游戏结束。',
// fushen_info:'回合开始前,你可以选择与任意一名角色交换控制权,该角色可选择在下一个回合开始前与你换回', // fushen_info:'回合开始前,你可以选择与任意一名角色交换控制权,该角色可选择在下一个回合开始前与你换回',

View File

@ -4,7 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp', name:'sp',
connect:true, connect:true,
character:{ character:{
lijue:["male","qun",4,["xinfu_langxi","xinfu_yisuan"],[]], lijue:["male","qun","4/6",["xinfu_langxi","xinfu_yisuan"],[]],
zhangji:["male","qun",4,["xinfu_lveming","xinfu_tunjun"],[]], zhangji:["male","qun",4,["xinfu_lveming","xinfu_tunjun"],[]],
fanchou:["male","qun",4,["xinfu_xingluan"],[]], fanchou:["male","qun",4,["xinfu_xingluan"],[]],
guosi:["male","qun",4,["xinfu_tanbei","xinfu_sidao"],[]], guosi:["male","qun",4,["xinfu_tanbei","xinfu_sidao"],[]],
@ -2529,7 +2529,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterCard:function(){return false}, filterCard:function(){return false},
viewAsFilter:function(player){ viewAsFilter:function(player){
if(player.hasSkill('weijing_disable')) return false; if(player.hasSkill('weijing_disable')) return false;
if(!lib.filter.cardRespondable({name:'sha'},player)) return false; if(!lib.filter.cardRespondable({name:'shan'},player)) return false;
if(_status.event.getParent().name!='sha') return false;
return true;
}, },
onrespond:function(event,player){ onrespond:function(event,player){
player.addTempSkill('weijing_disable','roundStart'); player.addTempSkill('weijing_disable','roundStart');
@ -4132,20 +4134,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hengjiang:{ hengjiang:{
trigger:{player:'damageEnd'}, trigger:{player:'damageEnd'},
check:function(event,player){ check:function(event,player){
return get.attitude(player,event.source)<0||!event.source.needsToDiscard(2); return get.attitude(player,_status.currentPhase)<0||!_status.currentPhase.needsToDiscard(2);
}, },
filter:function(event){ filter:function(event){
return event.source&&event.source.isIn()&&event.num>0; return _status.currentPhase&&_status.currentPhase.isIn()&&event.num>0;
}, },
logTarget:'source', //logTarget:'source',
content:function(){ content:function(){
var source=trigger.source; var source=_status.currentPhase;
if(source.hasSkill('hengjiang2')){ if(source.hasSkill('hengjiang2')){
source.storage.hengjiang2+=trigger.num; source.storage.hengjiang2+=trigger.num;
source.storage.hengjiang3.add(player);
source.updateMarks(); source.updateMarks();
} }
else{ else{
source.storage.hengjiang3=player; source.storage.hengjiang3=[player];
source.storage.hengjiang2=trigger.num; source.storage.hengjiang2=trigger.num;
source.addTempSkill('hengjiang2'); source.addTempSkill('hengjiang2');
} }
@ -4170,12 +4173,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
trigger:{player:'phaseDiscardEnd'}, trigger:{player:'phaseDiscardEnd'},
filter:function(event,player){ filter:function(event,player){
return player.storage.hengjiang3.isIn()&&(!event.cards||event.cards.length==0); if(event.cards&&event.cards.length) return false;
var players=player.storage.hengjiang3;
for(var i=0;i<players.length;i++){
if(players[i].isIn()) return true;
}
return false;
}, },
forced:true, forced:true,
popup:false, popup:false,
content:function(){ content:function(){
player.storage.hengjiang3.draw(); var players=player.storage.hengjiang3;
for(var i=0;i<players.length;i++){
if(players[i].isIn()){
players[i].logSkill('hengjiang');
players[i].line(player,'green');
}
}
game.asyncDraw(player.storage.hengjiang3);
} }
}, },
shuangren:{ shuangren:{
@ -9656,7 +9671,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
}, },
zhoufu3:{ zhoufu3:{
trigger:{player:'phaseEnd'}, trigger:{global:'phaseEnd'},
silent:true, silent:true,
content:function(){ content:function(){
if(player.storage.zhoufu3.isIn()){ if(player.storage.zhoufu3.isIn()){

View File

@ -71,7 +71,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhenji:['caopi'], zhenji:['caopi'],
caocao:['xuzhu','dianwei','bianfuren'], caocao:['xuzhu','dianwei','bianfuren'],
huangzhong:['weiyan'], huangzhong:['weiyan'],
zhugeliang:['huangyueying'], zhugeliang:['huangyueying','jiangwei','jiangfei'],
liubei:['guanyu','zhangfei','ganfuren'], liubei:['guanyu','zhangfei','ganfuren'],
zhaoyun:['liushan'], zhaoyun:['liushan'],
daqiao:['xiaoqiao'], daqiao:['xiaoqiao'],
@ -1279,6 +1279,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
player.popup(get.cnNumber(top.length)+'上'+get.cnNumber(event.cards.length-top.length)+'下'); player.popup(get.cnNumber(top.length)+'上'+get.cnNumber(event.cards.length-top.length)+'下');
game.log(player,'将'+get.cnNumber(top.length)+'张牌置于牌堆顶'); game.log(player,'将'+get.cnNumber(top.length)+'张牌置于牌堆顶');
game.updateRoundNumber();
game.delay(2); game.delay(2);
} }
}, },

View File

@ -30,7 +30,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
liuyan:"刘焉194年字君郎《华阳国志》又作君朗。江夏郡竟陵县今湖北省天门市人。东汉末年宗室、军阀汉末群雄之一西汉鲁恭王刘余之后。<br>刘焉初以汉朝宗室身份拜为中郎历任雒阳令、冀州刺史、南阳太守、宗正、太常等官。因益州刺史郄俭在益州大肆聚敛贪婪成风加上当时天下大乱。刘焉欲取得一安身立命之所割据一方于是向朝廷求为益州牧封阳城侯前往益州整饬吏治。郄俭为黄巾军所杀刘焉进入益州派张鲁盘踞汉中张鲁截断交通斩杀汉使从此益州与中央道路不通。刘焉进一步对内打击地方豪强巩固自身势力益州因而处于半独立的状态。兴平元年194年刘焉因背疮迸发而逝世其子刘璋继领益州牧。", liuyan:"刘焉194年字君郎《华阳国志》又作君朗。江夏郡竟陵县今湖北省天门市人。东汉末年宗室、军阀汉末群雄之一西汉鲁恭王刘余之后。<br>刘焉初以汉朝宗室身份拜为中郎历任雒阳令、冀州刺史、南阳太守、宗正、太常等官。因益州刺史郄俭在益州大肆聚敛贪婪成风加上当时天下大乱。刘焉欲取得一安身立命之所割据一方于是向朝廷求为益州牧封阳城侯前往益州整饬吏治。郄俭为黄巾军所杀刘焉进入益州派张鲁盘踞汉中张鲁截断交通斩杀汉使从此益州与中央道路不通。刘焉进一步对内打击地方豪强巩固自身势力益州因而处于半独立的状态。兴平元年194年刘焉因背疮迸发而逝世其子刘璋继领益州牧。",
}, },
characterTitle:{ characterTitle:{
lijue:"体力上限6", //lijue:"体力上限6",
}, },
perfectPair:{ perfectPair:{
lijue:['guosi','jiaxu'], lijue:['guosi','jiaxu'],
@ -71,12 +71,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_yisuan":{ "xinfu_yisuan":{
usable:1, usable:1,
audio:2, audio:2,
init:function (player){
if(player.hasStockSkill('xinfu_yisuan')&&!player.storage.xinfu_yisuan){
player.gainMaxHp(2);
player.storage.xinfu_yisuan=true;
}
},
trigger:{ trigger:{
player:"useCardAfter", player:"useCardAfter",
}, },
@ -2056,7 +2050,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
skillAnimation:true, skillAnimation:true,
content:function (){ content:function (){
"step 0" "step 0"
trigger.source.chooseBool('【许身】:是否将自己的武将牌替换为关索?').set('ai',function(){ trigger.source.chooseBool('【许身】:是否将自己的一张武将牌替换为关索').set('ai',function(){
return true; return true;
}); });
"step 1" "step 1"
@ -2069,12 +2063,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
else event.finish(); else event.finish();
"step 2" "step 2"
var num=4; trigger.source.reinit(result.control,'guansuo');
if(game.zhu==trigger.source&&game.players.length>=5){
if(trigger.source.name2!=undefined) num++;
num++;
}
trigger.source.reinit(result.control,'guansuo',num);
player.recover(); player.recover();
player.addSkill('xinfu_zhennan'); player.addSkill('xinfu_zhennan');
}, },
@ -3479,8 +3468,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true, forced:true,
filter:function (event,player){ filter:function (event,player){
if(!event.source) return false; if(!event.source) return false;
if(event.source.getAttackRange()==3) return false; var range=event.source.getAttackRange();
if(event.source.getAttackRange()<3&&event.num<=1) return false; if(range==3) return false;
if(range<3&&event.num<=1) return false;
return true; return true;
}, },
priority:-9.5, priority:-9.5,
@ -4968,6 +4958,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_jijie":{ "xinfu_jijie":{
enable:"phaseUse", enable:"phaseUse",
usable:1, usable:1,
audio:2,
filter:function(){ filter:function(){
return ui.cardPile.hasChildNodes(); return ui.cardPile.hasChildNodes();
}, },
@ -5010,6 +5001,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
global:["gainEnd","dying"], global:["gainEnd","dying"],
}, },
priority:6, priority:6,
audio:2,
filter:function (event,player){ filter:function (event,player){
if(event.name=='dying') return true; if(event.name=='dying') return true;
if(['gainPlayerCard','gainMultiple'].contains(event.parent.name)) return false; if(['gainPlayerCard','gainMultiple'].contains(event.parent.name)) return false;
@ -5026,6 +5018,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
"xinfu_daigong":{ "xinfu_daigong":{
usable:1, usable:1,
audio:2,
trigger:{ trigger:{
player:"damageBegin", player:"damageBegin",
}, },
@ -5063,6 +5056,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
enable:"phaseUse", enable:"phaseUse",
usable:1, usable:1,
audio:2,
init:function (player,skill){ init:function (player,skill){
if(!player.storage[skill]) player.storage[skill]=[]; if(!player.storage[skill]) player.storage[skill]=[];
}, },
@ -5147,6 +5141,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
"xinfu_qianchong":{ "xinfu_qianchong":{
audio:3,
mod:{ mod:{
targetInRange:function (card,player,target){ targetInRange:function (card,player,target){
if(player.storage.xinfu_qianchong.contains(get.type(card,'trick'))){ if(player.storage.xinfu_qianchong.contains(get.type(card,'trick'))){
@ -5213,6 +5208,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
"qc_weimu":{ "qc_weimu":{
audio:"xinfu_qianchong",
mod:{ mod:{
targetEnabled:function (card,player,target){ targetEnabled:function (card,player,target){
var bool=true; var bool=true;
@ -5227,7 +5223,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
"qc_mingzhe":{ "qc_mingzhe":{
audio:2, audio:"xinfu_qianchong",
trigger:{ trigger:{
player:["useCardAfter","respondAfter","discardAfter"], player:["useCardAfter","respondAfter","discardAfter"],
}, },
@ -5260,6 +5256,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{ trigger:{
global:"phaseEnd", global:"phaseEnd",
}, },
audio:2,
filter:function (event,player){ filter:function (event,player){
return player.storage.xinfu_shangjian<=player.hp&&player.storage.xinfu_shangjian>0; return player.storage.xinfu_shangjian<=player.hp&&player.storage.xinfu_shangjian>0;
}, },

View File

@ -7352,10 +7352,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true, direct:true,
skillAnimation:true, skillAnimation:true,
content:function(){ content:function(){
var next=game.createEvent('zhuiyi',null,trigger.parent);
next.forceDie=true;
next.player=player;
if(trigger.source) next.source=trigger.source;
next.setContent(lib.skill.zhuiyi.contentx);
},
contentx:function(){
"step 0" "step 0"
player.chooseTarget(get.prompt('zhuiyi'),function(card,player,target){ player.chooseTarget(get.prompt2('zhuiyi'),function(card,player,target){
return player!=target&&_status.event.source!=target; return player!=target&&_status.event.source!=target;
}).set('ai',function(target){ }).set('forceDie',true).set('ai',function(target){
var num=get.attitude(_status.event.player,target); var num=get.attitude(_status.event.player,target);
if(num>0){ if(num>0){
if(target.hp==1){ if(target.hp==1){
@ -7366,22 +7373,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
} }
return num; return num;
}).set('source',trigger.source); }).set('source',event.source);
"step 1" "step 1"
if(result.bool){ if(result.bool){
var target=result.targets[0]; var target=result.targets[0];
var next=game.createEvent('zhuiyi',null,trigger.parent); player.logSkill('zhuiyi',target);
next.player=target; player.line(target,'green');
next.source=player; target.recover();
next.setContent(lib.skill.zhuiyi.contentx); target.draw(3);
} }
}, },
contentx:function(){
event.source.logSkill('zhuiyi',player);
event.source.line(player,'green');
player.recover();
player.draw(3);
},
ai:{ ai:{
expose:0.5, expose:0.5,
} }
@ -7442,7 +7443,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(var i=0;i<players.length;i++){ for(var i=0;i<players.length;i++){
var num2=players[i].countCards('h'); var num2=players[i].countCards('h');
var att2=get.attitude(player,players[i]); var att2=get.attitude(player,players[i]);
if(att2>=0&&num2<num) return -1; if(num2<num){
if(att2>0) return -3;
return -1;
}
} }
return 0; return 0;
} }
@ -7450,7 +7454,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return 1; return 1;
} }
}, },
player:0.1 player:1,
} }
} }
}, },
@ -8512,30 +8516,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
content:function(){ content:function(){
"step 0" "step 0"
player.chooseTarget([1,2],get.prompt('xuanfeng'),function(card,player,target){ event.count=2;
"step 1"
player.chooseTarget(get.prompt('xuanfeng'),function(card,player,target){
if(player==target) return false; if(player==target) return false;
return target.countCards('he'); return target.countDiscardableCards(player,'he');
}).set('ai',function(target){ }).set('ai',function(target){
return -get.attitude(_status.event.player,target); return -get.attitude(_status.event.player,target);
}); });
"step 1" "step 2"
if(result.bool){ if(result.bool){
player.logSkill('xuanfeng',result.targets); player.logSkill('xuanfeng',result.targets);
event.targets=result.targets player.line(result.targets,'green');
if(result.targets.length==1){ player.discardPlayerCard(result.targets[0],'he',true);
player.discardPlayerCard(event.targets[0],'he',[1,2],true); event.count--;
}
else{
player.discardPlayerCard(event.targets[0],'he',true);
}
}
else{
event.finish();
}
"step 2"
if(targets.length==2){
player.discardPlayerCard(targets[1],'he',true);
} }
else event.finish();
"step 3"
if(event.count) event.goto(1);
}, },
ai:{ ai:{
effect:{ effect:{

View File

@ -9246,6 +9246,7 @@
wuColor:"#b2d9a9", wuColor:"#b2d9a9",
qunColor:"#f6f6f6", qunColor:"#f6f6f6",
shenColor:"#ffe14c", shenColor:"#ffe14c",
westernColor:"#ffe14c",
basic:'基本', basic:'基本',
equip:'装备', equip:'装备',
trick:'锦囊', trick:'锦囊',
@ -11576,12 +11577,14 @@
if(event.prompt2){ if(event.prompt2){
event.dialog.addText(event.prompt2,event.prompt2.length<=20); event.dialog.addText(event.prompt2,event.prompt2.length<=20);
} }
if(event.promptbar!='none'){
event.promptbar=event.dialog.add('0/'+get.numStr(get.select(event.selectTarget)[1],'target')); event.promptbar=event.dialog.add('0/'+get.numStr(get.select(event.selectTarget)[1],'target'));
event.custom.add.target=function(){ event.custom.add.target=function(){
_status.event.promptbar.innerHTML= _status.event.promptbar.innerHTML=
ui.selected.targets.length+'/'+get.numStr(get.select(event.selectTarget)[1],'target'); ui.selected.targets.length+'/'+get.numStr(get.select(event.selectTarget)[1],'target');
} }
} }
}
else if(get.itemtype(event.dialog)=='dialog'){ else if(get.itemtype(event.dialog)=='dialog'){
event.dialog.open(); event.dialog.open();
} }
@ -14452,14 +14455,17 @@
} }
} }
var hp1=get.infoHp(info[2]);
var maxHp1=get.infoMaxHp(info[2]);
this.node.avatar.show(); this.node.avatar.show();
this.node.count.show(); this.node.count.show();
this.node.equips.show(); this.node.equips.show();
this.name=character; this.name=character;
this.sex=info[0]; this.sex=info[0];
this.group=info[1]; this.group=info[1];
this.hp=info[2]; this.hp=hp1;
this.maxHp=info[2]; this.maxHp=maxHp1;
this.hujia=0; this.hujia=0;
this.node.intro.innerHTML=lib.config.intro; this.node.intro.innerHTML=lib.config.intro;
this.node.name.dataset.nature=get.groupnature(this.group); this.node.name.dataset.nature=get.groupnature(this.group);
@ -14489,7 +14495,8 @@
this.node.avatar2.show(); this.node.avatar2.show();
this.name2=character2; this.name2=character2;
var hp1=info[2],hp2=info2[2]; var hp2=get.infoHp(info2[2]);
var maxHp2=get.infoMaxHp(info2[2]);
var double_hp; var double_hp;
if(_status.connectMode){ if(_status.connectMode){
double_hp='pingjun'; double_hp='pingjun';
@ -14499,16 +14506,31 @@
} }
switch(double_hp){ switch(double_hp){
case 'pingjun':{ case 'pingjun':{
this.maxHp=Math.floor((hp1+hp2)/2); this.maxHp=Math.floor((maxHp1+maxHp2)/2);
this.singleHp=((hp1+hp2)%2===1); this.hp=Math.floor((hp1+hp2)/2);
this.singleHp=((maxHp1+maxHp2)%2===1);
break; break;
} }
case 'zuidazhi':this.maxHp=Math.max(hp1,hp2);break; case 'zuidazhi':{
case 'zuixiaozhi':this.maxHp=Math.min(hp1,hp2);break; this.maxHp=Math.max(maxHp1,maxHp2);
case 'zonghe':this.maxHp=hp1+hp2;break; this.hp=Math.max(hp1,hp2);
default:this.maxHp=hp1+hp2-3; break;
}
case 'zuixiaozhi':{
this.maxHp=Math.min(maxHp1,maxHp2);
this.hp=Math.min(hp1,hp2);
break;
}
case 'zonghe':{
this.maxHp=maxHp1+maxHp2;
this.hp=hp1+hp2;
break;
}
default:{
this.maxHp=maxHp1+maxHp2-3;
this.hp=hp1+hp2-3;
};
} }
this.hp=this.maxHp;
this.node.count.classList.add('p2'); this.node.count.classList.add('p2');
skills=skills.concat(info2[3]); skills=skills.concat(info2[3]);
@ -14692,7 +14714,7 @@
} }
else{ else{
if(typeof maxHp!='number'){ if(typeof maxHp!='number'){
maxHp=info2[2]; maxHp=get.infoMaxHp(info2[2]);
} }
num=maxHp-info1[2]; num=maxHp-info1[2];
} }
@ -18890,16 +18912,16 @@
} }
return num; return num;
}, },
getAttackRange:function(){ getAttackRange:function(raw){
var player=this; var player=this;
var range=0; var range=0;
range=game.checkMod(player,player,range,'globalFrom',player); if(raw) range=game.checkMod(player,player,range,'globalFrom',player);
range=game.checkMod(player,player,range,'attackFrom',player); range=game.checkMod(player,player,range,'attackFrom',player);
var equips=player.getCards('e'); var equips=player.getCards('e');
for(var i=0;i<equips.length;i++){ for(var i=0;i<equips.length;i++){
var info=get.info(equips[i]).distance; var info=get.info(equips[i]).distance;
if(!info) continue; if(!info) continue;
if(info.globalFrom){ if(raw&&info.globalFrom){
range+=info.globalFrom; range+=info.globalFrom;
} }
if(info.attackFrom){ if(info.attackFrom){
@ -21014,6 +21036,10 @@
else if(typeof card=='object'){ else if(typeof card=='object'){
card=[card.suit,card.number,card.name,card.nature]; card=[card.suit,card.number,card.name,card.nature];
} }
var cardnum=card[1]||'';
if([1,11,12,13].contains(cardnum)){
cardnum={'1':'A','11':'J','12':'Q','13':'K'}[cardnum]
}
if(!lib.card[card[2]]){ if(!lib.card[card[2]]){
lib.card[card[2]]={}; lib.card[card[2]]={};
} }
@ -21217,7 +21243,7 @@
this.node.info.innerHTML=info.modinfo; this.node.info.innerHTML=info.modinfo;
} }
else{ else{
this.node.info.innerHTML=get.translation(card[0])+'<span> </span>'+card[1]; this.node.info.innerHTML=get.translation(card[0])+'<span> </span>'+cardnum;
} }
if(info.addinfo){ if(info.addinfo){
if(!this.node.addinfo){ if(!this.node.addinfo){
@ -21254,7 +21280,7 @@
this.node.name.classList.add('longlong'); this.node.name.classList.add('longlong');
} }
} }
this.node.name2.innerHTML=get.translation(card[0])+card[1]+' '+name; this.node.name2.innerHTML=get.translation(card[0])+cardnum+' '+name;
this.suit=card[0]; this.suit=card[0];
this.number=parseInt(card[1])||0; this.number=parseInt(card[1])||0;
this.name=card[2]; this.name=card[2];
@ -22727,8 +22753,8 @@
var name2=info[4][j].slice(9); var name2=info[4][j].slice(9);
var info2=lib.character[name2]; var info2=lib.character[name2];
player.storage.dualside.push(name2); player.storage.dualside.push(name2);
player.storage.dualside.push(info2[2]); player.storage.dualside.push(get.infoHp(info2[2]));
player.storage.dualside.push(info2[2]); player.storage.dualside.push(get.infoMaxHp(info2[2]));
} }
} }
} }
@ -23175,7 +23201,7 @@
if(!trigger.notLink()) event.finish(); if(!trigger.notLink()) event.finish();
"step 1" "step 1"
event.targets=game.filterPlayer(function(current){ event.targets=game.filterPlayer(function(current){
return current.isLinked(); return current!=event.player&&current.isLinked();
}); });
lib.tempSortSeat=_status.currentPhase||player; lib.tempSortSeat=_status.currentPhase||player;
event.targets.sort(lib.sort.seat); event.targets.sort(lib.sort.seat);
@ -24176,7 +24202,7 @@
} }
}, },
suit:['club','spade','diamond','heart'], suit:['club','spade','diamond','heart'],
group:['wei','shu','wu','qun','shen','western'], group:['wei','shu','wu','qun','shen'],
nature:['fire','thunder','poison'], nature:['fire','thunder','poison'],
linked:['fire','thunder'], linked:['fire','thunder'],
groupnature:{ groupnature:{
@ -35094,7 +35120,8 @@
} }
} }
var hp=page.querySelector('input.new_hp').value; var hp=page.querySelector('input.new_hp').value;
hp=parseInt(hp)||1; if(hp=='Infinity') hp=Infinity;
else if(hp.indexOf('/')==-1) hp=parseInt(hp)||1;
var skills=[]; var skills=[];
for(var i=0;i<skillList.firstChild.childNodes.length;i++){ for(var i=0;i<skillList.firstChild.childNodes.length;i++){
skills.add(skillList.firstChild.childNodes[i].skill); skills.add(skillList.firstChild.childNodes[i].skill);
@ -40125,7 +40152,7 @@
if(infoitem[2]==0){ if(infoitem[2]==0){
node.node.hp.hide(); node.node.hp.hide();
} }
else if(infoitem[2]<=3){ else if(get.infoHp(infoitem[2])<=3){
node.node.hp.dataset.condition='mid'; node.node.hp.dataset.condition='mid';
} }
else{ else{
@ -40133,8 +40160,9 @@
} }
} }
else{ else{
if(infoitem[2]>14){ if(typeof infoitem[2]=='string'||infoitem[2]>14){
node.node.hp.innerHTML=get.numStr(infoitem[2]); if(typeof infoitem[2]=='string') node.node.hp.innerHTML=infoitem[2];
else node.node.hp.innerHTML=get.numStr(infoitem[2]);
node.node.hp.classList.add('text'); node.node.hp.classList.add('text');
} }
else{ else{
@ -42816,7 +42844,7 @@
var range=get.info(this).range; var range=get.info(this).range;
if(range){ if(range){
if(typeof range.attack==='number'){ if(typeof range.attack==='number'){
player.createRangeShadow(Math.min(8,player.getAttackRange()+range.attack-1)); player.createRangeShadow(Math.min(8,player.getAttackRange(true)+range.attack-1));
} }
else if(typeof range.global==='number'){ else if(typeof range.global==='number'){
player.createRangeShadow(Math.min(8,player.getGlobalFrom()+range.global)); player.createRangeShadow(Math.min(8,player.getGlobalFrom()+range.global));
@ -44469,6 +44497,20 @@
}, },
}; };
var get={ var get={
infoHp:function(hp){
if(typeof hp=='number') return hp;
else if(typeof hp=='string'&&hp.indexOf('/')!=-1){
return parseInt(hp.slice(0,hp.indexOf('/')));
}
return 0;
},
infoMaxHp:function(hp){
if(typeof hp=='number') return hp;
else if(typeof hp=='string'&&hp.indexOf('/')!=-1){
return parseInt(hp.slice(hp.indexOf('/')+1));
}
return 0;
},
is:{ is:{
converted:function(event){ converted:function(event){
return !(event.cards&&event.card&&event.cards.length==1&&event.cards[0]==event.card); return !(event.cards&&event.card&&event.cards.length==1&&event.cards[0]==event.card);
@ -46146,11 +46188,15 @@
} }
} }
if(str.suit&&str.number){ if(str.suit&&str.number){
var cardnum=str.number||'';
if([1,11,12,13].contains(cardnum)){
cardnum={'1':'A','11':'J','12':'Q','13':'K'}[cardnum]
}
if(arg=='viewAs'&&str.viewAs!=str.name&&str.viewAs){ if(arg=='viewAs'&&str.viewAs!=str.name&&str.viewAs){
str2+=''+get.translation(str)+''; str2+=''+get.translation(str)+'';
} }
else{ else{
str2+='【'+get.translation(str.suit)+str.number+'】'; str2+='【'+get.translation(str.suit)+cardnum+'】';
// var len=str2.length-1; // var len=str2.length-1;
// str2=str2.slice(0,len)+'<span style="letter-spacing: -2px">'+str2[len]+'·</span>'+get.translation(str.suit)+str.number; // str2=str2.slice(0,len)+'<span style="letter-spacing: -2px">'+str2[len]+'·</span>'+get.translation(str.suit)+str.number;
} }
@ -46737,8 +46783,8 @@
node=node.link; node=node.link;
} }
var capt=get.translation(node.name); var capt=get.translation(node.name);
if(lib.character[node.name]&&lib.character[node.name][1]){ if(lib.character[node.name]&&(lib.character[node.name][1]||lib.group.contains(node.group))){
capt+='&nbsp;&nbsp;'+lib.translate[lib.character[node.name][1]]; capt+='&nbsp;&nbsp;'+(lib.group.contains(node.group)?get.translation(node.group):lib.translate[lib.character[node.name][1]]);
} }
uiintro.add(capt); uiintro.add(capt);

View File

@ -1,33 +1,26 @@
window.noname_update={ window.noname_update={
version:'1.9.90', version:'1.9.90.1',
update:'1.9.89.4', update:'1.9.90',
changeLog:[ changeLog:[
'手杀武将单独分包', '神武将选择势力(仅限单机身份模式)',
'统率三军文聘和诸葛瑾', 'bug修复',
'英文版三国杀特典武将凯撒',
'其他bug修复',
'players://["kaisa"]',
], ],
files:[ files:[
'card/standard.js', 'card/extra.js',
'character/diy.js', 'card/guozhan.js',
'character/extra.js', 'character/extra.js',
'character/mobile.js',
'character/old.js',
'character/sp.js',
'character/yijiang.js',
'character/refresh.js', 'character/refresh.js',
'character/shenhua.js', 'character/shenhua.js',
'character/sp.js',
'character/standard.js',
'character/xinghuoliaoyuan.js', 'character/xinghuoliaoyuan.js',
'character/yxs.js', 'character/yijiang.js',
'mode/boss.js', 'mode/boss.js',
'mode/guozhan.js', 'mode/guozhan.js',
'mode/identity.js',
'mode/versus.js', 'mode/versus.js',
//'game/asset.js',
'game/config.js',
'game/game.js', 'game/game.js',
'game/package.js', 'layout/default/layout.css',
'game/source.js', 'layout/mobile/layout.css',
//'game/package.js'
] ]
}; };

View File

@ -2469,6 +2469,10 @@ div:not(.handcards)>.card>.info>span,
border-radius: 21px; border-radius: 21px;
z-index: 1 z-index: 1
} }
.equips>.equip6 {
bottom: 3;
left: calc(50% - 21px);
}
.equips>div>div:not(.image),.judges>div>div:not(.image),.marks>div>div:not(.image) { .equips>div>div:not(.image),.judges>div>div:not(.image),.marks>div>div:not(.image) {
display: none; display: none;
} }
@ -3689,6 +3693,11 @@ span[data-nature='firemx'] {
text-shadow: black 0 0 1px,rgba(191, 0, 0,0.2) 0 0 2px,rgba(191, 0, 0,1) 0 0 2px,rgba(191, 0, 0,1) 0 0 5px, text-shadow: black 0 0 1px,rgba(191, 0, 0,0.2) 0 0 2px,rgba(191, 0, 0,1) 0 0 2px,rgba(191, 0, 0,1) 0 0 5px,
rgba(191, 0, 0,1) 0 0 5px,black 0 0 1px; rgba(191, 0, 0,1) 0 0 5px,black 0 0 1px;
} }
div[data-nature='firemm'],
span[data-nature='firemm'] {
text-shadow: black 0 0 1px,rgba(232, 53, 53,1) 0 0 2px,rgba(232, 53, 53,1) 0 0 2px,rgba(232, 53, 53,1) 0 0 2px,
rgba(232, 53, 53,1) 0 0 2px,black 0 0 1px;
}
.player .identity[data-color="mingzhong"] { .player .identity[data-color="mingzhong"] {
text-shadow: black 0 0 1px,rgba(255, 120, 0,1) 0 0 2px,rgba(255, 120, 0,1) 0 0 5px,rgba(255, 120, 0,1) 0 0 10px, text-shadow: black 0 0 1px,rgba(255, 120, 0,1) 0 0 2px,rgba(255, 120, 0,1) 0 0 5px,rgba(255, 120, 0,1) 0 0 10px,

View File

@ -188,6 +188,7 @@
#arena:not(.chess) .player[data-position='0']>.equips>.equip2{top: 10px;right: 10px;} #arena:not(.chess) .player[data-position='0']>.equips>.equip2{top: 10px;right: 10px;}
#arena:not(.chess) .player[data-position='0']>.equips>.equip3{bottom: 10px;left: 10px;} #arena:not(.chess) .player[data-position='0']>.equips>.equip3{bottom: 10px;left: 10px;}
#arena:not(.chess) .player[data-position='0']>.equips>.equip4{bottom: 10px;right: 10px;} #arena:not(.chess) .player[data-position='0']>.equips>.equip4{bottom: 10px;right: 10px;}
#arena:not(.chess) .player[data-position='0']>.equips>.equip6{bottom: 10px;right: 10px;}
#arena:not(.chess) .player[data-position='0']>.name, #arena:not(.chess) .player[data-position='0']>.name,
#arena:not(.chess) .player[data-position='0'].linked>.name{ #arena:not(.chess) .player[data-position='0'].linked>.name{
@ -305,7 +306,8 @@
top:20px; top:20px;
} }
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position='0']>.equips>.equip3, #arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position='0']>.equips>.equip3,
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position='0']>.equips>.equip4{ #arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position='0']>.equips>.equip4,
#arena.mobile.oblongcard:not(.chess):not(.textequip) .player[data-position='0']>.equips>.equip6{
bottom:20px; bottom:20px;
} }

View File

@ -737,13 +737,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
characterPack:{ characterPack:{
mode_boss:{ mode_boss:{
boss_hundun:['male','shen',25,['boss_xiongshou','boss_wuzang','boss_xiangde','boss_yinzei','boss_yinzei_switch'],['qun','boss','bossallowed'],'qun'], boss_hundun:['male','shen',25,['boss_xiongshou','boss_wuzang','boss_xiangde','boss_yinzei','boss_yinzei_switch'],['qun','boss','bossallowed'],'qun'],
boss_qiongqi:['male','shen',20,['boss_xiongshou','boss_zhue','boss_futai','boss_yandu','boss_yandu_switch'],['qun','boss','bossallowed'],'qun'], boss_qiongqi:['male','shen','20/25',['boss_xiongshou','boss_zhue','boss_futai','boss_yandu','boss_yandu_switch'],['qun','boss','bossallowed'],'qun'],
boss_taotie:['male','shen',20,['boss_xiongshou','boss_tanyu','boss_cangmu','boss_jicai','boss_jicai_switch'],['qun','boss','bossallowed'],'qun'], boss_taotie:['male','shen',20,['boss_xiongshou','boss_tanyu','boss_cangmu','boss_jicai','boss_jicai_switch'],['qun','boss','bossallowed'],'qun'],
boss_taowu:['male','shen',25,['boss_xiongshou','boss_minwan','boss_nitai','boss_luanchang','boss_luanchang_switch'],['qun','boss','bossallowed'],'qun'], boss_taowu:['male','shen',25,['boss_xiongshou','boss_minwan','boss_nitai','boss_luanchang','boss_luanchang_switch'],['qun','boss','bossallowed'],'qun'],
boss_zhuyin:['male','shen',4,['boss_xiongshou'],['qun','hiddenboss','bossallowed'],'qun'], boss_zhuyin:['male','shen',4,['boss_xiongshou'],['qun','hiddenboss','bossallowed'],'qun'],
boss_xiangliu:['male','shen',25,['boss_yaoshou','boss_duqu','boss_jiushou','boss_echou','boss_echou_switch'],['qun','boss','bossallowed'],'qun'], boss_xiangliu:['male','shen',25,['boss_yaoshou','boss_duqu','boss_jiushou','boss_echou','boss_echou_switch'],['qun','boss','bossallowed'],'qun'],
boss_zhuyan:['male','shen',25,['boss_yaoshou','boss_bingxian','boss_juyuan','boss_xushi','boss_xushi_switch'],['qun','boss','bossallowed'],'qun'], boss_zhuyan:['male','shen','25/30',['boss_yaoshou','boss_bingxian','boss_juyuan','boss_xushi','boss_xushi_switch'],['qun','boss','bossallowed'],'qun'],
boss_bifang:['male','shen',25,['boss_yaoshou','boss_zhaohuo','boss_honglianx','boss_yanyu','boss_yanyu_switch'],['qun','boss','bossallowed'],'qun'], boss_bifang:['male','shen',25,['boss_yaoshou','boss_zhaohuo','boss_honglianx','boss_yanyu','boss_yanyu_switch'],['qun','boss','bossallowed'],'qun'],
boss_yingzhao:['male','shen',25,['boss_yaoshou','boss_fengdong','boss_xunyou','boss_sipu','boss_sipu_switch'],['qun','boss','bossallowed'],'qun'], boss_yingzhao:['male','shen',25,['boss_yaoshou','boss_fengdong','boss_xunyou','boss_sipu','boss_sipu_switch'],['qun','boss','bossallowed'],'qun'],
@ -1905,7 +1905,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
trigger:{global:'gameStart'}, trigger:{global:'gameStart'},
content:function(){ content:function(){
player.disableSkill('boss_xushi_awake','boss_xushi'); player.disableSkill('boss_xushi_awake','boss_xushi');
player.gainMaxHp(5);
}, },
silent:true silent:true
}, },
@ -2575,7 +2574,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
trigger:{global:'gameStart'}, trigger:{global:'gameStart'},
content:function(){ content:function(){
player.disableSkill('boss_yandu_awake','boss_yandu'); player.disableSkill('boss_yandu_awake','boss_yandu');
player.gainMaxHp(5);
}, },
silent:true silent:true
}, },
@ -5665,11 +5663,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
group:['boss_manjia1','boss_manjia2'] group:['boss_manjia1','boss_manjia2']
}, },
boss_manjia1:{ boss_manjia1:{
trigger:{target:'useCardToBefore'}, trigger:{target:['useCardToBefore','shaBegin']},
forced:true, forced:true,
priority:6, priority:6,
filter:function(event,player){ filter:function(event,player,name){
if(player.getEquip(2)) return false; if(player.getEquip(2)) return false;
if(name=='shaBegin') return lib.skill.tengjia3.filter(event,player);
return lib.skill.tengjia1.filter(event,player); return lib.skill.tengjia1.filter(event,player);
}, },
content:function(){ content:function(){
@ -7484,7 +7483,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
shenqu:'神躯', shenqu:'神躯',
shenqu_info:'每名角色的准备阶段,若你的手牌数少于或等于你的体力上限数,你可以摸两张牌;当你受到伤害后,你可以使用一张【桃】', shenqu_info:'每名角色的准备阶段,若你的手牌数少于或等于你的体力上限数,你可以摸两张牌;当你受到伤害后,你可以使用一张【桃】',
jiwu:'极武', jiwu:'极武',
jiwu_info:'出牌阶段,你可以弃置一张手牌,然后获得一项:“强袭”、“烈刃”、“旋风”、“完杀”,直到回合结束', jiwu_info:'出牌阶段,你可以弃置一张牌,然后获得一项:“强袭”、“铁骑”(界)、“旋风”、“完杀”,直到回合结束',
mode_boss_card_config:'挑战卡牌', mode_boss_card_config:'挑战卡牌',
mode_boss_character_config:'挑战武将', mode_boss_character_config:'挑战武将',

View File

@ -808,6 +808,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
init:function(player){player.storage.gzweidi=[]}, init:function(player){player.storage.gzweidi=[]},
enable:'phaseUse', enable:'phaseUse',
usable:1, usable:1,
filter:function(event,player){
return player.storage.gzweidi.length>0
},
filterTarget:function(card,player,target){return target!=player&&player.storage.gzweidi.contains(target)}, filterTarget:function(card,player,target){return target!=player&&player.storage.gzweidi.contains(target)},
content:function(){ content:function(){
'step 0' 'step 0'
@ -852,7 +855,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
trigger:{global:'gainBefore'}, trigger:{global:'gainBefore'},
silent:true, silent:true,
filter:function(event,player){ filter:function(event,player){
if(player.storage.gzweidi.contains(event.player)||_status.currentPhase!=player) return false; if(player==event.player||player.storage.gzweidi.contains(event.player)||_status.currentPhase!=player) return false;
if(event.cards.length){ if(event.cards.length){
if(event.getParent().name=='draw') return true; if(event.getParent().name=='draw') return true;
for(var i=0;i<event.cards.length;i++) if(get.position(event.cards[i])=='c') return true; for(var i=0;i<event.cards.length;i++) if(get.position(event.cards[i])=='c') return true;
@ -1137,7 +1140,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}, },
content:function(){ content:function(){
'step 0' 'step 0'
player.chooseBool('总御</br></br><div="center text">是否与'+get.translation(trigger.player)+'交换装备区内坐骑牌</div>'); player.chooseBool('是否发动【总御】,与'+get.translation(trigger.player)+'交换装备区内坐骑牌');
'step 1' 'step 1'
if(result.bool){ if(result.bool){
player.logSkill('gzzongyu_others',trigger.player); player.logSkill('gzzongyu_others',trigger.player);
@ -2459,7 +2462,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
filterTarget:function (card,player,target){ filterTarget:function (card,player,target){
if(player==target) return false; if(player==target) return false;
for(var i=0;i<ui.selected.targets.length;i++){ for(var i=0;i<ui.selected.targets.length;i++){
if(ui.selected.targets[i].group==target.group) return false; if(ui.selected.targets[i].isFriendOf(target)) return false;
} }
return target.countCards('he')>0; return target.countCards('he')>0;
}, },

View File

@ -617,6 +617,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(typeof lib.config.test_game=='string'&&player==game.me.next){ if(typeof lib.config.test_game=='string'&&player==game.me.next){
player.init(lib.config.test_game); player.init(lib.config.test_game);
} }
if(player.group=='shen'){
var list=lib.group.slice(0);
list.remove('shen');
if(list.length) player.group=list.randomGet();
}
player.node.name.dataset.nature=get.groupnature(player.group);
} }
next.setContent(function(){ next.setContent(function(){
"step 0" "step 0"
@ -1143,22 +1149,49 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
ui.cheat2.close(); ui.cheat2.close();
delete ui.cheat2; delete ui.cheat2;
} }
var chooseGroup=false;
if(event.chosen.length){ if(event.chosen.length){
game.me.init(event.chosen[0],event.chosen[1]); if(lib.character[event.chosen[0]][1]=='shen'){
chooseGroup=true;
}
} }
else if(event.modchosen){ else if(event.modchosen){
if(event.modchosen[0]=='random') event.modchosen[0]=result.buttons[0].link; if(event.modchosen[0]=='random') event.modchosen[0]=result.buttons[0].link;
else event.modchosen[1]=result.buttons[0].link; else event.modchosen[1]=result.buttons[0].link;
game.me.init(event.modchosen[0],event.modchosen[1]);
} }
else if(result.buttons.length==2){ else if(result.buttons.length==2){
game.me.init(result.buttons[0].link,result.buttons[1].link); event.choosed=[result.buttons[0].link,result.buttons[1].link];
game.addRecentCharacter(result.buttons[0].link,result.buttons[1].link); game.addRecentCharacter(result.buttons[0].link,result.buttons[1].link);
if(lib.character[event.choosed[0]][1]=='shen'){
chooseGroup=true;
}
} }
else{ else{
game.me.init(result.buttons[0].link); event.choosed=[result.buttons[0].link];
if(lib.character[event.choosed[0]][1]=='shen'){
chooseGroup=true;
}
game.addRecentCharacter(result.buttons[0].link); game.addRecentCharacter(result.buttons[0].link);
} }
if(chooseGroup){
var list=lib.group.slice(0);
list.remove('shen');
game.me.chooseControl(list).prompt='请选择神武将的势力';
}
"step 2"
event.group=result.control||false;
if(event.chosen.length){
game.me.init(event.chosen[0],event.chosen[1]);
}
else if(event.modchosen){
game.me.init(event.modchosen[0],event.modchosen[1]);
}
else if(event.choosed.length==2){
game.me.init(event.choosed[0],event.choosed[1]);
}
else{
game.me.init(event.choosed[0]);
}
event.list.remove(game.me.name); event.list.remove(game.me.name);
event.list.remove(game.me.name2); event.list.remove(game.me.name2);
if(game.me==game.zhu&&game.players.length>4){ if(game.me==game.zhu&&game.players.length>4){
@ -1171,6 +1204,13 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
event.ai(game.players[i],event.list.splice(0,get.config('choice_'+game.players[i].identity)),null,event.list) event.ai(game.players[i],event.list.splice(0,get.config('choice_'+game.players[i].identity)),null,event.list)
} }
} }
"step 3"
if(event.group){
game.me.group=event.group;
game.me.node.name.dataset.nature=get.groupnature(game.me.group);
game.me.update();
}
"step 4"
setTimeout(function(){ setTimeout(function(){
ui.arena.classList.remove('choose-character'); ui.arena.classList.remove('choose-character');
},500); },500);

View File

@ -98,8 +98,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.prepareArena(2); game.prepareArena(2);
} }
else if(_status.mode=='three'){ else if(_status.mode=='three'){
lib.character.wenpin[3]=['zhenwei_three']; if(lib.character.wenpin) lib.character.wenpin[3]=['zhenwei_three'];
lib.character.zhugejin[3]=['hongyuan','huanshi_three','mingzhe']; if(lib.character.zhugejin) lib.character.zhugejin[3]=['hongyuan','huanshi_three','mingzhe'];
if(!get.config('enable_all_cards')){ if(!get.config('enable_all_cards')){
lib.translate.wuzhong_info+='若对方存活角色多于己方,则额外摸一张牌'; lib.translate.wuzhong_info+='若对方存活角色多于己方,则额外摸一张牌';
lib.translate.zhuge_info='锁定技,出牌阶段,你使用杀的次数上限+3'; lib.translate.zhuge_info='锁定技,出牌阶段,你使用杀的次数上限+3';
@ -4239,14 +4239,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
unique:true, unique:true,
content:function(){ content:function(){
"step 0" "step 0"
event.players=get.players(player); event.players=game.filterPlayer(function(current){
return current.isEnemyOf(player);
});
"step 1" "step 1"
if(event.players.length){ if(event.players.length){
var current=event.players.shift(); var current=event.players.shift();
if(current.isEnemyOf(player)){
player.line(current,'fire'); player.line(current,'fire');
current.damage('fire'); current.damage('fire');
}
event.redo(); event.redo();
} }
}, },
@ -4820,7 +4820,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
event.cards=get.cards(3); event.cards=get.cards(3);
event.cards2=[]; event.cards2=[];
for(var i=0;i<event.cards.length;i++){ for(var i=0;i<event.cards.length;i++){
var type=get.type(event.cards[i]); var type=get.type(event.cards[i],'trick');
if(type=='trick'||type=='equip'){ if(type=='trick'||type=='equip'){
event.cards2.push(event.cards[i]); event.cards2.push(event.cards[i]);
} }