This commit is contained in:
Spmario233 2021-09-07 13:05:57 +08:00
parent ec9d3864c4
commit 6581338d04
23 changed files with 1337 additions and 103 deletions

View File

@ -70,6 +70,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_crow:['male','key',4,[],['unseen']],
key_asara:['female','key',3,['asara_shelu','asara_yingwei']],
key_kotomi:['female','key',3,['kotomi_qinji','kotomi_chuanxiang']],
key_mia:['female','key',3,['mia_shihui','mia_qianmeng']],
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
@ -195,7 +196,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao","ns_chengpu"],
diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"],
diy_noname:['noname'],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya","key_youta","key_rumi","key_chihaya","key_yukito","key_asara","key_kotomi"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya","key_youta","key_rumi","key_chihaya","key_yukito","key_asara","key_kotomi","key_mia"],
diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang','junk_simayi'],
},
},
@ -217,6 +218,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yanghu:'羊祜221年278年12月27日字叔子泰山郡南城县人。西晋时期杰出的战略家、政治家、文学家曹魏上党太守羊衜的儿子名儒蔡邕的女儿蔡文姬的外甥。出身“泰山羊氏”博学能文清廉正直。曹魏时期接受公车征辟出任中书郎迁给事黄门侍郎。姐姐嫁给大将军司马师投靠司马氏家族仕途平步青云。魏元帝曹奂即位出任秘书监、相国从事中郎、中领军统领御林军兼管内外政事册封钜平县子迁。西晋建立后迁中军将军、散骑常侍、郎中令册封钜平侯。泰始五年269年出任车骑将军、荆州都督加任开府仪同三司坐镇襄阳屯田兴学以德怀柔深得军民之心扩充军备训练士兵全力准备灭亡孙吴累迁征南大将军册封南城侯。咸宁四年去世临终前举荐杜预接任职务获赠侍中、太傅谥号为“成”。唐宋时期配享武庙。',
},
characterTitle:{
key_kotomi:'#bLoopers',
key_kotomi:'#gClannad',
key_asara:'#bRewrite',
key_yukito:'#bAIR',
@ -457,6 +459,136 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'],
},
skill:{
mia_shihui:{
trigger:{player:'phaseDrawBegin1'},
forced:true,
filter:function(event,player){
return !event.numFixed;
},
content:function(){
trigger.changeToZero();
var num=0;all=player.getAllHistory();
if(all.length>1){
for(var i=all.length-2;i>=0;i--){
if(all[i].isMe){
for(var evt of all[i].lose){
if(evt.type=='discard') num+=evt.cards2.length;
}
break;
}
}
}
player.draw(1+num);
},
group:'mia_shihui_recover',
subSkill:{
recover:{
trigger:{player:'phaseJieshuBegin'},
forced:true,
filter:function(event,player){
return player.isDamaged()||player.countCards('he')>0;
},
content:function(){
player.chooseToDiscard('he',true);
player.recover();
},
},
},
},
mia_qianmeng:{
trigger:{
global:'gameDrawAfter',
player:'enterGame',
},
forced:true,
dutySkill:true,
content:function(){
'step 0'
player.draw();
'step 1'
if(player.countCards('he')>0){
player.chooseCard('he',true,'潜梦:选择一张牌置于牌堆中');
}
else event.finish();
'step 2'
if(result.bool){
var card=result.cards[0];
player.storage.mia_qianmeng=card;
player.$throw(card,1000);
player.lose(card,ui.cardPile).insert_index=function(){
return ui.cardPile.childNodes[Math.ceil(ui.cardPile.childNodes.length/2)];
};
}
else event.finish();
'step 3'
game.delayx();
},
onremove:true,
group:['mia_qianmeng_achieve','mia_qianmeng_fail'],
subSkill:{
achieve:{
trigger:{global:'gainAfter'},
forced:true,
filter:function(event,player){
var card=player.storage.mia_qianmeng;
return card&&event.cards.contains(card)&&event.player.getCards('he').contains(card);
},
skillAnimation:true,
animationColor:'key',
content:function(){
'step 0'
player.awakenSkill('mia_qianmeng');
if(player!=trigger.player) player.gain(player.storage.mia_qianmeng,trigger.player,'give');
'step 1'
if(player.hp<player.maxHp) player.recover(player.maxHp-player.hp);
player.removeSkill('mia_shihui');
player.addSkill('mia_fengfa');
},
},
fail:{
trigger:{player:'die'},
direct:true,
forceDie:true,
filter:function(event,player){
return get.itemtype(player.storage.mia_qianmeng)=='card';
},
content:function(){
'step 0'
player.chooseTarget(get.prompt('mia_qianmeng'),'令一名角色获得牌堆中所有点数为'+player.storage.mia_qianmeng.number+'的牌',lib.filter.notMe);
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('mia_qianmeng_fail',target);
var num=player.storage.mia_qianmeng.number,cards=[];
for(var i=0;i<ui.cardPile.childNodes.length;i++){
var card=ui.cardPile.childNodes[i];
if(card.number==num) cards.push(card);
}
if(cards.length) target.gain(cards,'gain2');
}
},
},
},
},
mia_fengfa:{
trigger:{player:'phaseDrawBegin2'},
forced:true,
filter:function(event,player){
return !event.numFixed;
},
content:function(){
var num=0;all=player.getAllHistory();
if(all.length>1){
for(var i=all.length-2;i>=0;i--){
if(all[i].isMe){
num+=all[i].useCard.length;
break;
}
}
}
trigger.num+=num;
},
},
kyou_zhidian:{
locked:false,
mod:{
@ -4978,7 +5110,30 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
frequent:true,
content:function(){
player.draw(2);
'step 0'
if(trigger.name=='phaseUse'){
player.draw(2);
event.finish();
return;
}
var list=[],history=player.getHistory('useCard');
for(var i of history){
list.add(get.suit(i.card));
if(list.length>=player.hp) break;
}
if(list.length>=player.hp) event.goon=true;
else player.chooseControl('摸牌阶段','出牌阶段').set('prompt','精策:选择要执行的额外阶段');
'step 1'
if(event.goon||result.index==0){
var next=player.phaseDraw();
event.next.remove(next);
trigger.getParent().next.push(next);
}
if(event.goon||result.index==1){
var next=player.phaseUse();
event.next.remove(next);
trigger.getParent().next.push(next);
}
},
},
kyoko_shelie:{
@ -14877,6 +15032,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_crow:'小空',
key_asara:'井上晶',
key_kotomi:'一之濑琴美',
key_mia:'藤川米娅',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -15214,6 +15370,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
kotomi_chuanxiang:'传箱',
kotomi_chuanxiang2:'传箱',
kotomi_chuanxiang_info:'其他角色的出牌阶段限一次,其可以将装备区内的一张牌移动到另一名角色的装备区内,然后你摸一张牌。若你是目标角色,则你改为摸两张牌。',
mia_shihui:'时迴',
mia_shihui_info:'锁定技摸牌阶段你改为摸X+1张牌X为你上回合弃置的牌数结束阶段你弃置一张牌并回复1点体力。',
mia_qianmeng:'潜梦',
mia_qianmeng_info:'使命技。①游戏开始时,你摸一张牌,然后将一张牌置于牌堆的正中央。②使命:当有角色获得“潜梦”牌时,其将此牌交给你。你将体力值回复至上限,失去〖时迴〗并获得〖风发〗。③失败:当你死亡时,你可令一名角色获得牌堆中所有与“潜梦”牌点数相同的牌。',
mia_fengfa:'风发',
mia_fengfa_info:'锁定技。摸牌阶段你多摸X张牌X为你上回合使用过的牌数。',
key_kud:'库特莉亚芙卡',
kud_qiaoshou:'巧手',

View File

@ -9,10 +9,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
offline_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'],
offline_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"],
offline_yongjian:["ns_chendao","yj_caoang"],
offline_s:["ns_jiaxu","ns_caoanmin","jsp_liubei"],
offline_others:["ns_jiaxu","ns_caoanmin","jsp_liubei","longyufei"],
},
},
character:{
longyufei:['female','shu',3,['longyi','zhenjue']],
sp_liubei:['male','shu',4,['zhaolie','shichou'],['zhu']],
sp_zhangfei:['male','shu',4,['jie','dahe']],
sp_lvmeng:['male','wu',3,['tanhu','mouduan']],
@ -39,6 +40,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterIntro:{
huangjinleishi:"黄巾军中负责施法的女祭司二人组。",
longyufei:'《三国杀·阵面对决》中的虚构角色,设定是由刘备之女夏侯岚、关羽之女关银屏、张飞之女张星彩三人在与吕布之魔魂战斗时,释放雅典娜的惊叹而召唤出来的精元化神。',
},
perfectPair:{},
card:{
@ -61,6 +63,125 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//龙羽飞
longyi:{
enable:['chooseToUse','chooseToRespond'],
filter:function(event,player){
if(event.type=='wuxie') return false;
var hs=player.getCards('h');
if(!hs.length) return false;
for(var i of hs){
if(game.checkMod(i,player,'unchanged','cardEnabled2',player)===false) return false;
}
for(var i of lib.inpile){
if(i!='du'&&get.type(i)=='basic'&&event.filterCard({name:i,cards:hs},player,event)) return true;
if(i=='sha'){
var list=['fire','thunder','ice'];
for(var j of list){
if(event.filterCard({name:i,nature:j,cards:hs},player,event)) return true;
}
}
}
return false;
},
chooseButton:{
dialog:function(event,player){
var vcards=[],hs=player.getCards('h');
for(var i of lib.inpile){
if(i!='du'&&get.type(i)=='basic'&&event.filterCard({name:i,cards:hs},player,event)) vcards.push(['基本','',i]);
if(i=='sha'){
var list=['fire','thunder','ice'];
for(var j of list){
if(event.filterCard({name:i,nature:j,cards:hs},player,event)) vcards.push(['基本','',i,j]);
}
}
}
return ui.create.dialog('龙裔',[vcards,'vcard']);
},
check:function(button,player){
if(_status.event.getParent().type!='phase') return 1;
return _status.event.player.getUseValue({name:button.link[2],nature:button.link[3]});
},
backup:function(links,player){
return {
audio:'longyi',
popname:true,
viewAs:{name:links[0][2],nature:links[0][3]},
filterCard:true,
selectCard:-1,
position:'h',
}
},
},
hiddenCard:function(player,name){
return name!='du'&&get.type(name)=='basic'&&player.countCards('h')>0;
},
ai:{
respondSha:true,
respondShan:true,
skillTagFilter:function(player){
return player.countCards('h')>0;
},
order:0.5,
result:{
player:function(player){
if(_status.event.dying){
return get.attitude(player,_status.event.dying);
}
if(_status.event.type=='respondShan') return 1;
var val=0,hs=player.getCards('h'),max=0;
for(var i of hs){
val+=get.value(i,player);
if(get.type(i,player)=='trick') max+=5;
}
if(player.hasSkill('zhenjue')) max+=7;
return val<=max?1:0;
},
},
},
group:'longyi_effect',
subSkill:{
effect:{
trigger:{player:'useCard'},
forced:true,
charlotte:true,
popup:false,
filter:function(event,player){
if(event.skill!='longyi_backup') return false;
for(var i of event.cards){
var type=get.type2(i,player);
if(type=='basic'||type=='trick') return true;
}
return false;
},
content:function(){
var map={};
for(var i of trigger.cards){
map[get.type2(i,player)]=true;
}
if(map.trick) player.draw();
if(map.equip) trigger.directHit.addArray(game.players);
},
},
backup:{},
},
},
zhenjue:{
trigger:{global:'phaseJieshuBegin'},
filter:function(event,player){
return player.countCards('h')==0;
},
logTarget:'player',
content:function(){
'step 0'
trigger.player.chooseToDiscard('he','弃置一张牌,或令'+get.translation(player)+'摸一张牌').set('ai',function(card){
if(_status.event.goon) return 7-get.value(card);
return -get.value(card);
}).set('goon',get.attitude(trigger.player,player)<0);
'step 1'
if(!result.bool) player.draw();
},
},
//群刘备
jsprende:{
audio:'rerende',
@ -2444,12 +2565,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shichou:'誓仇',
shichou2:'誓仇',
shichou_info:'主公技,限定技,准备阶段,你可指定一名蜀势力角色并交给其两张牌。本局游戏中,当你受到伤害时,改为该角色受到等量的伤害并摸等量的牌,直至该角色第一次进入濒死状态。',
longyufei:'龙羽飞',
longyi:'龙裔',
longyi_info:'你可将所有手牌当做任意基本牌使用或打出。若此牌对应的实体牌中:有锦囊牌,你摸一张牌;有装备牌,此牌不可被响应。',
zhenjue:'阵绝',
zhenjue_info:'一名角色的结束阶段开始时,若你没有手牌,则你可以令其选择一项:①弃置一张牌。②令你摸一张牌。',
offline_star:'桌游志·SP',
offline_sticker:'桌游志·贴纸',
offline_luanwu:'文和乱武',
offline_yongjian:'用间篇',
offline_s:'线下S系列',
offline_others:'线下其他系列',
},
};
});

