update
|
@ -17,7 +17,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
extra_mobilezhi:['shen_guojia'],
|
||||
extra_mobilexin:['shen_taishici'],
|
||||
extra_offline:['shen_diaochan','boss_zhaoyun'],
|
||||
extra_mini:['mini_zhugeliang','mini_lvbu','mini_lvmeng'],
|
||||
},
|
||||
},
|
||||
character:{
|
||||
|
@ -45,10 +44,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
shen_caopi:['male','shen',5,['chuyuan','dengji'],['wei']],
|
||||
shen_zhenji:['female','shen',4,['shenfu','qixian'],['wei']],
|
||||
boss_zhaoyun:['male','shen',1,['boss_juejing','xinlonghun','zhanjiang'],['shu']],
|
||||
|
||||
mini_zhugeliang:['male','shen',3,['qixing','minikuangfeng','minidawu'],['shu']],
|
||||
mini_lvbu:['male','shen',6,['miniwuqian','minishenfen']],
|
||||
mini_lvmeng:['male','shen',3,['shelie','minigongxin'],['wu']],
|
||||
},
|
||||
characterIntro:{
|
||||
shen_guanyu:'关羽,字云长。曾水淹七军、擒于禁、斩庞德、威震华夏,吓得曹操差点迁都躲避,但是东吴偷袭荆州,关羽兵败被害。后传说吕蒙因关羽之魂索命而死。',
|
||||
|
@ -61,9 +56,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
characterReplace:{
|
||||
shen_zhangliao:['shen_zhangliao','ol_zhangliao'],
|
||||
shen_zhugeliang:['shen_zhugeliang','mini_zhugeliang'],
|
||||
shen_lvbu:['shen_lvbu','mini_lvbu'],
|
||||
shen_lvmeng:['shen_lvmeng','mini_lvmeng'],
|
||||
shen_zhaoyun:['shen_zhaoyun','boss_zhaoyun'],
|
||||
},
|
||||
characterFilter:{
|
||||
|
@ -770,179 +762,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
else player.chooseToDiscard('h',true,-num);
|
||||
},
|
||||
},
|
||||
miniwuqian:{
|
||||
audio:'wuqian',
|
||||
trigger:{
|
||||
player:'useCardToPlayered',
|
||||
},
|
||||
filter:function(event,player){
|
||||
return (event.card.name=='sha'||event.card.name=='juedou')&&player==_status.currentPhase&&
|
||||
player.getHistory('useCard',function(evt){
|
||||
return (evt.card.name=='sha'||evt.card.name=='juedou');
|
||||
}).indexOf(event.getParent())==0;
|
||||
},
|
||||
forced:true,
|
||||
logTarget:'target',
|
||||
content:function(){
|
||||
trigger.target.addTempSkill('qinggang2');
|
||||
trigger.target.storage.qinggang2.add(trigger.card);
|
||||
if(trigger.card.name=='sha'){
|
||||
var id=trigger.target.playerid;
|
||||
var map=trigger.getParent().customArgs;
|
||||
if(!map[id]) map[id]={};
|
||||
if(typeof map[id].shanRequired=='number'){
|
||||
map[id].shanRequired++;
|
||||
}
|
||||
else{
|
||||
map[id].shanRequired=2;
|
||||
}
|
||||
}
|
||||
else{
|
||||
var id=trigger.target.playerid;
|
||||
var idt=trigger.target.playerid;
|
||||
var map=trigger.getParent().customArgs;
|
||||
if(!map[idt]) map[idt]={};
|
||||
if(!map[idt].shaReq) map[idt].shaReq={};
|
||||
if(!map[idt].shaReq[id]) map[idt].shaReq[id]=1;
|
||||
map[idt].shaReq[id]++;
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
unequip_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(arg&&arg.name=='sha'&&!player.countUsed('sha')) return true;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
},
|
||||
minishenfen:{
|
||||
audio:'ol_shenfen',
|
||||
enable:'phaseUse',
|
||||
skillAnimation:true,
|
||||
animationColor:'metal',
|
||||
limited:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.awakenSkill('minishenfen');
|
||||
player.loseHp(3);
|
||||
event.delay=false;
|
||||
event.targets=game.filterPlayer();
|
||||
event.targets.remove(player);
|
||||
event.targets.sort(lib.sort.seat);
|
||||
player.line(event.targets,'green');
|
||||
event.targets2=event.targets.slice(0);
|
||||
event.targets3=event.targets.slice(0);
|
||||
"step 1"
|
||||
if(event.targets2.length){
|
||||
event.targets2.shift().damage('nocard');
|
||||
event.redo();
|
||||
}
|
||||
"step 2"
|
||||
if(event.targets.length){
|
||||
event.current=event.targets.shift()
|
||||
if(event.current.countCards('e')) event.delay=true;
|
||||
event.current.discard(event.current.getCards('e')).delay=false;
|
||||
}
|
||||
"step 3"
|
||||
if(event.delay) game.delay(0.5);
|
||||
event.delay=false;
|
||||
if(event.targets.length) event.goto(2);
|
||||
"step 4"
|
||||
if(event.targets3.length){
|
||||
var target=event.targets3.shift();
|
||||
target.chooseToDiscard(4,'h',true).delay=false;
|
||||
if(target.countCards('h')) event.delay=true;
|
||||
}
|
||||
"step 5"
|
||||
if(event.delay) game.delay(0.5);
|
||||
event.delay=false;
|
||||
if(event.targets3.length) event.goto(4);
|
||||
},
|
||||
ai:{
|
||||
order:10,
|
||||
result:{
|
||||
player:function(player){
|
||||
if(player.hp<5||player.hasUnknown()) return 0;
|
||||
return game.countPlayer(function(current){
|
||||
if(current!=player){
|
||||
return get.sgn(get.damageEffect(current,player,player));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
minikuangfeng:{
|
||||
audio:'kuangfeng',
|
||||
trigger:{player:'phaseUseEnd'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.getStorage('qixing').length>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget([1,Math.min(game.players.length,player.getStorage('qixing').length)],get.prompt2('minikuangfeng')).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
var eff=get.damageEffect(target,player,player);
|
||||
if(target.hp==1||!ui.selected.targets.length) return eff;
|
||||
return 0;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
event.targets=result.targets;
|
||||
player.chooseButton(['请选择要移去的“星”',player.getStorage('qixing')],true,result.targets.length).set('ai',function(button){
|
||||
return -get.value(button.link);
|
||||
});
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
var cards=result.links;
|
||||
player.logSkill('minikuangfeng',targets);
|
||||
player.$throw(cards,2000);
|
||||
player.unmarkAuto('qixing',cards);
|
||||
game.cardsDiscard(cards);
|
||||
for(var i of targets) i.damage();
|
||||
},
|
||||
},
|
||||
minidawu:{
|
||||
audio:'dawu',
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.getStorage('qixing').length>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseButton([get.prompt('minidawu'),player.getStorage('qixing')]).set('ai',function(button){
|
||||
return 1/Math.max(0.01,get.value(button.link));
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var cards=result.links;
|
||||
player.logSkill('minidawu');
|
||||
player.$throw(cards,2000);
|
||||
player.unmarkAuto('qixing',cards);
|
||||
game.cardsDiscard(cards);
|
||||
player.addTempSkill('minidawu2',{player:'phaseBegin'});
|
||||
}
|
||||
},
|
||||
},
|
||||
minidawu2:{
|
||||
audio:'dawu',
|
||||
trigger:{player:'damageBegin3'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
content:function(){
|
||||
trigger.num--;
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
target:function(card,player,target){
|
||||
if(get.tag(card,'damage')&&(card.name!='sha'||!player.hasSkill('jiu'))) return 'zerotarget';
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
meihun:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
|
@ -3674,96 +3493,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
expose:0.4,
|
||||
}
|
||||
},
|
||||
minigongxin:{
|
||||
audio:'gongxin',
|
||||
audioname:['re_lvmeng','gexuan'],
|
||||
trigger:{
|
||||
player:'useCardToPlayered',
|
||||
target:'useCardToTargeted',
|
||||
},
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
if(event.player==event.target||event.targets.length!=1) return false;
|
||||
return (player==event.player?event.target:event.player).countCards('h')>0;
|
||||
},
|
||||
logTarget:function(event,player){
|
||||
return player==event.player?event.target:event.player;
|
||||
},
|
||||
check:function(event,player){
|
||||
return get.attitude(player,player==event.player?event.target:event.player)<=0;
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
var target=(player==trigger.player?trigger.target:trigger.player);
|
||||
event.target=target;
|
||||
event.videoId=lib.status.videoId++;
|
||||
var cards=target.getCards('h');
|
||||
if(player.isOnline2()){
|
||||
player.send(function(cards,id){
|
||||
ui.create.dialog('攻心',cards).videoId=id;
|
||||
},cards,event.videoId);
|
||||
}
|
||||
event.dialog=ui.create.dialog('攻心',cards);
|
||||
event.dialog.videoId=event.videoId;
|
||||
if(!event.isMine()){
|
||||
event.dialog.style.display='none';
|
||||
}
|
||||
player.chooseButton().set('filterButton',function(button){
|
||||
return get.color(button.link)=='red';
|
||||
}).set('dialog',event.videoId).set('ai',function(button){
|
||||
return get.value(button.link);
|
||||
});
|
||||
"step 1"
|
||||
if(result.bool){
|
||||
event.card=result.links[0];
|
||||
var func=function(card,id){
|
||||
var dialog=get.idDialog(id);
|
||||
if(dialog){
|
||||
for(var i=0;i<dialog.buttons.length;i++){
|
||||
if(dialog.buttons[i].link==card){
|
||||
dialog.buttons[i].classList.add('selectedx');
|
||||
}
|
||||
else{
|
||||
dialog.buttons[i].classList.add('unselectable');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(player.isOnline2()){
|
||||
player.send(func,event.card,event.videoId);
|
||||
}
|
||||
else if(event.isMine()){
|
||||
func(event.card,event.videoId);
|
||||
}
|
||||
player.chooseControl('获得此牌','gongxin_top');
|
||||
}
|
||||
else{
|
||||
if(player.isOnline2()){
|
||||
player.send('closeDialog',event.videoId);
|
||||
}
|
||||
event.dialog.close();
|
||||
event.finish();
|
||||
}
|
||||
"step 2"
|
||||
if(player.isOnline2()){
|
||||
player.send('closeDialog',event.videoId);
|
||||
}
|
||||
event.dialog.close();
|
||||
var card=event.card;
|
||||
if(result.control=='gongxin_top'){
|
||||
player.showCards(card,'置于牌堆顶');
|
||||
target.lose(card,ui.cardPile,'insert','visible');
|
||||
game.log(player,'将',event.card,'置于牌堆顶');
|
||||
}
|
||||
else{
|
||||
player.gain(card,target,'give');
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
threaten:1.7,
|
||||
expose:0.4,
|
||||
}
|
||||
},
|
||||
"nzry_longnu":{
|
||||
mark:true,
|
||||
locked:true,
|
||||
|
@ -4610,20 +4339,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
huoxin_control:'惑心',
|
||||
huoxin:'惑心',
|
||||
huoxin_info:'出牌阶段限一次,你可以展示两张花色相同的手牌并分别交给两名其他角色,然后令这两名角色拼点,没赢的角色获得1个“魅惑”标记。拥有2个或更多“魅惑”的角色回合即将开始时,该角色移去其所有“魅惑”,此回合改为由你操控。',
|
||||
mini_zhugeliang:'SP神诸葛亮',
|
||||
minikuangfeng:'狂风',
|
||||
minikuangfeng_info:'出牌阶段结束时,你可选择任意名角色并将等量的“星”置入弃牌堆,然后对这些角色各造成1点伤害。',
|
||||
minidawu:'大雾',
|
||||
minidawu2:'大雾',
|
||||
minidawu_info:'结束阶段,你可以将一张“星”置入弃牌堆。当你于下回合开始前受到伤害时,此伤害-1。',
|
||||
mini_lvbu:'SP神吕布',
|
||||
miniwuqian:'无前',
|
||||
miniwuqian_info:'锁定技,当你于回合内使用【杀】或【决斗】指定目标后,若此牌是你本回合内使用的第一张【杀】或【决斗】,则你令其每次响应此牌需要使用的【闪】或打出的【杀】的数量+1,且令其防具无效直到此牌对其结束。',
|
||||
minishenfen:'神愤',
|
||||
minishenfen_info:'限定技,出牌阶段,你可以失去3点体力,对所有其他角色各造成1点伤害。这些角色弃置装备区内的所有牌,然后弃置四张手牌。',
|
||||
mini_lvmeng:'SP神吕蒙',
|
||||
minigongxin:'攻心',
|
||||
minigongxin_info:'每回合限一次,当你使用牌指定其他角色为唯一目标后,或成为其他角色使用牌的唯一目标后,你可观看对方的手牌。然后你可以展示其中的一张红色牌并选择一项:①获得此牌。②将此牌置于牌堆顶。',
|
||||
boss_zhaoyun:'高达一号',
|
||||
boss_zhaoyun_ab:'神赵云',
|
||||
boss_juejing:'绝境',
|
||||
|
@ -4688,7 +4403,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
extra_mobilezhi:'始计篇·智',
|
||||
extra_mobilexin:'始计篇·信',
|
||||
extra_offline:'神话再临·线下',
|
||||
extra_mini:'欢乐三国杀',
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
|
@ -1484,7 +1484,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
if(event.type!='discard'){
|
||||
var evt=event.getParent();
|
||||
if(evt.name!='useCard'&&event.type!='respond') return false;
|
||||
if(evt.name!='useCard'&&evt.name!='respond') return false;
|
||||
}
|
||||
var target=_status.currentPhase;
|
||||
if(!event.cards2||event.cards2.length!=1||!target||target==player||!target.isIn()) return false;
|
||||
|
|
|
@ -270,8 +270,6 @@ window.noname_character_rank={
|
|||
'key_nao',
|
||||
'key_kotarou',
|
||||
'key_kyou',
|
||||
'mini_zhugeliang',
|
||||
'mini_lvmeng',
|
||||
],
|
||||
am:[
|
||||
'diy_caiwenji',
|
||||
|
@ -459,7 +457,6 @@ window.noname_character_rank={
|
|||
'ns_caoshuang',
|
||||
'key_shizuku',
|
||||
'wangrong',
|
||||
'mini_lvbu',
|
||||
're_fazheng',
|
||||
'huaxin',
|
||||
're_chunyuqiong',
|
||||
|
@ -579,7 +576,6 @@ window.noname_character_rank={
|
|||
'sunquan',
|
||||
'daqiao',
|
||||
'diaochan',
|
||||
'mini_diaochan',
|
||||
'liubei',
|
||||
'xf_yiji',
|
||||
'zhoufei',
|
||||
|
@ -668,9 +664,6 @@ window.noname_character_rank={
|
|||
'nashime',
|
||||
'ns_huangchengyan',
|
||||
'ns_yuanxi',
|
||||
'mini_sunquan',
|
||||
'mini_zuoci',
|
||||
'mini_jiangwei',
|
||||
're_fuhuanghou',
|
||||
're_gongsunyuan',
|
||||
're_caozhen',
|
||||
|
@ -1018,7 +1011,6 @@ window.noname_character_rank={
|
|||
'ns_lijue',
|
||||
'ns_zhangji',
|
||||
'ol_dingyuan',
|
||||
'mini_zhangchunhua',
|
||||
'hucheer',
|
||||
'jin_xiahouhui',
|
||||
'xin_zhangfei',
|
||||
|
@ -1180,7 +1172,6 @@ window.noname_character_rank={
|
|||
'ns_zhangwei',
|
||||
'ol_yuanshao',
|
||||
'guozhao',
|
||||
'mini_lvmeng',
|
||||
'boss_zhaoyun',
|
||||
'yanghuiyu',
|
||||
'nanhualaoxian',
|
||||
|
@ -1209,6 +1200,7 @@ window.noname_character_rank={
|
|||
'yangwan',
|
||||
'shen_guojia',
|
||||
'shen_taishici',
|
||||
'tw_gexuan',
|
||||
'key_tomoya',
|
||||
'key_masato',
|
||||
'key_shiorimiyuki',
|
||||
|
@ -1362,9 +1354,6 @@ window.noname_character_rank={
|
|||
'ns_jiaxu',
|
||||
'liubian',
|
||||
'simashi',
|
||||
'mini_zuoci',
|
||||
'mini_lvbu',
|
||||
'mini_zhugeliang',
|
||||
'jin_simayi',
|
||||
'jin_zhangchunhua',
|
||||
'liuhong',
|
||||
|
@ -1663,10 +1652,6 @@ window.noname_character_rank={
|
|||
'ns_zhangji',
|
||||
'ns_fanchou',
|
||||
'xin_zhuran',
|
||||
'mini_sunquan',
|
||||
'mini_jiangwei',
|
||||
'mini_zhangchunhua',
|
||||
'mini_diaochan',
|
||||
'xin_lingtong',
|
||||
'xin_liubiao',
|
||||
're_xinxianying',
|
||||
|
@ -1717,6 +1702,7 @@ window.noname_character_rank={
|
|||
'heyan',
|
||||
're_caifuren',
|
||||
're_dongbai',
|
||||
'tw_dongzhao',
|
||||
],
|
||||
junk:[
|
||||
'sunshao',
|
||||
|
|
|
@ -230,9 +230,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
});
|
||||
if(list.length){
|
||||
var max=Math.min(list.length,cards.length);
|
||||
player.chooseTarget(true,[1,max],'对至多'+get.cnNumber(max)+'名范围内的角色各造成1点伤害',function(card,player,target){
|
||||
target.chooseTarget(true,[1,max],'对至多'+get.cnNumber(max)+'名范围内的角色各造成1点伤害',function(card,player,target){
|
||||
return _status.event.list.contains(target);
|
||||
}).set('list',list);
|
||||
}).set('list',list).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player);
|
||||
});
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
|
|
|
@ -7353,11 +7353,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dongzhuo:['ol_dongzhuo','sp_dongzhuo','re_dongzhuo','dongzhuo'],
|
||||
dengai:['re_dengai','ol_dengai','dengai'],
|
||||
sp_zhanghe:['sp_zhanghe','yj_zhanghe'],
|
||||
jiangwei:['ol_jiangwei','re_jiangwei','mini_jiangwei','jiangwei'],
|
||||
jiangwei:['ol_jiangwei','re_jiangwei','jiangwei'],
|
||||
liushan:['ol_liushan','re_liushan','liushan'],
|
||||
sunce:['re_sunben','re_sunce','sunce'],
|
||||
zhangzhang:['re_zhangzhang','zhangzhang'],
|
||||
zuoci:['re_zuoci','mini_zuoci','zuoci'],
|
||||
zuoci:['re_zuoci','zuoci'],
|
||||
caiwenji:['re_caiwenji','caiwenji'],
|
||||
xuyou:['sp_xuyou','xuyou'],
|
||||
guanqiujian:['guanqiujian','re_guanqiujian','old_guanqiujian'],
|
||||
|
@ -7406,7 +7406,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
"nzry_kuizhu_info":"弃牌阶段结束后,你可以选择一项:①令至多X名角色各摸一张牌。②对任意名体力值之和为X的角色造成一点伤害。(X为你此阶段弃置的牌数)",
|
||||
"nzry_zhizheng":"掣政",
|
||||
rechezheng:'掣政',
|
||||
"nzry_zhizheng_info":"锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色的数量,则你弃置其中一名角色的一张牌。",
|
||||
"nzry_zhizheng_info":"锁定技,你的出牌阶段内,当你对攻击范围内不包含你的其他角色造成伤害时,防止此伤害。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色的数量,则你弃置其中一名角色的一张牌。",
|
||||
"nzry_lijun1":"立军",
|
||||
"nzry_lijun":"立军",
|
||||
"nzry_lijun_info":"主公技,其他吴势力角色的出牌阶段限一次,其使用【杀】结算后,可以将此【杀】对应的实体牌交给你,然后你可以令其摸一张牌且本阶段内使用【杀】的次数上限+1。",
|
||||
|
|
357
character/sp.js
|
@ -8,7 +8,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang','sp_zhangliao','wolongfengchu','ol_xinxianying','panshu','huangzu','huangchengyan','gaogan','duxi'],
|
||||
sp_tongque:["liuxie","lingju","fuwan","sp_fuwan","sp_fuhuanghou","sp_jiben"],
|
||||
sp_zhongdan:["cuiyan","huangfusong"],
|
||||
sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan","luyusheng","sp_mifangfushiren","huaxin"],
|
||||
sp_guozhan:["zangba","shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan","sp_mifangfushiren"],
|
||||
sp_guozhan2:["mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","liqueguosi","lvfan","cuimao","jiling","zhangren","zoushi","zongyu"],
|
||||
//sp_single:["niujin"],
|
||||
sp_others:["hanba","caiyang"],
|
||||
|
@ -26,9 +26,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_fuhuanghou:['female','qun',3,['spcangni','spmixin']],
|
||||
sp_fuwan:['male','qun',3,['spfengyin','spchizhong']],
|
||||
zongyu:['male','shu',3,['zyqiao','chengshang']],
|
||||
luyusheng:['female','wu',3,['zhente','zhiwei']],
|
||||
ol_xinxianying:['female','wei',3,['xincaishi','xinzhongjian']],
|
||||
huaxin:['male','wei',3,['spwanggui','xibing']],
|
||||
wolongfengchu:['male','shu',4,['youlong','luanfeng']],
|
||||
sp_zhangliao:['male','qun',4,['mubing','ziqu','diaoling']],
|
||||
caoshuang:['male','wei',4,['retuogu','shanzhuan']],
|
||||
|
@ -154,9 +152,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zongyu:'宗预(?-264年),字德艳 ,荆州南阳郡安众县(今河南省南阳市)人。三国时期蜀汉官员、将领。曾随张飞入蜀助平益州,又受辟为丞相诸葛亮手下主簿,升任参军、右中郎将。诸葛亮逝世后,宗预受命出使孙吴,得到孙权的赞赏。迁后将军,出督永安,又升任征西大将军,并受封关内侯。公元258年(景耀元年),因病回成都,受任镇军大将军。蜀汉灭亡后,宗预随后主刘禅徙往洛阳,在中途病逝。宗预为人坦率耿直,多次出使孙吴并深得孙权的敬重,为吴、汉两国同盟的巩固作出了一定的贡献。',
|
||||
mifangfushiren:'麋芳(生卒年不详),字子方,东海郡朐县(今江苏省连云港市)人。汉末三国时期蜀国将领,刘备糜夫人的兄弟。麋芳本为徐州牧陶谦部下,曾被曹操表为彭城相。后来辞官,随刘备从徐州辗转至邺城、汝南、新野、长坂坡、江夏等地,奔波多年。傅士仁(生卒年不详),字君义,幽州广阳郡(今北京市)人,刘备手下将领。受到刘备的重用,但被关羽轻慢。<br>刘备称汉中王时,糜芳为南郡太守,但受到关羽的轻慢。后来,因未完成供给军资的任务而被关羽责骂,心中不安。吕蒙袭取荆州时,将已经投降的傅士仁展示给糜芳,麋芳于是选择投降,导致关羽兵败被杀。此后,在吴国担任将军,并且为吴征伐。',
|
||||
mengda:'孟达(?-228),字子度,本字子敬,因刘备的叔父名叫刘子敬,为避讳而改字。扶风郡郿人,三国时期人物。本为刘璋属下,后降刘备。关羽围樊城、襄阳时因不发兵救关羽而触怒刘备,于是投奔曹魏。此后,劝降刘封,未果。在魏官至散骑常侍、建武将军,封平阳亭侯。此后又欲反曹魏而归蜀汉,事败而死。',
|
||||
luyusheng:'陆郁生(?年-?),三国时期吴国官员陆绩之女。陆郁生的父亲陆绩是吴郡公认的才子,又是当时吴郡陆氏的领袖。陆绩赴任担任郁林太守,遂取此名。陆郁生年少的时候就定下坚贞的志向。建安二十四年(219年),陆绩早亡,她与两个兄弟陆宏、陆睿当时都只有几岁,一起返回吴县,被他们的从兄陆瑁接回抚养。13周岁的陆郁生嫁给同郡出身的张白为妻。出嫁3个月后,张白因为其兄张温一族的案件遭到连坐,被处以流刑,后死于流放地,陆郁生成为了寡妇,其后公开宣言不再改嫁,困难于生计但拒绝了所有提亲,在艰苦中从未停止服侍、照顾张白的姐妹。事情传到朝廷,皇帝褒奖陆郁生,号其为“义姑”。她的表侄姚信在文集中称赞她的义举。',
|
||||
wolongfengchu:'沙比武将,懒得复制粘贴,自己去看诸葛亮和庞统的介绍吧。',
|
||||
huaxin:'华歆(157年-232年1月30日),字子鱼,汉族。平原郡高唐县人(今山东省高唐县)。汉末至三国曹魏初年名士、重臣。华歆早年拜太尉陈球为师,与卢植、郑玄、管宁等为同门,又与管宁、邴原共称一龙,华歆为龙头。汉灵帝时华歆被举为孝廉,任郎中,因病去官。又被大将军何进征召为尚书郎。后任豫章太守,甚得民心。孙策率军南下,华歆举郡投降,被奉为上宾。官渡之战时,被征为议郎、参司空军事。入为尚书、侍中,又代荀彧为尚书令。丞相曹操讨孙权时,授华歆为军师。后为魏王国的御史大夫。曹丕即王位,拜华歆为相国,封安乐乡侯。曹魏建立后,其相国职名改称司徒。魏明帝即位,升任太尉,晋封博平侯。太和五年十二月(232年1月),华歆去世,年七十五,谥号“敬”。有文集三十卷,今佚失,其余见《全三国文》。',
|
||||
caoshuang:'曹爽(?-249年2月9日),字昭伯,沛国谯县(今安徽亳州市)人。三国时期魏国权臣,大司马曹真长子。曹爽体态肥胖,凭借宗室身份,出入宫廷,交好太子曹叡。魏明帝即位,起家员外散骑侍郎,累迁城门校尉、散骑常侍,转武卫将军。太和五年(231年),袭封邵陵侯。景初三年(239年),魏明帝曹叡病危,拜大将军、假黄钺,与司马懿并为托孤大臣。少帝曹芳即位,加侍中,改封武安侯。势倾四海,声震天下。任用私人,专权乱政,侵吞公产。伐蜀失败,虚耗国力。起居逾制,软禁郭太后。正始十年,太傅司马懿发动高平陵政变,掌握魏国大权。曹爽失去大将军职务,以谋反之罪处死,夷灭三族。',
|
||||
zhangling:'张道陵(34年2月22日—156年),字辅汉,原名陵,道教正一道实际创立者,汉朝东汉时期丰邑(今江苏徐州丰县)人。太上老君降临蜀地,“授以三天正法,命为天师”,张道陵整合当时的:黄老派、方仙道、文始派等先秦修道团体,创立道教称正一盟威之道。后世尊称为“老祖天师”、“正一真人”、“三天扶教大法师”、高明上帝、张天师。著作《老子想尔注》,弟子有3000多人,设立24治,奠基天师道。张道陵、葛玄、许逊、萨守坚合称四大天师。张道陵创建道教的背景:当时在巴蜀一带,原有巴人信奉原始巫教,大规模的淫祀而害民。而这些祀奉鬼妖(学名为:妖邪)的法教巫师聚众敛财,无恶不作。张天师携王长、赵升二位弟子和黄帝九鼎丹经,来到北邙山修行,平定了那些祸害百姓的巫妖之教。川渝一带流传的张天师以太上老君剑印符箓大破鬼兵的故事就是以此为原型的。',
|
||||
caiyang:'蔡阳(?-201年),又作蔡扬,东汉丞相曹操部下武将,汝南太守。于建安六年(201)奉曹操之命攻击与刘备联合的汝南贼龚都等人,兵败被刘备所杀。明代小说《三国演义》改编为“云长擂鼓斩蔡阳”。',
|
||||
|
@ -1637,164 +1633,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
},
|
||||
//陆郁生
|
||||
zhente:{
|
||||
audio:2,
|
||||
trigger:{target:'useCardToTargeted'},
|
||||
logTarget:'player',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
var color=get.color(event.card);
|
||||
if(player==event.player||event.player.isDead()||(get.mode()=='guozhan'&&color!='black')) return false;
|
||||
var type=get.type(event.card);
|
||||
return type=='basic'||type=='trick';
|
||||
},
|
||||
check:function(event,player){
|
||||
return !event.excluded.contains(player)&&get.effect(player,event.card,event.player,player)<0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
trigger.player.chooseControl().set('choiceList',[
|
||||
'本回合内不能再使用'+get.translation(get.color(trigger.card))+'牌',
|
||||
'令'+get.translation(trigger.card)+'对'+get.translation(player)+'无效',
|
||||
]).set('prompt',get.translation(player)+'发动了【贞特】,请选择一项').set('ai',function(){
|
||||
var player=_status.event.player;
|
||||
var target=_status.event.getParent().player;
|
||||
var card=_status.event.getTrigger().card,color=get.color(card);
|
||||
if(get.effect(target,card,player,player)<=0) return 1;
|
||||
var hs=player.countCards('h',function(card){
|
||||
return get.color(card,player)==color&&player.hasValueTarget(card,null,true);
|
||||
});
|
||||
if(!hs.length) return 0;
|
||||
if(hs>1) return 1;
|
||||
return Math.random()>0.5?0:1;
|
||||
});
|
||||
'step 1'
|
||||
if(result.index==0){
|
||||
trigger.player.addTempSkill('zhente2');
|
||||
trigger.player.storage.zhente2.add(get.color(trigger.card));
|
||||
trigger.player.markSkill('zhente2');
|
||||
}
|
||||
else trigger.excluded.add(player);
|
||||
},
|
||||
},
|
||||
zhente2:{
|
||||
mod:{
|
||||
cardEnabled:function(card,player){
|
||||
if(player.getStorage('zhente2').contains(get.color(card))) return false;
|
||||
},
|
||||
cardSavable:function(card,player){
|
||||
if(player.getStorage('zhente2').contains(get.color(card))) return false;
|
||||
},
|
||||
},
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
init:function(player,skill){
|
||||
if(!player.storage[skill]) player.storage[skill]=[];
|
||||
},
|
||||
intro:{content:'本回合内不能使用$牌'},
|
||||
},
|
||||
zhiwei:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:['enterGame','showCharacterAfter','phaseBegin'],
|
||||
global:['gameDrawAfter'],
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(player.hasSkill('zhiwei2')) return false;
|
||||
if(get.mode()=='guozhan') return event.name=='showCharacter'&&(event.toShow.contains('gz_luyusheng')||event.toShow.contains('luyusheng'));
|
||||
return event.name!='showCharacter';
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget('请选择【至微】的目标','选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。',true,lib.filter.notMe).set('ai',function(target){
|
||||
var att=get.attitude(_status.event.player,target);
|
||||
if(att>0) return 1+att;
|
||||
return Math.random();
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('zhiwei',target);
|
||||
player.storage.zhiwei2=target;
|
||||
player.addSkill('zhiwei2');
|
||||
}
|
||||
},
|
||||
},
|
||||
zhiwei2:{
|
||||
group:['zhiwei2_draw','zhiwei2_discard','zhiwei2_gain','zhiwei2_clear'],
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
mark:'character',
|
||||
intro:{content:'$造成伤害后你摸一张牌;$受到伤害后你弃置一张牌;你于弃牌阶段弃置牌后交给$'},
|
||||
subSkill:{
|
||||
draw:{
|
||||
audio:'zhiwei',
|
||||
trigger:{global:'damageSource'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.source==player.storage.zhiwei2;
|
||||
},
|
||||
logTarget:'source',
|
||||
content:function(){
|
||||
player.draw();
|
||||
},
|
||||
},
|
||||
discard:{
|
||||
audio:'zhiwei',
|
||||
trigger:{global:'damageEnd'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.player==player.storage.zhiwei2&&player.countCards('h',function(card){
|
||||
return lib.filter.cardDiscardable(card,player,'zhiwei2_discard');
|
||||
});
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
player.discard(player.getCards('h',function(card){
|
||||
return lib.filter.cardDiscardable(card,player,'zhiwei2_discard');
|
||||
}).randomGet());
|
||||
},
|
||||
},
|
||||
gain:{
|
||||
audio:'zhiwei',
|
||||
trigger:{player:'loseAfter'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.type=='discard'&&event.getParent('phaseDiscard').player==player&&player.storage.zhiwei2&&player.storage.zhiwei2.isIn()&&event.cards2.filterInD('d').length>0;
|
||||
},
|
||||
logTarget:function(event,player){
|
||||
return player.storage.zhiwei2;
|
||||
},
|
||||
content:function(){
|
||||
if(trigger.delay===false) game.delay();
|
||||
player.storage.zhiwei2.gain(trigger.cards2.filterInD('d'),'gain2');
|
||||
},
|
||||
},
|
||||
clear:{
|
||||
audio:'zhiwei',
|
||||
trigger:{
|
||||
global:'die',
|
||||
player:['hideCharacterEnd','removeCharacterEnd'],
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(event.name=='die') return event.player==player.storage.zhiwei2;
|
||||
if(event.name=='removeCharacter') return event.toRemove=='luyusheng'||event.toRemove=='gz_luyusheng';
|
||||
return event.toHide=='luyusheng'||event.toHide=='gz_luyusheng';
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.removeSkill('zhiwei2');
|
||||
if(trigger.name!='die'||get.mode()!='guozhan') event.finish();
|
||||
'step 1'
|
||||
if(player.name1=='gz_luyusheng'||player.name1=='luyusheng') player.hideCharacter(0);
|
||||
if(player.name2=='gz_luyusheng'||player.name2=='luyusheng') player.hideCharacter(1);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//新塌顿
|
||||
reluanzhan:{
|
||||
audio:'luanzhan',
|
||||
|
@ -1868,182 +1706,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
player.removeMark('reluanzhan',Math.ceil(player.countMark('reluanzhan')/2));
|
||||
},
|
||||
},
|
||||
//华歆
|
||||
spwanggui:{
|
||||
audio:'wanggui',
|
||||
trigger:{source:'damageSource'},
|
||||
direct:true,
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(function(current){
|
||||
return current.group!=player.group;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('spwanggui'),'对一名势力不同的其他角色造成1点伤害',function(card,player,target){
|
||||
return target.group!=player.group;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('spwanggui',target);
|
||||
target.damage();
|
||||
}
|
||||
else player.storage.counttrigger.spwanggui--;
|
||||
},
|
||||
group:'spwanggui_draw',
|
||||
subSkill:{
|
||||
draw:{
|
||||
trigger:{player:'damageEnd'},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('spwanggui'),'令自己摸一张牌,或和一名势力相同的其他角色各摸一张牌',function(card,player,target){
|
||||
return target.group==player.group;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player,att=get.attitude(player,target);
|
||||
if(target!=player) att*=2;
|
||||
if(target.hasSkillTag('nogain')) att/=1.7;
|
||||
return att;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('spwanggui',target);
|
||||
if(player==target){
|
||||
player.draw();
|
||||
event.finish();
|
||||
}
|
||||
else{
|
||||
var list=[player,target].sortBySeat();
|
||||
game.asyncDraw(list);
|
||||
}
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
game.delayx();
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
wanggui:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:'damageEnd',
|
||||
source:'damageSource',
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.hasSkill('wanggui')&&!player.hasSkill('wanggui2');
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.addTempSkill('wanggui2');
|
||||
var bool=player.isUnseen(2);
|
||||
if(bool){
|
||||
player.chooseTarget('望归:是否对一名势力不同的角色造成1点伤害?',function(card,player,target){
|
||||
return target.isEnemyOf(player);
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player);
|
||||
});
|
||||
}
|
||||
else event.goto(2);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('wanggui',target);
|
||||
target.damage();
|
||||
}
|
||||
event.finish();
|
||||
'step 2'
|
||||
player.chooseBool('望归:是否令所有与自己势力相同的角色各摸一张牌?');
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current.isFriendOf(player);
|
||||
});
|
||||
targets.sortBySeat();
|
||||
player.logSkill('wanggui',targets);
|
||||
game.asyncDraw(targets);
|
||||
}
|
||||
else event.finish();
|
||||
'step 4'
|
||||
game.delayx();
|
||||
},
|
||||
},
|
||||
wanggui2:{},
|
||||
xibing:{
|
||||
audio:2,
|
||||
trigger:{global:'useCardToPlayered'},
|
||||
filter:function(event,player){
|
||||
if(player==event.player||event.targets.length!=1||event.player.countCards('h')>=event.player.hp) return false;
|
||||
var bool=function(card){
|
||||
return (card.name=='sha'||get.type(card,false)=='trick')&&get.color(card,false)=='black';
|
||||
};
|
||||
if(!bool(event.card)) return false;
|
||||
var evt=event.getParent('phaseUse');
|
||||
if(evt.player!=event.player) return false;
|
||||
return get.mode()!='guozhan'||event.player.getHistory('useCard',function(evtx){
|
||||
return bool(evtx.card)&&evtx.getParent('phaseUse')==evt;
|
||||
})[0]==event.getParent();
|
||||
},
|
||||
logTarget:'player',
|
||||
check:function(event,player){
|
||||
var target=event.player;
|
||||
var att=get.attitude(player,target);
|
||||
var num2=Math.min(5,target.hp-target.countCards('h'));
|
||||
if(num2<=0) return att<=0;
|
||||
var num=target.countCards('h',function(card){
|
||||
return target.hasValueTarget(card,null,true);
|
||||
});
|
||||
if(!num) return att>0;
|
||||
return num>num2;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var num=Math.min(5,trigger.player.hp-trigger.player.countCards('h'));
|
||||
if(num>0) trigger.player.draw(num);
|
||||
trigger.player.addTempSkill('xibing2');
|
||||
player._xibing=true;
|
||||
if(get.mode()!='guozhan'||player.isUnseen(2)||trigger.player.isUnseen(2)) event.finish();
|
||||
'step 1'
|
||||
var target=trigger.player;
|
||||
var players1=[player.name1,player.name2];
|
||||
var players2=[target.name1,target.name2];
|
||||
player.chooseButton(2,[
|
||||
'是否暗置自己和'+get.translation(target)+'的各一张武将牌?',
|
||||
'<div class="text center">你的武将牌</div>',
|
||||
[players1,'character'],
|
||||
'<div class="text center">'+get.translation(target)+'的武将牌</div>',
|
||||
[players2,'character'],
|
||||
]).set('players',players1).set('complexSelect',true).set('filterButton',function(button){
|
||||
return !get.is.jun(button.link)&&(ui.selected.buttons.length==0)==(_status.event.players.contains(button.link));
|
||||
});
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var target=trigger.player;
|
||||
player.hideCharacter(player.name1==result.links[0]?0:1);
|
||||
target.hideCharacter(target.name1==result.links[1]?0:1);
|
||||
player.addTempSkill('xibing3');
|
||||
target.addTempSkill('xibing3');
|
||||
}
|
||||
},
|
||||
},
|
||||
xibing2:{
|
||||
mod:{
|
||||
cardEnabled2:function(card){
|
||||
if(get.position(card)=='h') return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
xibing3:{
|
||||
ai:{nomingzhi:true},
|
||||
},
|
||||
//卧龙凤雏双头祈福
|
||||
youlong:{
|
||||
enable:'chooseToUse',
|
||||
|
@ -15870,28 +15532,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
luanfeng:'鸾凤',
|
||||
//luanfeng_info_fullinfo:'限定技,一名角色进入濒死状态时,若其体力上限不小于你,你可令其回复至3点体力,恢复其被废除的装备栏,令其手牌补至6-X张(X为以此法恢复的装备栏数量),重置其因“改写”使用过的牌名。若该角色是你,重置你因“游龙”使用过的牌名。',
|
||||
luanfeng_info:'限定技,一名角色进入濒死状态时,若其体力上限不小于你,你可令其回复至3点体力,恢复其被废除的装备栏,令其手牌补至6-X张(X为以此法恢复的装备栏数量)。若该角色是你,重置你因“游龙”使用过的牌名。',
|
||||
huaxin:'华歆',
|
||||
wanggui:'望归',
|
||||
wanggui_info:'每回合限触发一次,当你造成或受到伤害后,若你:仅明置了此武将牌,则你可对与你势力不同的一名角色造成1点伤害;武将牌均明置,则你可令与你势力相同的角色各摸一张牌。',
|
||||
spwanggui:'望归',
|
||||
spwanggui_info:'①当你受到伤害后,你可以摸一张牌,或和一名势力相同的其他角色各摸一张牌;②每回合限一次,当你造成伤害后,你可以对一名与你势力不同的角色造成1点伤害。',
|
||||
xibing:'息兵',
|
||||
xibing_info:'当一名其他角色在其出牌阶段内使用黑色【杀】或黑色普通锦囊牌指定唯一角色为目标后,你可令该角色将手牌摸至当前体力值(至多摸五张)且本回合不能再使用手牌。',
|
||||
xibing_info_guozhan:'当一名其他角色在其出牌阶段内使用第一张黑色【杀】或黑色普通锦囊牌指定唯一角色为目标后,你可令该角色将手牌摸至当前体力(至多摸五张)值且本回合不能再使用手牌。若你与其均明置了所有武将牌,则你可以暗置你与其各一张武将牌且本回合不能再明置此武将牌。',
|
||||
ol_xinxianying:'辛宪英',
|
||||
reluanzhan:'乱战',
|
||||
reluanzhan_add:'乱战',
|
||||
reluanzhan_remove:'乱战',
|
||||
reluanzhan_info:'当你受到或造成伤害后,你获得一个“乱”。当你使用【杀】或黑色普通锦囊牌选择目标后,你可为此牌增加至多X个目标。当你使用这些牌指定第一个目标后,若此牌目标数小于X,则你移去X/2(向上取整)个“乱”。(X为“乱”数)',
|
||||
luyusheng:'陆郁生',
|
||||
zhente:'贞特',
|
||||
zhente2:'贞特',
|
||||
zhente_info:'每回合限一次,当你成为其他角色使用基本牌或普通锦囊牌的目标后,你可令使用者选择一项:1.本回合不能再使用与此牌颜色相同的牌;2.此牌对你无效。 ',
|
||||
zhente_info_guozhan:'每回合限一次,当你成为其他角色使用黑色基本牌或黑色普通锦囊牌的目标后,你可令使用者选择一项:1.本回合不能再使用黑色牌;2.此牌对你无效。 ',
|
||||
zhiwei:'至微',
|
||||
zhiwei2:'至微',
|
||||
zhiwei_info:'游戏开始时/你的回合开始时,若场上没有因此法被选择过的角色存活,则你选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。',
|
||||
zhiwei_info_guozhan:'你明置此武将牌时,选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。该角色死亡时,若你的两个武将牌均明置,你暗置此武将牌。 ',
|
||||
zhuixi:'追袭',
|
||||
zhuixi_info:'锁定技,你使用【杀】的次数上限+1。',
|
||||
reduanbing:'短兵',
|
||||
|
|
735
character/sp2.js
|
@ -4,6 +4,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:'sp2',
|
||||
connect:true,
|
||||
character:{
|
||||
luyusheng:['female','wu',3,['zhente','zhiwei']],
|
||||
huaxin:['male','wei',3,['spwanggui','xibing']],
|
||||
re_dongbai:['female','qun',3,['relianzhu','rexiahui']],
|
||||
qiuliju:['male','qun',6,['koulve','qljsuiren']],
|
||||
heyan:['male','wei',3,['yachai','qingtan']],
|
||||
|
@ -79,15 +81,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
lvkuanglvxiang:['male','qun',4,['liehou','qigong']],
|
||||
leitong:['male','shu',4,['kuiji']],
|
||||
wulan:['male','shu',4,['wlcuorui']],
|
||||
mini_sunquan:['male','wu',4,['minizhiheng','jiuyuan'],['zhu']],
|
||||
mini_zuoci:['male','qun',3,['minishendao','minixinsheng']],
|
||||
mini_jiangwei:['male','shu',4,['minitiaoxin','zhiji']],
|
||||
mini_diaochan:['female','qun',3,['minilijian','rebiyue']],
|
||||
mini_zhangchunhua:['female','wei',3,['jueqing','minishangshi']],
|
||||
},
|
||||
characterSort:{
|
||||
sp2:{
|
||||
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi","duanwei","liangxing","zhangheng"],
|
||||
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi","duanwei","liangxing","zhangheng",'tangji'],
|
||||
sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"],
|
||||
sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"],
|
||||
sp_zizouqi:["mangyachang","xugong","zhangchangpu"],
|
||||
|
@ -95,14 +92,349 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_shengun:["puyuan","guanlu","gexuan","xushao"],
|
||||
sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie'],
|
||||
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"],
|
||||
sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui','liubian'],
|
||||
sp_caizijiaren:['re_dongbai','re_sunluyu','huaxin','luyusheng'],
|
||||
sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui'],
|
||||
sp_qihuan:['liubian','zhaozhong'],
|
||||
sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'],
|
||||
sp_xuzhou:['re_taoqian','caosong','zhangmiao'],
|
||||
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','zhaozhong','ruanyu','liangxing','re_niujin','tangji','re_dongzhao','re_hucheer','re_dongcheng','yangwan','qiuliju','heyan','re_dongbai'],
|
||||
sp_mini:["mini_sunquan","mini_zuoci","mini_jiangwei","mini_diaochan","mini_zhangchunhua"],
|
||||
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','caobuxing','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng','ruanyu','liangxing','re_niujin','re_dongzhao','re_hucheer','re_dongcheng','yangwan','qiuliju','heyan'],
|
||||
}
|
||||
},
|
||||
skill:{
|
||||
//陆郁生
|
||||
zhente:{
|
||||
audio:2,
|
||||
trigger:{target:'useCardToTargeted'},
|
||||
logTarget:'player',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
var color=get.color(event.card);
|
||||
if(player==event.player||event.player.isDead()||(get.mode()=='guozhan'&&color!='black')) return false;
|
||||
var type=get.type(event.card);
|
||||
return type=='basic'||type=='trick';
|
||||
},
|
||||
check:function(event,player){
|
||||
return !event.excluded.contains(player)&&get.effect(player,event.card,event.player,player)<0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
trigger.player.chooseControl().set('choiceList',[
|
||||
'本回合内不能再使用'+get.translation(get.color(trigger.card))+'牌',
|
||||
'令'+get.translation(trigger.card)+'对'+get.translation(player)+'无效',
|
||||
]).set('prompt',get.translation(player)+'发动了【贞特】,请选择一项').set('ai',function(){
|
||||
var player=_status.event.player;
|
||||
var target=_status.event.getParent().player;
|
||||
var card=_status.event.getTrigger().card,color=get.color(card);
|
||||
if(get.effect(target,card,player,player)<=0) return 1;
|
||||
var hs=player.countCards('h',function(card){
|
||||
return get.color(card,player)==color&&player.hasValueTarget(card,null,true);
|
||||
});
|
||||
if(!hs.length) return 0;
|
||||
if(hs>1) return 1;
|
||||
return Math.random()>0.5?0:1;
|
||||
});
|
||||
'step 1'
|
||||
if(result.index==0){
|
||||
trigger.player.addTempSkill('zhente2');
|
||||
trigger.player.storage.zhente2.add(get.color(trigger.card));
|
||||
trigger.player.markSkill('zhente2');
|
||||
}
|
||||
else trigger.excluded.add(player);
|
||||
},
|
||||
},
|
||||
zhente2:{
|
||||
mod:{
|
||||
cardEnabled:function(card,player){
|
||||
if(player.getStorage('zhente2').contains(get.color(card))) return false;
|
||||
},
|
||||
cardSavable:function(card,player){
|
||||
if(player.getStorage('zhente2').contains(get.color(card))) return false;
|
||||
},
|
||||
},
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
init:function(player,skill){
|
||||
if(!player.storage[skill]) player.storage[skill]=[];
|
||||
},
|
||||
intro:{content:'本回合内不能使用$牌'},
|
||||
},
|
||||
zhiwei:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:['enterGame','showCharacterAfter','phaseBegin'],
|
||||
global:['gameDrawAfter'],
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(player.hasSkill('zhiwei2')) return false;
|
||||
if(get.mode()=='guozhan') return event.name=='showCharacter'&&(event.toShow.contains('gz_luyusheng')||event.toShow.contains('luyusheng'));
|
||||
return event.name!='showCharacter';
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget('请选择【至微】的目标','选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。',true,lib.filter.notMe).set('ai',function(target){
|
||||
var att=get.attitude(_status.event.player,target);
|
||||
if(att>0) return 1+att;
|
||||
return Math.random();
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('zhiwei',target);
|
||||
player.storage.zhiwei2=target;
|
||||
player.addSkill('zhiwei2');
|
||||
}
|
||||
},
|
||||
},
|
||||
zhiwei2:{
|
||||
group:['zhiwei2_draw','zhiwei2_discard','zhiwei2_gain','zhiwei2_clear'],
|
||||
charlotte:true,
|
||||
onremove:true,
|
||||
mark:'character',
|
||||
intro:{content:'$造成伤害后你摸一张牌;$受到伤害后你弃置一张牌;你于弃牌阶段弃置牌后交给$'},
|
||||
subSkill:{
|
||||
draw:{
|
||||
audio:'zhiwei',
|
||||
trigger:{global:'damageSource'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.source==player.storage.zhiwei2;
|
||||
},
|
||||
logTarget:'source',
|
||||
content:function(){
|
||||
player.draw();
|
||||
},
|
||||
},
|
||||
discard:{
|
||||
audio:'zhiwei',
|
||||
trigger:{global:'damageEnd'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.player==player.storage.zhiwei2&&player.countCards('h',function(card){
|
||||
return lib.filter.cardDiscardable(card,player,'zhiwei2_discard');
|
||||
});
|
||||
},
|
||||
logTarget:'player',
|
||||
content:function(){
|
||||
player.discard(player.getCards('h',function(card){
|
||||
return lib.filter.cardDiscardable(card,player,'zhiwei2_discard');
|
||||
}).randomGet());
|
||||
},
|
||||
},
|
||||
gain:{
|
||||
audio:'zhiwei',
|
||||
trigger:{player:'loseAfter'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
return event.type=='discard'&&event.getParent('phaseDiscard').player==player&&player.storage.zhiwei2&&player.storage.zhiwei2.isIn()&&event.cards2.filterInD('d').length>0;
|
||||
},
|
||||
logTarget:function(event,player){
|
||||
return player.storage.zhiwei2;
|
||||
},
|
||||
content:function(){
|
||||
if(trigger.delay===false) game.delay();
|
||||
player.storage.zhiwei2.gain(trigger.cards2.filterInD('d'),'gain2');
|
||||
},
|
||||
},
|
||||
clear:{
|
||||
audio:'zhiwei',
|
||||
trigger:{
|
||||
global:'die',
|
||||
player:['hideCharacterEnd','removeCharacterEnd'],
|
||||
},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(event.name=='die') return event.player==player.storage.zhiwei2;
|
||||
if(event.name=='removeCharacter') return event.toRemove=='luyusheng'||event.toRemove=='gz_luyusheng';
|
||||
return event.toHide=='luyusheng'||event.toHide=='gz_luyusheng';
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.removeSkill('zhiwei2');
|
||||
if(trigger.name!='die'||get.mode()!='guozhan') event.finish();
|
||||
'step 1'
|
||||
if(player.name1=='gz_luyusheng'||player.name1=='luyusheng') player.hideCharacter(0);
|
||||
if(player.name2=='gz_luyusheng'||player.name2=='luyusheng') player.hideCharacter(1);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//华歆
|
||||
spwanggui:{
|
||||
audio:'wanggui',
|
||||
trigger:{source:'damageSource'},
|
||||
direct:true,
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(function(current){
|
||||
return current.group!=player.group;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('spwanggui'),'对一名势力不同的其他角色造成1点伤害',function(card,player,target){
|
||||
return target.group!=player.group;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('spwanggui',target);
|
||||
target.damage();
|
||||
}
|
||||
else player.storage.counttrigger.spwanggui--;
|
||||
},
|
||||
group:'spwanggui_draw',
|
||||
subSkill:{
|
||||
draw:{
|
||||
trigger:{player:'damageEnd'},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('spwanggui'),'令自己摸一张牌,或和一名势力相同的其他角色各摸一张牌',function(card,player,target){
|
||||
return target.group==player.group;
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player,att=get.attitude(player,target);
|
||||
if(target!=player) att*=2;
|
||||
if(target.hasSkillTag('nogain')) att/=1.7;
|
||||
return att;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('spwanggui',target);
|
||||
if(player==target){
|
||||
player.draw();
|
||||
event.finish();
|
||||
}
|
||||
else{
|
||||
var list=[player,target].sortBySeat();
|
||||
game.asyncDraw(list);
|
||||
}
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
game.delayx();
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
wanggui:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
player:'damageEnd',
|
||||
source:'damageSource',
|
||||
},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
return player.hasSkill('wanggui')&&!player.hasSkill('wanggui2');
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.addTempSkill('wanggui2');
|
||||
var bool=player.isUnseen(2);
|
||||
if(bool){
|
||||
player.chooseTarget('望归:是否对一名势力不同的角色造成1点伤害?',function(card,player,target){
|
||||
return target.isEnemyOf(player);
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.damageEffect(target,player,player);
|
||||
});
|
||||
}
|
||||
else event.goto(2);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('wanggui',target);
|
||||
target.damage();
|
||||
}
|
||||
event.finish();
|
||||
'step 2'
|
||||
player.chooseBool('望归:是否令所有与自己势力相同的角色各摸一张牌?');
|
||||
'step 3'
|
||||
if(result.bool){
|
||||
var targets=game.filterPlayer(function(current){
|
||||
return current.isFriendOf(player);
|
||||
});
|
||||
targets.sortBySeat();
|
||||
player.logSkill('wanggui',targets);
|
||||
game.asyncDraw(targets);
|
||||
}
|
||||
else event.finish();
|
||||
'step 4'
|
||||
game.delayx();
|
||||
},
|
||||
},
|
||||
wanggui2:{},
|
||||
xibing:{
|
||||
audio:2,
|
||||
trigger:{global:'useCardToPlayered'},
|
||||
filter:function(event,player){
|
||||
if(player==event.player||event.targets.length!=1||event.player.countCards('h')>=event.player.hp) return false;
|
||||
var bool=function(card){
|
||||
return (card.name=='sha'||get.type(card,false)=='trick')&&get.color(card,false)=='black';
|
||||
};
|
||||
if(!bool(event.card)) return false;
|
||||
var evt=event.getParent('phaseUse');
|
||||
if(evt.player!=event.player) return false;
|
||||
return get.mode()!='guozhan'||event.player.getHistory('useCard',function(evtx){
|
||||
return bool(evtx.card)&&evtx.getParent('phaseUse')==evt;
|
||||
})[0]==event.getParent();
|
||||
},
|
||||
logTarget:'player',
|
||||
check:function(event,player){
|
||||
var target=event.player;
|
||||
var att=get.attitude(player,target);
|
||||
var num2=Math.min(5,target.hp-target.countCards('h'));
|
||||
if(num2<=0) return att<=0;
|
||||
var num=target.countCards('h',function(card){
|
||||
return target.hasValueTarget(card,null,true);
|
||||
});
|
||||
if(!num) return att>0;
|
||||
return num>num2;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var num=Math.min(5,trigger.player.hp-trigger.player.countCards('h'));
|
||||
if(num>0) trigger.player.draw(num);
|
||||
trigger.player.addTempSkill('xibing2');
|
||||
player._xibing=true;
|
||||
if(get.mode()!='guozhan'||player.isUnseen(2)||trigger.player.isUnseen(2)) event.finish();
|
||||
'step 1'
|
||||
var target=trigger.player;
|
||||
var players1=[player.name1,player.name2];
|
||||
var players2=[target.name1,target.name2];
|
||||
player.chooseButton(2,[
|
||||
'是否暗置自己和'+get.translation(target)+'的各一张武将牌?',
|
||||
'<div class="text center">你的武将牌</div>',
|
||||
[players1,'character'],
|
||||
'<div class="text center">'+get.translation(target)+'的武将牌</div>',
|
||||
[players2,'character'],
|
||||
]).set('players',players1).set('complexSelect',true).set('filterButton',function(button){
|
||||
return !get.is.jun(button.link)&&(ui.selected.buttons.length==0)==(_status.event.players.contains(button.link));
|
||||
});
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
var target=trigger.player;
|
||||
player.hideCharacter(player.name1==result.links[0]?0:1);
|
||||
target.hideCharacter(target.name1==result.links[1]?0:1);
|
||||
player.addTempSkill('xibing3');
|
||||
target.addTempSkill('xibing3');
|
||||
}
|
||||
},
|
||||
},
|
||||
xibing2:{
|
||||
mod:{
|
||||
cardEnabled2:function(card){
|
||||
if(get.position(card)=='h') return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
xibing3:{
|
||||
ai:{nomingzhi:true},
|
||||
},
|
||||
//董白
|
||||
relianzhu:{
|
||||
enable:'phaseUse',
|
||||
|
@ -367,6 +699,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
qingtan:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
|
@ -972,7 +1305,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
content:function(){
|
||||
player.loseHp();
|
||||
player.draw();
|
||||
player.draw(2);
|
||||
},
|
||||
},
|
||||
//狼灭
|
||||
|
@ -1756,7 +2089,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
lose:false,
|
||||
selectCard:function(){
|
||||
if(_status.event.player.storage.bazhan) return 0;
|
||||
return 2;
|
||||
return [1,2];
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
if(player==target) return false;
|
||||
|
@ -1764,8 +2097,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return true;
|
||||
},
|
||||
prompt:function(){
|
||||
if(_status.event.player.storage.bazhan) return '获得一名其他角色的两张手牌';
|
||||
return '将两张手牌交给一名其他角色';
|
||||
if(_status.event.player.storage.bazhan) return '获得一名其他角色的至多两张手牌';
|
||||
return '将至多两张手牌交给一名其他角色';
|
||||
},
|
||||
delay:false,
|
||||
check:function(card){
|
||||
|
@ -1789,7 +2122,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(player.storage.bazhan){
|
||||
player.storage.bazhan=false;
|
||||
event.recover=player;
|
||||
player.gainPlayerCard(target,'h',true,'visibleMove',2);
|
||||
player.gainPlayerCard(target,'h',true,'visibleMove',[1,2]);
|
||||
}
|
||||
else{
|
||||
player.storage.bazhan=true;
|
||||
|
@ -2749,254 +3082,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mark:true,
|
||||
intro:{content:'本回合内不能对自己使用牌'},
|
||||
},
|
||||
minishangshi:{
|
||||
audio:'shangshi',
|
||||
trigger:{player:['loseAfter','changeHp']},
|
||||
frequent:true,
|
||||
filter:function(event,player){
|
||||
return player.countCards('h')<Math.max(1,player.getDamagedHp());
|
||||
},
|
||||
content:function(){
|
||||
player.drawTo(Math.max(player.getDamagedHp(),1));
|
||||
},
|
||||
ai:{
|
||||
noh:true,
|
||||
skillTagFilter:function(player,tag){
|
||||
if(tag=='noh'&&Math.max(1,player.getDamagedHp())<player.countCards('h')){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
minilijian:{
|
||||
trigger:{player:'useCard2'},
|
||||
direct:true,
|
||||
audio:'lijian',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
if(!['sha','juedou'].contains(event.card.name)) return false;
|
||||
var info=get.info(event.card);
|
||||
if(info.allowMultiple==false) return false;
|
||||
if(event.targets&&!info.multitarget){
|
||||
if(game.hasPlayer(function(current){
|
||||
return current.sex=='male'&&!event.targets.contains(current)&&lib.filter.targetEnabled2(event.card,player,current)&&lib.filter.targetInRange(event.card,player,current);
|
||||
})){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var prompt2='为'+get.translation(trigger.card)+'增加一个目标'
|
||||
player.chooseTarget(get.prompt('minilijian'),function(card,player,target){
|
||||
var player=_status.event.player;
|
||||
return target.sex=='male'&&!_status.event.targets.contains(target)&&lib.filter.targetEnabled2(_status.event.card,player,target)&&lib.filter.targetInRange(_status.event.card,player,target);
|
||||
}).set('prompt2',prompt2).set('ai',function(target){
|
||||
var trigger=_status.event.getTrigger();
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,trigger.card,player,player);
|
||||
}).set('card',trigger.card).set('targets',trigger.targets);
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
if(!event.isMine()&&!event.isOnline()) game.delayx();
|
||||
event.targets=result.targets;
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
if(event.targets){
|
||||
player.logSkill('minilijian',event.targets);
|
||||
trigger.targets.addArray(event.targets);
|
||||
}
|
||||
},
|
||||
|
||||
ai:{
|
||||
effect:{
|
||||
player:function(card,player,target,current,isLink){
|
||||
if(!isLink&&(card.name=='sha'||card.name=='juedou')&&(!player.storage.counttrigger||!player.storage.counttrigger.minilijian)){
|
||||
if(player._minilijiantemp) return;
|
||||
player._minilijiantemp=true;
|
||||
if(get.effect(target,card,player,player)<=0){
|
||||
delete player._minilijiantemp;
|
||||
return;
|
||||
}
|
||||
if(game.hasPlayer(function(current){
|
||||
return current!=target&¤t.sex=='male'&&
|
||||
player.canUse(card,current)&&get.effect(current,card,player,player)>0;
|
||||
})){
|
||||
delete player._minilijiantemp;
|
||||
return [1,1];
|
||||
}
|
||||
delete player._minilijiantemp;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
minitiaoxin:{
|
||||
trigger:{player:'phaseUseBegin'},
|
||||
direct:true,
|
||||
audio:'tiaoxin',
|
||||
filter:function(event,player){
|
||||
return game.hasPlayer(function(current){
|
||||
return current!=player&¤t.countDiscardableCards(player,'h')>0;
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt2('minitiaoxin'),function(card,player,target){
|
||||
return target!=player&&target.countDiscardableCards(player,'h')>0;
|
||||
}).set('ai',function(target){
|
||||
var att=get.attitude(_status.event.player,target);
|
||||
if(target.countCards('h')==1) att=get.sgn(att);
|
||||
return -att;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('minitiaoxin',target);
|
||||
player.discardPlayerCard(target,true,[1,2],'h');
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.cards&&result.cards.length&&player.countCards('h')>0){
|
||||
for(var i of result.cards){
|
||||
if(get.name(i,target)=='sha'){
|
||||
player.chooseToDiscard('h',true);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
},
|
||||
minishendao:{
|
||||
audio:'rehuashen',
|
||||
trigger:{
|
||||
player:"judge",
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
var str='你的'+(trigger.judgestr||'')+'判定为'+
|
||||
get.translation(trigger.player.judging[0])+',是否修改判定结果?';
|
||||
player.chooseControl('spade','heart','diamond','club','cancel2').set('prompt',str).set('ai',function(){
|
||||
//return '取消';
|
||||
var judging=_status.event.judging;
|
||||
var trigger=_status.event.getTrigger();
|
||||
var res1=trigger.judge(judging);
|
||||
var list=lib.suit.slice(0);
|
||||
var attitude=get.attitude(player,trigger.player);
|
||||
if(attitude==0) return 0;
|
||||
var getj=function(suit){
|
||||
return trigger.judge({
|
||||
name:get.name(judging),
|
||||
nature:get.nature(judging),
|
||||
suit:suit,
|
||||
number:get.number(judging),
|
||||
})
|
||||
};
|
||||
list.sort(function(a,b){
|
||||
return (getj(b)-getj(a))*get.sgn(attitude);
|
||||
});
|
||||
if((getj(list[0])-res1)*attitude>0) return list[0];
|
||||
return 'cancel2';
|
||||
}).set('judging',trigger.player.judging[0]);
|
||||
"step 1"
|
||||
if(result.control!='cancel2'){
|
||||
player.logSkill('minishendao');
|
||||
//player.line(trigger.player);
|
||||
player.popup(result.control+2);
|
||||
game.log(player,'将判定结果改为了','#y'+get.translation(result.control+2));
|
||||
trigger.fixedResult={
|
||||
suit:result.control,
|
||||
color:get.color({suit:result.control}),
|
||||
};
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
rejudge:true,
|
||||
tag:{
|
||||
rejudge:0.3,
|
||||
},
|
||||
},
|
||||
},
|
||||
minixinsheng:{
|
||||
audio:'rexinsheng',
|
||||
trigger:{player:'damageEnd'},
|
||||
frequent:true,
|
||||
content:function(){
|
||||
"step 0"
|
||||
event.cards=get.cards(3);
|
||||
game.cardsGotoOrdering(event.cards);
|
||||
event.videoId=lib.status.videoId++;
|
||||
game.broadcastAll(function(player,id,cards){
|
||||
var str;
|
||||
if(player==game.me&&!_status.auto){
|
||||
str='新生:获取花色各不相同的牌';
|
||||
}
|
||||
else{
|
||||
str='新生';
|
||||
}
|
||||
var dialog=ui.create.dialog(str,cards);
|
||||
dialog.videoId=id;
|
||||
},player,event.videoId,event.cards);
|
||||
event.time=get.utc();
|
||||
game.addVideo('showCards',player,['新生',get.cardsInfo(event.cards)]);
|
||||
game.addVideo('delay',null,2);
|
||||
"step 1"
|
||||
var next=player.chooseButton([0,3],true);
|
||||
next.set('dialog',event.videoId);
|
||||
next.set('filterButton',function(button){
|
||||
for(var i=0;i<ui.selected.buttons.length;i++){
|
||||
if(get.suit(ui.selected.buttons[i].link)==get.suit(button.link)) return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
next.set('ai',function(button){
|
||||
return get.value(button.link,_status.event.player);
|
||||
});
|
||||
"step 2"
|
||||
if(result.bool&&result.links){
|
||||
event.cards2=result.links;
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
var time=1000-(get.utc()-event.time);
|
||||
if(time>0){
|
||||
game.delay(0,time);
|
||||
}
|
||||
"step 3"
|
||||
game.broadcastAll('closeDialog',event.videoId);
|
||||
var cards2=event.cards2;
|
||||
player.gain(cards2,'log','gain2');
|
||||
},
|
||||
},
|
||||
minizhiheng:{
|
||||
audio:'zhiheng',
|
||||
trigger:{player:'phaseUseEnd'},
|
||||
direct:true,
|
||||
filter:function(event){
|
||||
return event.player.countCards('h')>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseToDiscard('h',get.prompt('minizhiheng'),'弃置任意张手牌,若如此做,将手牌摸至四张',[1,player.countCards('h')]).set('ai',function(card){
|
||||
var num=4-player.countCards('h');
|
||||
var val=6.1+Math.max(0,num);
|
||||
var cs=player.countCards('h',function(card){
|
||||
return get.value(card)>=val;
|
||||
});
|
||||
if(cs>=4) return 0;
|
||||
return val-get.value(card)
|
||||
}).logSkill='minizhiheng';
|
||||
'step 1'
|
||||
if(result.bool) player.drawTo(4);
|
||||
},
|
||||
},
|
||||
minsi:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
|
@ -5502,7 +5587,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
filter:function(event,player){
|
||||
return player.getHistory('sourceDamage',function(evt){
|
||||
return evt.isPhaseUsing(player);
|
||||
})
|
||||
}).length>0;
|
||||
},
|
||||
content:function(){
|
||||
var card=get.cardPile2(function(card){
|
||||
|
@ -6181,26 +6266,45 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
direct:true,
|
||||
audio:2,
|
||||
filter:function(event,player){
|
||||
return player.canUse('sha',event.target,false)&&(player.hasSha()||_status.connectMode&&player.countCards('h'));
|
||||
return event.target.isIn()&&game.hasPlayer(function(current){
|
||||
return current!=event.target&¤t.canUse('sha',event.target,false);
|
||||
})
|
||||
},
|
||||
content:function(){
|
||||
"step 0"
|
||||
player.chooseToUse(get.prompt('qigong'),function(card,player,event){
|
||||
if(get.name(card)!='sha') return false;
|
||||
return lib.filter.filterCard.apply(this,arguments);
|
||||
},trigger.target,-1).set('addCount',false).logSkill='qigong';
|
||||
'step 0'
|
||||
player.chooseTarget(get.prompt('qigong'),'令一名角色可再对'+get.translation(trigger.target)+'使用一张【杀】',function(card,player,target){
|
||||
var source=_status.event.getTrigger().target;
|
||||
return target!=source&&target.canUse('sha',source,false);
|
||||
}).set('ai',function(target){
|
||||
var player=_status.event.player,card={name:'sha'},source=_status.event.getTrigger().target;
|
||||
if(target.hasSha()){
|
||||
var eff1=get.effect(source,card,target,target);
|
||||
if(eff1>0) return get.effect(source,card,target,player);
|
||||
}
|
||||
return (target!=player)?(Math.random()*get.attitude(player,target)):0;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('qigong',target);
|
||||
target.addTempSkill('qigong_ai','chooseToUseEnd');
|
||||
target.chooseToUse('是否再对'+get.translation(trigger.target)+'使用一张【杀】?',function(card,player,event){
|
||||
if(get.name(card)!='sha') return false;
|
||||
return lib.filter.filterCard.apply(this,arguments);
|
||||
},trigger.target,-1).set('addCount',false).set('oncard',function(){
|
||||
_status.event.directHit.addArray(game.players);
|
||||
});
|
||||
}
|
||||
},
|
||||
group:'qigong_hit',
|
||||
},
|
||||
qigong_hit:{
|
||||
trigger:{player:'useCard1'},
|
||||
firstDo:true,
|
||||
silent:true,
|
||||
filter:function(event,player){
|
||||
return event.getParent(2).name=='qigong';
|
||||
},
|
||||
content:function(){
|
||||
trigger.directHit.addArray(game.players);
|
||||
subSkill:{
|
||||
ai:{
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
return arg.card&&arg.card.name=='sha';
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//和沙摩柯一起上线的新服三将
|
||||
|
@ -7436,11 +7540,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return event[event.name=='damage'?'player':'target'];
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
if(trigger.name=='damage'){
|
||||
trigger.cancel();
|
||||
trigger.player.recover(trigger.num);
|
||||
event.finish();
|
||||
}
|
||||
else player.draw();
|
||||
else{
|
||||
game.asyncDraw([player,trigger.target]);
|
||||
}
|
||||
'step 1'
|
||||
game.delayx();
|
||||
},
|
||||
},
|
||||
//管辂和葛玄
|
||||
|
@ -7853,16 +7963,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
'step 1'
|
||||
if(result.bool){
|
||||
if(!event.isMine()&&!event.isOnline()) game.delayx();
|
||||
event.targets=result.targets.slice(0);
|
||||
for(var i=0;i<event.targets.length;i++){
|
||||
event.targets[i].removeMark('zongkui_mark',1);
|
||||
}
|
||||
event.targets=result.targets.sortBySeat();
|
||||
}
|
||||
else{
|
||||
event.finish();
|
||||
}
|
||||
'step 2'
|
||||
player.logSkill('bmcanshi',event.targets);
|
||||
for(var i=0;i<event.targets.length;i++){
|
||||
event.targets[i].removeMark('zongkui_mark',1);
|
||||
}
|
||||
trigger.targets.addArray(event.targets);
|
||||
}
|
||||
},
|
||||
|
@ -9059,6 +9169,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
qiuliju:'丘力居,东汉末年的辽西乌丸大人。拉拢中山太守张纯反叛东汉,寇略青、徐、幽、冀四州,杀略吏民。死时认为儿子楼班年幼,于是让从子蹋顿总摄三王部。',
|
||||
fengxi:'冯熙(?—223年),字子柔,颍川郡父城县(今河南省平顶山市宝丰县)人。汉末三国时期吴国官员,东汉初年名将冯异的后人。孙权担任车骑将军时,冯熙担任其幕府东曹掾,后迁立信都尉。刘备去世时,奉命进入蜀汉吊丧,返回后,任中大夫。后奉命出使魏国,受到魏文帝曹丕和尚书令陈群招揽,宁死不从,自尽未果。孙权闻之流泪,称其“东吴苏武”。最终在曹魏死去。',
|
||||
liuba:'刘巴(?-222年),字子初,荆州零陵郡烝阳县(今湖南省衡阳县、邵东县一带)人,东汉末年至三国时期蜀汉时期官员、名士。刘巴少知名,荆州牧刘表多次征用推举,刘巴均不应就。曹操征伐荆州,荆州士人多归刘备,刘巴却北上投靠曹操。后受曹操命令招降荆南三郡,不料先为刘备所得,刘巴不能复命曹操,遂远至交趾,又辗转进入益州。刘备平定益州后,刘巴归附刘备,为左将军西曹掾,法正死后接任尚书令。章武二年(222年)去世。刘巴博学多才,为刘备解决入蜀后的财政困难问题,又与诸葛亮等共制蜀汉的法律文件《蜀科》。为人简朴清高,退无私交,曹魏大臣陈群甚敬重之。所著录于《刘令君集》。',
|
||||
pengyang:'彭羕(184年-220年),字永年,广汉(今四川广汉北)人。东汉末年官吏。彭羕起初在益州任书佐,但后来其他人向益州牧刘璋诽谤他,刘璋于是以“髡钳”(剃去头发和胡须,并戴上刑具)处罚他,并且贬奴隶。此时刘备入蜀,彭羕想投靠刘备,于是去见庞统。庞统和他会面后很欣赏他,而法正亦很清楚彭羕,于是二人共同向刘备推荐彭羕。刘备多次命令彭羕传递军情和指示给诸将,表现都十分满意,日渐被赏识。刘备入主益州,领益州牧后就任命他为治州从事。彭羕见此,又变得嚣张自矜,诸葛亮对他礼待但心中并不喜欢他,多次密告刘备,说彭羕“心大志广,难可保安”。刘备见诸葛亮这样说,决定疏远彭羕,又观察他行事,于是贬他为江阳太守。彭羕见将被派往外地,心感不悦,与马超见面时又曾对他说“老革荒悖,可复道邪!”“卿为其外,我为其内,天下不足定也。”马超听后大惊,彭羕走后以他的说话告发彭羕,彭羕于是被收监下狱。最后彭羕被处死,死时三十七岁。',
|
||||
huaxin:'华歆(157年-232年1月30日),字子鱼,汉族。平原郡高唐县人(今山东省高唐县)。汉末至三国曹魏初年名士、重臣。华歆早年拜太尉陈球为师,与卢植、郑玄、管宁等为同门,又与管宁、邴原共称一龙,华歆为龙头。汉灵帝时华歆被举为孝廉,任郎中,因病去官。又被大将军何进征召为尚书郎。后任豫章太守,甚得民心。孙策率军南下,华歆举郡投降,被奉为上宾。官渡之战时,被征为议郎、参司空军事。入为尚书、侍中,又代荀彧为尚书令。丞相曹操讨孙权时,授华歆为军师。后为魏王国的御史大夫。曹丕即王位,拜华歆为相国,封安乐乡侯。曹魏建立后,其相国职名改称司徒。魏明帝即位,升任太尉,晋封博平侯。太和五年十二月(232年1月),华歆去世,年七十五,谥号“敬”。有文集三十卷,今佚失,其余见《全三国文》。',
|
||||
luyusheng:'陆郁生(?年-?),三国时期吴国官员陆绩之女。陆郁生的父亲陆绩是吴郡公认的才子,又是当时吴郡陆氏的领袖。陆绩赴任担任郁林太守,遂取此名。陆郁生年少的时候就定下坚贞的志向。建安二十四年(219年),陆绩早亡,她与两个兄弟陆宏、陆睿当时都只有几岁,一起返回吴县,被他们的从兄陆瑁接回抚养。13周岁的陆郁生嫁给同郡出身的张白为妻。出嫁3个月后,张白因为其兄张温一族的案件遭到连坐,被处以流刑,后死于流放地,陆郁生成为了寡妇,其后公开宣言不再改嫁,困难于生计但拒绝了所有提亲,在艰苦中从未停止服侍、照顾张白的姐妹。事情传到朝廷,皇帝褒奖陆郁生,号其为“义姑”。她的表侄姚信在文集中称赞她的义举。',
|
||||
},
|
||||
characterTitle:{
|
||||
wulan:'#b对决限定武将',
|
||||
|
@ -9105,8 +9218,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
return '出牌阶段限'+(player.hasSkill('recaishi2')?'两':'一')+'次,你可以选择一名本回合内未选择过的角色。你令其获得一项效果直至你的下回合开始:①其下次造成伤害后弃置两张牌,然后你摸一张牌。②其下次受到伤害后摸两张牌,然后你摸一张牌。'
|
||||
},
|
||||
bazhan:function(player){
|
||||
if(player.storage.bazhan) return '转换技,出牌阶段限一次,阴:你可以将两张手牌交给一名其他角色。<span class="bluetext">阳:你可以获得一名其他角色的两张手牌。</span>若以此法移动的牌包含【酒】或♥牌,则你可令得到此牌的角色执行一项:①回复1点体力。②复原武将牌。';
|
||||
return '转换技,出牌阶段限一次,<span class="bluetext">阴:你可以将两张手牌交给一名其他角色。</span>阳:你可以获得一名其他角色的两张手牌。若以此法移动的牌包含【酒】或♥牌,则你可令得到此牌的角色执行一项:①回复1点体力。②复原武将牌。';
|
||||
if(player.storage.bazhan) return '转换技,出牌阶段限一次,阴:你可以将至多两张手牌交给一名其他角色。<span class="bluetext">阳:你可以获得一名其他角色的至多两张手牌。</span>若以此法移动的牌包含【酒】或♥牌,则你可令得到此牌的角色执行一项:①回复1点体力。②复原武将牌。';
|
||||
return '转换技,出牌阶段限一次,<span class="bluetext">阴:你可以将至多两张手牌交给一名其他角色。</span>阳:你可以获得一名其他角色的至多两张手牌。若以此法移动的牌包含【酒】或♥牌,则你可令得到此牌的角色执行一项:①回复1点体力。②复原武将牌。';
|
||||
},
|
||||
},
|
||||
perfectPair:{
|
||||
|
@ -9129,6 +9242,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dongcheng:['re_dongcheng','dongcheng'],
|
||||
hucheer:['re_hucheer','hucheer'],
|
||||
dongbai:['re_dongbai','dongbai'],
|
||||
gexuan:['gexuan','tw_gexuan'],
|
||||
},
|
||||
translate:{
|
||||
lijue:"李傕",
|
||||
|
@ -9266,7 +9380,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xpchijie_info:'每回合限一次。①当你受到其他角色使用的牌造成的伤害时,你可以令此牌对所有目标无效。②其他角色使用的牌结算完成时,若你是此牌的目标之一且此牌未造成过伤害,则你可以获得此牌对应的所有实体牌。',
|
||||
xpchijie2:'持节',
|
||||
yinju:'引裾',
|
||||
yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用牌指定其为目标后,你摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。',
|
||||
yinju_info:'限定技,出牌阶段,你可以选择一名其他角色。若如此做,当你于此阶段内使用牌指定其为目标后,你与其各摸一张牌;当你即将对其造成伤害时,防止此伤害,然后其回复等量的体力。',
|
||||
yinju2:'引裾',
|
||||
|
||||
spjiedao:"截刀",
|
||||
|
@ -9312,7 +9426,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
liehou:'列侯',
|
||||
liehou_info:'出牌阶段限一次,你可以令一名攻击范围内的角色交给你一张手牌,然后你将一张手牌交给攻击范围内的另一名角色。',
|
||||
qigong:'齐攻',
|
||||
qigong_info:'当你使用的【杀】被【闪】抵消之后,你可以再对目标角色使用一张【杀】(不可被响应)。',
|
||||
qigong_info:'当你使用的【杀】被【闪】抵消之后,你可以令一名角色再对目标角色使用一张【杀】(不可被响应)。',
|
||||
chunyuqiong:'淳于琼',
|
||||
sushou:'宿守',
|
||||
sushou_info:'弃牌阶段开始时,你可以摸X+1张牌(X为“粮”数),然后可以交给任意名友方角色各一张牌。',
|
||||
|
@ -9455,23 +9569,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
jijing_info:'当你受到伤害后,你可以进行一次判定,然后若你弃置任意张点数之和与判定结果点数相同的牌,你回复1点体力。',
|
||||
zhuide:'追德',
|
||||
zhuide_info:'当你死亡时,你可令一名其他角色从牌堆中获得四张名称各不相同的基本牌。',
|
||||
mini_sunquan:'SP孙权',
|
||||
minizhiheng:'制衡',
|
||||
minizhiheng_info:'出牌阶段结束时,你可以弃置任意张手牌。若如此做,你将手牌摸至四张。',
|
||||
mini_zuoci:'SP左慈',
|
||||
minishendao:'神道',
|
||||
minishendao_info:'你的判定牌生效前,你可以将判定结果改为任意花色。',
|
||||
minixinsheng:'新生',
|
||||
minixinsheng_info:'当你受到伤害后,你可以展示牌堆顶的三张牌,然后获得其中每种花色的牌各一张。',
|
||||
mini_jiangwei:'SP姜维',
|
||||
minitiaoxin:'挑衅',
|
||||
minitiaoxin_info:'出牌阶段开始时,你可以弃置一名其他角色的两张手牌。若你以此法弃置的牌中有【杀】,则你弃置一张手牌。',
|
||||
mini_diaochan:'SP貂蝉',
|
||||
minilijian:'离间',
|
||||
minilijian_info:'每回合限触发一次,当你使用【杀】或【决斗】指定目标后,你可以为此牌增加一个目标。',
|
||||
mini_zhangchunhua:'SP张春华',
|
||||
minishangshi:'伤逝',
|
||||
minishangshi_info:'当你的手牌数小于X时,你可以将手牌摸至X张(X为你已损失的体力值且至少为1)',
|
||||
re_xinxianying:'辛宪英',
|
||||
rezhongjian:'忠鉴',
|
||||
rezhongjian2:'忠鉴',
|
||||
|
@ -9530,7 +9627,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
xianzhu_info:'锁定技,出牌阶段开始时,你令一名角色A获得“珠”。若A不为你自己,则你选择A攻击范围内的一名角色B,视为A对B使用一张【杀】。',
|
||||
fanyufeng:'樊玉凤',
|
||||
bazhan:'把盏',
|
||||
bazhan_info:'转换技,出牌阶段限一次,阴:你可以将两张手牌交给一名其他角色。阳:你可以获得一名其他角色的两张手牌。若以此法移动的牌包含【酒】或♥牌,则你可令得到牌的角色执行一项:①回复1点体力。②复原武将牌。',
|
||||
bazhan_info:'转换技,出牌阶段限一次,阴:你可以将至多两张手牌交给一名其他角色。阳:你可以获得一名其他角色的至多两张手牌。若以此法移动的牌包含【酒】或♥牌,则你可令得到牌的角色执行一项:①回复1点体力。②复原武将牌。',
|
||||
jiaoying:'醮影',
|
||||
jiaoying2:'醮影',
|
||||
jiaoying3:'醮影',
|
||||
|
@ -9589,7 +9686,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dangzai:'挡灾',
|
||||
dangzai_info:'出牌阶段开始时,你可将一名其他角色判定区内的一张牌移动至你的判定区内。',
|
||||
liangjue:'粮绝',
|
||||
liangjue_info:'锁定技,当有黑色牌进入或者离开你的判定区或装备区后,若你的体力值大于1,你失去1点体力,然后摸一张牌。',
|
||||
liangjue_info:'锁定技,当有黑色牌进入或者离开你的判定区或装备区后,若你的体力值大于1,你失去1点体力,然后摸两张牌。',
|
||||
tangji:'唐姬',
|
||||
jielie:'节烈',
|
||||
jielie_info:'你的第一个回合开始时,选择一名其他角色,该角色每次于其回合外摸牌时,你摸等量的牌(每回合限一次且至多摸三张);其进入濒死状态时,你可令其回复体力至1点(每轮限一次)。该角色死亡时,你弃置所有牌并失去1点体力。',
|
||||
|
@ -9625,7 +9722,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
relianzhu:'连诛',
|
||||
relianzhu_info:'出牌阶段限一次,你可将一张牌正面朝上交给一名其他角色。若此牌为:红色,你摸一张牌;黑色,对方弃置两张牌或令你摸两张牌。’',
|
||||
rexiahui:'黠慧',
|
||||
rexiahui_info:'锁定技,①当有其他角色获得你的黑色牌后,其于下次扣减体力前不能使用,打出,弃置这些牌。②一名其他角色的回合结束时,若其本回合失去过其所有“黠慧”牌,则其失去1点体力。',
|
||||
rexiahui_info:'锁定技,①你的黑色牌不计入手牌上限。②当有其他角色获得你的黑色牌后,其于下次扣减体力前不能使用,打出,弃置这些牌。③一名其他角色的回合结束时,若其本回合失去过其所有“黠慧”牌,则其失去1点体力。',
|
||||
huaxin:'华歆',
|
||||
wanggui:'望归',
|
||||
wanggui_info:'每回合限触发一次,当你造成或受到伤害后,若你:仅明置了此武将牌,则你可对与你势力不同的一名角色造成1点伤害;武将牌均明置,则你可令与你势力相同的角色各摸一张牌。',
|
||||
spwanggui:'望归',
|
||||
spwanggui_info:'①当你受到伤害后,你可以摸一张牌,或和一名势力相同的其他角色各摸一张牌;②每回合限一次,当你造成伤害后,你可以对一名与你势力不同的角色造成1点伤害。',
|
||||
xibing:'息兵',
|
||||
xibing_info:'当一名其他角色在其出牌阶段内使用黑色【杀】或黑色普通锦囊牌指定唯一角色为目标后,你可令该角色将手牌摸至当前体力值(至多摸五张)且本回合不能再使用手牌。',
|
||||
xibing_info_guozhan:'当一名其他角色在其出牌阶段内使用第一张黑色【杀】或黑色普通锦囊牌指定唯一角色为目标后,你可令该角色将手牌摸至当前体力(至多摸五张)值且本回合不能再使用手牌。若你与其均明置了所有武将牌,则你可以暗置你与其各一张武将牌且本回合不能再明置此武将牌。',
|
||||
luyusheng:'陆郁生',
|
||||
zhente:'贞特',
|
||||
zhente2:'贞特',
|
||||
zhente_info:'每回合限一次,当你成为其他角色使用基本牌或普通锦囊牌的目标后,你可令使用者选择一项:1.本回合不能再使用与此牌颜色相同的牌;2.此牌对你无效。 ',
|
||||
zhente_info_guozhan:'每回合限一次,当你成为其他角色使用黑色基本牌或黑色普通锦囊牌的目标后,你可令使用者选择一项:1.本回合不能再使用黑色牌;2.此牌对你无效。 ',
|
||||
zhiwei:'至微',
|
||||
zhiwei2:'至微',
|
||||
zhiwei_info:'游戏开始时/你的回合开始时,若场上没有因此法被选择过的角色存活,则你选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。',
|
||||
zhiwei_info_guozhan:'你明置此武将牌时,选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。该角色死亡时,若你的两个武将牌均明置,你暗置此武将牌。 ',
|
||||
|
||||
sp_whlw:"文和乱武",
|
||||
sp_zlzy:"逐鹿中原",
|
||||
|
@ -9638,8 +9752,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_huangjin:'黄巾之乱',
|
||||
sp_fadong:'诸侯伐董',
|
||||
sp_xuzhou:'徐州风云',
|
||||
sp_caizijiaren:'才子佳人',
|
||||
sp_qihuan:'戚宦之争',
|
||||
sp_decade:'其他新服武将',
|
||||
sp_mini:'欢乐三国杀',
|
||||
},
|
||||
};
|
||||
});
|
||||
|
|
|
@ -2706,7 +2706,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_machao:['sp_machao','old_machao'],
|
||||
zhugeliang:['re_zhugeliang','zhugeliang'],
|
||||
huangyueying:['re_huangyueying','huangyueying'],
|
||||
sunquan:['re_sunquan','mini_sunquan','sunquan'],
|
||||
sunquan:['re_sunquan','sunquan'],
|
||||
zhouyu:['re_zhouyu','zhouyu'],
|
||||
luxun:['re_luxun','luxun'],
|
||||
lvmeng:['re_lvmeng','lvmeng'],
|
||||
|
@ -2716,7 +2716,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
ganning:['re_ganning','ganning'],
|
||||
yj_ganning:['yj_ganning','sp_ganning'],
|
||||
lvbu:['re_lvbu','lvbu'],
|
||||
diaochan:['re_diaochan','mini_diaochan','diaochan'],
|
||||
diaochan:['re_diaochan','diaochan'],
|
||||
huatuo:['re_huatuo','old_huatuo','huatuo'],
|
||||
huaxiong:['re_huaxiong','old_huaxiong','huaxiong','ol_huaxiong'],
|
||||
yuanshu:['yl_yuanshu','yuanshu','re_yuanshu','old_yuanshu','ol_yuanshu'],
|
||||
|
|
574
character/tw.js
|
@ -5,12 +5,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
connect:true,
|
||||
characterSort:{
|
||||
tw:{
|
||||
tw_mobile:['tw_beimihu','nashime'],
|
||||
tw_mobile:['tw_beimihu','nashime','tw_gexuan','tw_dongzhao'],
|
||||
tw_yijiang:['tw_caoang','tw_caohong','tw_zumao','tw_dingfeng','tw_maliang','tw_xiahouba'],
|
||||
tw_english:['kaisa'],
|
||||
},
|
||||
},
|
||||
character:{
|
||||
tw_dongzhao:['male','wei',3,['twmiaolve','twyingjia']],
|
||||
tw_gexuan:['male','qun',3,['twdanfa','twlingbao','twsidao']],
|
||||
tw_beimihu:['female','qun',3,['zongkui','guju','baijia','bingzhao'],['zhu']],
|
||||
nashime:['male','qun',3,['chijie','waishi','renshe']],
|
||||
tw_xiahouba:['male','shu',4,['twyanqin','twbaobian']],
|
||||
|
@ -25,6 +27,92 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
nashime:'难升米(なしめ,或なんしょうまい)是倭国大夫。景初二年六月,受女王卑弥呼之命,与都市牛利出使魏国,被魏国拜为率善中郎将。',
|
||||
},
|
||||
card:{
|
||||
dz_mantianguohai:{
|
||||
fullskin:true,
|
||||
type:'trick',
|
||||
enable:true,
|
||||
derivation:'tw_dongzhao',
|
||||
global:['dz_mantianguohai'],
|
||||
selectTarget:[1,2],
|
||||
filterTarget:function(card,player,target){
|
||||
return target!=player&&target.countCards('hej')>0;
|
||||
},
|
||||
content:function(){
|
||||
player.gainPlayerCard(target,'hej',true);
|
||||
},
|
||||
contentAfter:function(){
|
||||
'step 0'
|
||||
var evtx=event.getParent();
|
||||
event.targets=targets.filter(function(target){
|
||||
return target.getHistory('lose',function(evt){
|
||||
return evt.getParent(3).name==''&&evt.getParent(4)==evtx;
|
||||
})
|
||||
});
|
||||
if(!event.targets.length||!player.countCards('he')) event.finish();
|
||||
'step 1'
|
||||
var target=targets.shift();
|
||||
event.target=target;
|
||||
var next=player.chooseCard('he',true,'交给'+get.translation(target)+'一张牌');
|
||||
if(player.hasSkill('twyingjia')&&player.countUsed('dz_mantianguohai')==1) next.set('ai',function(card){
|
||||
if(card.name=='dz_mantianguohai') return -10;
|
||||
return -get.value(card,_status.event.getParent().target);
|
||||
});
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
target.gain(result.cards,player,'giveAuto');
|
||||
}
|
||||
'step 3'
|
||||
if(targets.length&&player.countCards('h')>0) event.goto(1);
|
||||
},
|
||||
ai:{
|
||||
order:6,
|
||||
tag:{
|
||||
lose:1,
|
||||
loseCard:1,
|
||||
},
|
||||
result:{
|
||||
target:-0.1,
|
||||
},
|
||||
},
|
||||
},
|
||||
gx_lingbaoxianhu:{
|
||||
fullskin:true,
|
||||
type:'equip',
|
||||
subtype:'equip1',
|
||||
derivation:'tw_gexuan',
|
||||
distance:{attackFrom:-2},
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:4.5,
|
||||
}
|
||||
},
|
||||
skills:['gx_lingbaoxianhu']
|
||||
},
|
||||
gx_taijifuchen:{
|
||||
fullskin:true,
|
||||
type:'equip',
|
||||
subtype:'equip1',
|
||||
derivation:'tw_gexuan',
|
||||
distance:{attackFrom:-4},
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:4.5,
|
||||
}
|
||||
},
|
||||
skills:['gx_taijifuchen']
|
||||
},
|
||||
gx_chongyingshenfu:{
|
||||
fullskin:true,
|
||||
type:'equip',
|
||||
subtype:'equip2',
|
||||
derivation:'tw_gexuan',
|
||||
ai:{
|
||||
basic:{
|
||||
equipValue:7,
|
||||
}
|
||||
},
|
||||
skills:['gx_chongyingshenfu']
|
||||
},
|
||||
},
|
||||
characterFilter:{
|
||||
nashime:function(mode){
|
||||
|
@ -35,6 +123,470 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
dz_mantianguohai:{
|
||||
mod:{
|
||||
ignoredHandcard:function(card,player){
|
||||
if(get.name(card)=='dz_mantianguohai') return true;
|
||||
},
|
||||
cardDiscardable:function(card,player,name){
|
||||
if(name=='cardsDiscard'&&get.name(card)=='dz_mantianguohai') return false;
|
||||
},
|
||||
},
|
||||
},
|
||||
twmiaolve:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:'gameDrawAfter',
|
||||
player:'enterGame',
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
content:function(){
|
||||
if(!lib.inpile.contains('dz_mantianguohai')) lib.inpile.add('dz_mantianguohai');
|
||||
if(!_status.dz_mantianguohai_suits) _status.dz_mantianguohai_suits=lib.suit.slice(0);
|
||||
var list=_status.dz_mantianguohai_suits.randomRemove(2).map(function(i){
|
||||
return game.createCard2('dz_mantianguohai',i,get.rand(1,13));
|
||||
});
|
||||
if(list.length) player.gain(list,'gain2','log');
|
||||
},
|
||||
group:'twmiaolve_damage',
|
||||
subSkill:{
|
||||
damage:{
|
||||
trigger:{player:'damageEnd'},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
event.count=trigger.num;
|
||||
'step 1'
|
||||
event.count--;
|
||||
var list=['dz_mantianguohai'];
|
||||
list.addArray(get.zhinangs());
|
||||
player.chooseButton([get.prompt('twmiaolve'),[list,'vcard']]).set('ai',function(button){
|
||||
if(button.link[2]=='dz_mantianguohai'&&player.countCards('hs','dz_mantianguohai')<2) return 10;
|
||||
return get.value({name:button.link[2]});
|
||||
});
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
player.logSkill('twmiaolve');
|
||||
var name=result.links[0][2];
|
||||
if(name=='dz_mantianguohai'){
|
||||
if(!lib.inpile.contains('dz_mantianguohai')) lib.inpile.add('dz_mantianguohai');
|
||||
if(!_status.dz_mantianguohai_suits) _status.dz_mantianguohai_suits=lib.suit.slice(0);
|
||||
if(_status.dz_mantianguohai_suits.length) player.gain(game.createCard2('dz_mantianguohai',_status.dz_mantianguohai_suits.randomRemove(),get.rand(1,13)),'gain2');
|
||||
else{
|
||||
var card=get.cardPile(function(card){
|
||||
return card.name==name;
|
||||
});
|
||||
if(card) player.gain(card,'gain2');
|
||||
}
|
||||
player.draw();
|
||||
}
|
||||
else{
|
||||
var card=get.cardPile(function(card){
|
||||
return card.name==name;
|
||||
});
|
||||
if(card) player.gain(card,'gain2');
|
||||
}
|
||||
if(event.count>0) event.goto(1);
|
||||
}
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
twyingjia:{
|
||||
audio:2,
|
||||
trigger:{global:'phaseEnd'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(!player.countCards('he')) return false;
|
||||
var history=player.getHistory('useCard'),map={};
|
||||
for(var i of history){
|
||||
if(get.type2(i.card)=='trick'){
|
||||
if(!map[i.card.name]) map[i.card.name]=true;
|
||||
else return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseCardTarget({
|
||||
prompt:get.prompt('twyingjia'),
|
||||
prompt2:'弃置一张牌并令一名角色进行一个额外回合',
|
||||
filterCard:lib.filter.cardDiscardable,
|
||||
filterTarget:true,
|
||||
ai1:function(card){
|
||||
return 8-get.value(card);
|
||||
},
|
||||
ai2:function(target){
|
||||
if(target.hasJudge('lebu')) return -1;
|
||||
var player=_status.event.player;
|
||||
if(get.attitude(player,target)>4){
|
||||
return get.threaten(target)/Math.sqrt(target.hp+1)/Math.sqrt(target.countCards('h')+1);
|
||||
}
|
||||
return -1;
|
||||
},
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
player.logSkill('twyingjia',target);
|
||||
player.discard(result.cards);
|
||||
target.insertPhase();
|
||||
}
|
||||
},
|
||||
},
|
||||
gx_lingbaoxianhu:{
|
||||
trigger:{
|
||||
source:'damageSource',
|
||||
global:'dieAfter',
|
||||
},
|
||||
forced:true,
|
||||
equipSkill:true,
|
||||
filter:function(event,player){
|
||||
if(event.name=='damage') return event.num>1;
|
||||
return true;
|
||||
},
|
||||
content:function(){
|
||||
player.gainMaxHp();
|
||||
player.recover();
|
||||
},
|
||||
},
|
||||
gx_taijifuchen:{
|
||||
trigger:{player:'useCardToPlayered'},
|
||||
forced:true,
|
||||
equipSkill:true,
|
||||
filter:function(event,player){
|
||||
return event.card&&event.card.name=='sha';
|
||||
},
|
||||
logTarget:'target',
|
||||
content:function(){
|
||||
'step 0'
|
||||
var suit=get.suit(trigger.card);
|
||||
var num=trigger.target.countCards('h','shan');
|
||||
var next=trigger.target.chooseToDiscard('弃置一张牌,或不能响应'+get.translation(trigger.card)).set('ai',function(card){
|
||||
var num=_status.event.num;
|
||||
if(num==0) return 0;
|
||||
if(card.name=='shan') return num>1?2:0;
|
||||
return (get.suit(card)!=_status.event.suit?9:6)-get.value(card);
|
||||
}).set('num',num);
|
||||
if(lib.suit.contains(suit)){
|
||||
next.set('prompt2','若弃置的是'+get.suit(suit)+'牌,则改为'+get.translation(player)+'获得之');
|
||||
next.set('suit',suit);
|
||||
}
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var card=result.cards[0];
|
||||
if(get.suit(card,trigger.target)==get.suit(trigger.card,false)&&get.position(card)=='d') player.gain(card,'gain2');
|
||||
}
|
||||
else trigger.directHit.add(trigger.target);
|
||||
},
|
||||
},
|
||||
gx_chongyingshenfu:{
|
||||
trigger:{player:'damageEnd'},
|
||||
forced:true,
|
||||
equipSkill:true,
|
||||
filter:function(event,player){
|
||||
if(!event.card||!event.card.name||player.getStorage('gx_chongyingshenfu_effect').contains(event.card.name)) return false;
|
||||
if(player.hasSkillTag('unequip2')) return false;
|
||||
if(event.source.hasSkillTag('unequip',false,{
|
||||
name:event.card.name,
|
||||
target:player,
|
||||
card:event.card,
|
||||
})) return false;
|
||||
return true;
|
||||
},
|
||||
content:function(){
|
||||
player.addSkill('gx_chongyingshenfu_effect');
|
||||
player.markAuto('gx_chongyingshenfu_effect',[trigger.card.name]);
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
trigger:{player:'damageBegin4'},
|
||||
forced:true,
|
||||
equipSkill:true,
|
||||
charlotte:true,
|
||||
filter:function(event,player){
|
||||
if(!event.card||!event.card.name||!player.getStorage('gx_chongyingshenfu_effect').contains(event.card.name)) return false;
|
||||
if(player.hasSkillTag('unequip2')) return false;
|
||||
if(event.source.hasSkillTag('unequip',false,{
|
||||
name:event.card.name,
|
||||
target:player,
|
||||
card:event.card,
|
||||
})) return false;
|
||||
return true;
|
||||
},
|
||||
content:function(){
|
||||
trigger.num--;
|
||||
},
|
||||
onremove:true,
|
||||
intro:{
|
||||
content:'受到$造成的伤害-1',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
twdanfa:{
|
||||
audio:2,
|
||||
trigger:{player:['phaseZhunbeiBegin','phaseJieshuBegin']},
|
||||
filter:function(event,player){
|
||||
return player.countCards('he')>0;
|
||||
},
|
||||
direct:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseCard('he',get.prompt('twdanfa'),'将一张牌作为“丹”置于武将牌上').set('ai',function(card){
|
||||
if(player.storage.twdanfa){
|
||||
var suit=get.suit(card);
|
||||
for(var i of player.storage.twdanfa){
|
||||
if(get.suit(i,false)==suit) return 4-get.value(card);
|
||||
}
|
||||
}
|
||||
return 5.5-get.value(card);
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var card=result.cards[0];
|
||||
player.logSkill('twdanfa');
|
||||
game.log(player,'将',card,'放在了武将牌上');
|
||||
player.$give(card,player,false);
|
||||
player.lose(card,ui.special,'toStorage');
|
||||
player.markAuto('twdanfa',result.cards);
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
game.delayx();
|
||||
},
|
||||
mark:true,
|
||||
intro:{
|
||||
content:'cards',
|
||||
onunmark:'throw',
|
||||
},
|
||||
group:'twdanfa_draw',
|
||||
subSkill:{
|
||||
draw:{
|
||||
audio:'twdanfa',
|
||||
trigger:{player:'useCard'},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
if(!player.storage.twdanfa||!player.storage.twdanfa.length) return false;
|
||||
var suit=get.suit(event.card,false);
|
||||
if(suit=='none'||player.storage.twdanfa_count&&player.storage.twdanfa_count.contains(suit)) return false;
|
||||
for(var i of player.storage.twdanfa){
|
||||
if(get.suit(i,false)==suit) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
content:function(){
|
||||
player.draw();
|
||||
player.addTempSkill('twdanfa_count');
|
||||
if(!player.storage.twdanfa_count) player.storage.twdanfa_count=[];
|
||||
player.storage.twdanfa_count.push(get.suit(trigger.card,false));
|
||||
},
|
||||
},
|
||||
count:{onremove:true},
|
||||
},
|
||||
},
|
||||
twlingbao:{
|
||||
enable:'phaseUse',
|
||||
usable:1,
|
||||
filter:function(event,player){
|
||||
var list=player.getStorage('twdanfa');
|
||||
if(list.length<2) return false;
|
||||
var suit=get.suit(list[0],false);
|
||||
for(var i=1;i<list.length;i++){
|
||||
if(get.suit(list[i],false)!=suit) return true;
|
||||
}
|
||||
return false;
|
||||
},
|
||||
chooseButton:{
|
||||
dialog:function(event,player){
|
||||
return ui.create.dialog('灵宝',player.storage.twdanfa);
|
||||
},
|
||||
filter:function(button,player){
|
||||
if(!ui.selected.buttons.length) return true;
|
||||
return get.suit(button.link)!=get.suit(ui.selected.buttons[0].link);
|
||||
},
|
||||
select:2,
|
||||
backup:function(links){
|
||||
var obj=get.copy(lib.skill['twlingbao_'+get.color(links)]);
|
||||
obj.cards=links;
|
||||
obj.audio='twlingbao';
|
||||
obj.filterCard=()=>false;
|
||||
obj.selectCard=-1;
|
||||
return obj;
|
||||
},
|
||||
prompt:function(links){
|
||||
return lib.skill['twlingbao_'+get.color(links)].prompt;
|
||||
},
|
||||
check:function(button){
|
||||
var storage=_status.event.player.storage.twdanfa.slice(0);
|
||||
storage.remove(button.link);
|
||||
if(storage.filter(function(card){
|
||||
return card.suit==button.link.suit;
|
||||
}).length) return 1+Math.random();
|
||||
return 0;
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
red:{
|
||||
filterTarget:function(card,player,target){
|
||||
return target.isDamaged();
|
||||
},
|
||||
delay:false,
|
||||
prompt:'令一名角色回复1点体力',
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=lib.skill.twlingbao_backup.cards;
|
||||
player.$throw(cards,1000);
|
||||
player.unmarkAuto('twdanfa',cards);
|
||||
game.log(player,'将',cards,'置入了弃牌堆');
|
||||
game.delayx();
|
||||
game.cardsDiscard(cards);
|
||||
'step 1'
|
||||
target.recover();
|
||||
},
|
||||
ai:{
|
||||
tag:{
|
||||
recover:1,
|
||||
},
|
||||
result:{
|
||||
target:1.5,
|
||||
},
|
||||
},
|
||||
},
|
||||
black:{
|
||||
filterTarget:function(card,player,target){
|
||||
return target.countDiscardableCards(player,'hej')>0;
|
||||
},
|
||||
delay:false,
|
||||
prompt:'弃置一名角色区域内至多两张区域不同的牌',
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=lib.skill.twlingbao_backup.cards;
|
||||
player.$throw(cards,1000);
|
||||
player.unmarkAuto('twdanfa',cards);
|
||||
game.log(player,'将',cards,'置入了弃牌堆');
|
||||
game.delayx();
|
||||
game.cardsDiscard(cards);
|
||||
'step 1'
|
||||
var num=0;
|
||||
if(target.countDiscardableCards(player,'h')) num++;
|
||||
if(target.countDiscardableCards(player,'e')) num++;
|
||||
if(target.countDiscardableCards(player,'j')) num++;
|
||||
if(num){
|
||||
player.discardPlayerCard(target,[1,Math.max(2,num)],'hej',true).set('filterButton',function(button){
|
||||
for(var i=0;i<ui.selected.buttons.length;i++){
|
||||
if(get.position(button.link)==get.position(ui.selected.buttons[i].link)) return false;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
tag:{
|
||||
lose:1.5,
|
||||
loseCard:1.5,
|
||||
discard:1.5,
|
||||
},
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(get.attitude(player,target)>0&&target.countCards('e',function(card){
|
||||
return get.value(card,target)<=0;
|
||||
})>0&&target.countCards('j',function(card){
|
||||
return get.effect(target,card,target,target)<0;
|
||||
})>8) return 3;
|
||||
if(target.countCards('h')>0&&target.countCards('e',function(card){
|
||||
return get.value(card,target)>0;
|
||||
})>0) return -2;
|
||||
return 0;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
none:{
|
||||
selectTarget:2,
|
||||
filterTarget:function(card,player,target){
|
||||
return target.countCards('he')>0;
|
||||
},
|
||||
complexSelect:true,
|
||||
targetprompt:['摸牌','弃牌'],
|
||||
delay:false,
|
||||
prompt:'令一名角色摸一张牌并令另一名角色弃置一张牌',
|
||||
multitarget:true,
|
||||
multiline:true,
|
||||
content:function(){
|
||||
'step 0'
|
||||
var cards=lib.skill.twlingbao_backup.cards;
|
||||
player.$throw(cards,1000);
|
||||
player.unmarkAuto('twdanfa',cards);
|
||||
game.log(player,'将',cards,'置入了弃牌堆');
|
||||
game.delayx();
|
||||
game.cardsDiscard(cards);
|
||||
'step 1'
|
||||
targets[0].draw();
|
||||
targets[1].chooseToDiscard('he',true);
|
||||
},
|
||||
ai:{
|
||||
result:{
|
||||
target:function(player,target){
|
||||
if(!ui.selected.targets.length) return 1;
|
||||
if(target.countCards('e',function(card){
|
||||
return get.value(card,target)<=0;
|
||||
})>0) return 1;
|
||||
return -1;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
backup:{audio:'twlingbao'},
|
||||
},
|
||||
ai:{
|
||||
order:1,
|
||||
result:{player:1},
|
||||
},
|
||||
},
|
||||
twsidao:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:'gameDrawAfter',
|
||||
player:'enterGame',
|
||||
},
|
||||
forced:true,
|
||||
locked:false,
|
||||
filter:function(event,player){
|
||||
return !player.storage.twsidao;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseButton(['请选择你的初始法宝',[['gx_lingbaoxianhu','gx_taijifuchen','gx_chongyingshenfu'],'vcard']],true).set('ai',function(button){
|
||||
return button.link[2]=='gx_chongyingshenfu'?2:1;
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var card=game.createCard2(result.links[0][2]);
|
||||
lib.inpile.add(result.links[0][2]);
|
||||
player.storage.twsidao=card;
|
||||
player.chooseUseTarget(card,'nopopup',true);
|
||||
}
|
||||
},
|
||||
group:'twsidao_equip',
|
||||
subSkill:{
|
||||
equip:{
|
||||
audio:'twsidao',
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
var card=player.storage.twsidao;
|
||||
return card&&card.isInPile()&&player.hasUseTarget(card);
|
||||
},
|
||||
content:function(){
|
||||
player.chooseUseTarget(player.storage.twsidao,'nopopup',true);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
twrangyi:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
|
@ -595,6 +1147,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
waishi_info:' 出牌阶段限一次,你可以用至多X张牌交换一名其他角色等量的手牌(X为现存势力数),然后若其与你势力相同或手牌多于你,你摸一张牌。',
|
||||
renshe:'忍涉',
|
||||
renshe_info:'当你受到伤害后,你可以选择一项:将势力改为现存的另一个势力;或可以额外发动一次“外使”直到你的下个出牌阶段结束;或与另一名其他角色各摸一张牌。',
|
||||
tw_gexuan:'TW葛玄',
|
||||
twdanfa:'丹法',
|
||||
twdanfa_info:'准备阶段或结束阶段开始时,你可将一张牌置于武将牌上,称为“丹”。每回合每种花色限一次,当你使用牌时,若“丹”中有与此牌花色相同的牌,则你摸一张牌。',
|
||||
twlingbao:'灵宝',
|
||||
twlingbao_info:'出牌阶段限一次,你可以将两张花色不同的“丹”置入弃牌堆。若这两张牌:均为红色,你令一名其他角色回复1点体力;均为黑色,你弃置一名其他角色区域内至多两张区域不同牌;颜色不同,则你令一名角色摸一张牌,并令另一名角色弃置一张牌。',
|
||||
twsidao:'司道',
|
||||
twsidao_info:'游戏开始时,你选择一张“法宝”置入装备区。准备阶段,若你以此法选择的法宝在牌堆/弃牌堆中,则你使用之。',
|
||||
gx_lingbaoxianhu:'灵宝仙壶',
|
||||
gx_lingbaoxianhu_info:'锁定技,当你造成点数大于1的伤害后,或有角色死亡后,你加1点体力上限并回复1点体力。',
|
||||
gx_taijifuchen:'太极拂尘',
|
||||
gx_taijifuchen_info:'锁定技,当你使用【杀】指定目标后,你令目标角色选择一项:①弃置一张牌,若此牌和【杀】花色相同,则你获得之。②其不可响应此【杀】。',
|
||||
gx_chongyingshenfu:'冲应神符',
|
||||
gx_chongyingshenfu_info:'锁定技,当你受到牌造成的伤害后,你令所有同名牌对你造成的伤害-1直到游戏结束。',
|
||||
tw_dongzhao:'TW董昭',
|
||||
twmiaolve:'妙略',
|
||||
twmiaolve_info:'游戏开始时,你获得两张【瞒天过海】。当你受到1点伤害后,你可选择:①获得一张【瞒天过海】并摸一张牌。②获得一张智囊。',
|
||||
twyingjia:'迎驾',
|
||||
twyingjia_info:'一名角色的回合结束时,若你本回合内使用过两张或更多的同名锦囊牌,则你可弃置一张手牌并令一名角色进行一个额外回合。',
|
||||
dz_mantianguohai:'瞒天过海',
|
||||
dz_mantianguohai_info:'此牌不计入拥有者的手牌上限。出牌阶段,对一至两名区域内有牌的其他角色使用。你获得目标角色一张牌,然后依次交给每名目标角色各一张牌。',
|
||||
tw_mobile:'移动版',
|
||||
tw_yijiang:'一将成名TW',
|
||||
tw_english:'英文版',
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
window.noname_asset_list=[
|
||||
'v1.9.110.8.5',
|
||||
'v1.9.110.8.5.1',
|
||||
'audio/background/aozhan_chaoming.mp3',
|
||||
'audio/background/aozhan_online.mp3',
|
||||
'audio/background/aozhan_rewrite.mp3',
|
||||
|
@ -758,6 +758,12 @@ window.noname_asset_list=[
|
|||
'audio/die/sp_xujing.mp3',
|
||||
'audio/die/xiangchong.mp3',
|
||||
'audio/die/xinzhongyong.mp3',
|
||||
'audio/die/fengxi.mp3',
|
||||
'audio/die/heyan.mp3',
|
||||
'audio/die/qiuliju.mp3',
|
||||
'audio/die/re_caifuren.mp3',
|
||||
'audio/die/tw_dongzhao.mp3',
|
||||
'audio/die/tw_gexuan.mp3',
|
||||
|
||||
'audio/skill/decadezishou1.mp3',
|
||||
'audio/skill/decadezishou2.mp3',
|
||||
|
@ -3376,6 +3382,32 @@ window.noname_asset_list=[
|
|||
'audio/skill/tspowei2.mp3',
|
||||
'audio/skill/yigui1.mp3',
|
||||
'audio/skill/yigui2.mp3',
|
||||
'audio/skill/boyan1.mp3',
|
||||
'audio/skill/boyan2.mp3',
|
||||
'audio/skill/koulve1.mp3',
|
||||
'audio/skill/koulve2.mp3',
|
||||
'audio/skill/qingtan1.mp3',
|
||||
'audio/skill/qingtan2.mp3',
|
||||
'audio/skill/qljsuiren1.mp3',
|
||||
'audio/skill/qljsuiren2.mp3',
|
||||
'audio/skill/reqieting1.mp3',
|
||||
'audio/skill/reqieting2.mp3',
|
||||
'audio/skill/rexianzhou1.mp3',
|
||||
'audio/skill/rexianzhou2.mp3',
|
||||
'audio/skill/twdanfa1.mp3',
|
||||
'audio/skill/twdanfa2.mp3',
|
||||
'audio/skill/twlingbao1.mp3',
|
||||
'audio/skill/twlingbao2.mp3',
|
||||
'audio/skill/twmiaolve1.mp3',
|
||||
'audio/skill/twmiaolve2.mp3',
|
||||
'audio/skill/twsidao1.mp3',
|
||||
'audio/skill/twsidao2.mp3',
|
||||
'audio/skill/twyingjia1.mp3',
|
||||
'audio/skill/twyingjia2.mp3',
|
||||
'audio/skill/yachai1.mp3',
|
||||
'audio/skill/yachai2.mp3',
|
||||
'audio/skill/yusui1.mp3',
|
||||
'audio/skill/yusui2.mp3',
|
||||
|
||||
'audio/voice/male/0.mp3',
|
||||
'audio/voice/male/1.mp3',
|
||||
|
@ -3493,6 +3525,10 @@ window.noname_asset_list=[
|
|||
'image/card/zhaoshu.png',
|
||||
'image/card/tiaojiyanmei.png',
|
||||
'image/card/binglinchengxiax.png',
|
||||
'image/card/dz_mantianguohai.png',
|
||||
'image/card/gx_chongyingshenfu.png',
|
||||
'image/card/gx_lingbaoxianhu.png',
|
||||
'image/card/gx_taijifuchen.png',
|
||||
|
||||
'image/card/bagua.png',
|
||||
'image/card/baihupifeng.png',
|
||||
|
@ -4276,6 +4312,9 @@ window.noname_asset_list=[
|
|||
'image/character/re_caifuren.jpg',
|
||||
'image/character/re_dongbai.jpg',
|
||||
'image/character/wenqin.jpg',
|
||||
'image/character/pengyang.jpg',
|
||||
'image/character/tw_dongzhao.jpg',
|
||||
'image/character/tw_gexuan.jpg',
|
||||
|
||||
'image/character/baiwuchang.jpg',
|
||||
'image/character/baosanniang.jpg',
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
window.noname_update={
|
||||
version:'1.9.110.8.5',
|
||||
update:'1.9.110.8.4.1',
|
||||
version:'1.9.110.8.5.1',
|
||||
update:'1.9.110.8.5',
|
||||
changeLog:[
|
||||
'藤川米娅',
|
||||
'何晏、丘力居、董白、界蔡夫人、龙羽飞',
|
||||
'国战文钦、刘巴、冯熙、苏飞',
|
||||
'孙亮、高览、管辂、樊玉凤技能调整',
|
||||
'TW董昭、TW葛玄',
|
||||
'国战文聘、彭羕',
|
||||
'张横、吕旷吕翔、辛毗技能调整',
|
||||
'移除欢乐武将',
|
||||
'bug修复',
|
||||
],
|
||||
files:[
|
||||
|
@ -22,15 +22,15 @@ window.noname_update={
|
|||
//'card/yingbian.js',
|
||||
//'card/zhenfa.js',
|
||||
//'card/zhulu.js',
|
||||
'character/diy.js',
|
||||
//'character/extra.js',
|
||||
//'character/diy.js',
|
||||
'character/extra.js',
|
||||
//'character/hearth.js',
|
||||
//'character/gujian.js',
|
||||
//'character/gwent.js',
|
||||
//'character/hearth.js',
|
||||
//'character/mobile.js',
|
||||
'character/mobile.js',
|
||||
//'character/mtg.js',
|
||||
'character/offline.js',
|
||||
//'character/offline.js',
|
||||
//'character/old.js',
|
||||
//'character/ow.js',
|
||||
'character/rank.js',
|
||||
|
@ -38,13 +38,13 @@ window.noname_update={
|
|||
'character/shenhua.js',
|
||||
'character/sp.js',
|
||||
'character/sp2.js',
|
||||
//'character/tw.js',
|
||||
'character/tw.js',
|
||||
'character/standard.js',
|
||||
//'character/swd.js',
|
||||
//'character/xianjian.js',
|
||||
//'character/xinghuoliaoyuan.js',
|
||||
//'character/yingbian.js',
|
||||
'character/yijiang.js',
|
||||
//'character/yijiang.js',
|
||||
//'character/yxs.js',
|
||||
//'extension/boss/extension.js',
|
||||
//'layout/default/layout.css',
|
||||
|
@ -54,13 +54,13 @@ window.noname_update={
|
|||
//'mode/boss.js',
|
||||
//'mode/brawl.js',
|
||||
//'mode/chess.js',
|
||||
'mode/doudizhu.js',
|
||||
//'mode/doudizhu.js',
|
||||
'mode/guozhan.js',
|
||||
//'mode/identity.js',
|
||||
//'mode/single.js',
|
||||
//'mode/stone.js',
|
||||
//'mode/tafang.js',
|
||||
//'mode/versus.js',
|
||||
'mode/versus.js',
|
||||
'game/game.js',
|
||||
//'game/keyWords.js',
|
||||
//'game/NoSleep.js',
|
||||
|
|
After Width: | Height: | Size: 26 KiB |
After Width: | Height: | Size: 14 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 169 KiB |
After Width: | Height: | Size: 172 KiB |
After Width: | Height: | Size: 157 KiB |
347
mode/guozhan.js
|
@ -356,8 +356,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
guozhan_quan:["gz_cuimao","gz_yujin","gz_wangping","gz_fazheng","gz_wuguotai","gz_lukang","gz_yuanshu","gz_zhangxiu"],
|
||||
guozhan_jun:["gz_jun_caocao","gz_jun_sunquan","gz_jun_liubei","gz_jun_zhangjiao"],
|
||||
guozhan_jin:['gz_jin_simayi','gz_jin_simazhao','gz_jin_simashi','gz_jin_zhangchunhua','gz_jin_wangyuanji','gz_jin_xiahouhui','gz_duyu','gz_zhanghuyuechen','gz_jin_yanghuiyu','gz_simazhou','gz_shibao','gz_weiguan','gz_zhongyan'],
|
||||
guozhan_single:['gz_re_xushu','gz_yanbaihu','gz_wujing','gz_dongzhao','gz_huangzu','gz_zhugeke','gz_liuba'],
|
||||
guozhan_double:['gz_tangzi','gz_liuqi','gz_mengda','gz_mifangfushiren','gz_zhanglu','gz_shixie','gz_xuyou','gz_xiahouba','gz_panjun','gz_xf_sufei','gz_wenqin'],
|
||||
guozhan_single:['gz_re_xushu','gz_yanbaihu','gz_wujing','gz_dongzhao','gz_huangzu','gz_zhugeke','gz_liuba','gz_wenpin'],
|
||||
guozhan_double:['gz_tangzi','gz_liuqi','gz_mengda','gz_mifangfushiren','gz_zhanglu','gz_shixie','gz_xuyou','gz_xiahouba','gz_panjun','gz_xf_sufei','gz_wenqin','gz_pengyang'],
|
||||
guozhan_yexinjia:['gz_zhonghui','gz_simazhao','gz_gongsunyuan'],
|
||||
guozhan_zongheng:['gz_huaxin','gz_luyusheng','gz_zongyu','gz_miheng','gz_fengxi'],
|
||||
guozhan_others:["gz_lingcao","gz_lifeng","gz_beimihu","gz_jianggan","gz_key_ushio","gz_sp_duyu"],
|
||||
|
@ -401,6 +401,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
gz_wenqin:['male','wei',4,['gzyaoqi'],['doublegroup:wei:wu']],
|
||||
gz_xf_sufei:['male','wu',4,['gzlianpian'],['doublegroup:wu:qun']],
|
||||
gz_liuba:['male','shu',3,['chouduo','guiyin']],
|
||||
gz_pengyang:['male','shu',3,['jianni','xiaoba'],['doublegroup:shu:qun']],
|
||||
gz_wenpin:['male','wei',4,['gzzhenwei','gzyulin']],
|
||||
|
||||
gz_caocao:['male','wei',4,['jianxiong']],
|
||||
gz_simayi:['male','wei',3,['fankui','guicai']],
|
||||
|
@ -536,6 +538,337 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
skill:{
|
||||
//文聘
|
||||
gzzhenwei:{
|
||||
trigger:{player:'phaseDiscardBegin'},
|
||||
check:function(event,player){
|
||||
return player.hp>2&&player.needsToDiscard()>0&&game.countPlayer(function(current){
|
||||
return get.attitude(current,player)<=0;
|
||||
})>game.countPlayer()/2;
|
||||
},
|
||||
content:function(){
|
||||
player.addTempSkill('gzzhenwei_effect');
|
||||
player.loseHp();
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
trigger:{player:'phaseDiscardAfter'},
|
||||
forced:true,
|
||||
charlotte:true,
|
||||
popup:false,
|
||||
filter:function(event,player){
|
||||
return player.getHistory('lose',function(evt){
|
||||
return evt.type=='discard'&&evt.cards2&&evt.cards2.length>0&&evt.getParent('phaseDiscard')==event;
|
||||
}).length>0;
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var num=0;
|
||||
player.getHistory('lose',function(evt){
|
||||
if(evt.type=='discard'&&evt.getParent('phaseDiscard')==trigger) num+=evt.cards2.length;
|
||||
});
|
||||
event.num=num;
|
||||
event.targets=game.filterPlayer(function(current){
|
||||
return current!=player;
|
||||
}).sortBySeat();
|
||||
'step 1'
|
||||
var target=targets.shift();
|
||||
event.target=target;
|
||||
if(target.isIn()){
|
||||
player.line(target,'green');
|
||||
target.chooseCard('h',num,'将'+get.cnNumber(num)+'张牌置入弃牌堆,或受到1点伤害').set('ai',function(card){
|
||||
var evt=_status.event.getParent();
|
||||
if(get.damageEffect(evt.target,evt.player,evt.target)>=0) return 0;
|
||||
return (8/Math.sqrt(evt.num)+evt.target.getDamagedHp())-get.value(card);
|
||||
});
|
||||
}
|
||||
else if(targets.length) event.redo();
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(result.bool){
|
||||
target.lose(result.cards,ui.discardPile,'visible');
|
||||
target.$throw(result.cards,1000);
|
||||
game.log(target,'将',result.cards,'置入了弃牌堆');
|
||||
}
|
||||
else target.damage();
|
||||
'step 3'
|
||||
game.delayx();
|
||||
if(targets.length) event.goto(1);
|
||||
},
|
||||
},
|
||||
},
|
||||
ai:{
|
||||
noDieAfter2:true,
|
||||
skillTagFilter:function(player,tag,target){
|
||||
return target.isFriendOf(player);
|
||||
},
|
||||
},
|
||||
},
|
||||
gzyulin:{
|
||||
trigger:{player:'phaseJieshuBegin'},
|
||||
zhenfa:'siege',
|
||||
direct:true,
|
||||
locked:true,
|
||||
filter:function(event,player){
|
||||
return game.countPlayer()>4&&game.hasPlayer(function(current){
|
||||
return player.sieged(current)&&player.canUse('sha',current,false);
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
var list=game.filterPlayer(function(current){
|
||||
return player.sieged(current)&&player.canUse('sha',current,false);
|
||||
});
|
||||
if(player.hasSkill('gzyulin')){
|
||||
if(list.length==1) event._result={bool:true,targets:list};
|
||||
else player.chooseTarget('鱼鳞:视为对一名围攻你的角色使用【杀】',function(card,player,target){
|
||||
return _status.event.list.contains(target);
|
||||
},true).set('list',list).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,{name:'sha',isCard:true},player,player);
|
||||
});
|
||||
}
|
||||
else{
|
||||
player.chooseTarget(get.prompt('gzyulin'),'视为对一名围攻你的角色使用【杀】',function(card,player,target){
|
||||
return _status.event.list.contains(target);
|
||||
}).set('list',list).set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,{name:'sha',isCard:true},player,player);
|
||||
});
|
||||
}
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
player.useCard({name:'sha',isCard:true},result.targets[0],'gzyulin',false);
|
||||
}
|
||||
},
|
||||
global:'gzyulin_siege',
|
||||
subSkill:{
|
||||
siege:{
|
||||
mod:{
|
||||
maxHandcard:function(player,num){
|
||||
if(game.countPlayer()<4) return;
|
||||
var next=player.getNext(),prev=player.getPrevious(),siege=[];
|
||||
if(player.siege(next)) siege.push(next.getNext());
|
||||
if(player.siege(prev)) siege.push(prev.getPrevious());
|
||||
if(siege.length){
|
||||
siege.push(player);
|
||||
num+=siege.filter(function(source){
|
||||
return source.hasSkill('gzyulin');
|
||||
}).length;
|
||||
}
|
||||
if(player.sieged()){
|
||||
if(next.hasSkill('gzyulin')) num--;
|
||||
if(prev.hasSkill('gzyulin')) num--;
|
||||
}
|
||||
return num;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//彭羕
|
||||
jianni:{
|
||||
trigger:{global:'phaseUseBegin'},
|
||||
direct:true,
|
||||
filter:function(event,player){
|
||||
if(!player.isFriendOf(event.player)||!game.hasPlayer(function(current){
|
||||
return !current.isLinked();
|
||||
})) return false;
|
||||
if(_status.connectMode&&player.hasSkill('jianni')) return player.countCards('h')>0;
|
||||
return player.countCards('h',function(card){
|
||||
return get.type2(card,player)=='trick';
|
||||
});
|
||||
},
|
||||
content:function(){
|
||||
'step 0'
|
||||
player.chooseCardTarget({
|
||||
prompt:get.prompt('jianni'),
|
||||
prompt2:'弃置一张锦囊牌并选择要横置的角色',
|
||||
filterCard:function(card,player){
|
||||
return get.type2(card,player)=='trick'&&lib.filter.cardDiscardable(card,player,'jianni');
|
||||
},
|
||||
filterTarget:function(card,player,target){
|
||||
return !target.isLinked();
|
||||
},
|
||||
goon:function(){
|
||||
var target=trigger.player;
|
||||
if(player.canUse('tao',target)&&get.effect(target,{name:'tao',isCard:true},player,player)>0) return true;
|
||||
var card={name:'sha',nature:'thunder',isCard:true};
|
||||
if(game.hasPlayer(function(current){
|
||||
return current!=player&¤t!=target&&target.canUse(card,current,false)&&get.effect(current,card,target,player)>0;
|
||||
})) return true;
|
||||
return false;
|
||||
}(),
|
||||
ai1:function(card){
|
||||
if(_status.event.goon) return 7-get.value(card);
|
||||
return 0;
|
||||
},
|
||||
ai2:function(target){
|
||||
var player=_status.event.player;
|
||||
return ((target.identity!='unknown'&&!game.hasPlayer(function(current){
|
||||
return current!=target&¤t.isFriendOf(target)&¤t.isLinked();
|
||||
}))?3:1)*(-get.attitude(target,player,player)+1);
|
||||
},
|
||||
});
|
||||
'step 1'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
event.target=target;
|
||||
player.logSkill('jianni',target);
|
||||
player.discard(result.cards);
|
||||
}
|
||||
else event.finish();
|
||||
'step 2'
|
||||
if(!target.isLinked()) target.link();
|
||||
'step 3'
|
||||
var map={},sides=[],pmap=_status.connectMode?lib.playerOL:game.playerMap,player;
|
||||
for(var i of game.players){
|
||||
if(i.identity=='unknown') continue;
|
||||
var added=false;
|
||||
for(var j of sides){
|
||||
if(i.isFriendOf(pmap[j])){
|
||||
added=true;
|
||||
map[j].push(i);
|
||||
if(i==this) player=j;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(!added){
|
||||
map[i.playerid]=[i];
|
||||
sides.push(i.playerid);
|
||||
if(i==this) player=i.playerid;
|
||||
}
|
||||
}
|
||||
var num=0;
|
||||
for(var i in map){
|
||||
if(map[i].filter(function(i){
|
||||
return i.isLinked();
|
||||
}).length) num++;
|
||||
}
|
||||
if(num>0) player.draw(num);
|
||||
'step 4'
|
||||
if(trigger.player.isIn()){
|
||||
var target=trigger.player,tao=player.canUse('tao',target),sha=game.filterPlayer(function(current){
|
||||
return current!=target&¤t!=player&&target.canUse({name:'sha',nature:'thunder',isCard:true},current,false);
|
||||
});
|
||||
if(sha.length){
|
||||
var next=player.chooseTarget('请选择'+get.translation(target)+'使用雷【杀】的目标',function(card,player,target){
|
||||
return _status.event.list.contains(target);
|
||||
});
|
||||
if(tao){
|
||||
next.set('prompt2','或点「取消」并视为对其使用【桃】');
|
||||
next.set('goon',get.effect(target,{name:'tao',isCard:true},player,player));
|
||||
}
|
||||
else{
|
||||
next.set('forced',true);
|
||||
next.set('goon',0);
|
||||
}
|
||||
next.set('list',sha);
|
||||
next.set('ai',function(target){
|
||||
var player=_status.event.player;
|
||||
return get.effect(target,{name:'sha',nature:'thunder',isCard:true},_status.event.getTrigger().player,player)-_status.event.goon;
|
||||
});
|
||||
}
|
||||
else if(tao) event._result={bool:false};
|
||||
else event.finish();
|
||||
}
|
||||
else event.finish();
|
||||
'step 5'
|
||||
if(result.bool){
|
||||
var target=result.targets[0];
|
||||
if(player==trigger.player) player.line(target);
|
||||
else{
|
||||
player.line2([trigger.player,target]);
|
||||
game.delay(0.5);
|
||||
}
|
||||
trigger.player.useCard({name:'sha',nature:'thunder',isCard:true},target,false).animate=false;
|
||||
}
|
||||
else player.useCard({name:'tao',isCard:true},trigger.player);
|
||||
},
|
||||
},
|
||||
xiaoba:{
|
||||
trigger:{global:'useCard'},
|
||||
forced:true,
|
||||
filter:function(event,player){
|
||||
if(player!=event.player&&!event.targets.contains(player)) return false;
|
||||
var type=get.type2(event.card);
|
||||
if(type!='basic'&&type!='trick') return false;
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.isFriendOf(player);
|
||||
});
|
||||
if(!list.length) return false;
|
||||
var hs=player.countCards('h');
|
||||
for(var i of list){
|
||||
if(i.countCards('h')>hs) return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
check:()=>false,
|
||||
content:function(){
|
||||
trigger.directHit.addArray(game.players);
|
||||
},
|
||||
global:'xiaoba_ai',
|
||||
ai:{
|
||||
halfneg:true,
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(player,tag,arg){
|
||||
if(!arg.card) return false;
|
||||
var type=get.type2(arg.card);
|
||||
if(type!='basic'&&type!='trick') return false;
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.isFriendOf(player);
|
||||
});
|
||||
if(!list.length) return false;
|
||||
var cards=[arg.card];
|
||||
if(arg.card.cards) cards.addArray(arg.card.cards);
|
||||
cards.addArray(ui.selected.cards);
|
||||
var hhs=function(card){
|
||||
return !cards.contains(card);
|
||||
};
|
||||
var hs=player.countCards('h',hhs);
|
||||
for(var i of list){
|
||||
if(i.countCards('h',hhs)>hs) return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
},
|
||||
subSkill:{
|
||||
ai:{
|
||||
ai:{
|
||||
directHit_ai:true,
|
||||
skillTagFilter:function(playerx,tag,arg){
|
||||
if(!arg.card) return false;
|
||||
var type=get.type2(arg.card);
|
||||
if(type!='basic'&&type!='trick') return false;
|
||||
var player;
|
||||
if(arg.target&&arg.target.hasSkill('xiaoba')) player=arg.target;
|
||||
else{
|
||||
var list=ui.selected.targets.filter(function(target){
|
||||
return target.hasSkill('xiaoba');
|
||||
});
|
||||
if(list.length) player=list[0];
|
||||
else return false;
|
||||
}
|
||||
var list=game.filterPlayer(function(current){
|
||||
return current!=player&¤t.isFriendOf(player);
|
||||
});
|
||||
if(!list.length) return false;
|
||||
var cards=[arg.card];
|
||||
if(arg.card.cards) cards.addArray(arg.card.cards);
|
||||
cards.addArray(ui.selected.cards);
|
||||
var hhs=function(card){
|
||||
return !cards.contains(card);
|
||||
};
|
||||
var hs=player.countCards('h',hhs);
|
||||
for(var i of list){
|
||||
if(i.countCards('h',hhs)>hs) return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//刘巴
|
||||
chouduo:{
|
||||
trigger:{global:'phaseJieshuBegin'},
|
||||
|
@ -9946,6 +10279,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
wenqin:'文钦',
|
||||
fengxi:'冯熙',
|
||||
liuba:'刘巴',
|
||||
pengyang:'彭羕',
|
||||
gzzhenwei:'镇卫',
|
||||
gzzhenwei_info:'①弃牌阶段开始时,你可失去1点体力。然后若你于此阶段内弃置过你的牌,则你令其他角色各选择一项:1.将X张手牌置入弃牌堆(X为你于此阶段内弃置过的牌数);2.受到你造成的1点伤害。②你杀死与你势力相同的角色不执行奖惩。 ',
|
||||
gzyulin:'鱼鳞',
|
||||
gzyulin_info:'阵法技,若你在一个围攻关系中:①是围攻角色,则所有围攻角色的手牌上限+1且被围攻角色手牌上限-1;②是被围攻角色,则结束阶段开始时,你视为对一名围攻角色使用【杀】。',
|
||||
jianni:'谏逆',
|
||||
jianni_info:'一名己方角色A的出牌阶段开始时,你可弃置一张锦囊牌,横置一名结算并摸X张牌(X为拥有横置角色的势力数)。然后你选择一项:①视为对A使用一张【桃】;②令A视为对由你选择的另一名角色使用一张雷【杀】。',
|
||||
xiaoba:'嚣跋',
|
||||
xiaoba_info:'锁定技,当你使用或被使用基本牌或普通锦囊牌时,若有其他与你势力相同的角色且这些角色的手牌数均不大于你,则此牌不可被响应。',
|
||||
chouduo:'筹度',
|
||||
chouduo_info:'己方角色的结束阶段开始时,其可以摸X张牌(X为其本回合弃牌阶段弃置的牌数且至多为3)。 ',
|
||||
guiyin:'归隐',
|
||||
|
@ -11026,6 +11368,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
dieAfter2:function(source){
|
||||
var that=this;
|
||||
if(source&&source.hasSkillTag('noDieAfter2',null,this)) return;
|
||||
if(source&&source.shijun){
|
||||
source.discard(source.getCards('he'));
|
||||
delete source.shijun;
|
||||
|
|
|
@ -2640,7 +2640,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
lib.character[name][1]='wei';
|
||||
return true;
|
||||
});
|
||||
event.trueList=['xunchen','gaolan','sp_zhanghe','sp_xuyou','chenlin','jsp_liubei','yj_jushou','sp_shenpei','tianfeng','yuantanyuanshang','lvkuanglvxiang','xinpi','guotufengji','chunyuqiong'].filter(function(name){
|
||||
event.trueList=['xunchen','gaolan','sp_zhanghe','sp_xuyou','chenlin','jsp_liubei','yj_jushou','sp_shenpei','tianfeng','yuantanyuanshang','lvkuanglvxiang','xinpi','re_guotufengji','chunyuqiong'].filter(function(name){
|
||||
if(!Array.isArray(lib.character[name])) return false;
|
||||
lib.character[name][1]='qun';
|
||||
return true;
|
||||
|
@ -2716,7 +2716,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
|
|||
lib.character[name][1]='wei';
|
||||
return true;
|
||||
});
|
||||
event.trueList=['xunchen','gaolan','sp_zhanghe','sp_xuyou','chenlin','jsp_liubei','yj_jushou','sp_shenpei','tianfeng','yuantanyuanshang','lvkuanglvxiang','xinpi','guotufengji','chunyuqiong'].filter(function(name){
|
||||
event.trueList=['xunchen','gaolan','sp_zhanghe','sp_xuyou','chenlin','jsp_liubei','yj_jushou','sp_shenpei','tianfeng','yuantanyuanshang','lvkuanglvxiang','xinpi','re_guotufengji','chunyuqiong'].filter(function(name){
|
||||
if(!Array.isArray(lib.character[name])) return false;
|
||||
lib.character[name][1]='qun';
|
||||
return true;
|
||||
|
|