View File

@ -694,6 +694,8 @@ window.noname_character_rank={
'gaogan',
'sp_xunchen',
'duxi',
'heyan',
're_caifuren',
],
b:[
'diy_feishi',
@ -881,6 +883,8 @@ window.noname_character_rank={
're_guanping',
'feiyi',
'xiangchong',
'qiuliju',
're_dongbai',
],
bm:[
'diy_xizhenxihong',
@ -1029,6 +1033,7 @@ window.noname_character_rank={
're_niujin',
'wangfuzhaolei',
'caizhenji',
'longyufei',
],
c:[
'xiahoudun',
@ -1383,6 +1388,7 @@ window.noname_character_rank={
'ns_zhangning',
'ns_yanghu',
'ol_huaxin',
'longyufei',
'key_haruko',
'key_akiko',
'key_sunohara',
@ -1708,6 +1714,9 @@ window.noname_character_rank={
'gaogan',
'caizhenji',
'duxi',
'heyan',
're_caifuren',
're_dongbai',
],
junk:[
'sunshao',

View File

@ -12,12 +12,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_yijiang1:['re_wuguotai','re_gaoshun','re_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua'],
refresh_yijiang2:['old_madai','wangyi','guanzhang','xin_handang','re_zhonghui','re_liaohua','re_chengpu','re_caozhang','re_bulianshi','xin_liubiao'],
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','re_yufan','re_liru','re_manchong','re_fuhuanghou','re_guanping'],
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','re_chenqun'],
refresh_yijiang4:['re_sunluban','re_wuyi','re_hanhaoshihuan','re_caozhen','re_zhoucang','re_chenqun','re_caifuren'],
refresh_yijiang5:['re_zhangyi','re_quancong','re_caoxiu','re_sunxiu','re_gongsunyuan','re_guotufengji'],
},
},
connect:true,
character:{
re_caifuren:['female','qun',3,['reqieting','rexianzhou']],
re_guanping:['male','shu',4,['relongyin','jiezhong']],
re_guotufengji:['male','qun',3,['rejigong','shifei']],
re_chenqun:['male','wei',3,['redingpin','refaen']],
@ -135,6 +136,132 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_xushu:['zhaoyun','sp_zhugeliang'],
},
skill:{
//界蔡夫人
reqieting:{
audio:2,
trigger:{global:'phaseEnd'},
direct:true,
filter:function(event,player){
var target=event.player;
if(player==target) return false;
if(!target.getHistory('sourceDamage').length){
var cards=target.getCards('e');
for(var i of cards){
if(player.isEmpty(get.subtype(i))) return true;
}
}
return target.getHistory('useCard',function(evt){
return evt.targets&&evt.targets.filter(function(i){
return i!=target;
}).length>0;
}).length==0;
},
frequent:true,
content:function(){
'step 0'
var target=trigger.player;
event.target=target;
event.logged=false;
var list=[];
if(!target.getHistory('sourceDamage').length){
var cards=target.getCards('e');
for(var i of cards){
if(player.isEmpty(get.subtype(i))) list.push(i);
}
}
if(list.length){
player.choosePlayerCard(target,'e',get.prompt('reqieting',target)).set('list',list).set('filterButton',function(button){
return _status.event.list.contains(button.link);
}).set('ai',function(button){
var evt=_status.event,val=get.value(button.link);
if(evt.target.hasSkillTag('noe')) val-=4;
if((evt.att>0)==(val>0)) return 0;
return get.effect(evt.player,button.link,evt.player,evt.player);
}).set('att',get.attitude(player,target));
}
else event.goto(2);
'step 1'
if(result.bool){
player.logSkill('reqieting',target);
event.logged=true;
var card=result.links[0];
target.$give(card,player,false);
game.delay(0.5);
player.equip(card);
}
if(target.getHistory('useCard',function(evt){
return evt.targets&&evt.targets.filter(function(i){
return i!=target;
}).length>0;
}).length!=0) event.finish();
'step 2'
player.chooseBool('是否发动【窃听】摸一张牌?').set('frequentSkill','reqieting');
'step 3'
if(result.bool){
if(!event.logged) player.logSkill('reqieting',target);
player.draw();
}
},
},
rexianzhou:{
audio:2,
enable:'phaseUse',
limited:true,
skillAnimation:true,
animationColor:'gray',
filter:function(event,player){
return player.countCards('e')>0;
},
filterCard:true,
position:'e',
selectCard:-1,
filterTarget:lib.filter.notMe,
discard:false,
lose:false,
delay:false,
content:function(){
'step 0'
player.awakenSkill('rexianzhou');
target.gain(cards,player,'give');
player.recover(cards.length)
'step 1'
var list=game.filterPlayer(function(current){
return target.inRange(current);
});
if(list.length){
var max=Math.min(list.length,cards.length);
player.chooseTarget(true,[1,max],'对至多'+get.cnNumber(max)+'名范围内的角色各造成1点伤害',function(card,player,target){
return _status.event.list.contains(target);
}).set('list',list);
}
else event.finish();
'step 2'
if(result.bool){
var targets=result.targets.sortBySeat();
player.line(targets,'green');
for(var i of targets) i.damage('nocard');
}
},
ai:{
order:1,
result:{
target:1,
player:function(player){
var bool=true,players=game.filterPlayer();
for(var i=0;i<players.length;i++){
if(players[i]!=player&&get.attitude(player,players[i])>2&&get.attitude(players[i],player)>2){
bool=false;break;
}
}
if(bool) return -10;
if(player.hp==1) return 1;
if(game.phaseNumber<game.players.length) return -10;
if(player.countCards('e')+player.hp<=player.maxHp) return 1;
return -10;
}
},
}
},
//界关平
relongyin:{
audio:2,
@ -9644,6 +9771,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
relongyin_info:'当一名角色于其出牌阶段使用【杀】时,你可弃置一张牌令此【杀】不计入出牌阶段使用次数。若此【杀】为红色,则你摸一张牌;若你以此法弃置的牌与此【杀】点数相同,则你重置“竭忠”。',
jiezhong:'竭忠',
jiezhong_info:'限定技,出牌阶段开始时,你可以将手牌补至手牌上限(至多摸五张)。',
re_caifuren:'界蔡夫人',
reqieting:'窃听',
reqieting_info:'其他角色的回合结束时,若其本回合内未造成过伤害,则你可将其装备区内的一张牌置于你的装备区内;若其本回合内未对其他角色使用过牌,则你可摸一张牌。',
rexianzhou:'献州',
rexianzhou_info:'限定技。出牌阶段你可将装备区内的所有牌交给一名其他角色。你回复X点体力然后对其攻击范围内的至多X名角色各造成1点伤害X为你以此法给出的牌数。',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',

View File

@ -1607,20 +1607,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
for(var i=0;i<targets.length;i++){
targets[i].damage();
};
if(targets.length>=2) player.loseHp();
//if(targets.length>=2) player.loseHp();
};
};
};
},
},
"nzry_zhizheng":{
audio:2,
mod:{
playerEnabled:function(card,player,target){
var info=get.info(card);
if(target!=player&&(!info||!info.singleCard||!ui.selected.targets.length)&&player.isPhaseUsing()&&!target.inRange(player)) return false;
rechezheng:{
audio:'nzry_zhizheng',
trigger:{source:'damageBegin2'},
filter:function(event,player){
return player.isPhaseUsing()&&!player.inRangeOf(event.player);
},
forced:true,
logTarget:'player',
content:function(){
trigger.cancel();
},
ai:{
effect:{
player:function(card,player,target){
if(get.tag(card,'damage')&&!player.inRangeOf(target)) return 'zerotarget';
},
},
},
},
nzry_zhizheng:{
audio:2,
//mod:{
// playerEnabled:function(card,player,target){
// var info=get.info(card);
// if(target!=player&&(!info||!info.singleCard||!ui.selected.targets.length)&&player.isPhaseUsing()&&!target.inRange(player)) return false;
// },
//},
trigger:{
player:'phaseUseEnd'
},
@ -1645,14 +1664,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.discardPlayerCard(result.targets[0],'he',1,true);
};
},
group:'rechezheng',
},
"nzry_lijun":{
nzry_lijun:{
unique:true,
global:'nzry_lijun1',
audio:'nzry_lijun1',
zhuSkill:true,
},
nzry_lijun2:{},
nzry_lijun2:{
mod:{
cardUsable:function(card,player,num){
if(card.name=='sha') return num+player.countMark('nzry_lijun2');
},
},
onremove:true,
},
"nzry_lijun1":{
audio:2,
//forceaudio:true,
@ -1661,7 +1688,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
filter:function(event,player){
if(event.card.name!='sha') return false;
//if(player.hasSkill('nzry_lijun2')) return false;
if(player.hasSkill('nzry_lijun2')) return false;
if(player.group!='wu') return false;
if(_status.currentPhase!=player) return false;
if(!game.hasPlayer(function(target){
@ -1688,7 +1715,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
if(!result.bool) event.finish();
else{
//player.addTempSkill('nzry_lijun2','phaseUseEnd');
player.addTempSkill('nzry_lijun2','phaseUseEnd');
var zhu=result.targets[0];
player.line(zhu,'green');
zhu.logSkill('nzry_lijun');
@ -1705,7 +1732,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('prompt','是否令'+get.translation(player)+'摸一张牌?');
}
'step 2'
if(result.bool) player.draw();
if(result.bool){
player.draw();
player.addMark('nzry_lijun2',1,false);
}
},
},
"nzry_chenglve":{
@ -5345,6 +5375,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return target.countCards('h')<Math.min(target.maxHp,5);
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(target.hasSkillTag('nogain')) att/=6;
if(att>2){
return Math.min(5,target.maxHp)-target.countCards('h');
}
@ -7372,12 +7403,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"nzry_cunmu":"寸目",
"nzry_cunmu_info":"锁定技,当你摸牌时,改为从牌堆底摸牌。",
"nzry_kuizhu":"溃诛",
"nzry_kuizhu_info":"弃牌阶段结束后,你可以选择一项:令至多X名角色各摸一张牌或对任意名体力值之和为X的角色造成一点伤害若不少于2名角色你须受到一点伤害。X为你此阶段弃置的牌数",
"nzry_kuizhu_info":"弃牌阶段结束后,你可以选择一项:①令至多X名角色各摸一张牌。②对任意名体力值之和为X的角色造成一点伤害。X为你此阶段弃置的牌数",
"nzry_zhizheng":"掣政",
rechezheng:'掣政',
"nzry_zhizheng_info":"锁定技,你的出牌阶段内,攻击范围内不包含你的其他角色不能成为你使用牌的目标。出牌阶段结束时,若你本阶段内使用的牌数小于这些角色的数量,则你弃置其中一名角色的一张牌。",
"nzry_lijun1":"立军",
"nzry_lijun":"立军",
"nzry_lijun_info":"主公技,其他吴势力角色于回合内使用的【杀】结算后,可以将此【杀】对应的实体牌交给你,然后你可以令其摸一张牌。",
"nzry_lijun_info":"主公技,其他吴势力角色的出牌阶段限一次,其使用【杀】结算后,可以将此【杀】对应的实体牌交给你,然后你可以令其摸一张牌且本阶段内使用【杀】的次数上限+1。",
"nzry_huaiju":"怀橘",
"nzry_huaiju_info":"锁定技游戏开始时你获得3个“橘”标记。有“橘”的角色受到伤害时防止此伤害然后移去一个“橘”有“橘”的角色摸牌阶段额外摸一张牌",
"tachibana_effect":"怀橘",

View File

@ -3442,8 +3442,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
//forced:true,
frequent:true,
filter:function(event,player){
if(event.source==player&&event.player!=player&&player.hp>player.countCards('h')){
return event.relatedLose&&event.relatedLose.hs&&event.relatedLose.hs.length>0;
if(event.player!=player&&player.hp>player.countCards('h')){
var evt=event.getl(player);
return evt&&evt.hs&&evt.hs.length>0;
}
return false;
},
@ -6420,7 +6421,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
mark:true,
intro:{
content:'下个回合结束之前使用“抚蛮”牌时,令$一张牌'
content:'下个回合结束之前使用“抚蛮”牌时,令$一张牌'
},
content:function(){
'step 0'
@ -15247,7 +15248,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yanbaihu:'严白虎',
wanglang:'王朗',
caochun:'曹纯',
dongbai:'董白',
dongbai:'OL董白',
zhaoxiang:'赵襄',
heqi:'贺齐',
kanze:'阚泽',
@ -15955,7 +15956,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
juguan_info:'出牌阶段限一次,你可将一张手牌当【杀】或【决斗】使用。若受到此牌伤害的角色未在你的下回合开始前对你造成过伤害,你的下个摸牌阶段摸牌数+2。',
duxi:'杜袭',
quxi:'驱徙',
quxi_info:'限定技。出牌阶段结束时,你可跳过下个弃牌阶段并选择两名手牌数不同的其他角色。你将翻至背面,令这两名角色中手牌数较少的角色获得另一名角色的一张牌并获得一枚“丰”,另一名角色获得一枚“歉”。拥有“丰”/“歉”的角色的摸牌阶段额定摸牌数+1/-1。拥有“丰”/“”的角色死亡时,或一轮游戏开始时,你可转移“丰”/“歉”。',
quxi_info:'限定技。出牌阶段结束时,你可跳过下个弃牌阶段并选择两名手牌数不同的其他角色。你将翻至背面,令这两名角色中手牌数较少的角色获得另一名角色的一张牌并获得一枚“丰”,另一名角色获得一枚“歉”。拥有“丰”/“歉”的角色的摸牌阶段额定摸牌数+1/-1。拥有“丰”/“”的角色死亡时,或一轮游戏开始时,你可转移“丰”/“歉”。',
bixiong:'避凶',
bixiong2:'避凶',
bixiong_info:'锁定技,当你于弃牌阶段弃置手牌后,你不能成为与这些牌花色相同的牌的目标直到你下回合开始。',

View File

@ -4,6 +4,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
re_dongbai:['female','qun',3,['relianzhu','rexiahui']],
qiuliju:['male','qun',6,['koulve','qljsuiren']],
heyan:['male','wei',3,['yachai','qingtan']],
re_hucheer:['male','qun',4,['redaoji','fuzhong']],
re_dongcheng:['male','qun',4,['xuezhao']],
yangwan:['female','shu',3,['youyan','zhuihuan']],
@ -95,11 +98,364 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui','liubian'],
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'],
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"],
}
},
skill:{
//董白
relianzhu:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('he')>0;
},
filterCard:true,
discard:false,
lose:false,
delay:false,
position:'he',
filterTarget:lib.filter.notMe,
check:function(card){
var num=get.value(card);
if(get.color(card)=='black'){
if(num>=6) return 0;
return 9-num;
}
else{
return 7-num;
}
},
content:function(){
'step 0'
target.gain(cards,player,'give');
'step 1'
if(get.color(cards[0],player)=='red'){
player.draw();
event.finish();
}
else{
target.chooseToDiscard('he',2,'弃置两张牌,或令'+get.translation(player)+'摸两张牌').set('goon',get.attitude(target,player)<0).set('ai',function(card){
if(!_status.event.goon) return -get.value(card);
return 6-get.value(card);
});
}
'step 2'
if(!result.bool) player.draw(2);
},
ai:{
order:3,
expose:0.2,
result:{
target:function(player,target){
if(ui.selected.cards.length&&get.color(ui.selected.cards[0])=='red'){
if(target.countCards('h')<player.countCards('h')) return 1;
return 0.5;
}
return -1;
}
}
}
},
rexiahui:{
mod:{
ignoredHandcard:function(card,player){
if(get.color(card,player)=='black') return true;
},
cardDiscardable:function(card,player,name){
if(name=='phaseDiscard'&&get.color(card,player)=='black') return false;
}
},
trigger:{global:'phaseEnd'},
forced:true,
logTarget:'player',
filter:function(event,player){
var target=event.player;
return target!=player&&target.countCards('h',function(card){
return card.hasGaintag('rexiahui');
})==0&&target.getHistory('lose',function(evt){
for(var i in evt.gaintag_map){
if(evt.gaintag_map[i].contains('rexiahui')) return true;
}
}).length>0;
},
content:function(){
trigger.player.loseHp();
},
group:'rexiahui_gain',
subSkill:{
gain:{
trigger:{global:'gainEnd'},
forced:true,
popup:false,
filter:function(event,player){
if(player==event.player) return false;
var evt=event.getl(player);
return evt&&evt.cards2&&evt.cards2.filter(function(card){
return get.color(card,player)=='black';
}).length>0;
},
content:function(){
trigger.player.addSkill('rexiahui_block');
var cards=trigger.getl(player).cards2.filter(function(card){
return get.color(card,player)=='black';
});
trigger.player.addGaintag(cards,'rexiahui');
},
},
block:{
mod:{
cardEnabled2:function(card){
if(get.itemtype(card)=='card'&&card.hasGaintag('rexiahui')) return false;
},
cardDiscardable:function(card){
if(card.hasGaintag('rexiahui')) return false;
},
},
charlotte:true,
forced:true,
popup:false,
trigger:{player:'loseHp'},
filter:function(event,player){
return event.num<0;
},
content:function(){
player.removeSkill('rexiahui_block');
},
onremove:function(){
player.removeSkill('rexiahui_block');
},
},
},
},
//丘力居
koulve:{
audio:2,
trigger:{source:'damageSource'},
logTarget:'player',
filter:function(event,player){
return event.player.countCards('h')>0&&player.isPhaseUsing();
},
check:function(event,player){
if(player.hp==1&&player.isHealthy()) return false;
return get.attitude(player,event.player)<=0;
},
content:function(){
'step 0'
player.choosePlayerCard(trigger.player,'h',true);
'step 1'
var card=result.cards[0];
event.card=card;
player.showCards(card,get.translation(player)+'发动了【宼略】');
'step 2'
var target=trigger.player,type=get.type2(card,target);
if((type=='basic'||type=='trick')&&get.tag(card,'damage')>0) player.gain(card,target,'give');
'step 3'
if(get.color(card,trigger.player)=='red'){
player[player.isDamaged()?'loseMaxHp':'loseHp']();
player.draw(2);
}
},
},
qljsuiren:{
audio:2,
trigger:{player:'die'},
forced:true,
forceDie:true,
skillAnimation:true,
animationColor:'gray',
filter:function(event,player){
return player.countCards('h',function(card){
var type=get.type(card,player);
return (type=='basic'||type=='trick')&&get.tag(card,'damage')>0;
});
},
content:function(){
'step 0'
player.chooseTarget(lib.filter.notMe,get.prompt('qljsuiren'),'将所有伤害性基本牌和锦囊牌交给一名其他角色').set('forceDie',true).set('ai',function(target){
var player=_status.event.player,cards=_status.event.aiCards;
var att=get.attitude(player,target);
if(att<=0) return 0;
if(target.hasSkillTag('nogain')) att/=100;
var num=0.1;
for(var i of cards) num+=Math.max(0,target.getUseValue(card));
return num*att;
}).set('aiCards',player.getCards('h',function(card){
var type=get.type(card,player);
return (type=='basic'||type=='trick')&&get.tag(card,'damage')>0;
}));
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('qljsuiren',target);
target.gain(player.getCards('h',function(card){
var type=get.type(card,player);
return (type=='basic'||type=='trick')&&get.tag(card,'damage')>0;
}),player,'giveAuto');
}
},
},
//何晏
yachai:{
audio:2,
trigger:{player:'damageEnd'},
filter:function(event,player){
return event.source&&event.source.isIn();
},
logTarget:'source',
check:function(event,player){
return get.attitude(player,event.source)<0;
},
content:function(){
'step 0'
var target=trigger.source;
event.target=target;
var th=target.countCards('h');
if(th>0){
var list=[
'本回合不能使用或打出手牌',
'展示所有手牌并弃置其中一种花色的所有牌',
],ph=player.countCards('h');
if(ph!=th){
var num=Math.ceil(Math.abs(ph-th)/2);
event.num=num;
list.push('交给'+get.translation(player)+get.cnNumber(num)+'张手牌');
}
target.chooseControl().set('choiceList',list);
}
else event._result={index:0};
'step 1'
switch(result.index){
case 0:target.addTempSkill('yachai_block');event.finish();break;
case 1:target.showHandcards();break;
case 2:event.goto(4);break;
}
'step 2'
var map={},hs=target.getCards('h');
for(var i of hs){
if(lib.filter.cardDiscardable(card,target,'yachai')) map[get.suit(i,target)]=true;
}
var list=[];
for(var i of lib.suit){
if(map[i]) list.push(i);
}
if(!list.length) event.finish();
else if(list.length==1) event._result={control:list[0]};
else target.chooseControl(list).set('prompt','选择弃置一种花色');
'step 3'
var cards=target.getCards('h',function(card){
return get.suit(card,target)==result.control&&lib.filter.cardDiscardable(card,target,'yachai');
});
if(cards.length) target.discard(cards);
event.finish();
'step 4'
target.chooseCard('h',true,'交给'+get.translation(player)+get.cnNumber(num)+'张手牌');
'step 5'
if(result.bool) player.gain(result.cards,target,'giveAuto');
},
subSkill:{
block:{
mark:true,
intro:{content:'不能使用或打出手牌'},
charlotte:true,
mod:{
cardEnabled2:function(card){
if(get.position(card)=='h') return false;
},
},
},
},
},
qingtan:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer((current)=>current.countCards('h')>0);
},
filterTarget:function(card,player,target){
return target.countCards('h')>0;
},
selectTarget:-1,
multitarget:true,
multiline:true,
content:function(){
'step 0'
targets.sortBySeat();
var next=player.chooseCardOL(targets,'请选择要展示的牌',true).set('ai',function(card){
return -get.value(card);
}).set('source',player);
next.aiCard=function(target){
var hs=target.getCards('h');
return {bool:true,cards:[hs.randomGet()]};
};
next._args.remove('glow_result');
'step 1'
var cards=[];
event.videoId=lib.status.videoId++;
for(var i=0;i<targets.length;i++) cards.push(result[i].cards[0]);
event.cards=cards;
game.log(player,'展示了',targets,'的',cards);
game.broadcastAll(function(targets,cards,id,player){
var dialog=ui.create.dialog(get.translation(player)+'发动了【清谈】',cards);
dialog.videoId=id;
var getName=function(target){
if(target._tempTranslate) return target._tempTranslate;
var name=target.name;
if(lib.translate[name+'_ab']) return lib.translate[name+'_ab'];
return get.translation(name);
}
for(var i=0;i<targets.length;i++){
dialog.buttons[i].querySelector('.info').innerHTML=getName(targets[i])+get.translation(cards[i].suit);
}
},targets,cards,event.videoId,player);
game.delay(4);
'step 2'
game.broadcastAll('closeDialog',event.videoId);
var max=0,max_suit=null,map={};
for(var i of cards){
var suit=get.suit(i);
if(!map[suit]) map[suit]=0;
map[suit]++;
}
for(var i in map){
if(map[i]>max){
max_suit=i;
max=map[i];
}
else if(map[i]==max) max_suit=null;
}
if(max_suit){
var cards=cards.filter(function(card){
return get.suit(card)==max_suit;
});
event.cards2=cards;
player.chooseBool('是否获得所有'+get.translation(max_suit)+'牌?','可获得:'+get.translation(cards));
}
else event.finish();
'step 3'
if(result.bool){
player.$gain2(event.cards2);
player.gain(event.cards2);
game.delay(0.3);
}
else event.finish();
'step 4'
for(var i=0;i<cards.length;i++){
if(!event.cards2.contains(cards[i])){
targets[i].discard(cards[i]).delay=false;
}
}
'step 5'
game.delayx();
},
ai:{
order:7,
result:{
player:0.3,
target:-1,
},
},
},
//胡车儿
redaoji:{
audio:2,
@ -1400,7 +1756,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lose:false,
selectCard:function(){
if(_status.event.player.storage.bazhan) return 0;
return 1;
return 2;
},
filterTarget:function(card,player,target){
if(player==target) return false;
@ -1408,8 +1764,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){
@ -1423,7 +1779,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
break;
}
}
if(bool2&&(get.suit(card,player)=='heart'||get.name(card,player)=='jiu')) return 10;
if(bool2&&!ui.selected.cards.length&&(get.suit(card,player)=='heart'||get.name(card,player)=='jiu')) return 10;
if(bool1) return 9-get.value(card);
if(get.color(card)=='red') return 5-get.value(card);
return 0;
@ -1433,20 +1789,26 @@ 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');
player.gainPlayerCard(target,'h',true,'visibleMove',2);
}
else{
player.storage.bazhan=true;
event.recover=target;
target.gain(cards,player,'give');
event.card=cards[0];
}
'step 1'
var target=event.recover;
if(result.bool&&result.cards&&result.cards.length){
card=result.cards[0];
cards=result.cards;
}
if(!card||!target||!target.getCards('h').contains(card)||(get.suit(card,target)!='heart'&&get.name(card,target)!='jiu')){
if(!cards||!target||!target.getCards('h').filter(function(i){
return cards.contains(i);
}).length||function(){
for(var card of cards){
if(get.suit(card,target)=='heart'||get.name(card,target)=='jiu') return false;
}
return true;
}()){
event.finish();
return;
}
@ -1479,17 +1841,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target:function(player,target){
if(player.storage.bazhan) return -1;
if(ui.selected.cards.length){
var card=ui.selected.cards[0];
if(get.value(card,target)<0) return -0.5;
var cards=ui.selected.cards,card=cards[0];
if(get.value(cards,target)<0) return -0.5;
if(get.attitude(player,target)>0){
if((target.isDamaged()||target.isTurnedOver())&&(get.suit(card,target)=='heart'||get.name(card,target)=='jiu')) return 3;
if(target.hasUseTarget(card)&&target.getUseValue(card)>player.getUseValue(card,null,true)) return 1.4;
return 1;
}
if(player.hasSkill('jiaoying',true)&&target.countCards('h','shan')&&!target.hasSkillTag('respondShan',true,null,true)&&get.color(card)=='red'&&player.countCards('h',function(card){
return get.tag(card,'respondShan')&&get.effect(target,card,player,player)>0&&player.getUseValue(card)>0;
})) return -1;
return 1;
}
return 0;
},
@ -1559,14 +1917,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
charlotte:true,
filter:function(event,player){
return player.getStorage('jiaoying3').length>0&&game.hasPlayer(function(current){
return current.countCards('h')<Math.min(5,current.maxHp);
return current.countCards('h')<5;
})
},
content:function(){
'step 0'
player.storage.jiaoying3.shift();
player.chooseTarget('醮影:令一名角色将手牌摸至手牌上限',function(card,player,target){
return target.countCards('h')<Math.min(target.maxHp,5);
player.chooseTarget('醮影:令一名角色将手牌摸至五张',function(card,player,target){
return target.countCards('h')<5;
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(att>2){
@ -1578,7 +1936,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
player.logSkill('jiaoying',result.targets);
for(var i=0;i<result.targets.length;i++){
result.targets[i].drawTo(Math.min(5,result.targets[i].maxHp));
result.targets[i].drawTo(5);
}
if(lib.skill.jiaoying3_draw.filter(null,player)) event.goto(0);
}
@ -5115,6 +5473,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}());
'step 1'
if(!result.bool) event.finish();
else player.addTempSkill('xiying_gain');
'step 2'
var target=targets.shift();
event.target=target;
@ -5135,6 +5494,26 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return arg.target.hasSkill('xiying2');
},
},
subSkill:{
gain:{
trigger:{player:'phaseJieshuBegin'},
forced:true,
charlotte:true,
filter:function(event,player){
return player.getHistory('sourceDamage',function(evt){
return evt.isPhaseUsing(player);
})
},
content:function(){
var card=get.cardPile2(function(card){
var type=get.type(card,false);
if(type!='basic'&&type!='trick') return false;
return get.tag(card,'damage')>0;
});
if(card) player.gain(card,'gain2');
},
},
},
},
xiying2:{
mark:true,
@ -7183,7 +7562,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
frequent:true,
content:function(){
'step 0'
var cards=get.cards(2);
var cards=get.cards(3);
event.cards=cards;
game.log(player,'观看了牌堆顶的'+get.cnNumber(cards.length)+'张牌');
player.chooseControl('ok').set('dialog',['推演',cards]);
@ -7274,11 +7653,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.count=0;
'step 1'
player.draw('visible');
event.count++;
'step 2'
if(Array.isArray(result)){
if(get.color(result[0])=='black'){
player.loseHp();
event.count+=result.length;
if(get.color(result)!='red'){
if(player.hp>1) player.loseHp();
event.finish();
}
else if(event.count<3) player.chooseBool('是否继续发动【命戒】?').ai=function(){
@ -8675,6 +9054,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangheng:'张横生卒年不详武威郡姑臧人东汉末年凉州军阀之一。与梁兴、贾诩、段煨乃是同乡。建安三年198张横与梁兴、段煨等斩杀李傕。十六年211同韩遂、马超联合起兵反抗曹操兵败后不知所终。',
tangji:'唐姬,会稽太守唐瑁女,弘农怀王刘辩的妃子。刘辩死后,唐姬回归故里,因节烈不愿改嫁他人,后被汉献帝下诏封为弘农王妃。',
yangwan:'杨氏婉字出自小说史书无记载生卒年不详东汉末年凉州人。早年嫁于东汉前将军、槐里侯马腾之子马超追随马超转战并州、雍州、凉州为马超生下子嗣。公元212年马超联军在渭南战败后杨婉随马超逃亡凉州很快马超反攻吞并陇上诸郡县。公元213年杨婉为了帮助马超结识王异了解马超这些投降部下。可惜被王异蛊惑遭致马超大败。自己和孩子都被赵衢、梁宽杀害。',
wenqin:'文钦(?~258年字仲若沛国谯郡今安徽省亳州市三国时期曹魏将领曹操部将文稷之子。魏明帝太和年间文钦任牙门将、五营校督后拜庐江太守、冠军将军嘉平元年249年曹爽及其同党在高平陵之变中被杀文钦心中不安执政的司马氏集团为了安抚文钦升其为前将军、扬州刺史任职期间结交镇东将军毌丘俭。击退吴国太傅诸葛恪进攻取得一定战果。正元二年255年文钦与镇东将军毌丘俭在扬州起兵讨伐司马师兵败后投奔吴国被封为镇北大将军、幽州牧封谯侯。甘露二年257年文钦随吴军援救起兵反抗司马氏的诸葛诞此后因被司马昭大军围困军情告急文钦与诸葛诞本就有矛盾对文钦日益不满的诸葛诞遂将文钦杀死。淮南平定之后文钦遗体被其二子收敛安葬。',
heyan:'何晏249年字平叔。南阳郡宛县今河南省南阳市人。三国时期曹魏大臣、玄学家东汉大将军何进之孙一称何进弟何苗之孙。何晏之父早逝司空曹操纳其母尹氏为妾他因而被收养为曹操所宠爱。少年时以才秀知名喜好老庄之学娶曹操之女金乡公主。魏文帝在位时未被授予官职。魏明帝认为何晏虚浮不实也只授其冗官之职。大将军曹爽秉政时何晏与之共事得以累官至侍中、吏部尚书典选举封列侯。高平陵之变后与大将军曹爽同为太傅司马懿所杀被夷灭三族。何晏有文集十一卷并曾与郑冲等共撰《论语集解》今已佚。钟嵘《诗品》称“平叔鸿鹄之篇风规见矣。”将何晏诗列入中品。袁宏在《名士传》中将何晏等称为正始名士。他与夏侯玄、王弼等倡导玄学竞事清谈遂开一时风气为魏晋玄学的创始者之一。',
qiuliju:'丘力居,东汉末年的辽西乌丸大人。拉拢中山太守张纯反叛东汉,寇略青、徐、幽、冀四州,杀略吏民。死时认为儿子楼班年幼,于是让从子蹋顿总摄三王部。',
fengxi:'冯熙(?—223年字子柔颍川郡父城县今河南省平顶山市宝丰县人。汉末三国时期吴国官员东汉初年名将冯异的后人。孙权担任车骑将军时冯熙担任其幕府东曹掾后迁立信都尉。刘备去世时奉命进入蜀汉吊丧返回后任中大夫。后奉命出使魏国受到魏文帝曹丕和尚书令陈群招揽宁死不从自尽未果。孙权闻之流泪称其“东吴苏武”。最终在曹魏死去。',
liuba:'刘巴222年字子初荆州零陵郡烝阳县今湖南省衡阳县、邵东县一带东汉末年至三国时期蜀汉时期官员、名士。刘巴少知名荆州牧刘表多次征用推举刘巴均不应就。曹操征伐荆州荆州士人多归刘备刘巴却北上投靠曹操。后受曹操命令招降荆南三郡不料先为刘备所得刘巴不能复命曹操遂远至交趾又辗转进入益州。刘备平定益州后刘巴归附刘备为左将军西曹掾法正死后接任尚书令。章武二年222年去世。刘巴博学多才为刘备解决入蜀后的财政困难问题又与诸葛亮等共制蜀汉的法律文件《蜀科》。为人简朴清高退无私交曹魏大臣陈群甚敬重之。所著录于《刘令君集》。',
},
characterTitle:{
wulan:'#b对决限定武将',
@ -8721,8 +9105,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:{
@ -8744,6 +9128,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_liubei:['sp_liubei','jsp_liubei'],
dongcheng:['re_dongcheng','dongcheng'],
hucheer:['re_hucheer','hucheer'],
dongbai:['re_dongbai','dongbai'],
},
translate:{
lijue:"李傕",
@ -8838,12 +9223,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gexuan:'葛玄',
tuiyan:'推演',
tuiyan_info:'出牌阶段开始时,你可以观看牌堆顶的张牌。',
tuiyan_info:'出牌阶段开始时,你可以观看牌堆顶的张牌。',
busuan:'卜算',
busuan_info:'出牌阶段限一次,你可以选择一名其他角色,然后选择至多两张不同的卡牌名称(限基本牌或锦囊牌)。该角色下次摸牌阶段摸牌时,改为从牌堆或弃牌堆中获得你选择的牌。',
busuan_angelbeats:'卜算',
mingjie:'命戒',
mingjie_info:'结束阶段,你可以摸一张牌,若此牌为红色,你可以重复此流程直到摸到黑色牌或摸到第三张牌。当你以此法摸到黑色牌时,你失去1点体力。',
mingjie_info:'结束阶段,你可以摸一张牌,若此牌为红色,你可以重复此流程直到摸到黑色牌或摸到第三张牌。当你以此法摸到黑色牌时,若你的体力值大于1你失去1点体力。',
gxlianhua:'炼化',
gxlianhua_info:'你的回合外,每当有其他角色受到伤害后,你获得一个“丹血”标记(该角色与你阵营一致时为红色,不一致为黑色,此颜色对所有玩家均不可见)直到你的准备阶段开始。准备阶段,根据你获得的“丹血”标记的数量和颜色,你从牌堆/弃牌堆中获得相应的牌以及相应技能直到回合结束。3枚或以下〖英姿〗和【桃】超过3枚且红色“丹血”较多〖观星〗和【无中生有】超过3枚且黑色“丹血”较多〖直言〗和【顺手牵羊】超过3枚且红色和黑色一样多【杀】、【决斗】和〖攻心〗。',
zhafu:'札符',
@ -8922,7 +9307,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gaolan:'高览',
xiying:'袭营',
xiying2:'袭营',
xiying_info:'出牌阶段开始时,你可以弃置一张非基本手牌,然后令所有其他角色依次选择一项:弃置一张牌,或本回合内不能使用或打出牌。',
xiying_info:'出牌阶段开始时,你可以弃置一张非基本手牌,然后令所有其他角色依次选择一项:弃置一张牌,或本回合内不能使用或打出牌;且你本回合内获得如下效果:结束阶段,若你于本回合的出牌阶段内造成过伤害,则你从牌堆中获得一张伤害性基本牌或普通锦囊牌。',
lvkuanglvxiang:'吕旷吕翔',
liehou:'列侯',
liehou_info:'出牌阶段限一次,你可以令一名攻击范围内的角色交给你一张手牌,然后你将一张手牌交给攻击范围内的另一名角色。',
@ -9145,12 +9530,12 @@ 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:'醮影',
jiaoying3_draw:'醮影',
jiaoying_info:'锁定技,其他角色获得你的手牌后,该角色本回合不能使用或打出与此牌颜色相同的牌。然后此回合结束时,若其本回合没有再使用牌,你令一名角色将手牌摸至体力上限(至多摸至五张。',
jiaoying_info:'锁定技,其他角色获得你的手牌后,该角色本回合不能使用或打出与此牌颜色相同的牌。然后此回合结束时,若其本回合没有再使用牌,你令一名角色将手牌摸至五张。',
zhaozhong:'赵忠',
yangzhong:'殃众',
yangzhong_info:'当你造成或受到伤害后若受伤角色和伤害来源均存活则伤害来源可弃置两张牌然后令受伤角色失去1点体力。',
@ -9226,6 +9611,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
redaoji_info:'其他角色第一次使用武器牌时,你可选择一项:①获得此牌。②令其本回合内不能使用或打出【杀】。',
fuzhong:'负重',
fuzhong_info:'锁定技当你于回合外获得牌后你获得一枚“重”标记。若X大于0你的手牌上限+1大于1你至其他角色的距离-1大于2你于摸牌阶段开始时令额定摸牌数+1大于3准备阶段你对一名其他角色造成1点伤害然后移去X枚“重”X为“重”数。',
heyan:'何晏',
yachai:'崖柴',
yachai_info:'当你受到伤害后,你可令伤害来源选择一项:①其本回合不能再使用手牌;②其展示所有手牌,然后弃置手牌中一种花色的所有牌。③交给你与你手牌数差值一半数量的手牌(向上取整);',
qingtan:'清谈',
qingtan_info:'出牌阶段限一次,你可令所有有手牌的角色同时选择一张手牌并同时展示。你可以获得其中花色唯一最多的牌,然后展示此花色牌的角色各摸一张牌。若如此做,弃置其他的牌。',
qiuliju:'丘力居',
koulve:'宼略',
koulve_info:'当你于出牌阶段内对其他角色造成伤害后你可以展示其一张手牌。若此牌为带有伤害标签的基本牌或锦囊牌则你获得之为红色牌你失去1点体力若已受伤则改为减1点体力上限然后摸两张牌。',
qljsuiren:'随认',
qljsuiren_info:'当你死亡时,你可以将手牌中所有的带有伤害标签的基本牌或锦囊牌交给一名其他角色。',
re_dongbai:'董白',
relianzhu:'连诛',
relianzhu_info:'出牌阶段限一次,你可将一张牌正面朝上交给一名其他角色。若此牌为:红色,你摸一张牌;黑色,对方弃置两张牌或令你摸两张牌。’',
rexiahui:'黠慧',
rexiahui_info:'锁定技①当有其他角色获得你的黑色牌后其于下次扣减体力前不能使用打出弃置这些牌。②一名其他角色的回合结束时若其本回合失去过其所有“黠慧”牌则其失去1点体力。',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",

View File

@ -86,7 +86,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lvbu:['diaochan'],
machao:['madai','mayunlu'],
zhangliao:['zangba'],
ganning:['lingtong'],
ganning:['lingtong','xf_sufei'],
},
skill:{
rewangzun:{

View File

@ -12118,6 +12118,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gongsunyuan:['re_gongsunyuan','gongsunyuan'],
zhoucang:['re_zhoucang','xin_zhoucang','zhoucang'],
guotufengji:['re_guotufengji','guotufengji'],
guanping:['re_guanping','guanping'],
caifuren:['re_caifuren','caifuren'],
},
translate:{
old_huaxiong:'华雄',

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.110.8.4.1',
'v1.9.110.8.5',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -4267,6 +4267,15 @@ window.noname_asset_list=[
'image/character/xiangchong.jpg',
'image/character/xin_zhoucang.jpg',
'image/character/duxi.jpg',
'image/character/fengxi.jpg',
'image/character/heyan.jpg',
'image/character/key_mia.jpg',
'image/character/liuba.jpg',
'image/character/longyufei.jpg',
'image/character/qiuliju.jpg',
'image/character/re_caifuren.jpg',
'image/character/re_dongbai.jpg',
'image/character/wenqin.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -15120,9 +15120,17 @@
gain:function(){
"step 0"
if(cards){
var owner=event.source||get.owner(cards[0]);
if(owner){
var next=owner.lose(cards,ui.special).set('type','gain').set('forceDie',true).set('getlx',false);
var map={};
for(var i of cards){
var owner=get.owner(i,'judge');
if(owner&&(owner!=player||get.position(i)!='h')){
var id=owner.playerid;
if(!map[id]) map[id]=[];
map[id].push(i);
}
}
for(var i in map){
var owner=(_status.connectMode?lib.playerOL:game.playerMap)[i],next=owner.lose(map[i],ui.special).set('type','gain').set('forceDie',true).set('getlx',false);
if(event.animate=='give'||event.visible==true) next.visible=true;
event.relatedLose=next;
}
@ -26753,7 +26761,7 @@
"step 2"
if(event.targets.length){
var target=event.targets.shift();
target.damage.apply(target,event._args.slice(0));
if(target.isLinked()) target.damage.apply(target,event._args.slice(0));
event.redo();
}
},

View File

@ -1,9 +1,11 @@
window.noname_update={
version:'1.9.110.8.4.1',
update:'1.9.110.8.4',
version:'1.9.110.8.5',
update:'1.9.110.8.4.1',
changeLog:[
'神太史慈、蔡贞姬、手杀华歆、向宠、手杀许靖、手杀周仓',
'手杀费祎、手杀荀谌、手杀孙邵',
'藤川米娅',
'何晏、丘力居、董白、界蔡夫人、龙羽飞',
'国战文钦、刘巴、冯熙、苏飞',
'孙亮、高览、管辂、樊玉凤技能调整',
'bug修复',
],
files:[
@ -20,29 +22,29 @@ 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/old.js',
//'character/ow.js',
'character/rank.js',
//'character/refresh.js',
//'character/shenhua.js',
'character/refresh.js',
'character/shenhua.js',
'character/sp.js',
'character/sp2.js',
//'character/tw.js',
//'character/standard.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',
@ -52,20 +54,20 @@ window.noname_update={
//'mode/boss.js',
//'mode/brawl.js',
//'mode/chess.js',
//'mode/doudizhu.js',
//'mode/guozhan.js',
'mode/doudizhu.js',
'mode/guozhan.js',
//'mode/identity.js',
//'mode/single.js',
//'mode/stone.js',
//'mode/tafang.js',
//'mode/versus.js',
//'game/game.js',
'game/game.js',
//'game/keyWords.js',
//'game/NoSleep.js',
'game/config.js',
'game/package.js',
//'game/config.js',
//'game/package.js',
//'game/asset.js',
'game/source.js',
//'game/source.js',
//'theme/style/hp/xinglass.css',
//'theme/style/hp/xinround.css',
//'theme/style/hp/image/xinglass1.png',

BIN
image/character/fengxi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 KiB

BIN
image/character/heyan.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 KiB

BIN
image/character/key_mia.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 198 KiB

BIN
image/character/liuba.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 194 KiB

BIN
image/character/qiuliju.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 130 KiB

BIN
image/character/wenqin.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 KiB

View File

@ -1796,7 +1796,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
zhuSkill_jiangling_info:'当你使用【杀】或普通锦囊牌选择唯一目标时,你可为此牌增加一个目标(该目标不可响应此牌)。',
zhuSkill_fancheng:'樊城',
zhuSkill_fancheng2:'樊城',
zhuSkill_fancheng_info:'限定技,出牌阶段,你可获得如下效果直到回合结束每回合限X次当你造成伤害时此伤害+1X为游戏轮数且至少为2)。',
zhuSkill_fancheng_info:'限定技,出牌阶段,你可摸X张牌获得如下效果直到回合结束每回合限X次当你造成伤害时此伤害+1X为游戏轮数。',
binglin_shaxue:'歃血',
binglin_shaxue_info:'锁定技,每局游戏限三次,当你受到队友造成的伤害时,你防止此伤害。',
binglin_neihong:'内讧',
@ -1981,6 +1981,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
skillAnimation:true,
animationColor:'gray',
content:function(){
player.draw(game.roundNumber);
player.awakenSkill('zhuSkill_fancheng');
player.addTempSkill('zhuSkill_fancheng2');
},
@ -1991,7 +1992,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
charlotte:true,
onremove:true,
filter:function(event,player){
return player.countMark('zhuSkill_fancheng2')<Math.max(2,game.roundNumber);
return player.countMark('zhuSkill_fancheng2')<game.roundNumber;
},
logTarget:'player',
content:function(){

View File

@ -306,6 +306,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_zhouyu','gz_lingcao','gz_daqiao','gz_dingfeng',
'gz_yuji','gz_caiwenji','gz_diaochan','gz_zuoci',
'gz_key_ushio','gz_jin_simazhao','gz_dongzhao',
'gz_liuba',
],
'5':[
'gz_zhangliao','gz_caocao','gz_xuhuang',
@ -322,7 +323,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_zhangjiao','gz_pangde','gz_liuqi',
'gz_jin_zhangchunhua','gz_zongyu','gz_shixie',
'gz_jin_yanghuiyu','gz_tangzi','gz_yanbaihu',
'gz_wujing','gz_zhugeke',
'gz_wujing','gz_zhugeke','gz_wenqin',
],
'3':[
'gz_xiahoudun','gz_yuejin','gz_caoren',
@ -343,7 +344,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_menghuo','gz_ganfuren','gz_guanyu',
'gz_lukang','gz_jiangqing','gz_chendong',
'gz_zoushi','gz_panfeng','gz_tianfeng',
'gz_panjun',
'gz_panjun','gz_sufei',
],
},
characterSort:{
@ -355,10 +356,10 @@ 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'],
guozhan_double:['gz_tangzi','gz_liuqi','gz_mengda','gz_mifangfushiren','gz_zhanglu','gz_shixie','gz_xuyou','gz_xiahouba','gz_panjun'],
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_yexinjia:['gz_zhonghui','gz_simazhao','gz_gongsunyuan'],
guozhan_zongheng:['gz_huaxin','gz_luyusheng','gz_zongyu','gz_miheng'],
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"],
}
},
@ -382,7 +383,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_zhonghui:['male','ye',4,['gzquanji','gzpaiyi']],
gz_simazhao:['male','ye',3,['gzzhaoxin','gzsuzhi']],
gz_gongsunyuan:['male','ye',4,['gzhuaiyi','gzzisui']],
gz_tangzi:['male','wei',4,['gzxingzhao'],['doublegroup:wei:wu','gzskin']],
gz_tangzi:['male','wu',4,['gzxingzhao'],['doublegroup:wu:wei','gzskin']],
gz_mengda:['male','wei',4,['qiuan','liangfan'],['doublegroup:wei:shu']],
gz_liuqi:['male','qun',3,['gzwenji','gztunjiang'],['doublegroup:qun:shu','gzskin']],
gz_mifangfushiren:['male','shu',4,['mffengshi'],['doublegroup:shu:wu']],
@ -397,6 +398,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_panjun:['male','wu',3,['gzguanwei','xinfu_gongqing'],['doublegroup:wu:shu']],
gz_huangzu:['male','qun',4,['gzwangong']],
gz_zhugeke:['male','wu',3,['aocai','gzduwu']],
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_caocao:['male','wei',4,['jianxiong']],
gz_simayi:['male','wei',3,['fankui','guicai']],
@ -502,6 +506,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_luyusheng:['female','wu',3,['zhente','zhiwei']],
gz_zongyu:['male','shu',3,['zyqiao','chengshang']],
gz_miheng:['male','qun',3,['gzrekuangcai','gzshejian'],['gzskin']],
gz_fengxi:['male','wu',3,['yusui','boyan']],
gz_cuimao:['male','wei',3,['gzzhengbi','gzfengying'],[]],
gz_yujin:['male','wei',4,['gzjieyue'],['gzskin']],
@ -531,21 +536,342 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
},
skill:{
//刘巴
chouduo:{
trigger:{global:'phaseJieshuBegin'},
direct:true,
filter:function(event,player){
if(player!=event.player&&!player.hasSkill('chouduo')||!event.player.isFriendOf(player)) return false;
return event.player.getHistory('lose',function(evt){
return evt.type=='discard'&&evt.cards2.length>0&&evt.getParent('phaseDiscard').player==event.player;
}).length>0;
},
content:function(){
'step 0'
var num=0;
trigger.player.getHistory('lose',function(evt){
if(evt.type=='discard'&&evt.getParent('phaseDiscard').player==trigger.player) num+=evt.cards2.length;
});
num=Math.min(3,num);
event.num=num;
trigger.player.chooseBool('是否发动【筹度】摸'+get.cnNumber(num)+'张牌?');
'step 1'
if(result.bool){
player.logSkill('chouduo',trigger.player);
trigger.player.draw(num);
}
},
},
guiyin:{
enable:'phaseUse',
limited:true,
delay:false,
filter:function(event,player){
var isFriend;
if(player.identity=='unknown'){
var group='shu';
if(!player.wontYe('shu')) group=null;
isFriend=function(current){
return current==player||current.identity==group;
}
}
else isFriend=function(target){
return target.isFriendOf(player);
};
return game.hasPlayer(function(current){
return isFriend(current)&&current.isDamaged();
});
},
selectTarget:-1,
filterTarget:function(card,player,target){;
if(player==target) return true;
if(player.identity=='unknown'){
var group='shu';
if(!player.wontYe('shu')) return false;
return target.identity==group;
}
return target.isFriendOf(player);
},
selectCard:[0,1],
filterCard:()=>false,
multitarget:true,
multiline:true,
skillAnimation:true,
animationColor:'orange',
content:function(){
'step 0'
player.awakenSkill('guiyin');
event.num=0;
'step 1'
if(targets[num].isDamaged()){
targets[num].recover(targets[num].maxHp-targets[num].hp);
}
event.num++;
if(event.num<targets.length) event.redo();
'step 2'
if(lib.character[player.name1][3].contains('guiyin')) player.removeCharacter(0);
if(lib.character[player.name2][3].contains('guiyin')) player.removeCharacter(1);
},
ai:{
order:function(item,player){
var isFriend;
if(player.identity=='unknown'){
var group='shu';
if(!player.wontYe('shu')) group=null;
isFriend=function(current){
return current==player||current.identity==group;
}
}
else isFriend=function(target){
return target.isFriendOf(player);
};
var targets=game.filterPlayer(function(current){
return isFriend(current);
});
var num=0,max=0;
for(var i of targets){
var dam=i.maxHp-i.hp;
num+=dam;
max+=i.maxHp;
}
return (num/max)>=(1/Math.max(1.6,game.roundNumber))?1:-1;
},
result:{
player:1,
},
},
},
//苏飞
gzlianpian:{
trigger:{global:'phaseJieshuBegin'},
direct:true,
filter:function(event,player){
if(player!=event.player&&!player.hasSkill('gzlianpian')) return false;
var num=0;
game.getGlobalHistory('cardMove',function(evt){
if(evt.name=='lose'&&evt.type=='discard'&&evt.getParent(2).player==event.player) num+=evt.cards2.length;
});
if(num<=player.hp) return false;
if(player==event.player) return game.hasPlayer(function(current){
return current.isFriendOf(player)&&current.countCards('h')<current.maxHp;
});
return player.countDiscardableCards('he',event.player)>0||player.isDamaged();
},
content:function(){
'step 0'
if(player==trigger.player){
player.chooseTarget(get.prompt('gzlianpian'),'令一名己方角色将手牌摸至手牌上限',function(card,player,target){
return target.isFriendOf(player)&&target.maxHp>target.countCards('h');
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(target.hasSkillTag('nogain')) att/=6;
if(att>2){
return Math.min(5,target.maxHp)-target.countCards('h');
}
return att/3;
});
}
else{
event.goto(2);
event.addIndex=0;
var list=[],target=trigger.player,str=get.translation(player);
event.target=target;
if(player.countDiscardableCards('he',target)>0) list.push('弃置'+str+'的一张牌');
else event.addIndex++;
if(player.isDamaged()) list.push('令'+str+'回复1点体力');
target.chooseControl('cancel2').set('choiceList',list).set('ai',function(){
var evt=_status.event.getParent();
if(get.attitude(evt.target,evt.player)>0) return 1-evt.addIndex;
return evt.addIndex;
});
}
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('gzlianpian',target);
target.draw(Math.min(5,target.maxHp-target.countCards('h')));
}
event.finish();
'step 2'
if(result.control=='cancel2'){
event.finish();
return;
}
player.logSkill('gzlianpian',target,false);
target.line(player,'green');
if(result.index+event.addIndex==0){
target.discardPlayerCard('he',player,true);
event.finish();
}
else player.recover();
'step 3'
game.delayx();
},
},
//冯熙
yusui:{
audio:2,
trigger:{target:'useCardToTargeted'},
filter:function(event,player){
return event.player!=player&&event.player.isIn()&&event.player.isEnemyOf(player)&&get.color(event.card)=='black';
},
logTarget:'player',
check:function(event,player){
var target=event.player;
if(player.hp<3||get.attitude(player,target)>-3) return false;
if(player.hp<target.hp) return true;
if(Math.min(target.maxHp,target.countCards('h'))>3) return true;
return false;
},
content:function(){
'step 0'
player.loseHp();
event.target=trigger.player;
'step 1'
event.addIndex=0;
var list=[];
if(target.maxHp>0&&target.countCards('h')>0) list.push('令其弃置'+get.cnNumber(target.maxHp)+'张手牌');
else event.addIndex++;
if(target.hp>player.hp) list.push('令其失去'+get.cnNumber(target.hp-player.hp)+'点体力');
if(!list.length) event.finish();
else if(list.length==1) event.result={index:0};
else player.chooseControl().set('choiceList',list).set('prompt','令'+get.translation(target)+'执行一项').set('ai',function(){
var player=_status.event.player,target=_status.event.getParent().target;
return (target.hp-player.hp)>(Math.min(target.maxHp,target.countCards('h'))/2)?1:0;
});
'step 2'
if(result.index+event.addIndex==0) target.chooseToDiscard(target.maxHp,true,'h');
else target.loseHp(target.hp-player.hp);
},
},
boyan:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer((target)=>lib.skill.boyan.filterTarget(null,player,target));
},
filterTarget:function(card,player,target){
return target!=player&&target.countCards('h')<target.maxHp;
},
content:function(){
'step 0'
target.draw(Math.min(5,target.maxHp-target.countCards('h')));
'step 1'
target.addTempSkill('boyan_block')
},
subSkill:{
block:{
mark:true,
intro:{content:'不能使用或打出手牌'},
charlotte:true,
mod:{
cardEnabled2:function(card){
if(get.position(card)=='h') return false;
},
},
},
},
ai:{
order:4,
result:{
target:function(player,target){
if(get.attitude(player,target)>0) return Math.min(5,target.maxHp-target.countCards('h'));
if(target.maxHp-target.countCards('h')==1&&target.countCards('h','shan')&&!target.hasSkillTag('respondShan',true,null,true)&&player.countCards('h',function(card){
return get.tag(card,'respondShan')&&get.effect(target,card,player,player)>0&&player.getUseValue(card)>0;
})) return -2;
},
},
},
},
//文钦
gzyaoqi:{
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('he')>0&&game.hasPlayer(function(current){
return current!=player&&current.countCards('he')>0;
})
},
filterCard:true,
filterTarget:function(card,player,target){
return target!=player&&target.countCards('he')>0;
},
check:function(card){
return 6-get.value(card);
},
content:function(){
'step 0'
target.chooseCard('he','交给'+get.translation(player)+'一张装备牌,或令其获得你的一张牌',{type:'equip'}).set('ai',function(card){
if(_status.event.goon&&get.suit(card)=='spade') return 8-get.value(card);
return 5-get.value(card);
}).set('goon',target.canUse('sha',player,false)&&get.effect(player,{name:'sha'},target,target)>0);
'step 1'
if(!result.bool) player.gainPlayerCard(target,'he',true);
else player.gain(result.cards,target,'give');
'step 2'
if(result.bool&&result.cards&&result.cards.length&&
target.isIn()&&player.isIn()&&get.suit(result.cards[0],target)=='spade'&&target.canUse('sha',player,false)) target.useCard({name:'sha',isCard:true},false,player);
},
ai:{
order:6,
result:{
player:function(player,target){
if(target.countCards('e',function(card){
return get.suit(card)=='spade'&&get.value(card)<8;
})&&target.canUse('sha',player,false)) return get.effect(player,{name:'sha'},target,player);
return 0;
},
target:function(player,target){
var es=target.getCards('e').sort(function(a,b){
return get.value(b,target)-get.value(a,target);
});
if(es.length) return -Math.min(2,get.value(es[0]))
return -2;
},
},
},
},
//诸葛恪
gzduwu:{
limited:true,
audio:'duwu',
enable:'phaseUse',
delay:false,
filter:function(event,player){
var isEnemy;
if(player.identity=='unknown'){
if(!player.wontYe('wu')) isEnemy=function(current){
return current!=player;
};
else isEnemy=function(current){
return current!=player&&current.identity!='wu';
}
}
else isEnemy=function(target){
return target.isEnemyOf(player);
};
return game.hasPlayer(function(current){
return isEnemy(current)&&player.inRange(current);
});
},
filterTarget:function(card,player,target){
if(player==target||!player.inRange(target)) return false;
if(player.identity=='unknown'){
if(!player.wontYe('wu')) return true;
return target.identity!='wu';
}
return target.isEnemyOf(player);
},
selectTarget:-1,
filterCard:()=>false,
selectCard:[0,1],
multitarget:true,
multiline:true,
content:function(){
'step 0'
player.awakenSkill('gzduwu');
player.addSkill('gzduwu_count');
event.players=game.filterPlayer(function(current){
if(current==player) return false;
return player.inRange(current)&&!current.isFriendOf(player);
}).sort(lib.sort.seat);
player.line(event.players,'green');
event.players=targets.slice(0);
game.delayx();
player.chooseJunlingFor(event.players[0]).set('prompt','为所有目标角色选择军令牌');
'step 1'
@ -568,13 +894,15 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(result.index==0){
event.current.carryOutJunling(player,event.junling,targets);
}
else event.current.damage();
else{
player.draw();
event.current.damage();
}
'step 4'
game.delayx();
event.num++;
if(event.num<event.players.length) event.goto(2);
'step 5'
player.draw();
var list=player.getStorage('gzduwu_count').filter(function(target){
return target.isAlive();
});
@ -644,7 +972,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else event.finish();
'step 2'
if(trigger.player.isDead()){
player.mayChangeVice();
player.mayChangeVice(null,'hidden');
}
else if(lib.skill.gzwangong.filter(trigger,player)) event.goto(0);
},
@ -9615,10 +9943,25 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_mifangfushiren:'糜芳傅士仁',
gz_shixie:'士燮',
gz_zhanglu:'张鲁',
wenqin:'文钦',
fengxi:'冯熙',
liuba:'刘巴',
chouduo:'筹度',
chouduo_info:'己方角色的结束阶段开始时其可以摸X张牌X为其本回合弃牌阶段弃置的牌数且至多为3。 ',
guiyin:'归隐',
guiyin_info:'限定技,出牌阶段,你可令所有己方角色将体力值回满,然后移除此武将牌。',
gzlianpian:'连翩',
gzlianpian_info:'①结束阶段开始时若你于此回合内弃置过所有角色的牌数之和大于你的体力值你可令一名与你势力相同的角色将手牌补至X张X为其体力上限。②其他角色的结束阶段开始时若其于此回合内弃置过所有角色的牌数之和大于你的体力值其可选择1.弃置你的一张牌2.令你回复1点体力。',
yusui:'玉碎',
yusui_info:'当你成为其他势力的角色使用黑色牌的目标后你可以失去1点体力然后选择一项①令其弃置X张手牌X为其体力上限②令其失去Y点体力Y为其的体力值减去你的体力值不为正时不可选择',
boyan:'驳言',
boyan_info:'出牌阶段限一次,你可令一名其他角色将手牌摸至体力上限(至多摸五张),然后其本回合不能使用或打出手牌。',
gzyaoqi:'邀旗',
gzyaoqi_info:'出牌阶段限一次,你可弃置一张牌并令一名其他角色选择一项:①交给你一张装备牌。②你获得其一张牌。若你以此法获得了♠牌,则其视为对你使用一张【杀】。',
gzduwu:'黩武',
gzduwu_info:'限定技出牌阶段你可以选择一个“军令”。你令攻击范围内所有的非己方角色选择是否执行。若有角色选择否则你对其造成1点伤害。你摸一张牌。若有角色于此技能结算过程中进入濒死状态且存活则你失去1点体力。',
gzduwu_info:'限定技出牌阶段你可以选择一个“军令”。你令攻击范围内所有的非己方角色选择是否执行。若有角色选择否则你对其造成1点伤害你摸一张牌。若有角色于此技能结算过程中进入濒死状态且存活则你失去1点体力。',
gzwangong:'挽弓',
gzwangong_info:'其他角色的准备阶段开始时,你可将装备区内的一张牌当做【杀】对其使用且可重复此流程。若你的体力值大于该角色,则此【杀】不可被响应。若该角色于此技能的结算流程中死亡,则你可以变更副将。',
gzwangong_info:'其他角色的准备阶段开始时,你可将装备区内的一张牌当做【杀】对其使用且可重复此流程。若你的体力值大于该角色,则此【杀】不可被响应。若该角色于此技能的结算流程中死亡,则你可以变更副将(不展示)。',
gzguanwei:'观微',
gzguanwei2:'观微',
gzguanwei_info:'准备阶段开始时你可以选择一名未确定势力的其他角色。当其于你的下回合开始前首次明置武将牌后若其与你势力相同则你与其各摸两张牌与你势力不同则其失去1点体力。',
@ -10542,13 +10885,18 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
event.toRemove=player.name2;
event.toChange=name;
if(event.change) event.trigger('removeCharacterBefore');
'step 2'
var name=event.toChange;
game.log(player,'将副将变更为','#g'+get.translation(name));
player.viceChanged=true;
if(player.isUnseen(1)){
if(event.hidden){
if(player.isUnseen(0)) player.showCharacter(0,false);
if(!player.isUnseen(1)) player.hideCharacter(1);
}
else if(player.isUnseen(1)){
player.showCharacter(1,false);
}
'step 2'
var name=event.toChange;
if(event.hidden) game.log(player,'替换了副将','#g'+get.translation(player.name2));
else game.log(player,'将副将从','#g'+get.translation(player.name2),'变更为','#g'+get.translation(name));
player.viceChanged=true;
player.reinit(player.name2,name,false);
},
/*----分界线----*/
@ -10561,7 +10909,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'step 1'
if(result.bool){
if(!event.repeat) _status.changedSkills.add(event.skill)
player.changeVice();
player.changeVice(event.hidden);
}
},
zhulian:function(){
@ -10600,7 +10948,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
return next;
},
/**/
mayChangeVice:function(repeat){
mayChangeVice:function(repeat,hidden){
if(!_status.changedSkills) _status.changedSkills=[];
var skill=_status.event.name;
if(repeat||!_status.changedSkills.contains(skill)){
@ -10609,6 +10957,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
next.player=this;
next.skill=skill;
if(repeat||(!_status.connectMode&&get.config('changeViceType')=='online')) next.repeat=true;
if(hidden=='hidden') next.hidden=true;
return next;
}
},
@ -10856,11 +11205,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
this.showCharacter(num,false);
_status.characterlist.add(name);
},
changeVice:function(){
changeVice:function(hidden){
var next=game.createEvent('changeVice');
next.player=this;
next.setContent('changeVice');
next.num=(!_status.connectMode&&get.config('changeViceType')=='online')?1:3;
if(hidden) next.hidden=true;
return next;
},
hasMainCharacter:function(){