* change lib.init.parsex, Enable 'step' to be used through nesting

* Fixed an issue where nonstandard statement 'step 0' before standard statement 'step 0' would cause an error

* zhangshiping; tw_madai bug fix

* modify all the skills with incorrect "locked" tag

* Change the game.exit function to restart the app for WKWebview users using ios. And added the macintosh field to the judgment of lib.device

* various bug fix

* Revert "various bug fix"

This reverts commit ca7a363172.

* various bug fix

* some sudio

* unlock zhenghun, fix sbdiaochan

* add and adjust some audio, fix some bugs

* add trigger "useSkill" and "logSkillBegin"

* brand new wuxie

* Update standard.js

* update 武安国

* iriya!

* Add character lushi; fix clansankuang

* add 魏关羽/涛神,unlock 关宁/向朗/谋孙策/谋大乔/谋刘表,add related audio

* fix: adjust the edit box style to fix the text overflow problem 🐛

* fix 修文 and some other small bugs

* 伊莉雅·罗日杰斯特文斯卡娅

* Fix the issue of "game.getDB" and "game. deleteDB" reporting errors without "lib.db"

* Some browsers do not support "autoplay", so "onconplay" listening has been added

* sunwukong

* more zooms

* unlock 周善, modify 卢氏/卞喜/刘虞/黄祖/李采薇/张翼/笮融/孙寒华/TW董昭, fix some bug, add omitted audio

* change the number of 如意金箍棒 to 9 instead of 5; fix 夏侯尚's bug; add audio for sunwukong & donghailongwang

* Add the default accept value of '*/*' to the HTML selection file label

* longwang

* add&modify some audio

* add 族王凌/界SP黄月英/界张松/武诸葛亮,fix 晖云's bug; resolve conflicts, bring 武诸葛 up to date, fix 龙王's bug

* add 阮籍, add a skillTag in "jiu2" named jiuSustain for ruanji

* add some audio, sort some characters in sp

* sync 界SP黄月英

* add some character intros

* make 谋弈 play audio correctly

* revert some skills back to new ones

* v1.9.122.3

* Update update.js

* Add files via upload

* Add files via upload

* UI fix, Pinyin

* 李白

* Add files via upload

* Add files via upload

* collab pack, shen_dengai

* 朱铁雄, 小约翰可汗, 铜雀台补全

* small change

* 新增阮籍语音,修复阮籍的一个bug

* 添加族王凌和界孙登的语音

* 调整火攻和雌雄剑效果为只有1牌/0牌的时候直接亮出/令摸牌;新增一些语音

* 添加武诸葛、神邓艾配音

* 更新武诸葛、袁姬技能,bug修复

* 新增严纲、公孙范、乐蔡文姬、OL王朗,bug修复,添加相关语音

* 添加十周年地主相关语音,修复张世平的一个AIbug

* 修改intro的一个问题

* collab AI

* 新增OL界二张、甘夫人糜夫人,线下小杀小闪小酒小桃小乐;解禁刘宠骆俊

* v1.9.123 update info

---------

Co-authored-by: shijian <2954700422@qq.com>
Co-authored-by: copcap <copcap@outlook.com>
Co-authored-by: copcap <43802486+copcap@users.noreply.github.com>
Co-authored-by: PBK-B <pbk-b@PBK6.cn>
Co-authored-by: lieren2023 <131325076+lieren2023@users.noreply.github.com>
This commit is contained in:
Spmario233 2023-07-14 23:04:55 +08:00 committed by GitHub
parent 623971df34
commit d408f2f517
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
138 changed files with 4457 additions and 1212 deletions

BIN
audio/die/clan_wangling.mp3 Normal file

Binary file not shown.

BIN
audio/die/libai.mp3 Normal file

Binary file not shown.

BIN
audio/die/re_sundeng.mp3 Normal file

Binary file not shown.

BIN
audio/die/ruanji.mp3 Normal file

Binary file not shown.

BIN
audio/die/sb_zhaoyun.mp3 Normal file

Binary file not shown.

BIN
audio/die/shen_dengai.mp3 Normal file

Binary file not shown.

BIN
audio/die/vtb_xiaojiu.mp3 Normal file

Binary file not shown.

BIN
audio/die/vtb_xiaole.mp3 Normal file

Binary file not shown.

BIN
audio/die/vtb_xiaosha.mp3 Normal file

Binary file not shown.

BIN
audio/die/vtb_xiaoshan.mp3 Normal file

Binary file not shown.

BIN
audio/die/vtb_xiaotao.mp3 Normal file

Binary file not shown.

BIN
audio/die/wu_zhugeliang.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/die/xinpi.mp3 Normal file

Binary file not shown.

BIN
audio/die/yuanji.mp3 Normal file

Binary file not shown.

BIN
audio/die/yue_caiwenji.mp3 Normal file

Binary file not shown.

BIN
audio/die/zhutiexiong.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanbolong1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/clanbolong2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dcbeifen1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcbeifen2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dccuixin1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dccuixin2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcfangdu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcfangdu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjiexing1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjiexing2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjincui1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjincui2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjiudun1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjiudun2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjiuxian1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcjiuxian2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dcqijing1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcqijing2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcqingshi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcqingshi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcshixian1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcshixian2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/dctongliao1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dctongliao2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dctongliao3.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dctuoyu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dctuoyu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcwudao1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcwudao2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcwudao3.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcxianjin1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dcxianjin2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczhaowen1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczhaowen2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczhizhe1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/dczhizhe2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/rekuangbi1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/rekuangbi2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbjizhu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbjizhu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbjizhu3.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sblongdan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sblongdan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/shuimeng2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/vtbguisha1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/vtbleyu1.mp3 Normal file

Binary file not shown.

Binary file not shown.

BIN
audio/skill/vtbshanwu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/vtbshuli1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/vtbtaoyan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/vtbxianli1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/vtbyanli1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/vtbyaoli1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/vtbyuanli1.mp3 Normal file

Binary file not shown.

View File

@ -176,7 +176,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
enable:true,
//cardnature:'fire',
filterTarget:function(card,player,target){
if(player!=game.me&&player.countCards('h')<2) return false;
//if(player!=game.me&&player.countCards('h')<2) return false;
return target.countCards('h')>0;
},
content:function(){
@ -185,7 +185,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
event.finish();
return;
}
target.chooseCard(true).ai=function(card){
else if(target.countCards('h')==1) event._result={cards:target.getCards('h')};
else target.chooseCard(true).ai=function(card){
if(_status.event.getRand()<0.5) return Math.random();
return get.value(card);
};

View File

@ -901,7 +901,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
return target.isHealthy();
},
content:function(){
target.recover();
target.recover(event.baseDamage||1);
},
ai:{
basic:{
@ -2084,9 +2084,10 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
content:function(){
"step 0"
trigger.target.chooseToDiscard('弃置一张手牌,或令'+get.translation(player)+'摸一张牌').set('ai',function(card){
if(!trigger.target.countCards('h')) event._result={bool:false};
else trigger.target.chooseToDiscard('弃置一张手牌,或令'+get.translation(player)+'摸一张牌').set('ai',function(card){
var trigger=_status.event.getTrigger();
return -get.attitude(trigger.target,trigger.player)-get.value(card);
return -get.attitude(trigger.target,trigger.player)-get.value(card)-Math.max(0,4-trigger.target.hp)*2;
});
"step 1"
if(result.bool==false) player.draw();
@ -2453,8 +2454,8 @@ game.import('card',function(lib,game,ui,get,ai,_status){
event._info_map=map;
var card=trigger.card;
var state=true;
if(trigger.name=='phaseJudge'&&get.itemtype(card)=='card'&&card.viewAs){
card=get.autoViewAs({name:card.viewAs},[card]);
if(trigger.name=='phaseJudge'){
if(get.itemtype(card)=='card'&&card.viewAs) card=get.autoViewAs({name:card.viewAs},[card]);
map.target=trigger.player;
map.isJudge=true;
}
@ -2464,6 +2465,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
map.target=trigger.target;
map.targets=trigger.targets;
map.tempnowuxie=(trigger.targets&&trigger.targets.length>1&&!trigger.multitarget);
map.noai=Boolean(trigger.getParent().noai);
//如果对拼无懈,获取历史数据
if(card.name=='wuxie'){
var evt=event;

View File

@ -30,7 +30,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
target.recover();
target.recover(event.baseDamage||1);
'step 1'
if(target.hasCard(function(card){
return _status.connectMode||get.name(card,target)=='du';

View File

@ -659,12 +659,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
jinhe_lose:{
trigger:{
player:['loseAfter','equipAfter'],
global:'loseAsyncAfter',
},
equipSkill:true,
forced:true,
filter:function(event,player){
if(event.getl===false) return false;
if(event.name=='lose'&&event.position!=ui.discardPile||!_status.jinhe||event.getParent(2).name=='jinhe_skill'&&event.getParent(2).player==player) return false;
if(!event.getd(player).length||!_status.jinhe||event.getParent(2).name=='jinhe_skill'&&event.getParent(2).player==player) return false;
var evt=event.getl(player);
if(!evt) return false;
for(var i=0;i<evt.es.length;i++){

View File

@ -37,15 +37,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
var num=player.countCards('h');
var str='是否交给其'+get.cnNumber(num)+'张牌,然后视为你对其使用一张【酒】?或者点击“取消”,令其交给你一张牌,然后其视为对你使用一张【杀】。';
var str='是否交给其'+get.cnNumber(num)+'张牌,然后视为你对其使用一张【酒】?或者点击“取消”,令其交给你一张牌,然后其视为对你使用一张【杀】。';
target.chooseCard(get.translation(player)+'对你发动了【驳龙】',str,num,'he').set('ai',card=>{
if(_status.event.canGive) return 5-get.value(card);
if(_status.event.canGive) return 5+Math.max(0,3-_status.event.player.hp)/1.5-get.value(card);
return 0;
}).set('canGive',function(){
if(get.attitude(target,player)>1) return true;
if(!player.hasSha()&&player.countCards('h')<=4) return true;
var sha={name:'sha',nature:'thunder',isCard:true};
if(game.hasPlayer(current=>{
return player.canUse('sha',current,true,true)&&get.effect(current,{name:'sha'},player,target)<0&&!current.countCards('hs',['shan','caochuan']);
return player.canUse(sha,current,true,true)&&get.effect(current,sha,player,target)<0&&!current.countCards('hs',['shan','caochuan']);
})) return false;
return true;
}());
@ -57,13 +58,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
}
else{
player.chooseCard('驳龙:交给'+get.translation(target)+'一张牌',get.translation(target)+'拒绝给牌,请交给其一张牌然后视为对其使用一张【杀】',true,'he');
player.chooseCard('驳龙:交给'+get.translation(target)+'一张牌',get.translation(target)+'拒绝给牌,请交给其一张牌然后视为对其使用一张【杀】',true,'he');
}
'step 2'
if(result.bool){
var cards=result.cards;
player.give(cards,target);
if(player.canUse('sha',target,false,false)) player.useCard({name:'sha',isCard:true},target,false);
var sha={name:'sha',nature:'thunder',isCard:true};
if(player.canUse(sha,target,false,false)) player.useCard(sha,target,false);
}
},
ai:{
@ -83,6 +85,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
clanzhongliu:{
audio:2,
audioname:['clan_wangling'],
trigger:{player:'useCard'},
forced:true,
clanSkill:true,
@ -1240,7 +1243,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audioname:['clan_xunshu','clan_xunchen','clan_xuncai','clan_xuncan'],
trigger:{player:'useCardAfter'},
filter:function(event,player){
return get.type(event.card,null,false)=='trick'&&!get.tag(event.card,'damage')&&event.cards.filterInD('d').length>0&&player.getHistory('useCard',evt=>{
return get.type(event.card,null,false)=='trick'&&!get.tag(event.card,'damage')&&event.cards.filterInD().length>0&&player.getHistory('useCard',evt=>{
return get.type(evt.card,null,false)=='trick'&&!get.tag(evt.card,'damage');
}).indexOf(event)==0;
},
@ -1601,7 +1604,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
clanlianzhu_info:'转换技。每名角色A的出牌阶段限一次。阴:A可以重铸一张牌,然后你可以重铸一张牌。若这两张牌颜色不同,则你的手牌上限-1可以令你选择一名在你或攻击范围内的另一名其他角色然后和你可依次选择是否对使用一张【杀】。若这两张【杀】颜色相同则你的手牌上限+1。',
clan_wangling:'族王凌',
clanbolong:'驳龙',
clanbolong_info:'出牌阶段限一次。你可以令一名其他角色选择一项1.你交给其一张牌,然后视为对其使用一张【杀】2.交给你等同于你手牌数的牌,然后视为对你使用一张【酒】。',
clanbolong_info:'出牌阶段限一次。你可以令一名其他角色选择一项1.你交给其一张牌,然后视为对其使用一张【杀】2.交给你等同于你手牌数的牌,然后视为对你使用一张【酒】。',
clanzhongliu:'中流',
clanzhongliu_info:'宗族技,锁定技。当你使用牌时,若此牌对应的实体牌不全为同族角色的手牌,你重置武将牌上的技能。',

1365
character/collab.js Normal file

File diff suppressed because it is too large Load Diff

View File

@ -220,7 +220,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_xushi:["diy_feishi","diy_hanlong","diy_liufu","diy_liuyan","diy_liuzan","diy_tianyu","diy_xizhenxihong","diy_yangyi","diy_zaozhirenjun"],
diy_default:["diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji"],
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","key_mia","key_kano","db_key_liyingxia","key_erika","key_satomi"],
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","key_kano","db_key_liyingxia","key_erika","key_satomi","key_iriya"],
diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang','old_bulianshi','junk_sunquan','ol_maliang','junk_liubei','junk_huangyueying','junk_lidian','junk_duanwei'],
},
},
@ -17751,7 +17751,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
group:'junkyuheng_remove',
derivation:['olbingyi','shenxing','xiashu','old_anxu','rezhiheng','xinanguo','lanjiang','xinfu_guanwei','oldimeng','xindiaodu','xingxue','jiexun','olhongyuan','xinfu_youdi'],
derivation:['olbingyi','shenxing','xiashu','old_anxu','rezhiheng','xinanguo','lanjiang','xinfu_guanwei','oldimeng','xindiaodu','xingxue','jiexun','olhongyuan','xinfu_youdi','bizheng'],
subSkill:{
remove:{
audio:'yuheng',
@ -19005,5 +19005,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ns_duji:'画饼杜畿',
ns_duji_ab:'杜畿',
},
pinyins:{
加藤うみ:['yīng','yuán','yǔ','wèi'],
},
};
});

View File

@ -13,7 +13,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
extra_yin:['shen_liubei','shen_luxun'],
extra_lei:['shen_ganning','shen_zhangliao'],
extra_key:['key_kagari','key_shiki','db_key_hina'],
extra_decade:['shen_jiangwei','shen_machao','shen_zhangfei','shen_zhangjiao'],
extra_decade:['shen_jiangwei','shen_machao','shen_zhangfei','shen_zhangjiao','shen_dengai'],
extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji','shen_sunquan'],
extra_mobilezhi:['shen_guojia','shen_xunyu'],
extra_mobilexin:['shen_taishici','shen_sunce'],
@ -22,6 +22,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
shen_dengai:['male','shen',4,['dctuoyu','dcxianjin','dcqijing'],['wei']],
tw_shen_lvmeng:['male','shen',3,['twshelie','twgongxin'],['wu']],
shen_zhangjiao:['male','shen',3,['yizhao','sijun','sanshou','tianjie'],['qun']],
shen_zhangfei:['male','shen',4,['shencai','xunshi'],['shu']],
@ -74,8 +75,325 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shen_diaochan:function(mode){
return mode=='identity'||mode=='doudizhu'||mode=='single'||(mode=='versus'&&_status.mode!='standard'&&_status.mode!='three');
},
shen_dengai:function(mode){
if(['boss','chess','tafang','stone'].contains(mode)) return false;
if(mode=='versus') return _status.mode!='three';
return true;
},
},
skill:{
//神邓艾
dctuoyu:{
audio:2,
trigger:{player:['phaseUseBegin','phaseUseEnd']},
forced:true,
filter:function(event,player){
return player.countCards('h')>0&&player.getStorage('dctuoyu').length>0;
},
content:function(){
'step 0'
var hs=player.getCards('h'),tags=['dctuoyu_fengtian','dctuoyu_qingqu','dctuoyu_junshan'];
var storage=player.getStorage('dctuoyu');
var list=[
['未分配手牌(对话框较长,请下滑操作)',[]],
['丰田(伤害/回复值+1',[]],
['清渠(无次数和距离限制)',[]],
['峻山(不可被响应)',[]],
];
for(var card of hs){
var added=false;
for(var i=0;i<tags.length;i++){
if(card.hasGaintag(tags[i]+'_tag')){
added=true;
list[i+1][1].push(card);
break;
}
}
if(!added) list[0][1].push(card);
}
for(var row of list){
for(var i=0;i<tags.length;i++){
if(!storage.contains(tags[i])){
list[i+1][0]=get.translation(tags[i])+'(尚未激活)';
}
}
}
var next=player.chooseToMove('拓域:请分配你的手牌',true);
next.set('list',list);
next.set('filterMove',function(from,to,moved){
var storage=_status.event.player.getStorage('dctuoyu'),tags=['dctuoyu_fengtian','dctuoyu_qingqu','dctuoyu_junshan'];
if(typeof to=='number'){
if(to==0) return true;
return storage.contains(tags[to-1])&&moved[to].length<5;
}
return true;
});
next.set('processAI',function(){
var player=_status.event.player;
var storage=player.getStorage('dctuoyu'),tags=['dctuoyu_fengtian','dctuoyu_qingqu','dctuoyu_junshan'];
var moved=[[],[],[],[]]
var isEmpty=function(to){
return storage.contains(tags[to-1])&&moved[to].length<5;
}
var hs=player.getCards('h');
var hs2=hs.slice(0);
var usable=player.getCardUsable('sha');
var addTo=function(card,to){
if(isEmpty(to)){
hs2.remove(card);
moved[to].push(card);
if(get.name(card)=='sha'&&to!=2) usable--;
}
}
var hasRuanshizi=game.hasPlayer(function(target){
return target!=player&&player.canUse('sha',target,null,true)&&!target.mayHaveShan()&&get.attitude(player,target)<0&&get.effect(target,{name:'sha'},player,player)>0;
})
for(var card of hs){
var name=get.name(card);
if(name=='tao'||name=='jiu'){
addTo(card,1);
}
else if(name=='sha'){
if(hasRuanshizi&&isEmpty(1)&&usable>0) addTo(card,1);
else if(isEmpty(3)&&usable>0) addTo(card,3);
else addTo(card,2);
}
else if(get.type(name)=='trick'){
if(isEmpty(1)&&get.tag(card,'damage')>0&&player.hasUseTarget(card)) addTo(card,1);
else addTo(card,3);
}
}
moved[0].addArray(hs2);
return moved;
})
'step 1'
if(result.bool){
game.broadcastAll(function(moved,player){
var tags=['dctuoyu_fengtian','dctuoyu_qingqu','dctuoyu_junshan'];
var cards=[];
for(var i=0;i<moved.length;i++){
for(var card of moved[i]){
cards.unshift(card);
for(var j=0;j<tags.length;j++){
if(i==j+1){
if(!card.hasGaintag(tags[j]+'_tag')) card.addGaintag(tags[j]+'_tag');
}
else{
if(card.hasGaintag(tags[j]+'_tag')) card.removeGaintag(tags[j]+'_tag');
}
}
}
}
if(player==game.me){
game.addVideo('lose',game.me,[get.cardsInfo(cards),[],[],[]]);
for(var i=0;i<cards.length;i++){
cards[i].goto(ui.special);
}
game.me.directgain(cards,false);
}
},result.moved,player);
}
},
intro:{
content:'已激活的副区域:$',
},
group:'dctuoyu_effect',
subSkill:{
effect:{
mod:{
targetInRange:function(card,player,target){
if(!card.cards) return;
for(var i of card.cards){
if(i.hasGaintag('dctuoyu_qingqu_tag')) return true;
}
},
cardUsable:function(card,player,num){
if(!card.cards) return;
for(var i of card.cards){
if(i.hasGaintag('dctuoyu_qingqu_tag')) return Infinity;
}
},
},
trigger:{player:'useCard'},
forced:true,
filter:function(event,player){
var tags=['dctuoyu_fengtian_tag','dctuoyu_qingqu_tag','dctuoyu_junshan_tag'],card=event.card;
return player.hasHistory('lose',function(evt){
if(evt.getParent()!=event) return false;
for(var i in evt.gaintag_map){
for(var tag of evt.gaintag_map[i]){
if(tags.contains(tag)) return true;
}
}
return false;
});
},
content:function(){
var tags=['dctuoyu_fengtian_tag','dctuoyu_qingqu_tag','dctuoyu_junshan_tag'],card=trigger.card;
player.hasHistory('lose',function(evt){
if(evt.getParent()!=trigger) return false;
for(var i in evt.gaintag_map){
tags.removeArray(evt.gaintag_map[i]);
}
return tags.length==0;
});
if(!tags.contains('dctuoyu_fengtian_tag')){
if(get.tag(card,'damage')>0||get.tag(card,'recover')>0){
trigger.baseDamage++;
game.log(card,'的伤害值/回复值+1');
}
}
if(!tags.contains('dctuoyu_qingqu_tag')){
if(trigger.addCount!==false){
trigger.addCount=false;
var stat=player.getStat('card');
if(stat[card.name]&&stat[card.name]>0) stat[card.name]--;
game.log(card,'不计入次数限制');
}
}
if(!tags.contains('dctuoyu_junshan_tag')){
game.log(card,'不可被响应');
trigger.directHit.addArray(game.filterPlayer());
}
},
},
},
},
dcxianjin:{
audio:2,
trigger:{
player:'damageEnd',
source:'damageSource',
},
forced:true,
filter:function(event,player,name){
var key=(name=='damageEnd'?'damage':'sourceDamage');
return player.getAllHistory(key).indexOf(event)%2==1;
},
content:function(){
'step 0'
var tags=['dctuoyu_fengtian','dctuoyu_qingqu','dctuoyu_junshan'];
tags.removeArray(player.getStorage('dctuoyu'));
if(!tags.length){
player.draw(player.isMaxHandcard()?1:3);
event.finish();
}
else if(tags.length==1){
event._result={control:tags[0]};
}
else player.chooseControl(tags).set('prompt','险峻:选择激活一个副区域标签');
'step 1'
var control=result.control;
game.log(player,'激活了副区域','#y'+get.translation(control));
player.markAuto('dctuoyu',[control]);
player.popup(get.translation(control+'_tag'));
if(player.isMaxHandcard()) player.draw();
else player.draw(player.getStorage('dctuoyu').length)
},
},
dcqijing:{
audio:2,
trigger:{global:'phaseEnd'},
forced:true,
juexingji:true,
derivation:'dccuixin',
skillAnimation:true,
animationColor:'orange',
filter:function(event,player){
return player.getStorage('dctuoyu').length==3;
},
content:function(){
'step 0'
player.awakenSkill('dcqijing');
player.loseMaxHp();
'step 1'
if(game.countPlayer()>2){
player.chooseTarget(true,'请选择一名要更换座次的角色,将自己移动到该角色的上家位置',function(card,player,target){
return target!=player&&target!=player.next;
}).set('ai',function(target){
var player=_status.event.player;
var current=_status.currentPhase.next;
var max=20,att=0;
while(max>0){
max--;
if(current==target) return att;
att-=get.attitude(player,current);
current=current.next;
}
return att;
})
}
else event.goto(3);
'step 2'
if(result.bool){
var target=result.targets[0];
game.broadcastAll(function(target1,target2){
game.swapSeat(target1,target2,null,true);
},player,target);
}
'step 3'
player.addSkill('dccuixin');
player.insertPhase();
},
},
dccuixin:{
audio:2,
trigger:{player:'useCardAfter'},
filter:function(event,player){
if(event.skill=='dccuixin') return false;
if(event.targets.length==0) return false;
if(get.type(event.card,false)=='delay'||get.type(event.card,false)=='equip') return false;
var card={
name:event.card.name,
nature:event.card.nature,
isCard:true,
}
for(var target of event.targets){
var targetx;
if(target==player.getNext()) targetx=player.getPrevious();
else if(target==player.getPrevious()) targetx=player.getNext();
else continue;
if(lib.filter.targetEnabled2(card,targetx,player)) return true;
}
return false;
},
direct:true,
content:function(){
'step 0'
var card={
name:trigger.card.name,
nature:trigger.card.nature,
isCard:true,
};
event.card=card;
var list=trigger.targets.filter(target=>{
var targetx;
if(target==player.getNext()) targetx=player.getPrevious();
else if(target==player.getPrevious()) targetx=player.getNext();
else return false;
if(lib.filter.targetEnabled2(card,targetx,player)) return true;
}).map(target=>{
return target==player.getPrevious()?player.getNext():player.getPrevious();
});
if(list.length==1){
event.target=list[0];
player.chooseBool('摧心:是否再视为对'+get.translation(list[0])+'使用'+get.translation(card)+'').set('goon',get.effect(list[0],card,player,player)>0).set('ai',()=>_status.event.goon);
}
else{
player.chooseTarget('摧心:是否再视为对上家或下家使用'+get.translation(card)+'','操作提示:从上家或下家中选择一名角色作为使用目标',function(card,player,target){
return (target==player.getNext()||target==player.getPrevious())&&lib.filter.targetEnabled2(_status.event.getParent().card,target,player);
}).set('ai',function(target){
var player=_status.event.player;
return get.effect(target,_status.event.getParent().card,player,player)
})
}
'step 1'
if(result.bool){
var target=event.target||result.targets[0];
player.useCard(card,target,false,'dccuixin');
}
},
},
//海外神吕蒙
twshelie:{
audio:'shelie',
@ -6875,7 +7193,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twgongxin:'攻心',
twgongxin2:'攻心',
twgongxin_info:'出牌阶段限一次。你可以观看一名其他角色的手牌然后你可以展示其中一张牌并选择一项1.弃置此牌2.将此牌置于牌堆顶。若该角色手牌中的花色数因此减少,你选择一种颜色,其于本回合不能使用或打出该颜色的牌。',
shen_dengai:'神邓艾',
dctuoyu:'拓域',
dctuoyu_fengtian:'丰田',
dctuoyu_qingqu:'清渠',
dctuoyu_junshan:'峻山',
dctuoyu_fengtian_tag:'<span data-nature="woodmm">丰田</span>',
dctuoyu_qingqu_tag:'<span data-nature="watermm">清渠</span>',
dctuoyu_junshan_tag:'<span data-nature="thundermm">峻山</span>',
dctuoyu_info:'①锁定技。当你使用拥有对应副区域标签的牌时,你令此牌获得对应效果。<br>丰田:伤害值或回复值+1清渠无次数和距离限制峻山不可被响应。②出牌阶段开始时和结束时你给你的手牌分配对应的已激活副区域标签每个区域至多五张。',
dcxianjin:'险进',
dcxianjin_info:'锁定技。当你造成或受到伤害后若这是你本局游戏内第偶数次造成或受到伤害则你激活一个副区域标签并摸X张牌X为你已激活的副区域数若你的手牌数为全场最多则改为摸一张牌。',
dcqijing:'奇径',
dcqijing_info:'觉醒技。一名角色的回合结束后若你的三个副区域标签均被激活则你减1点体力上限将座位移动至一名其他角色的上家之后获得〖摧心〗和一个额外回合。',
dccuixin:'摧心',
dccuixin_info:'当你不因此技能使用的基本牌或普通锦囊牌结算结束后,若此牌的目标包含你的上家或下家,则你可以视为对下家或上家再使用一张牌名和元素相同的牌。',
extra_feng:'神话再临·风',
extra_huo:'神话再临·火',
@ -6888,7 +7220,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
extra_mobilezhi:'始计篇·智',
extra_mobilexin:'始计篇·信',
extra_offline:'神话再临·线下',
extra_decade:'十周年服神将',
extra_decade:'神·武',
extra_tw:'海外服神将',
},
};

View File

@ -6,7 +6,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
mobile:{
mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang"],
mobile_default:["miheng","taoqian","lingcao","sunru","lifeng","zhuling","liuye","zhaotongzhaoguang","majun","simazhao","wangyuanji","pangdegong","shenpei","hujinding","zhangyì","jiakui","yangbiao","chendeng","dongcheng","yangyi","dengzhi","zhengxuan","sp_sufei","furong","dingyuan","simashi","yanghuiyu","hucheer","gongsunkang","nanhualaoxian","zhouqun","qiaozhou","fuqian","simafu","mayuanyi","yanpu","sunhanhua","sp_maojie","peixiu","sp_jianggan","ruanhui","xin_mamidi","sp_caosong","yangfu","wangjun","sp_pengyang","qianzhao","old_wanglang"],
mobile_yijiang:["yj_zhanghe","yj_zhangliao","yj_xuhuang","yj_ganning",'yj_huangzhong','yj_weiyan'],
mobile_shijizhi:["sp_wangcan","sp_chenzhen","sp_sunshao","sp_xunchen","luotong","sp_duyu","sp_bianfuren","feiyi"],
mobile_shijixin:['wujing','sp_mifuren','sp_xinpi','wangling','wangfuzhaolei','zhouchu','sp_kongrong','sp_yanghu'],
@ -15,7 +15,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mobile_shijiyan:['sp_cuiyan','sp_zhangchangpu','sp_jiangwan','sp_jiangqing','sp_lvfan','sp_huangfusong','sp_zhujun','liuba'],
mobile_sunben:["re_sunben"],
mobile_standard:["xin_xiahoudun","xin_zhangfei"],
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong","re_caiwenji","re_xunyu","re_dianwei","xin_zhoutai","re_yanwen"],
mobile_shenhua:["re_pangtong","re_guanqiujian","xin_yuanshao","re_liushan","re_dongzhuo","re_sp_zhugeliang","re_sunjian","re_dengai","re_jiangwei","re_zhurong","re_caiwenji","re_xunyu","re_dianwei","xin_zhoutai","re_yanwen",'re_zhangzhang'],
mobile_yijiang1:["re_xusheng","re_lingtong","ol_yujin","re_wuguotai","re_gaoshun",'re_caozhi'],
mobile_yijiang2:["xin_liaohua","xin_caozhang","re_liubiao","re_handang","xin_chengpu","xin_gongsunzan","re_zhonghui","re_bulianshi"],
mobile_yijiang3:["re_liru","xin_jianyong","xin_zhuran","xin_guohuai","xin_panzhangmazhong","xin_fuhuanghou","re_yufan"],
@ -26,6 +26,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
re_zhangzhang:['male','wu',3,['rezhijian','guzheng']],
qianzhao:['male','wei',4,['mbshihe','mbzhenfu'],['unseen']],
old_wanglang:['male','wei',3,['gushe','jici']],
re_yanwen:["male","qun",4,["reshuangxiong"]],
xin_zhoutai:['male','wu',4,['buqu','new_fenji']],
re_caozhi:['male','wei',3,['reluoying','rejiushi','chengzhang']],
@ -187,6 +190,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_sunben:['male','wu',4,['jiang','rehunzi','zhiba'],['zhu']],
},
characterIntro:{
qianzhao:'牵招—231年字子经安平郡观津县今河北省武邑县人。三国时期曹魏名将。牵招早年师从乐隐与刘备成为刎颈之交。投靠冀州牧袁绍担任冀州从事统领乌丸突骑。袁绍死后跟随冀州刺史袁尚受到并州牧高干加害投奔丞相曹操授军谋掾。从平乌丸出任护乌丸校尉。举茂才出身从平汉中授中护军。拜平虏校尉平定东莱郡叛乱。魏文帝曹丕时期授护鲜卑校尉驻扎昌平迁右中郎将、雁门太守遏制鲜卑轲比能发展壮大。魏明帝即位赐爵关内侯营救护乌丸校尉田豫。太和五年去世。',
fuqian:'傅佥[qiān] ( ? ~263年义阳治今湖北省枣阳市)人,蜀汉将领傅彤之子,三国时期蜀汉名将。金长于谋略,并颇有胆勇,姜维甚爱之。傅佥官至关中都督。魏国攻伐蜀汉时,傅佥和蒋舒防守阳安关,兵败战死。',
wangjun:'王濬207年286年字士治小名阿童弘农郡湖县今河南省灵宝市阌乡人。西晋时期名将。王濬出身世家博学多闻容颜英俊多谋善战。举秀才出身起家河东郡从事。泰始八年272年担任广汉太守平定益州叛乱迁益州刺史。利用长江上游地势之利修造战船组建强大的水军。上书晋武帝促成晋灭吴之战。咸宁六年280年率兵顺流而下熔毁横江铁链攻克丹阳郡率先攻取石头城接受吴末帝孙皓投降完成西晋统一大业。凭借功勋拜辅国将军、步兵校尉册封襄阳侯。为避猜忌纵情享受累迁特进、抚军大将军、开府仪同三司、散骑常侍、后军将军等。太康六年十二月286年1月18日王濬去世享年八十岁谥号为“武”安葬于柏谷山。',
yangfu:'杨阜172年—244年字义山汉天水冀县今甘谷县东南人。三国时期曹魏名臣。汉献帝建安初年任凉州从事旋拜安定长史韦康任刺史后辟为别驾改任州参军后因讨马超有功赐爵关内侯。曹操征汉中时杨阜担任益州刺史回来后又担任武都太守。魏明帝时由将作大匠改少府。杨阜不但卓识远见而且刚正不阿敢于直言对朝廷弊政多有诤谏六次进言谏魏明帝应勤政爱民魏明帝对他颇有敬畏之心。杨阜勤政廉洁在宫内担任少府时专管宝器、珍膳、衣物等而他死后则家无馀财。皇帝让杨阜的孙子杨豹继任了少府之职。原甘谷县文昌宫西侧有杨氏家祠内悬“两代尚书”匾额。',
@ -613,13 +617,110 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{
simashi:function(mode){
return !['boss','chess','tafang','stone','versus'].contains(mode);
if(['boss','chess','tafang','stone'].contains(mode)) return false;
if(mode=='versus') return _status.mode!='three';
return true;
},
sp_jianggan:function(mode){
return mode!='identity'&&mode!='guozhan';
},
},
skill:{
//牵招
mbshihe:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.hasPlayer(current=>player.canCompare(current));
},
filterTarget:function(card,player,target){
return player.canCompare(target);
},
content:function(){
'step 0'
player.chooseToCompare(target);
'step 1'
if(result.bool){
target.addTempSkill('mbshihe_prevent',{player:'phaseAfter'});
target.markAuto('mbshihe_prevent',[player]);
}
else{
var cards=player.getCards('he',card=>{
return lib.filter.cardDiscardable(card,player,'mbshihe');
});
if(cards.length>0) player.discard(cards.randomGet());
}
},
ai:{
order:6,
result:{
player:function(player,target){
if((get.realAttitude||get.attitude)(target,player)>=0||get.damageEffect(player,target,player)>=0) return 0;
var card=player.getCards('h').sort(function(a,b){
return get.number(b)-get.number(a);
})[0];
return get.number(card)>=10||get.number(card)>=7&&target.countCards('h')<=2?1:-1;
},
},
},
subSkill:{
prevent:{
trigger:{source:'damageBegin2'},
filter:function(event,player){
return player.getStorage('mbshihe_prevent').contains(event.player);
},
onremove:true,
forced:true,
charlotte:true,
content:function(){
trigger.cancel();
},
mark:true,
marktext:'吓',
intro:{
content:function(storage,player){
var targets=storage.filter(i=>i.isIn());
return '被'+get.translation(targets)+'吓到了,对他'+(targets.length>1?'们':'')+'打不出伤害';
},
},
ai:{
effect:{
player:function(card,player,target,current){
if(get.tag(card,'damage')&&player.getStorage('mbshihe_prevent').contains(target)) return 'zeroplayertarget';
}
},
}
}
}
},
mbzhenfu:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
filter:function(event,player){
return player.hasHistory('lose',evt=>{
return evt.type=='discard';
});
},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt('mbzhenfu'),'令一名其他角色获得1点护甲',(card,player,target)=>{
return target!=player&&target.hujia<5;
}).set('ai',target=>{
return Math.max(0,get.threaten(target))*get.attitude(_status.event.player,target);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('mbzhenfu',target);
target.changeHujia(1,null,true);
}
},
ai:{
expose:0.2,
},
},
//☆胃炎
mbguli:{
audio:2,
@ -1708,6 +1809,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
return game.countPlayer()>2;
},
filterTarget:lib.filter.notMe,
selectTarget:2,
multitarget:true,
@ -3276,7 +3380,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(to.countMark('spshidi')%2==1) return distance+1;
},
aiOrder:function(player,card,num){
if(from.countMark('spshidi')%2==0&&card.name=='sha'&&get.color(card)=='black') return num+0.1;
if(player.countMark('spshidi')%2==0&&card.name=='sha'&&get.color(card)=='black') return num+0.1;
},
},
mark:true,
@ -15696,7 +15800,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
targetInRange:function(card,player){
var type=get.type2(card);
if(player.getStorage('xinfu_qianchong_effect').contains(type)) return Infinity;
if(player.getStorage('xinfu_qianchong_effect').contains(type)) return true;
},
},
},
@ -18733,6 +18837,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mbaosi_info:'锁定技。当你于出牌阶段对一名攻击范围内的角色造成伤害后,你于此阶段对其使用牌无次数限制。',
xin_zhoutai:'手杀周泰',
re_yanwen:"手杀颜良文丑",
old_wanglang:'旧王朗',
qianzhao:'牵招',
mbshihe:'势吓',
mbshihe_info:'出牌阶段限一次。你可以与一名角色拼点。若你:赢,当其于其下回合结束前对你造成伤害时,取消之;没赢,你随机弃置一张牌。',
mbzhenfu:'镇抚',
mbzhenfu_info:'结束阶段若你本回合因弃置失去过牌你可以令一名其他角色获得1点护甲。',
mobile_standard:'手杀异构·标准包',
mobile_shenhua:'手杀异构·神话再临',

View File

@ -13,10 +13,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
offline_piracyE:['shen_jiaxu','pe_wangyun','pe_zhonghui','pe_sunchen','pe_mengda','pe_wenqin','ns_caoanmin','jiangfei','chendong','jiangqing','kongrong','jiling','tianfeng','mateng'],
offline_piracyS:['ns_jiaxu','longyufei','ps_guanyu','ps1059_guojia','ps2070_guojia','ps2063_zhaoyun','ps2067_zhaoyun','ps1062_zhouyu','ps2080_zhouyu','ps_caozhi','ps_jin_simayi','ps_caopi','ps_simayi','ps2068_simayi','ps_machao','ps_zhugeliang','ps2066_zhugeliang','ps_jiaxu','ps_lvbu','ps_shen_machao','jsp_liubei'],
offline_piracyK:['pk_sp_duyu'],
offline_vtuber:['vtb_xiaosha','vtb_xiaoshan','vtb_xiaotao','vtb_xiaole','vtb_xiaojiu'],
//offline_others:[""],
},
},
character:{
vtb_xiaosha:['female','qun',4,['vtbguisha','vtbshuli']],
vtb_xiaoshan:['female','qun',4,['vtbshanwu','vtbxianli']],
vtb_xiaotao:['female','qun',4,['vtbtaoyan','vtbyanli']],
vtb_xiaole:['female','qun',4,['vtbleyu','vtbyuanli']],
vtb_xiaojiu:['female','qun',4,['vtbmeiniang','vtbyaoli']],
jsrg_liuhong:['male','qun',4,['jsrgchaozheng','jsrgshenchong','jsrgjulian'],['zhu']],
jsrg_hejin:['male','qun',4,['jsrgzhaobing','jsrgzhuhuan','jsrgyanhuo']],
jsrg_sunjian:['male','qun',4,['jsrgpingtao','jsrgjuelie']],
@ -104,6 +110,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
pk_sp_duyu:'杜预222年285年字元凯京兆郡杜陵县今陕西西安中国魏晋时期军事家、经学家、律学家曹魏散骑常侍杜恕之子。杜预初仕曹魏任尚书郎后成为权臣司马昭的幕僚封丰乐亭侯。西晋建立后历任河南尹、安西军司、秦州刺史、度支尚书等职。咸宁四年278年接替羊祜出任镇南大将军镇守荆州。他积极备战支持晋武帝司马炎对孙吴作战并在咸宁五年279年成为晋灭吴之战的统帅之一。战后因功进封当阳县侯仍镇荆州。太康五年285年杜预被征入朝拜司隶校尉途中于邓县逝世终年六十三岁。获赠征南大将军、开府仪同三司谥号为成。杜预耽思经籍博学多通多有建树时誉为“杜武库”。著有《春秋左氏传集解》及《春秋释例》等。为明朝之前唯一一个同时进入文庙和武庙之人。',
ps_shen_machao:'字孟起,扶风茂陵人。面如冠玉,目如流星,虎体猿臂,彪腹狼腰,声雄力猛。因衣着讲究,举止非凡,故人称“锦马超”。麾铁骑,捻金枪。',
qiaoxuan:'桥玄110年184年6月6日一作乔玄字公祖。梁国睢阳县今河南省商丘市睢阳区人。东汉时期名臣。桥玄年轻时曾任睢阳县功曹因坚持追究陈国相羊昌的恶行而闻名。后被举为孝廉历任洛阳左尉、齐相及上谷、汉阳太守、司徒长史、将作大匠。汉桓帝末年出任度辽将军击败鲜卑、南匈奴、高句丽侵扰保境安民。汉灵帝初年迁任河南尹、少府、大鸿胪。建宁三年170年迁司空。次年拜司徒。光和元年178年升任太尉。桥玄有感于国势日衰于是称病请辞改任太中大夫。光和七年184年桥玄去世年七十五。桥玄性格刚强不阿权贵待人谦俭尽管屡历高官但不因为自己处在高位而有所私请。他为官清廉去世后连下葬的钱都没有被时人称为名臣。',
xiaosha:'2021年「虚拟天团」Vtuber企划中推出的虚拟偶像之一该企划原定培养12位虚拟偶像然而企划由于各方面原因暴死现虚拟偶像仅存在于各武将的皮肤中。<br>设定上为三国杀新手菜鸡,误打误撞参加了三国杀组织的《三国之星》选秀大赛,没想到一路靠着颜值和风风火火的爽快性格过关斩将吸粉无数,获得了冠军,成为官方签约的形象代言人。<br>小杀现于B站还存在<style type="text/css">#slash_bilibili:link, #slash_bilibili:visited {color:white;}</style><a id="slash_bilibili" href="https://space.bilibili.com/686179867" target="_blank">对应账号</a>,但早已荒废。',
xiaoshan:'2021年「虚拟天团」Vtuber企划中推出的虚拟偶像之一该企划原定培养12位虚拟偶像然而企划由于各方面原因暴死现虚拟偶像仅存在于各武将的皮肤中。<br>设定上为小杀同系不同班的同学,由于本身性格比较安静,所以和风风火火的小杀有些不对盘。知道小杀也玩三国杀后,外表高冷、内心傲娇的她偷偷也去玩了游戏,立志要在游戏里碾压她。<br>小闪对应B站账号已销号。',
xiaotao:'2021年「虚拟天团」Vtuber企划中推出的虚拟偶像之一该企划原定培养12位虚拟偶像然而企划由于各方面原因暴死现虚拟偶像仅存在于各武将的皮肤中。<br>设定上为小杀的亲妹妹,陪姐姐去拍摄代言宣传照的时候,被导演看中,觉得三国美貌姐妹花是非常好的噱头,于是一并签下。正所谓“三国姐妹花,永远不分家!”。<br>小桃对应B站账号已销号。',
xiaole:'2021年「虚拟天团」Vtuber企划中推出的虚拟偶像之一该企划原定培养12位虚拟偶像然而企划由于各方面原因暴死现虚拟偶像仅存在于各武将的皮肤中。<br>设定上小乐家与小桃小杀家是世交,三人从小就认识。和小闪是同班同学,小乐很喜欢安静的小闪。和小酒是小杀介绍认识的,大家都是打三国杀的网友,在打游戏时候比较依赖小酒——躺赢人躺赢魂,躺赢都是人上人。<br>小乐对应B站账号已销号。',
xiaojiu:'2021年「虚拟天团」Vtuber企划中推出的虚拟偶像之一该企划原定培养12位虚拟偶像然而企划由于各方面原因暴死现虚拟偶像仅存在于各武将的皮肤中。<br>设定上为非人类,是一只年龄成迷的神兽,真身是白泽。是小杀网上玩游戏认识的网友,爱好是喝酒,和小杀也有好酒友的关系。<br>小酒对应B站账号已销号。',
},
characterTitle:{
jsp_liubei:'S1019',
@ -155,6 +166,438 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//天书乱斗虚拟偶像线下化
//小杀
vtbguisha:{
audio:1,
trigger:{global:'useCard'},
direct:true,
shaRelated:true,
filter:function(event,player){
return event.player!=player&&event.card.name=='sha'&&player.countCards('he')>0&&event.player.isPhaseUsing();
},
content:function(){
'step 0'
var go=false,d1=true;
if(get.attitude(player,trigger.player)>0){
if(trigger.player.hasSkill('jueqing')||trigger.player.hasSkill('gangzhi')) d1=false
for(var target of trigger.targets){
if(!target.mayHaveShan()||trigger.player.hasSkillTag('directHit_ai',true,{
target:target,
card:trigger.card,
},true)){
if(!target.hasSkill('gangzhi')) d1=false;
if(target.hasSkillTag('filterDamage',null,{
player:trigger.player,
card:trigger.card,
})||get.attitude(player,target)>=0) d1=false;
}
}
if(trigger.addCount===false||!trigger.player.isPhaseUsing()) go=false;
else if(!trigger.player.hasSkill('paoxiao')&&
!trigger.player.hasSkill('tanlin3')&&
!trigger.player.hasSkill('zhaxiang2')&&
!trigger.player.hasSkill('fengnu')&&
!trigger.player.getEquip('zhuge')){
var nh=trigger.player.countCards('h');
if(player==trigger.player){
go=(player.countCards('h','sha')>0);
}
else if(nh>=4){
go=true;
}
else if(player.countCards('h','sha')){
if(nh==3){
go=Math.random()<0.8;
}
else if(nh==2){
go=Math.random()<0.5;
}
}
else if(nh>=3){
if(nh==3){
go=Math.random()<0.5;
}
else if(nh==2){
go=Math.random()<0.2;
}
}
}
}
go=go*Math.random()+d1*Math.random()>0.4;
//AI停顿
if(go&&!event.isMine()&&!event.isOnline()&&player.hasCard(function(card){
return get.value(card)<6&&lib.filter.cardDiscardable(card,player,event.name);
},'he')){
game.delayx();
}
var next=player.chooseToDiscard(get.prompt('vtbguisha'),'弃置一张牌,令'+get.translation(trigger.player)+'本次使用的【杀】不计入使用次数,且对'+get.translation(trigger.targets)+'造成的伤害+1','he');
next.logSkill=['vtbguisha',trigger.player];
next.set('ai',function(card){
if(_status.event.go){
return 6-get.value(card);
}
return 0;
});
next.set('go',go);
'step 1'
if(result.bool){
if(trigger.addCount!==false){
trigger.addCount=false;
trigger.player.getStat().card.sha--;
}
trigger.player.addTempSkill('vtbguisha_bonus');
if(!trigger.card.storage) trigger.card.storage={};
trigger.card.storage.vtbguisha_targets=trigger.targets;
}
},
ai:{
expose:0.2
},
subSkill:{
bonus:{
trigger:{
source:'damageBegin1',
},
forced:true,
charlotte:true,
onremove:true,
filter:function(event,player){
return event.card&&event.card.name=='sha'&&event.card.storage&&event.card.storage.vtbguisha_targets&&event.card.storage.vtbguisha_targets.contains(event.player);
},
content:function(){
trigger.num++;
}
}
}
},
vtbshuli:{
audio:1,
trigger:{
global:'damageSource',
},
usable:2,
filter:function(event,player){
return event.source!=player&&event.card&&event.card.name=='sha'&&event.source.isIn();
},
check:function(event,player){
return get.attitude(player,event.source)>=0||
get.attitude(player,event.source)>=-4&&get.distance(_status.currentPhase,player,'absolute')>get.distance(_status.currentPhase,trigger.source,'absolute')
},
content:function(){
'step 0'
var drawers=[trigger.source,player].sortBySeat(_status.currentPhase);
game.asyncDraw(drawers);
},
},
//小闪
vtbshanwu:{
audio:1,
trigger:{
global:'useCardToTarget',
},
filter:function(event,player){
return event.card.name=='sha'&&event.target!=player&&event.isFirstTarget&&player.hasCard(card=>{
return get.name(card)=='shan'||_status.connectMode;
});
},
direct:true,
content:function(){
'step 0'
player.chooseToDiscard(get.prompt('vtbshanwu'),'弃置一张【闪】,取消此【杀】对'+get.translation(trigger.targets)+'的目标',{name:'shan'}).set('logSkill','vtbshanwu').set('ai',card=>{
if(_status.event.goon) return 6-get.value(card);
return 0;
}).set('goon',function(){
var effect=0;
for(var target of trigger.targets){
var eff=get.effect(target,trigger.card,trigger.player,player);
if(!target.mayHaveShan()||trigger.player.hasSkillTag('directHit_ai',true,{
target:target,
card:trigger.card,
},true)){
eff*=1.25;
}
if(target.hp<=2) eff*=1.1;
effect+=eff;
}
return effect<0;
}());
'step 1'
if(result.bool){
game.log(player,'取消了',trigger.card,'的所有目标');
trigger.targets.length=0;
trigger.getParent().triggeredTargets2.length=0;
trigger.untrigger();
}
},
ai:{
expose:0.2
}
},
vtbxianli:{
audio:1,
trigger:{
player:'loseAfter',
global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
},
usable:2,
filter:function(event,player){
if(!_status.currentPhase||!_status.currentPhase.isIn()||!_status.currentPhase.countGainableCards(player,'he')) return false;
var evt=event.getl(player);
return evt&&evt.cards2&&evt.cards2.some(card=>{
return get.name(card,false)=='shan';
});
},
check:function(event,player){
return get.effect(_status.currentPhase,{name:'shunshou_copy2'},player,player)>0;
},
prompt2:function(event,player){
return '获得'+get.translation(_status.currentPhase)+'的一张牌';
},
logTarget:()=>_status.currentPhase,
content:function(){
'step 0'
player.gainPlayerCard(_status.currentPhase,'he',true);
},
ai:{
expose:0.15,
}
},
//小桃
vtbtaoyan:{
audio:1,
trigger:{
player:'phaseBegin',
},
direct:true,
content:function(){
'step 0'
if(!_status.vtbtaoyan_count){
_status.vtbtaoyan_count=5;
}
player.chooseTarget(get.prompt('vtbtaoyan'),'令一或两名其他角色摸一张牌并从游戏外获得一张【桃】♥6',lib.filter.notMe,[1,2]).set('ai',target=>{
var player=_status.event.player;
return get.recoverEffect(target,player,player)/2+get.attitude(player,target);
});
'step 1'
if(result.bool){
var targets=result.targets.slice();
targets.sortBySeat();
player.logSkill('vtbtaoyan',targets);
game.broadcastAll(function(){
if(!lib.inpile.contains('tao')){
lib.inpile.add('tao');
}
});
player.addSkill('vtbtaoyan_remove');
for(var target of targets){
target.draw();
if(!_status.vtbtaoyan_count) continue;
if(!_status.vtbtaoyan_cards) _status.vtbtaoyan_cards=[];
_status.vtbtaoyan_count--;
var card=game.createCard('tao','heart',6);
_status.vtbtaoyan_cards.push(card.cardid);
target.gain(card,'gain2');
}
}
},
ai:{
expose:0.3,
threaten:3.2,
},
subSkill:{
remove:{
trigger:{
global:['loseAfter','loseAsyncAfter','cardsDiscardAfter','equipAfter'],
},
forced:true,
charlotte:true,
popup:false,
firstDo:true,
forceDie:true,
filter:function(event,player){
if(typeof _status.vtbtaoyan_count!='number') return false;
var cards=event.getd();
return cards.some(card=>{
return _status.vtbtaoyan_cards.contains(card.cardid);
});
},
content:function(){
var cards=trigger.getd(),remove=[];
for(var card of cards){
if(_status.vtbtaoyan_cards.contains(card.cardid)){
_status.vtbtaoyan_cards.remove(card.cardid);
remove.push(card);
}
}
if(remove.length){
remove.forEach(i=>{
i.remove();
_status.vtbtaoyan_count++;
});
game.log(remove,'被移出了游戏');
}
},
}
}
},
vtbyanli:{
audio:1,
trigger:{
global:'dying',
},
filter:function(event,player){
if(player.hasSkill('vtbyanli_used')) return false;
if(_status.currentPhase==player) return false;
return event.player.hp<=0;
},
check:function(event,player){
return get.recoverEffect(event.player,player,player)>0;
},
content:function(){
'step 0'
player.addTempSkill('vtbyanli_used','roundStart');
trigger.player.recover(1-trigger.player.hp);
trigger.player.draw();
},
subSkill:{
used:{
charlotte:true,
}
}
},
//小乐
vtbleyu:{
audio:1,
trigger:{
global:'phaseBegin',
},
direct:true,
filter:function(event,player){
return player.countCards('he')>=3;
},
content:function(){
'step 0'
player.chooseToDiscard(get.prompt2('vtbleyu',trigger.player),3,'he').set('ai',card=>{
if(ui.selected.cards.length==2) return 10-get.value(card);
if(_status.event.effect>0){
return 6-get.value(card);
}
return 0;
}).set('effect',trigger.player.hasJudge('lebu')?0:get.effect(trigger.player,{name:'lebu'},player,player)).set('logSkill',['vtbleyu',trigger.player]);
'step 1'
if(result.bool){
trigger.player.judge(lib.card.lebu.judge).judge2=lib.card.lebu.judge2;
} else event.finish();
'step 2'
if(!result.bool){
trigger.player.skip('phaseUse');
}
},
ai:{
expose:0.3,
threaten:2.9,
},
},
vtbyuanli:{
audio:1,
trigger:{global:['phaseUseSkipped','phaseUseCancelled']},
direct:true,
content:function(){
'step 0'
player.chooseTarget(get.prompt2('vtbyuanli'),lib.filter.notMe).set('ai',target=>get.attitude(_status.event.player,target)+1);
'step 1'
if(result.bool){
player.logSkill('vtbyuanli',result.targets[0]);
game.asyncDraw([player,result.targets[0]].sortBySeat(_status.currentPhase));
}
},
ai:{
expose:0.1,
},
},
vtbmeiniang:{
audio:1,
trigger:{global:'phaseUseBegin'},
filter:function(event,player){
return event.player!=player;
},
check:function(event,player){
return get.attitude(player,event.player)>0&&event.player.getUseValue('jiu')>=0;
},
logTarget:'player',
content:function(){
trigger.player.chooseUseTarget('jiu',true,false);
}
},
vtbyaoli:{
audio:1,
trigger:{global:'useCardAfter'},
filter:function(event,player){
return event.card.name=='jiu'&&event.player!=player&&event.player.isPhaseUsing();
},
logTarget:'player',
check:function(event,player){
return get.attitude(player,event.player)>0;
},
content:function(){
trigger.player.addTempSkill('vtbyaoli_effect');
trigger.player.addMark('vtbyaoli_effect',1,false);
},
ai:{
expose:0.15,
},
subSkill:{
effect:{
audio:'vtbyaoli',
charlotte:true,
trigger:{player:'useCard2'},
forced:true,
popup:false,
onremove:true,
nopop:true,
filter:function(event,player){
return event.card.name=='sha'&&player.countMark('vtbyaoli_effect')>0;
},
content:function(){
'step 0'
trigger.directHit.addArray(game.filterPlayer());
var num=player.countMark('vtbyaoli_effect');
if(!game.hasPlayer(current=>{
return !trigger.targets.contains(current)&&lib.filter.targetEnabled2(trigger.card,player,current);
})) event.finish();
else player.chooseTarget('媱丽:是否为'+get.translation(trigger.card)+'额外指定'+(num>1?'至多':'')+get.cnNumber(num)+'个目标?',num==1?1:[1,num],(card,player,target)=>{
return !_status.event.sourcex.contains(target)&&player.canUse(_status.event.card,target);
}).set('sourcex',trigger.targets).set('ai',target=>{
var player=_status.event.player;
return get.effect(target,_status.event.card,player,player);
}).set('card',trigger.card);
'step 1'
if(result.bool){
if(!event.isMine()&&!event.isOnline()) game.delayx();
event.targets=result.targets;
}
else {
event.finish();
}
'step 2'
player.logSkill('vtbyaoli_effect',event.targets);
trigger.targets.addArray(event.targets);
player.removeSkill('vtbyaoli_effect');
},
marktext:'媱',
intro:{
content:'下一张【杀】不可被响应且可以额外指定&个目标',
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
return arg.card.name=='sha';
},
}
}
}
},
//江山如故·起
sbyingmen:{
forbid:['guozhan'],
@ -1113,9 +1556,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var targets=game.filterPlayer(current=>{
return current.group==target.group&&current!=player;
});
return targets.reduce((p,c)=>{
var eff=targets.reduce((p,c)=>{
return p+get.effect(c,{name:'guohe'},player,player);
})+get.value(ui.selected.cards[0],target);
})
if(ui.selected.cards.length) eff+=get.value(ui.selected.cards[0],target);
return eff;
}
}
}
@ -8525,6 +8970,31 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbyingmen_info:'锁定技。①游戏开始时你将武将牌堆中随机四张武将牌置于你的武将牌上称为“访客”。②回合开始时若你的“访客”数小于4你随机从武将牌堆中将“访客”补至四张。',
sbpingjian:'评鉴',
sbpingjian_info:'你可以于满足你“访客”上的一个无技能标签或仅有锁定技标签的技能条件的时机发动此技能,然后你选择移去一张“访客”。若移去的是本次发动技能的“访客”,则你于此技能结算结束时摸一张牌。',
vtb_xiaosha:'小杀',
vtbguisha:'瑰杀',
vtbguisha_info:'当其他角色使用【杀】时,你可以弃置一张牌令此【杀】不计入次数,且此【杀】对目标角色造成的伤害+1。',
vtbshuli:'淑丽',
vtbshuli_info:'每回合限两次。当其他角色使用【杀】造成伤害后,你可以与其各摸一张牌。',
vtb_xiaoshan:'小闪',
vtbshanwu:'闪舞',
vtbshanwu_info:'当其他角色成为【杀】的第一个目标时,你可以弃置一张【闪】,然后取消此【杀】的所有目标。',
vtbxianli:'娴丽',
vtbxianli_info:'每回合限两次。当你失去牌后,若其中有【闪】,你可以获得当前回合角色的一张牌。',
vtb_xiaotao:'小桃',
vtbtaoyan:'桃宴',
vtbtaoyan_info:'回合开始时你可以令至多两名其他角色摸一张牌并于游戏外获得一张【桃】共五张且均为♥6。',
vtbyanli:'妍丽',
vtbyanli_info:'每轮限一次。一名角色于你的回合外进入濒死状态时你可以令其回复至1点体力然后其摸一张牌。',
vtb_xiaole:'小乐',
vtbleyu:'乐虞',
vtbleyu_info:'一名角色的回合开始时,你可以弃置三张牌令其判定。若结果不为♥,其跳过本回合的出牌阶段。',
vtbyuanli:'媛丽',
vtbyuanli_info:'一名角色跳过出牌阶段后,你可以与一名其他角色各摸一张牌。',
vtb_xiaojiu:'小酒',
vtbmeiniang:'美酿',
vtbmeiniang_info:'其他角色的出牌阶段开始时,你可以令其视为使用一张无次数限制且不计入次数的【酒】。',
vtbyaoli:'媱丽',
vtbyaoli_info:'其他角色于其出牌阶段内使用【酒】后,你可以令其于本回合内使用的下一张【杀】不能被响应且可以额外指定一个目标。',
offline_star:'桌游志·SP',
offline_sticker:'桌游志·贴纸',
@ -8534,6 +9004,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
offline_feihongyingxue:'飞鸿映雪',
offline_piracyE:'官盗E系列·战役篇',
offline_piracyS:'官盗S系列',
offline_vtuber:'天书乱斗·虚拟偶像',
offline_piracyK:'官盗K系列',
offline_others:'线下其他系列',
},

View File

@ -15,7 +15,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_yijiang4:["old_caozhen","old_chenqun","old_zhuhuan",'old_caorui'],
old_yijiang5:["old_caoxiu","old_zhuzhi"],
old_yijiang67:["ol_zhangrang","ol_liuyu",'old_huanghao','old_liyan'],
old_sp:["old_lingju","old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","old_wangyun",'ol_wanglang','old_dingfeng'],
old_sp:["old_maliang","old_machao","zhangliang","jsp_caoren","ol_guansuo","old_zhangxingcai","old_huangfusong","old_wangyun",'old_dingfeng'],
old_yingbian:['junk_simayi','old_yangyan','old_yangzhi'],
old_mobile:["old_caochun",'old_majun'],
},
@ -30,7 +30,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
junk_sunquan:['male','shen',4,['dili','yuheng'],['wei']],
old_dingfeng:['male','wu',4,['fenxun','duanbing']],
old_huanghao:['male','shu',3,['oldqinqing','oldhuisheng']],
ol_wanglang:['male','wei',3,['gushe','jici']],
oldre_liubiao:['male','qun',3,['zishou','zongshi']],
old_liubiao:['male','qun',4,['oldzishou','zongshi']],
old_gaoshun:['male','qun',4,['xianzhen','jinjiu']],
@ -73,7 +72,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_lingtong:['male','wu',4,['oldxuanfeng']],
old_caoxiu:['male','wei',4,['taoxi']],
old_caozhen:['male','wei',4,['sidi']],
old_lingju:['female','qun',3,['jieyuan','fenxin_old']],
old_maliang:['male','shu',3,['xiemu','naman']],
old_chenqun:['male','wei',3,['dingpin','oldfaen']],
old_zhuhuan:['male','wu',4,['youdi']],
@ -88,11 +86,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_liuyu:['male','qun',2,['zongzuo','zhige']],
old_guanqiujian:["male","wei",4,["drlt_zhenrong","drlt_hongju"],[]],
},
characterFilter:{
old_lingju:function(mode){
return mode=='identity';
}
},
skill:{
oldqinqing:{
audio:'qinqing',
@ -952,7 +945,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
old_zhuran:'旧朱然',
old_caoxiu:'旧曹休',
old_caozhen:'旧曹真',
old_lingju:'旧灵雎',
old_maliang:'旧马良',
old_chenqun:'旧陈群',
old_zhuhuan:'旧朱桓',
@ -1018,7 +1010,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
oldre_liubiao_ab:'刘表',
oldzishou:'自守',
oldzishou_info:'摸牌阶段,若你已受伤,你可令额定摸牌数+XX为你已损失的体力值然后跳过下一个出牌阶段。',
ol_wanglang:'OL王朗',
old_huanghao:'旧黄皓',
oldqinqing:'寝情',
oldqinqing_info:'结束阶段,你可以选择一名攻击范围内含有主公的其他角色,然后你弃置该角色的一张牌(无牌则不弃),并令其摸一张牌。若该角色的手牌数大于主公,你摸一张牌。',

View File

@ -120,6 +120,7 @@ window.noname_character_rank={
'key_yuuki',
'db_key_liyingxia',
'key_kiyu',
'wu_zhugeliang',
],
a:[
'diy_zaozhirenjun',
@ -298,6 +299,7 @@ window.noname_character_rank={
'zerong',
'wangguan',
'duanqiaoxiao',
'old_wanglang',
'key_misuzu',
'key_sunohara',
'key_umi',
@ -707,6 +709,7 @@ window.noname_character_rank={
'xf_tangzi',
'liuzan',
'lingcao',
'sunyang',
'sunru',
'lifeng',
'zhangyì',
@ -912,6 +915,15 @@ window.noname_character_rank={
'sunhong',
'zhangjinyun',
'dc_mengda',
'xiaoyuehankehan',
'zhutiexiong',
'shen_dengai',
'libai',
'tw_gongsunfan',
'yue_caiwenji',
'vtb_xiaole',
'vtb_xiaojiu',
'ol_zhangzhang',
],
b:[
'diy_feishi',
@ -1186,7 +1198,6 @@ window.noname_character_rank={
'xia_xushu',
'clan_hanrong',
'clan_hanshao',
'dc_fuwan',
'ns_duji',
'yj_weiyan',
'dc_sunziliufang',
@ -1196,6 +1207,11 @@ window.noname_character_rank={
'xia_xiahouzie',
'xielingyu',
'ol_yanwen',
'sp_mushun',
'tw_yangang',
'sb_zhurong',
'vtb_xiaoshan',
'vtb_xiaotao',
],
bm:[
'diy_xizhenxihong',
@ -1381,6 +1397,9 @@ window.noname_character_rank={
'wuanguo',
'qiaorui',
'clan_wukuang',
'yeshiwen',
'qianzhao',
'vtb_xiaosha',
],
c:[
'xiahoudun',

View File

@ -8,7 +8,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
refresh_feng:['caoren','ol_xiahouyuan','ol_weiyan','ol_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji','ol_huangzhong'],
refresh_huo:["ol_sp_zhugeliang","ol_xunyu","ol_dianwei","ol_yanwen","ol_pangtong","ol_yuanshao","ol_pangde","re_taishici"],
refresh_lin:['re_menghuo','ol_sunjian','re_caopi','ol_xuhuang','ol_dongzhuo','ol_zhurong','re_jiaxu','ol_lusu'],
refresh_shan:['ol_jiangwei','ol_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce','ol_dengai','re_zhanghe'],
refresh_shan:['ol_jiangwei','ol_caiwenji','ol_liushan','ol_zhangzhang','re_zuoci','re_sunce','ol_dengai','re_zhanghe'],
refresh_yijiang1:['xin_wuguotai','xin_gaoshun','dc_caozhi','yujin_yujin','re_masu','xin_xusheng','re_fazheng','xin_lingtong','re_zhangchunhua','dc_xushu','re_chengong'],
refresh_yijiang2:['re_madai','re_wangyi','xin_handang','xin_zhonghui','re_liaohua','re_chengpu','re_caozhang','dc_bulianshi','xin_liubiao','re_xunyou','re_guanzhang'],
refresh_yijiang3:['re_jianyong','re_guohuai','re_zhuran','re_panzhangmazhong','xin_yufan','dc_liru','re_manchong','re_fuhuanghou','re_guanping','re_liufeng'],
@ -20,6 +20,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
connect:true,
character:{
ol_zhangzhang:['male','wu',3,['olzhijian','olguzheng']],
re_jsp_huangyueying:['female','qun',3,['rejiqiao','relinglong']],
re_zhangsong:['male','shu',3,['qiangzhi','rexiantu']],
re_zhuzhi:['male','wu',4,['reanguo']],
@ -139,7 +140,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_jiangwei:['male','shu',4,['oltiaoxin','olzhiji']],
ol_caiwenji:['female','qun',3,['olbeige','duanchang']],
ol_liushan:['male','shu',3,['xiangle','olfangquan','olruoyu'],['zhu']],
re_zhangzhang:['male','wu',3,['rezhijian','guzheng']],
re_sunce:['male','wu',4,['oljiang','olhunzi','olzhiba'],['zhu']],
re_jianyong:['male','shu',3,['reqiaoshui','jyzongshi']],
@ -161,6 +161,141 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_guohuai:['xiahouyuan','zhanghe'],
},
skill:{
//OL界二张
olzhijian:{
audio:2,
enable:'phaseUse',
filter:function(event,player){
return player.countCards('h',{type:'equip'})>0;
},
filterCard:function(card){
return get.type(card)=='equip';
},
position:'he',
check:function(card){
var player=_status.currentPhase;
if(player.countCards('he',{subtype:get.subtype(card)})>1){
return 11-get.equipValue(card);
}
return 6-get.value(card);
},
filterTarget:function(card,player,target){
if(target.isMin()) return false;
return player!=target&&target.canEquip(card,true);
},
content:function(){
target.equip(cards[0]);
player.draw();
},
discard:false,
prepare:function(cards,player,targets){
player.$give(cards,targets[0],false);
},
ai:{
basic:{
order:10
},
result:{
target:function(player,target){
var card=ui.selected.cards[0];
if(card) return get.effect(target,card,target,target);
return 0;
},
},
threaten:1.35
}
},
olguzheng:{
audio:2,
trigger:{
global:['loseAfter','loseAsyncAfter'],
},
filter:function(event,player){
if(event.type!='discard') return false;
if(player.hasSkill('olguzheng_used')) return false;
return game.hasPlayer(current=>{
if(current==player) return false;
var evt=event.getl(current);
if(!evt||!evt.cards2||evt.cards2.filterInD('d').length<2) return false;
return true;
});
},
checkx:function(event,player,cards){
if(cards.length>2||get.attitude(player,event.player)>0) return true;
for(var i=0;i<cards.length;i++){
if(get.value(cards[i],event.player,'raw')<0) return true;
}
return false;
},
direct:true,
preHidden:true,
content:function(){
'step 0'
var targets=[],cardsList=[];
var players=game.filterPlayer().sortBySeat(_status.currentPhase);
for(var current of players){
if(current==player) continue;
var cards=[];
var evt=trigger.getl(current);
if(!evt||!evt.cards2) continue;
var cardsx=evt.cards2.filterInD('d');
cards.addArray(cardsx);
if(cards.length){
targets.push(current);
cardsList.push(cards);
}
}
event.targets=targets;
event.cardsList=cardsList;
'step 1'
var target=targets.shift();
var cards=event.cardsList.shift();
event.target=target;
event.cards=cards;
player.chooseButton(2,[
get.prompt('olguzheng',target),
'<span class="text center">被选择的牌将成为对方收回的牌</span>',
cards,
[['获得剩余的牌','放弃剩余的牌'],'tdnodes'],
]).set('filterButton',function(button){
var type=typeof button.link;
if(ui.selected.buttons.length&&type==typeof ui.selected.buttons[0].link) return false;
return true;
}).set('check',lib.skill.olguzheng.checkx(trigger,player,cards)).set('ai',function(button){
if(typeof button.link=='string'){
return button.link=='获得剩余的牌'?1:0;
}
if(_status.event.check){
return 20-get.value(button.link,_status.event.getTrigger().player);
}
return 0;
}).setHiddenSkill('olguzheng');
'step 2'
if(result.bool){
player.logSkill('olguzheng',target);
player.addTempSkill('olguzheng_used',['phaseZhunbeiAfter','phaseDrawAfter','phaseJudgeAfter','phaseUseAfter','phaseDiscardAfter','phaseJieshuAfter']);
if(typeof result.links[0]!='string') result.links.reverse();
var card=result.links[1];
target.gain(card,'gain2');
if(result.links[0]!='获得剩余的牌') event.finish();
}
else event.finish();
'step 3'
var cards=cards.filterInD('d');
if(cards.length>0) player.gain(cards,'gain2');
'step 4'
if(event.targets.length) event.goto(1);
},
ai:{
threaten:1.3,
expose:0.2
},
subSkill:{
used:{
charlotte:true,
}
},
},
//SP黄月英
rejiqiao:{
audio:2,
@ -171,7 +306,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
player.chooseToDiscard(get.prompt2('jiqiao'),[1,player.countCards('he')],'he').set('ai',function(card){
player.chooseToDiscard(get.prompt2('rejiqiao'),[1,player.countCards('he')],'he').set('ai',function(card){
if(card.name=='bagua') return 10;
return 7-get.value(card);
}).set('logSkill','rejiqiao');
@ -11054,7 +11189,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
target.addTempSkill('new_yijue2');
event.finish();
}
else{
else if(get.color(event.card2)=='red'){
player.gain(event.card2,target,'give','bySelf');
if(target.hp<target.maxHp){
player.chooseBool('是否让目标回复一点体力?').ai=function(event,player){
@ -14083,7 +14218,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rebeige_info:'当有角色受到【杀】造成的伤害后你可以弃一张牌并令其进行一次判定若判定结果为♥该角色回复X点体力(X为伤害点数);♦︎该角色摸三张牌;♣伤害来源弃两张牌;♠伤害来源将其武将牌翻面',
re_liushan:'手杀刘禅',
re_sunben:'界孙笨',
re_zhangzhang:'张昭张纮',
re_zhangzhang:'手杀张昭张纮',
rehunzi:'魂姿',
rehunzi_info:'觉醒技准备阶段若你的体力值不大于2你减1点体力上限并获得技能〖英姿〗和〖英魂〗。',
rezhijian:'直谏',
@ -14504,6 +14639,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rejiqiao_info:'出牌阶段开始时你可以弃置任意张牌然后亮出牌堆顶X张牌X为你以此法弃置的牌数与其中装备牌数之和你获得其中所有非装备牌。',
relinglong:'玲珑',
relinglong_info:'锁定技。若你的装备区:没有防具牌,视为你装备【八卦阵】;没有坐骑牌,你的手牌上限+2没有宝物牌你视为拥有〖奇才〗以上均满足你使用的【杀】或普通锦囊牌不可被响应。',
ol_zhangzhang:'界张昭张纮',
olzhijian:'直谏',
olzhijian_info:'出牌阶段,你可以将一张装备牌置于其他角色的装备区(可替换原装备),然后摸一张牌。',
olguzheng:'固政',
olguzheng_info:'每阶段限一次。当其他角色的至少两张牌因弃置而进入弃牌堆后,你可以令其获得其中一张牌,然后你可以获得剩余的牌。',
refresh_standard:'界限突破·标',
refresh_feng:'界限突破·风',

View File

@ -35,17 +35,145 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sb_sunce:['male','wu','2/4',['sbjiang','sbhunzi','sbzhiba'],['zhu']],
sb_daqiao:['female','wu',3,['sbguose','sbliuli']],
sb_liubiao:['male','qun',3,['sbzishou','sbzongshi']],
sb_zhurong:['female','shu',4,['sblieren','sbjuxiang'],['unseen']],
},
characterSort:{
sb:{
sb_zhi:['sb_sunquan','sb_zhouyu','sb_zhangjiao','sb_caocao','sb_zhenji','sb_liubei','sb_daqiao','sb_liubiao'],
sb_shi:['sb_xuhuang','sb_machao','sb_fazheng','sb_chengong','sb_pangtong'],
sb_tong:['liucheng','sp_yangwan','sb_xiahoushi','sb_zhangfei','sb_zhaoyun','sb_sunce'],
sb_shi:['sb_xuhuang','sb_machao','sb_fazheng','sb_chengong','sb_diaochan','sb_pangtong'],
sb_tong:['liucheng','sp_yangwan','sb_xiahoushi','sb_zhangfei','sb_zhaoyun','sb_sunce','sb_zhurong'],
sb_yu:['sb_yujin','sb_lvmeng','sb_huangzhong','sb_huanggai','sb_zhouyu','sb_caoren','sb_ganning'],
sb_neng:['sb_huaxiong','sb_sunshangxiang','sb_jiangwei','sb_diaochan','sb_yuanshao'],
sb_neng:['sb_huaxiong','sb_sunshangxiang','sb_jiangwei','sb_yuanshao'],
}
},
skill:{
//祝融
sblieren:{
audio:2,
trigger:{player:'useCardToPlayered'},
filter:function(event,player){
return event.targets.length==1&&event.card.name=='sha'&&!player.hasSkillTag('noCompareSource')&&event.target!=player&&event.target.countCards('h')>0&&!event.target.hasSkillTag('noCompareTarget');
},
check:function(event,player){
return get.attitude(player,event.target)<0||game.hasPlayer(current=>{
return get.damageEffect(current,player,player)>0;
});
},
shaRelated:true,
logTarget:'target',
content:function(){
'step 0'
player.draw();
'step 1'
if(player.canCompare(trigger.target)) player.chooseToCompare(trigger.target);
'step 2'
if(result.bool){
player.addTempSkill('sblieren_damage');
if(!trigger.card.storage) trigger.card.storage={};
trigger.card.storage.sblieren=[player,trigger.target];
}
},
subSkill:{
damage:{
trigger:{global:'useCardAfter'},
filter:function(event,player){
return event.card.name=='sha'&&event.card.storage&&event.card.storage.sblieren&&event.card.storage.sblieren[0]==player&&game.hasPlayer(current=>{
return !event.card.storage.sblieren.contains(current);
});
},
direct:true,
charlotte:true,
content:function(){
'step 0'
var target=trigger.card.storage.sblieren[1];
player.chooseTarget('烈刃:是否对除'+get.translation(target)+'外的一名其他角色造成1点伤害',(card,player,target)=>{
return target!=_status.event.targeted&&target!=player;
}).set('targeted',target);
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('sblieren_damage',target);
target.damage();
}
}
}
}
},
sbjuxiang:{
audio:2,
trigger:{
player:'phaseJieshuBegin',
},
forced:true,
direct:true,
filter:function(event,player){
return !player.hasHistory('useCard',evt=>evt.card.name=='nanman')&&(!_status.sbjuxiang_nanman||_status.sbjuxiang_nanman.length);
},
group:['sbjuxiang_cancel','sbjuxiang_gain'],
content:function(){
'step 0'
if(!_status.sbjuxiang_nanman){
_status.sbjuxiang_nanman=[];
var numbers=[7,9,11,13],suits=['spade','club'];
for(var num of numbers){
for(var suit of suits){
_status.sbjuxiang_nanman.push({name:'nanman',number:num,suit:suit});
}
}
game.broadcastAll(function(){
if(!lib.inpile.contains('nanman')){
lib.inpile.add('nanman');
}
});
}
player.chooseTarget(get.prompt('sbjuxiang'),'将游戏外的随机一张【南蛮入侵】交给一名角色(剩余'+get.cnNumber(_status.sbjuxiang_nanman.length)+'张)').set('ai',target=>{
var player=_status.event.player;
return Math.max(0,target.getUseValue({name:'nanman'}))*get.attitude(player,target)*(target==player?0.5:1);
});
'step 1'
if(result.bool){
var target=result.targets[0];
player.logSkill('sbjuxiang',target);
if(!_status.sbjuxiang_nanman.length) return;
var info=_status.sbjuxiang_nanman.randomRemove();
var card=game.createCard2(info);
target.gain(card,'gain2').giver=player;
}
},
ai:{
expose:0.05,
effect:{
target:function(card){
if(card.name=='nanman') return [0,1];
}
}
},
subSkill:{
cancel:{
audio:'sbjuxiang',
trigger:{target:'useCardToBefore'},
forced:true,
priority:15,
filter:function(event,player){
return event.card.name=='nanman';
},
content:function(){
trigger.cancel();
}
},
gain:{
audio:'sbjuxiang',
trigger:{global:'useCardAfter'},
forced:true,
filter:function(event,player){
return event.card.name=='nanman'&&event.player!=player&&event.cards.filterInD().length;
},
content:function(){
player.gain(trigger.cards.filterInD(),'gain2');
}
}
}
},
//阿笨
sbjiang:{
audio:2,
@ -150,6 +278,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
return event.filterCard(get.autoViewAs({name:'juedou'},hs));
},
ai:{order:0.001},
}
},
},
@ -377,12 +506,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
threaten:0.5,
effect:{
target:function(card,player,target,current){
if(player._sbzongshi_aiChecking) return;
if(!get.tag(card,'damage')) return;
var cards=player.getCards('h');
if(!target.hasFriend()) return;
player._sbzongshi_aiChecking=true;
var value=cards.reduce((p,c)=>{
return p+get.value(c);
});
},0);
delete player._sbzongshi_aiChecking;
if(cards.length>5||value>5*cards.length) return [1,0,0,-cards.length/2];
return [1,0,0,-0.5];
}
@ -2531,7 +2663,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.logSkill('sbhujia',target);
player.addTempSkill('sbhujia_used','roundStart');
trigger.cancel();
target.damage(trigger.source,trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards);
if(trigger.source) target.damage(trigger.source,trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards);
else target.damage('nosource',trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards);
}
},
ai:{
@ -4338,12 +4471,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbguose:'国色',
sbguose_info:'出牌阶段限四次。你可以选择一项1.将一张♦牌当【乐不思蜀】使用2.弃置场上一张【乐不思蜀】。然后你摸一张牌并弃置一张牌。',
sbliuli:'流离',
sbliuli_info:'当你成为【杀】的目标时,你可以弃置一张牌并选择你攻击范围内的一名不为此【杀】使用者的角色,将此【杀】转移给该角色。若你以此法弃置了♥牌,则你可以令一不为此【杀】使用者的其他角色获得“流离”标记,且移去场上所有其他的“流离”(每回合限一次)。有“流离”的角色回合开始时,其移去其“流离”并执行一个额外的出牌阶段。',
sbliuli_info:'当你成为【杀】的目标时,你可以弃置一张牌并选择你攻击范围内的一名不为此【杀】使用者的角色,将此【杀】转移给该角色。若你以此法弃置了♥牌,则你可以令一不为此【杀】使用者的其他角色获得“流离”标记,且移去场上所有其他的“流离”(每回合限一次)。有“流离”的角色回合开始时,其移去其“流离”并执行一个额外的出牌阶段。',
sb_liubiao:'谋刘表',
sbzishou:'自守',
sbzishou_info:'锁定技。其他角色的结束阶段,若其与你于本局游戏内均未对对方造成过伤害,其须交给你一张牌。',
sbzongshi:'宗室',
sbzongshi_info:'锁定技。每名角色限一次。当你受到伤害后,你令伤害来源弃置所有手牌。',
sb_zhurong:'谋祝融',
sblieren:'烈刃',
sblieren_info:'当你使用【杀】指定唯一目标后你可以摸一张牌并与其拼点。若你赢此【杀】结算结束后你可以对另一名其他角色造成1点伤害。',
sbjuxiang:'巨象',
sbjuxiang_info:'锁定技。①【南蛮入侵】对你无效。②当其他角色使用【南蛮入侵】结算结束后,你获得此牌对应的所有实体牌。③结束阶段,若你未于本回合使用过【南蛮入侵】,你可以将一张游戏外的随机【南蛮入侵】(共八张)交给一名角色。',
sb_zhi:'谋攻篇·知',
sb_shi:'谋攻篇·识',

View File

@ -971,7 +971,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
subSkill:{
'1':{
audio:2,
audio:'drlt_qianjie',
trigger:{
player:'linkBegin'
},
@ -7730,7 +7730,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jiangwei:['ol_jiangwei','re_jiangwei','jiangwei'],
liushan:['ol_liushan','re_liushan','liushan'],
sunce:['re_sunben','re_sunce','sunce'],
zhangzhang:['re_zhangzhang','zhangzhang'],
zhangzhang:['ol_zhangzhang','re_zhangzhang','zhangzhang'],
zuoci:['re_zuoci','zuoci'],
caiwenji:['ol_caiwenji','re_caiwenji','caiwenji'],
xuyou:['sp_xuyou','xuyou','yj_xuyou'],
@ -7767,7 +7767,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"nzry_jianxiang_info":"当你成为其他角色使用牌的目标时,你可令手牌数最少的一名角色摸一张牌。",
"nzry_shenshi1":"审时",
"nzry_shenshi":"审时",
"nzry_shenshi_info":"转换技,阴:出牌阶段限一次,你可以将一张牌交给一名手牌数最多的角色,然后对其造成一点伤害,若该角色因此死亡,则你可以令一名角色将手牌摸至四张。阳:其他角色对你造成伤害后,你可以观看该角色的手牌,然后交给其一张牌,当前角色回合结束时,若此牌仍在该角色的区域内,你将手牌摸至四张。",
"nzry_shenshi_info":"转换技,阴:出牌阶段限一次,你可以将一张牌交给一名除你外手牌数最多的角色,然后对其造成一点伤害,若该角色因此死亡,则你可以令一名角色将手牌摸至四张。阳:其他角色对你造成伤害后,你可以观看该角色的手牌,然后交给其一张牌,当前角色回合结束时,若此牌仍在该角色的区域内,你将手牌摸至四张。",
"nzry_mingren":"明任",
"nzry_mingren_info":"游戏开始时,你摸两张牌,然后将一张手牌置于你的武将牌上,称为“任”。结束阶段,你可以用一张手牌替换“任”。",
"nzry_zhenliang":"贞良",
@ -7931,7 +7931,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhanghe:'张郃',
dengai:'邓艾',
sunce:'孙策',
zhangzhang:'张昭张',
zhangzhang:'张昭张',
caiwenji:'蔡琰',
zuoci:'左慈',

View File

@ -6,17 +6,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterSort:{
sp:{
sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ganfuren","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji",'caoxiancaohua'],
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan','quhuang','zhanghua','wangguan'],
sp_sibi:["yangxiu","chenlin","chengyu","shixie","fuwan","wangyun","zhugejin","simalang","maliang","buzhi","dongyun","kanze","sunqian","xizhicai","sunshao",'duxi',"jianggan",'ol_dengzhi','ol_yangyi','ol_dongzhao','ol_chendeng','jin_yanghu','wangyan','xiahouxuan','quhuang','zhanghua','wangguan','sunhong'],
sp_tianzhu:["wutugu","yanbaihu","shamoke","panfeng","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna"],
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu','ol_xinxianying',"daxiaoqiao","jin_guohuai"],
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','ol_puyuan','zhangzhi'],
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','ol_puyuan','zhangzhi','lushi'],
sp_huben:["caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","zangba","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian'],
sp_liesi:['mizhu','weizi','ol_liuba','zhangshiping'],
sp_default:["sp_diaochan","sp_zhaoyun","sp_sunshangxiang","sp_caoren","sp_jiangwei","sp_machao","sp_caiwenji","jsp_guanyu","jsp_huangyueying","sp_pangde","sp_jiaxu","yuanshu",'sp_zhangliao','sp_ol_zhanghe','sp_menghuo'],
sp_waitforsort:['sunhong','ol_huban','lushi'],
sp_waitforsort:['ol_huban'],
sp_qifu:["caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
sp_wanglang:['wanglang'],
sp_tongque:["sp_fuwan","sp_fuhuanghou","sp_jiben"],
sp_wanglang:['ol_wanglang'],
sp_zhongdan:["cuiyan","huangfusong"],
sp_guozhan2:["sp_dongzhuo","liqueguosi","zhangren"],
//sp_single:["niujin"],
@ -29,6 +28,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
ol_wanglang:['male','wei',3,['gushe','oljici']],
ol_liuyan:['male','qun','4/6',['olpianan','olyinji','olkuisi'],['unseen']],
lushi:['female','qun',3,['olzhuyan','olleijie']],
zhangshiping:['male','shu',3,['olhongji','olxinggu']],
sunhong:['male','wu',3,['olxianbi','olzenrun']],
@ -79,9 +80,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
huangchengyan:['male','qun',3,['guanxu','yashi']],
huangzu:['male','qun',4,['wangong']],
panshu:['female','wu',3,['weiyi','jinzhi']],
sp_jiben:['male','qun',3,['spduanzhi','spduyi']],
sp_fuhuanghou:['female','qun',3,['spcangni','spmixin']],
sp_fuwan:['male','qun',3,['spfengyin','spchizhong']],
ol_xinxianying:['female','wei',3,['xincaishi','xinzhongjian']],
wolongfengchu:['male','shu',4,['youlong','luanfeng']],
sp_zhangliao:['male','qun',4,['mubing','ziqu','diaoling']],
@ -116,7 +114,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
guanyinping:['female','shu',3,['huxiao','xueji','wuji']],
simalang:['male','wei',3,['junbing','quji']],
zhangxingcai:['female','shu',3,['shenxian','qiangwu']],
fuwan:['male','qun',4,['moukui']],
fuwan:['male','qun',4,['dcmoukui']],
sp_sunshangxiang:['female','shu',3,['liangzhu','fanxiang']],
caoang:['male','wei',4,['kaikang']],
sp_caoren:['male','wei',4,['weikui','lizhan']],
@ -149,7 +147,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yanbaihu:['male','qun',4,['zhidao','jili']],
chengyu:['male','wei',3,['shefu','benyu']],
wanglang:['male','wei',3,['regushe','rejici']],
sp_pangde:['male','wei',4,['mashu','juesi']],
sp_jiaxu:['male','wei',3,['zhenlue','jianshu','yongdi']],
@ -220,7 +217,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gaogan:'高干(?~206年字元才陈留郡圉县今河南杞县圉镇人。东汉末年并州割据将领蜀郡太守高躬之子、大将军袁绍外甥。出身陈留高氏才志弘邈文武秀出。早年联合荀谌游说韩馥让出冀州牧。袁绍平定河北后以为并州牧。官渡之战时在西线配合作战。因曹操早有准备没有实质进展。袁绍死后袁谭、袁尚与曹操大战于黎阳郡时联合郭援攻打平阳郡为马腾为首关中将领所败郭援为庞德所斩。袁尚败走中山郡后出降于曹操仍为并州刺史。建安十年兴兵反曹固守壶关成功抵挡乐进进攻。得知曹操亲征后留下别将守城亲往匈奴呼厨泉求救没有成功。引兵攻略河东郡屡为钟繇、张既所败。建安十一年投奔荆州刘表。途经上洛时为上洛都尉捕斩之。',
huangchengyan:'黄承彦,生卒年不详,汉末三国时期沔阳名士,诸葛亮岳父,黄月英之父。南郡大士蔡讽的女婿,与襄阳名士上层社会圈子:庞统(凤雏)、庞德公、司马徽、徐庶等人交好。《襄阳记》:黄承彦者,高爽开列,为沔阳名士,谓诸葛孔明曰:“闻君择妇,身有丑女,黄头黑色,而才堪配。”孔明许,即载送之。时人以为笑乐,乡里为之谚曰:“莫作孔明择妇,正得阿承丑女。”',
panshu:'潘淑252年会稽句章今浙江省宁波市是吴大帝孙权的皇后吴少帝孙亮的母亲。和孙权是中国历代帝后中年龄差距较大的一对。潘淑少时与姐姐俱没入织室容媚有宠拜为夫人生有一子孙亮。赤乌十三年250年孙权立孙亮为皇太子翌年251年立潘淑为皇后。神凤元年252年暴崩合葬蒋陵。世称潘淑为江东绝色有神女之称。',
jiben:'吉本—218年东汉末年太医令。建安二十三年春正月时金祎自以世为汉臣睹汉祚将移谓可季兴乃喟然发愤遂与太医令本、少府耿纪、司直韦晃、本子邈、邈弟穆等结谋攻许杀曹公长史王必南援刘备。后必营必与典农中郎将严匡讨斩之。在《三国演义》中吉本在此为吉平或吉太因字称平故又唤作吉平。曾参与董承等人刺杀曹操的计划并企图在为曹操治病时毒死曹操但被曹操识破而遭处刑。之后其子吉邈和吉穆都参与了由耿纪和韦晃等人所发动的反叛曹操的行动但都失败被杀。',
zongyu:'宗预264年字德艳 荆州南阳郡安众县今河南省南阳市人。三国时期蜀汉官员、将领。曾随张飞入蜀助平益州又受辟为丞相诸葛亮手下主簿升任参军、右中郎将。诸葛亮逝世后宗预受命出使孙吴得到孙权的赞赏。迁后将军出督永安又升任征西大将军并受封关内侯。公元258年景耀元年因病回成都受任镇军大将军。蜀汉灭亡后宗预随后主刘禅徙往洛阳在中途病逝。宗预为人坦率耿直多次出使孙吴并深得孙权的敬重为吴、汉两国同盟的巩固作出了一定的贡献。',
mengda:'孟达(?228字子度本字子敬因刘备的叔父名叫刘子敬为避讳而改字。扶风郡郿人三国时期人物。本为刘璋属下后降刘备。关羽围樊城、襄阳时因不发兵救关羽而触怒刘备于是投奔曹魏。此后劝降刘封未果。在魏官至散骑常侍、建武将军封平阳亭侯。此后又欲反曹魏而归蜀汉事败而死。',
wolongfengchu:'沙比武将,懒得复制粘贴,自己去看诸葛亮和庞统的介绍吧。',
@ -687,6 +683,140 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//OL新改王朗
oljici:{
audio:'jici',
trigger:{
player:'compare',
target:'compare',
},
filter:function(event,player){
if(event.player==player){
if(event.iwhile) return false;
return event.num1<=player.countMark('gushe');
}
return event.num2<=player.countMark('gushe');
},
content:function(){
var num=player.countMark('gushe');
if(player==trigger.player){
trigger.num1+=num;
if(trigger.num1>13) trigger.num1=13;
}
else{
trigger.num2+=num;
if(trigger.num2>13) trigger.num2=13;
}
game.log(player,'的拼点牌点数+'+num);
var stat=player.getStat().skill;
delete stat.gushe;
}
},
//OL刘老板
olpianan:{
audio:2,
trigger:{
player:['enterGame','phaseDiscardEnd'],
global:'phaseBefore',
},
forced:true,
filter:function(event,player){
return event.name!='phase'||game.phaseNumber==0;
},
content:function(){
'step 0'
var hs=player.getCards('h',card=>{
return get.name(card)!='shan'&&lib.filter.cardDiscardable(card,player,'olpianan');
});
if(hs.length) player.discard(hs);
'step 1'
var num=player.hp-player.countCards('h');
if(num>0){
var cards=[];
for(var i=0;i<ui.cardPile.childNodes.length;i++){
var card=ui.cardPile.childNodes[i];
if(card.name=='shan'){
cards.add(card);
num--;
}
if(num==0) break;
}
if(num>0){
for(var i=0;i<ui.discardPile.childNodes.length;i++){
var card=ui.discardPile.childNodes[i];
if(card.name=='shan'){
cards.add(card);
num--;
}
if(num==0) break;
}
}
if(cards.length) player.gain(cards,'gain2');
}
},
mod:{
aiValue:function(player,card,num){
if(card.name!='shan') return;
if(player==_status.currentPhase) return 0;
},
aiUseful:function(){
return lib.skill.olpianan.mod.aiValue.apply(this,arguments);
},
},
},
olyinji:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
forced:true,
filter:function(event,player){
return !player.isMaxHp(true);
},
content:function(){
'step 0'
player.chooseControl('体力','体力上限').set('prompt','殷积回复1点体力或加1点体力上限').set('ai',()=>{
var player=_status.event.player;
if(!player.isDamaged()||player.hp>3&&player.getDamagedHp()==1||player.maxHp<3) return 1;
return 0;
});
'step 1'
player[result.index==0?'recover':'gainMaxHp']();
}
},
olkuisi:{
audio:2,
trigger:{player:'phaseDrawBefore'},
forced:true,
content:function(){
'step 0'
trigger.cancel();
var cards=game.cardsGotoOrdering(get.cards(4)).cards;
event.cards=cards.slice();
'step 1'
player.chooseButton(['窥伺:是否使用其中的一张牌?',cards]).set('filterButton',button=>{
return _status.event.player.hasUseTarget(button.link);
}).set('ai',button=>{
var player=_status.event.player,card=button.link,cards=_status.event.getParent().cards;
var val=player.getUseValue(card)+0.01;
if(val>0&&cards.length>1||val>4&&cards.length==1&&(player.maxHp>3||player.isDamaged())) return get.order(card)+val/5;
return 0;
});
'step 2'
if(result.bool){
var card=result.links[0];
event.cards.remove(card);
player.$gain2(card,false);
game.delayx();
player.chooseUseTarget(true,card,false);
}
else event.goto(4);
'step 3'
if(cards.some(i=>get.position(i,true)=='o'&&player.hasUseTarget(i))) event.goto(1);
'step 4'
if(cards.length!=1&&cards.length!=2){
player.loseMaxHp();
}
}
},
//卢氏
olzhuyan:{
audio:2,
@ -903,7 +1033,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.chooseControl('摸牌阶段','出牌阶段','cancel2').set('prompt',get.prompt('olhongji',target)).set('choiceList',[
str1.slice(13),
str2.slice(13)
]).set('ai',()=>[0,1].randomGet());
]).set('ai',()=>_status.event.bool).set('bool',()=>get.attitude(player,trigger.player)>1?[0,1].randomGet():'cancel2');
}
'step 1'
var choice=-1;
@ -5087,6 +5217,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dialog.classList.add('scroll1');
dialog.classList.add('scroll2');
dialog.classList.add('fullwidth');
dialog.classList.add('fullheight');
dialog.buttonss=[];
var list=['协力锻造的玩家','妨碍锻造的玩家']
@ -7815,12 +7946,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}).set('type',type).set('ai',()=>-1).logSkill='olfengzi';
'step 1'
if(result.bool){
player.addTempSkill('olfengzi_buff','phaseUseAfter');
trigger.olfengzi_buff=player;
trigger.effectCount++;
}
else player.storage.counttrigger.olfengzi--;
},
subSkill:{
/*subSkill:{
buff:{
trigger:{global:'useCardToTargeted'},
forced:true,
@ -7838,7 +7968,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
delete player.storage.counttrigger.olfengji;
},
},
},
},*/
},
oljizhan:{
audio:2,
@ -8952,254 +9082,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:'本轮已发动过#次',
},
},
//铜雀台
spduanzhi:{
trigger:{target:'useCardToTargeted'},
logTarget:'player',
check:function(event,player){
var target=event.player;
if(get.attitude(player,target)>=-2||target.countCards('he',function(card){
return get.value(card,target)>5;
})<2) return false;
if(player.hp>2) return true;
if(player.hp==1){
if(get.tag(event.card,'respondSha')){
if(player.countCards('h',{name:'sha'})==0){
return true;
}
}
else if(get.tag(event.card,'respondShan')){
if(player.countCards('h',{name:'shan'})==0){
return true;
}
}
else if(get.tag(event.card,'damage')){
if(event.card.name=='shuiyanqijunx') return player.countCards('e')==0;
return true;
}
}
return false;
},
filter:function(event,player){
return player!=event.player&&event.player.countDiscardableCards(player,'he')>0;
},
content:function(){
player.discardPlayerCard(trigger.player,true,'he',[1,2]);
player.loseHp();
},
},
spduyi:{
enable:'phaseUse',
usable:1,
content:function(){
'step 0'
event.card=get.cards()[0];
game.cardsGotoOrdering(event.card);
player.showCards(event.card);
'step 1'
player.chooseTarget('令一名角色获得'+get.translation(card),true).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(_status.event.du){
if(target.hasSkillTag('nodu')) return 0;
return -att;
}
if(att>0){
if(target==player) att*=0.6;
return att+Math.sqrt(Math.max(0,5-target.countCards('h')));
}
return att;
}).set('du',card.name=='du');
'step 2'
if(result&&result.bool){
var target=result.targets[0];
target.gain(card,'gain2');
if(get.color(card,false)=='black') target.addTempSkill('spduyi2');
}
},
ai:{
order:0.1,
result:{
player:1,
},
},
},
spduyi2:{
mod:{
cardEnabled2:function(card){
if(get.position(card)=='h') return false;
},
},
mark:true,
intro:{
content:'不能使用或打出手牌',
},
},
spcangni:{
audio:'zhuikong',
trigger:{player:'phaseDiscardBegin'},
direct:true,
content:function(){
'step 0'
player.chooseDrawRecover('###'+get.prompt('spcangni')+'###摸两张牌或回复1点体力然后将武将牌翻面',2).set('ai',function(){
return 'cancel2';
}).logSkill='spcangni';
'step 1'
if(result.control!='cancel2') player.turnOver();
},
group:['spcangni_gain','spcangni_lose'],
subSkill:{
gain:{
audio:'zhuikong',
trigger:{
player:'gainAfter',
global:'loseAsyncAfter',
},
usable:1,
filter:function(event,player){
return player.isTurnedOver()&&player!=_status.currentPhase&&event.getg(player).length>0;
},
check:function(event,player){
return get.attitude(player,_status.currentPhase)>0;
},
logTarget:function(){
return _status.currentPhase;
},
prompt2:'令该角色摸一张牌',
content:function(){
_status.currentPhase.draw();
},
},
lose:{
audio:'zhuikong',
trigger:{
player:'loseAfter',
global:['equipAfter','addJudgeAfter','gainAfter','loseAsyncAfter','addToExpansionAfter'],
},
filter:function(event,player){
if(event.name=='gain'&&player==event.player) return false;
var evt=event.getl(player);
if(!evt||!evt.cards2||!evt.cards2.length) return false;
return player.isTurnedOver()&&player!=_status.currentPhase&&_status.currentPhase.countCards('he')>0;
},
check:function(event,player){
var target=_status.currentPhase;
var att=get.attitude(player,target);
if(target.countCards('e',function(card){
return get.value(card,target)<=0;
})) return att>0;
return att<0;
},
logTarget:function(){
return _status.currentPhase;
},
prompt2:'令该角色弃置一张牌',
content:function(){
_status.currentPhase.chooseToDiscard('he',true);
},
},
},
},
spmixin:{
audio:'qiuyuan',
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('h')>0&&game.countPlayer()>2;
},
filterCard:true,
filterTarget:lib.filter.notMe,
position:'h',
selectTarget:2,
targetprompt:['拿牌打人','被打'],
multitarget:true,
delay:false,
discard:false,
lose:false,
check:function(card){
if(card.name=='sha') return 4;
return 4-get.value(card);
},
content:function(){
'step 0'
player.give(cards,targets[0]);
'step 1'
if(!targets[0].isAlive()||!targets[1].isAlive()){
event.finish();
return;
}
targets[0].chooseToUse(function(card,player,event){
if(get.name(card)!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},'密信:对'+get.translation(targets[1])+'使用一张【杀】,或令其观看并获得你的一张手牌').set('complexSelect',true).set('filterTarget',function(card,player,target){
if(target!=_status.event.sourcex&&!ui.selected.targets.contains(_status.event.sourcex)) return false;
return lib.filter.targetEnabled.apply(this,arguments);
}).set('sourcex',targets[1]);
'step 2'
if(!result.bool&&targets[0].countCards('h')) targets[1].gainPlayerCard(targets[0],'visible','h',true);
},
ai:{
order:1,
expose:0.1,
result:{
target:function(player,target){
var card=ui.selected.cards[0];
if(!card) return 0;
if(ui.selected.targets.length==0){
if(card.name=='sha'||target.hasSha()) return 2;
if(get.value(card,target)<0) return -2;
return 0;
}
var target1=ui.selected.targets[0];
if((card.name=='sha'||target1.hasSha())&&get.effect(target,{name:'sha'},target1,target1)>0) return get.effect(target,{name:'sha'},target1,target);
return 1.5;
},
},
},
},
spfengyin:{
audio:'moukui',
trigger:{global:'phaseZhunbeiBegin'},
direct:true,
filter:function(event,player){
return player!=event.player&&event.player.hp>=player.hp&&player.countCards('h',function(card){
if(_status.connectMode) return true;
return get.name(card,player)=='sha';
})>0;
},
content:function(){
'step 0'
player.chooseCard('h',get.prompt('spfengyin',trigger.player),'交给该角色一张【杀】并令其跳过出牌阶段和弃牌阶段',function(card,player){
return get.name(card,player)=='sha';
}).set('ai',function(card){
if(_status.event.goon) return 5-get.value(card);
return 0;
}).set('goon',function(){
if(get.attitude(player,trigger.player)>=0) return false;
if(trigger.player.countCards('hs')<trigger.player.hp) return false;
return true;
}());
'step 1'
if(result.bool){
var target=trigger.player;
player.logSkill('spfengyin',target);
player.give(result.cards,target,'give');
target.skip('phaseUse');
target.skip('phaseDiscard');
}
},
},
spchizhong:{
mod:{
maxHandcardBase:function(player,num){
return player.maxHp;
},
},
trigger:{global:'dieAfter'},
forced:true,
content:function(){
player.gainMaxHp();
},
},
//宗预
zyqiao:{
audio:2,
@ -11887,7 +11769,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
shuimeng:{
audio:true,
audio:2,
trigger:{player:'phaseUseAfter'},
direct:true,
filter:function(event,player){
@ -16677,62 +16559,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
combo:'jieyuan'
}
},
fenxin_old:{
mode:['identity'],
trigger:{source:'dieBegin'},
init:function(player){
player.storage.fenxin=false;
},
intro:{
content:'limited'
},
skillAnimation:'epic',
animationColor:'fire',
unique:true,
limited:true,
audio:2,
mark:true,
filter:function(event,player){
if(player.storage.fenxin) return false;
return event.player.identity!='zhu'&&player.identity!='zhu'&&
player.identity!='mingzhong'&&event.player.identity!='mingzhong';
},
check:function(event,player){
if(player.identity==event.player.identity) return Math.random()<0.5;
var stat=get.situation();
switch(player.identity){
case 'fan':
if(stat<0) return false;
if(stat==0) return Math.random()<0.6;
return true;
case 'zhong':
if(stat>0) return false;
if(stat==0) return Math.random()<0.6;
return true;
case 'nei':
if(event.player.identity=='fan'&&stat<0) return true;
if(event.player.identity=='zhong'&&stat>0) return true;
if(stat==0) return Math.random()<0.7;
return false;
}
},
prompt:function(event,player){
return '焚心:是否与'+get.translation(event.player)+'交换身份?';
},
content:function(){
game.broadcastAll(function(player,target,shown){
var identity=player.identity;
player.identity=target.identity;
if(shown||player==game.me){
player.setIdentity();
}
target.identity=identity;
},player,trigger.player,trigger.player.identityShown);
player.line(trigger.player,'green');
player.storage.fenxin=true;
player.awakenSkill('fenxin_old');
}
},
xisheng:{
enable:'chooseToUse',
usable:1,
@ -22160,7 +21986,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
guansuo:['guansuo','ol_guansuo'],
zhangxingcai:['zhangxingcai','old_zhangxingcai'],
lisu:['ol_lisu','lisu'],
fuwan:['dc_fuwan','fuwan','sp_fuwan','tw_fuwan'],
fuwan:['fuwan','sp_fuwan','tw_fuwan'],
huaxin:['ol_huaxin','huaxin','sp_huaxin'],
xujing:['xujing','tw_xujing','sp_xujing'],
zhaoxiang:['zhaoxiang','tw_zhaoxiang'],
@ -22184,7 +22010,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
furong:['ol_furong','tw_furong','furong'],
daxiaoqiao:['tw_daxiaoqiao','daxiaoqiao'],
zhugeguo:['tw_zhugeguo','zhugeguo'],
wanglang:['wanglang','ol_wanglang'],
wanglang:['wanglang','ol_wanglang','old_wanglang'],
tengfanglan:['dc_tengfanglan','tengfanglan'],
zhangyì:['ol_zhangyì','zhangyì'],
yuantanyuanshang:['yuantanyuanshang','yuantanyuanxiyuanshang'],
@ -22654,9 +22480,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jieyuan_less:'竭缘',
jieyuan_info:'当你对一名其他角色造成伤害时,若其体力值大于或等于你的体力值,你可弃置一张黑色手牌,令此伤害+1当你受到一名其他角色造成的伤害时若其体力值大于或等于你的体力值你可弃置一张红色手牌令此伤害-1。',
fenxin:'焚心',
fenxin_old:'焚心',
fenxin_info:'锁定技,一名其他角色死亡后,若其身份为:忠臣,你本局内发动〖竭缘〗减少伤害时无视体力值限制;反贼,你本局内发动〖竭缘〗增加伤害时无视体力值限制;内奸,你本局内选择发动〖竭缘〗的牌时无颜色和区域限制。',
fenxin_old_info:'限定技,当你杀死一名非主公角色时,你可以与其交换未翻开的身份牌。(你的身份为主公时不能发动此技能)',
qingyi:'轻逸',
qingyi1:'轻逸',
qingyi2:'轻逸',
@ -22958,22 +22782,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chengshang:'承赏',
chengshang_info:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得所有与此牌花色点数相同的牌。',
chengshang_info_guozhan:'当你于出牌阶段内使用的牌结算完成后,若此牌未造成过伤害且此牌的目标包含其他角色且你本阶段内未因〖承赏〗获得过牌,则你可以从牌堆中获得所有与此牌花色点数相同的牌。',
sp_fuwan:'SP伏完',
spfengyin:'奉印',
spfengyin_info:'其他角色的回合开始时,若其体力值不少于你,你可以交给其一张【杀】,令其跳过出牌阶段和弃牌阶段。',
spchizhong:'持重',
spchizhong_info:'锁定技你的手牌上限等于体力上限其他角色死亡时你加1点体力上限。',
sp_fuhuanghou:'SP伏寿',
spcangni:'藏匿',
spcangni_info:'弃牌阶段开始时你可以回复1点体力或摸两张牌然后将你的武将牌翻面其他角色的回合内当你获得每回合限一次/失去一次牌时,若你的武将牌背面朝上,你可以令该角色摸/弃置一张牌。',
spmixin:'密信',
spmixin_info:'出牌阶段限一次,你可以将一张手牌交给一名其他角色,该角色须对你选择的另一名角色使用一张无距离限制的【杀】,否则你选择的角色观看其手牌并获得其中一张。',
sp_jiben:'SP吉本',
spduanzhi:'断指',
spduanzhi_info:'当你成为其他角色使用的牌的目标后你可以弃置其至多两张牌然后失去1点体力。',
spduyi:'毒医',
spduyi2:'毒医',
spduyi_info:'出牌阶段限一次,你可以亮出牌堆顶的一张牌并交给一名角色,若此牌为黑色,该角色不能使用或打出手牌,直到回到结束。',
panshu:'潘淑',
weiyi:'威仪',
weiyi_info:'每名角色限一次。当有角色受到伤害后你可选择①若其体力值不小于你则其失去1点体力。②若其体力值不大于你且其已受伤则其回复1点体力。',
@ -23276,6 +23084,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olzhuyan_info:'每名角色每项各限一次。结束阶段你可以令一名角色将以下一项调整至与其上一个准备阶段结束后相同1.体力值2.手牌数体力值至多失去至1手牌数至多摸至5若其未执行过准备阶段则改为游戏开始时。',
olleijie:'雷劫',
olleijie_info:'准备阶段你可以令一名角色判定若结果为♠2~9其受到2点雷电伤害否则其摸两张牌。',
ol_liuyan:'OL刘焉',
olpianan:'偏安',
olpianan_info:'锁定技。游戏开始或弃牌阶段结束时你弃置所有不为【闪】的手牌没有则不弃。若你的手牌数小于体力值你获得牌堆或弃牌堆中的前X张【闪】X为你的体力值与手牌数的差。',
olyinji:'殷积',
olyinji_info:'锁定技。结束阶段若你的体力值不为唯一最大你选择回复1点体力或加1点体力上限。',
olkuisi:'窥伺',
olkuisi_info:'锁定技。摸牌阶段开始时你跳过此阶段然后观看牌堆顶的四张牌并可以使用其中任意张。若你以此法使用的牌数不为2或3你减1点体力上限。',
ol_wanglang:'OL王朗',
oljici:'激词',
oljici_info:'当你的拼点牌亮出后若点数不大于X你可令点数+X并令〖鼓舌〗视为未发动过X为你的“饶舌”标记数。',
sp_tianji:'天极·皇室宗亲',
sp_sibi:'四弼·辅国文曲',
@ -23287,7 +23105,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_default:"天同·同名异势",
sp_qifu:'灯愿·祈福武将',
sp_wanglang:'八萬·饶舌凤鹛',
sp_tongque:"铜雀台",
sp_zhongdan:"忠胆英杰",
sp_guozhan:"国战",
sp_guozhan2:"国战移植",

File diff suppressed because it is too large Load Diff

View File

@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
tw:{
tw_sp:['tw_fuwan','tw_yujin','tw_zhaoxiang','tw_hucheer','tw_hejin','tw_mayunlu','tw_re_caohong','tw_zangba','tw_liuhong','tw_tianyu','jiachong','duosidawang','wuban','yuejiu','tw_caocao','tw_zhangmancheng','tw_caozhao','tw_wangchang','tw_puyangxing','tw_jiangji','tw_niujin','tw_xiahouen','tw_xiahoushang','tw_zhangji','tw_zhangnan','tw_fengxí','tw_furong','tw_liwei','tw_yangyi','tw_daxiaoqiao','tw_dengzhi','tw_baoxin','tw_bingyuan','tw_fanchou','tw_haomeng','tw_huchuquan','tw_jianshuo','tw_jiling','tw_liufuren','tw_liuzhang','tw_mateng','tw_niufudongxie','tw_qiaorui','tw_weixu','tw_yanxiang','tw_yufuluo','tw_zhangning','tw_dengzhi','tw_yangyi'],
tw_sp:['tw_fuwan','tw_yujin','tw_zhaoxiang','tw_hucheer','tw_hejin','tw_mayunlu','tw_re_caohong','tw_zangba','tw_liuhong','tw_tianyu','jiachong','duosidawang','wuban','yuejiu','tw_caocao','tw_zhangmancheng','tw_caozhao','tw_wangchang','tw_puyangxing','tw_jiangji','tw_niujin','tw_xiahouen','tw_xiahoushang','tw_zhangji','tw_zhangnan','tw_fengxí','tw_furong','tw_liwei','tw_yangyi','tw_daxiaoqiao','tw_dengzhi','tw_baoxin','tw_bingyuan','tw_fanchou','tw_haomeng','tw_huchuquan','tw_jianshuo','tw_jiling','tw_liufuren','tw_liuzhang','tw_mateng','tw_niufudongxie','tw_qiaorui','tw_weixu','tw_yanxiang','tw_yufuluo','tw_zhangning','tw_dengzhi','tw_yangyi','tw_yangang','tw_gongsunfan'],
tw_yunchouzhi:['tw_wangcan','tw_dongzhao','tw_bianfuren','tw_feiyi','tw_chenzhen','tw_xunchen'],
tw_yunchouxin:['tw_wangling','tw_huojun','tw_wujing','tw_zhouchu'],
tw_yunchouren:['tw_xujing','tw_qiaogong'],
@ -19,64 +19,66 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
xia_xiahouzie:['female','qun','3/4',['twxuechang','twduoren'],[]],
xia_zhaoe:['female','qun',3,['twyanshi','twrenchou'],[]],
xia_lusu:['male','qun',4,['twkaizeng','twyangming'],[]],
xia_dianwei:['male','qun',4,['twliexi','twshezhong'],[]],
tw_bingyuan:['male','qun',3,['twbingde','twqingtao'],[]],
tw_niufudongxie:['double','qun',4,['twjuntun','twxiongxi','twxiafeng'],[]],
tw_jianshuo:['male','qun',6,['twkunsi'],[]],
tw_jiangji:['male','wei',3,['twjichou','twjilun'],[]],
tw_mateng:['male','qun',4,['mashu','twxiongzheng','twluannian'],['zhu',]],
tw_baoxin:['male','qun',4,['twmutao','twyimou'],[]],
tw_liufuren:['female','qun',3,['twzhuidu','twshigong'],[]],
tw_yufuluo:['male','qun',6,['twjiekuang','twneirao'],[]],
tw_fengxí:['male','shu',4,['twqingkou'],[]],
tw_zhangji:['male','wei',3,['twdingzhen','twyouye'],[]],
tw_zhangnan:['male','shu',4,['twfenwu'],[]],
tw_huchuquan:['male','qun',4,['twfupan'],[]],
tw_liwei:['male','shu',4,['twjiaohua'],[]],
tw_yanxiang:['male','qun',3,['twkujian','twruilian'],[]],
tw_xiahouen:['male','wei',5,['twfujian','twjianwei'],[]],
tw_xiahoushang:['male','wei',4,['twtanfeng'],[]],
tw_qiaorui:['male','qun',5,['twxiawei','twqiongji'],[]],
tw_haomeng:['male','qun',4,['twgongge'],[]],
tw_weixu:['male','qun',4,['twsuizheng','twtuidao'],[]],
xia_xushu:['male','qun',4,['twjiange','twxiawang'],[]],
xia_wangyue:['male','qun',4,['twyulong','twjianming'],[]],
xia_liyàn:['male','qun',4,['twzhenhu','twlvren'],[]],
xia_tongyuan:['male','qun',4,['twchaofeng','twchuanshu'],[]],
tw_zhangning:['female','qun',3,['twxingzhui','twjuchen'],[]],
tw_yangyi:['male','shu',3,['duoduan','twgongsun'],[]],
tw_dengzhi:['male','shu',3,['twjimeng','shuaiyan'],[]],
tw_gongsunfan:['male','qun',4,['twhuiyuan','twshoushou']],
tw_yangang:['male','qun',4,['twzhiqu','twxianfeng']],
xia_xiahouzie:['female','qun','3/4',['twxuechang','twduoren']],
xia_zhaoe:['female','qun',3,['twyanshi','twrenchou']],
xia_lusu:['male','qun',4,['twkaizeng','twyangming']],
xia_dianwei:['male','qun',4,['twliexi','twshezhong']],
tw_bingyuan:['male','qun',3,['twbingde','twqingtao']],
tw_niufudongxie:['double','qun',4,['twjuntun','twxiongxi','twxiafeng']],
tw_jianshuo:['male','qun',6,['twkunsi']],
tw_jiangji:['male','wei',3,['twjichou','twjilun']],
tw_mateng:['male','qun',4,['mashu','twxiongzheng','twluannian'],['zhu']],
tw_baoxin:['male','qun',4,['twmutao','twyimou']],
tw_liufuren:['female','qun',3,['twzhuidu','twshigong']],
tw_yufuluo:['male','qun',6,['twjiekuang','twneirao']],
tw_fengxí:['male','shu',4,['twqingkou']],
tw_zhangji:['male','wei',3,['twdingzhen','twyouye']],
tw_zhangnan:['male','shu',4,['twfenwu']],
tw_huchuquan:['male','qun',4,['twfupan']],
tw_liwei:['male','shu',4,['twjiaohua']],
tw_yanxiang:['male','qun',3,['twkujian','twruilian']],
tw_xiahouen:['male','wei',5,['twfujian','twjianwei']],
tw_xiahoushang:['male','wei',4,['twtanfeng']],
tw_qiaorui:['male','qun',5,['twxiawei','twqiongji']],
tw_haomeng:['male','qun',4,['twgongge']],
tw_weixu:['male','qun',4,['twsuizheng','twtuidao']],
xia_xushu:['male','qun',4,['twjiange','twxiawang']],
xia_wangyue:['male','qun',4,['twyulong','twjianming']],
xia_liyàn:['male','qun',4,['twzhenhu','twlvren']],
xia_tongyuan:['male','qun',4,['twchaofeng','twchuanshu']],
tw_zhangning:['female','qun',3,['twxingzhui','twjuchen']],
tw_yangyi:['male','shu',3,['duoduan','twgongsun']],
tw_dengzhi:['male','shu',3,['twjimeng','shuaiyan']],
tw_wangling:['male','wei',4,['twmibei','twxingqi'],['clan:太原王氏']],
tw_zhugeguo:['female','shu',3,['twqirang','twyuhua'],[]],
tw_fanchou:['male','qun',4,['twxingluan'],[]],
tw_xujing:['male','shu',3,['twboming','twejian'],[]],
tw_zhangfei:['male','shu',4,['new_repaoxiao','twxuhe'],[]],
tw_xuezong:['male','wu',3,['funan','twjiexun'],[]],
tw_xunchen:['male','qun',3,['twweipo','mjchenshi','twmouzhi'],[]],
tw_jiangqing:['male','wu',4,['twshangyi','twxiangyu'],[]],
tw_guyong:['male','wu',3,['twgyshenxing','twbingyi'],[]],
tw_chendong:['male','wu',4,['twyilie','twfenming'],[]],
tw_handang:['male','wu',4,['twgongji','twjiefan'],[]],
tw_jiling:['male','qun',4,['twshuangren'],[]],
tw_re_fazheng:['male','shu',3,['twxuanhuo','twenyuan'],[]],
tw_madai:['male','shu',4,['mashu','twqianxi'],[]],
tw_niujin:['male','wei',4,['twcuorui','twliewei'],[]],
tw_guanqiujian:['male','wei',3,['twzhengrong','twhongju'],[]],
tw_daxiaoqiao:['female','wu',3,['twxingwu','twpingting'],[]],
tw_furong:['male','shu',4,['twxuewei','twliechi'],[]],
tw_yl_luzhi:['male','qun',3,['twmingren','twzhenliang'],[]],
tw_liuzhang:['male','qun',3,['jutu','twyaohu','rehuaibi'],[]],
tw_zongyu:['male','shu',3,['twzhibian','twyuyan'],[]],
tw_zhouchu:['male','wu',4,['twguoyi','twchuhai'],[]],
tw_qiaogong:['male','wu',3,['twyizhu','twluanchou'],[]],
tw_feiyi:['male','shu',3,['twshengxi','twkuanji'],[]],
tw_bianfuren:['female','wei',3,['twwanwei','twyuejian'],[]],
tw_chenzhen:['male','shu',3,['twmuyue','twchayi'],[]],
tw_caoxiu:['male','wei',4,['twqianju','twqingxi'],[]],
tw_sunyi:['male','wu',4,['twzaoli'],[]],
tw_zhugeguo:['female','shu',3,['twqirang','twyuhua']],
tw_fanchou:['male','qun',4,['twxingluan']],
tw_xujing:['male','shu',3,['twboming','twejian']],
tw_zhangfei:['male','shu',4,['new_repaoxiao','twxuhe']],
tw_xuezong:['male','wu',3,['funan','twjiexun']],
tw_xunchen:['male','qun',3,['twweipo','mjchenshi','twmouzhi']],
tw_jiangqing:['male','wu',4,['twshangyi','twxiangyu']],
tw_guyong:['male','wu',3,['twgyshenxing','twbingyi']],
tw_chendong:['male','wu',4,['twyilie','twfenming']],
tw_handang:['male','wu',4,['twgongji','twjiefan']],
tw_jiling:['male','qun',4,['twshuangren']],
tw_re_fazheng:['male','shu',3,['twxuanhuo','twenyuan']],
tw_madai:['male','shu',4,['mashu','twqianxi']],
tw_niujin:['male','wei',4,['twcuorui','twliewei']],
tw_guanqiujian:['male','wei',3,['twzhengrong','twhongju']],
tw_daxiaoqiao:['female','wu',3,['twxingwu','twpingting']],
tw_furong:['male','shu',4,['twxuewei','twliechi']],
tw_yl_luzhi:['male','qun',3,['twmingren','twzhenliang']],
tw_liuzhang:['male','qun',3,['jutu','twyaohu','rehuaibi']],
tw_zongyu:['male','shu',3,['twzhibian','twyuyan']],
tw_zhouchu:['male','wu',4,['twguoyi','twchuhai']],
tw_qiaogong:['male','wu',3,['twyizhu','twluanchou']],
tw_feiyi:['male','shu',3,['twshengxi','twkuanji']],
tw_bianfuren:['female','wei',3,['twwanwei','twyuejian']],
tw_chenzhen:['male','shu',3,['twmuyue','twchayi']],
tw_caoxiu:['male','wei',4,['twqianju','twqingxi']],
tw_sunyi:['male','wu',4,['twzaoli']],
tw_puyangxing:['male','wu',4,['twzhengjian','twzhongchi']],
tw_tianyu:['male','wei',4,['twzhenxi','twyangshi']],
old_quancong:['male','wu',4,['zhenshan']],
@ -153,6 +155,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xin_guyong:'为蔡邕之徒。其为人少言语,不饮酒,严厉正大,被张纮推荐仕于孙权。孙权任命他为会稽郡丞,行太守事,后不断升迁,官至吴国丞相。顾雍为官,多进良言,有功于吴。',
zhaoe:'赵娥东汉酒泉郡禄福县即肃州人。丈夫庞子夏表氏县今高台县人。庞子夏去世后赵娥在禄福县抚养其子庞淯。她的父亲被李寿杀死。灵帝光和二年公元179年二月上旬的一天早晨赵娥在都亭前与李寿相遇她奋力挥刀杀死了李寿随后到了都亭尊长的面前认罪伏法。后来凉州刺史周洪、酒泉太守刘班等人共同上表朝廷禀奏赵娥的烈义行为刻石立碑显其赵家门户。黄门侍郎梁宽还著书追述赵娥的事迹为其作传。西晋政治家傅玄为其作《秦女休行》诗加以赞美。',
xiahouzie:'夏侯紫萼,游卡桌游《三国杀阵面对决》中虚构的人物。幼年因天天帮病种的母亲采紫萼得其名。亲眼目睹母亲被宦官所杀,愤怒之下夺过佩剑斩下宦官的头颅。被神秘人所救,发现了自己的身世,决心与宦官争斗到底。后再闯荡江湖的过程中,与夏侯惇义结金兰,以夏侯家姓氏称呼。',
yangang:'严纲163~191年东汉末年公孙瓒部下的冀州刺史。汉献帝初平二年191年袁绍与公孙瓒在界桥交战严纲为袁绍部下麹义所斩。',
gongsunfan:'公孙范辽西令支今河北迁安人。东汉末年武将公孙瓒从弟官至勃海太守。公孙瓒起兵攻打袁绍之时袁绍畏惧公孙瓒的势力将自己的勃海太守印绶给予公孙范意图和解结果公孙范反而起勃海之兵帮助公孙瓒。初平二年191年公孙范以勃海兵助公孙瓒率二万人大破青、徐黄巾军。最后于界桥之战与公孙瓒一同败走。',
},
card:{
dz_mantianguohai:{
@ -266,6 +270,251 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//公孙范
twhuiyuan:{
audio:2,
trigger:{player:'useCardAfter'},
filter:function(event,player){
var evt=event.getParent('phaseUse');
if(!evt||evt.player!=player) return false;
var type=get.type2(event.card);
return !player.hasHistory('gain',evtx=>{
if(evtx.getParent('phaseUse')!=evt) return false;
return evtx.cards.some(card=>get.type2(card)==type);
});
},
direct:true,
content:function(){
'step 0'
var prompt2='展示一名角色的一张手牌。若展示牌为'+get.translation(get.type2(trigger.card))+'牌则你获得之否则其弃置之并摸一张牌。然后若其在你的攻击范围内且你不在其攻击范围内你对其造成1点伤害';
player.chooseTarget(get.prompt('twhuiyuan'),prompt2,(card,player,target)=>{
return target.countCards('h');
}).set('ai',target=>{
var player=_status.event.player;
var att=get.attitude(player,target);
return -att+(player.inRange(target)&&!target.inRange(player)?get.damageEffect(target,player,player)/3:0);
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('twhuiyuan',target);
player.choosePlayerCard(target,'h',true,'回援:展示'+get.translation(target)+'一张手牌');
}
else event.finish();
'step 2'
if(result.bool){
var card=result.cards[0];
target.showCards([card],get.translation(target)+'【回援】展示');
if(get.type2(card)==get.type2(trigger.card)){
if(lib.filter.canBeGained(card,target,player)){
player.gain(card,target,'giveAuto','bySelf');
}
}
else{
if(lib.filter.canBeDiscarded(card,target,player)){
target.discard(card,'notBySelf');
}
}
}
else event.finish();
'step 3'
if(player.inRange(target)&&!target.inRange(player)){
game.log(player,'触发了','#y搏击','效果');
player.line(target);
target.damage();
}
},
ai:{
expose:0.2,
threaten:3,
}
},
twshoushou:{
audio:2,
trigger:{
player:'gainAfter',
global:'loseAsyncAfter',
},
filter:function(event,player){
var cards=event.getg(player);
if(!cards.length) return false;
return game.hasPlayer(current=>{
return event.getl(current).cards2.length;
})&&game.hasPlayer(current=>{
return current.inRange(player);
});
},
forced:true,
locked:false,
group:'twshoushou_damage',
onremove:function(player){
if(player.countMark('twshoushou_plus')-player.countMark('twshoushou_minus')==0){
player.removeSkill('twshoushou_distance');
}
},
content:function(){
player.addSkill('twshoushou_distance');
player.addMark('twshoushou_plus',1,false);
},
ai:{
halfneg:true,
},
subSkill:{
damage:{
trigger:{
player:'damageEnd',
source:'damageSource'
},
filter:function(event,player){
return game.hasPlayer(current=>{
return current!=player&&!current.inRange(player);
});
},
forced:true,
locked:false,
content:function(){
player.addSkill('twshoushou_distance');
player.addMark('twshoushou_minus',1,false);
}
},
distance:{
mark:true,
marktext:'绶',
intro:{
markcount:function(storage,player){
return player.countMark('twshoushou_plus')-player.countMark('twshoushou_minus');
},
content:function(storage,player){
var dis=player.countMark('twshoushou_plus')-player.countMark('twshoushou_minus');
return '其他角色至你的距离'+(dis>=0?'+':'')+dis;
}
},
mod:{
globalTo:function(from,to,distance){
return distance+to.countMark('twshoushou_plus')-to.countMark('twshoushou_minus');
}
}
}
}
},
//严纲
twzhiqu:{
audio:2,
trigger:{player:'phaseJieshuBegin'},
direct:true,
content:function(){
'step 0'
var count=game.countPlayer(current=>{
return get.distance(player,current)<=1;
});
player.chooseTarget(get.prompt('twzhiqu'),'选择一名其他角色并视为使用牌堆顶'+count+'张牌中的【杀】。若你与其均在对方的攻击范围内,你改为依次对其使用牌堆顶'+count+'张牌中的【杀】或锦囊牌。',lib.filter.notMe).set('ai',target=>{
var player=_status.event.player;
return get.effect(target,{name:'sha'},player,player)*(get.distance(player,target)==1?2:1);
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('twzhiqu',target);
event.fight=player.inRange(target)&&target.inRange(player);
if(event.fight) game.log(player,'触发了','#y搏击','效果');
event.cards=game.cardsGotoOrdering(get.cards(game.countPlayer(current=>{
return get.distance(player,current)<=1;
}))).cards.slice();
}
else event.finish();
'step 2'
if(player.isIn()&&target.isIn()&&cards.length){
do var card=cards.shift();
while(get.name(card)=='sha'||event.fight&&get.type2(card)=='trick');
if(!card) return;
player.chooseUseTarget(card,true,false,'nodistance').set('filterTarget',function(card,player,target){
var evt=_status.event;
if(_status.event.name=='chooseTarget') evt=evt.getParent();
if(target!=player&&target!=evt.twzhiqu_target) return false;
return lib.filter.targetEnabledx(card,player,target);
}).set('twzhiqu_target',target);
event.redo();
}
}
},
twxianfeng:{
audio:2,
trigger:{source:'damageSource'},
filter:function(event,player){
if(!player.isPhaseUsing()) return false;
if(player==event.player) return false;
return event.card.name=='sha'||get.type(event.card)=='trick'&&get.tag(event.card,'damage');
},
logTarget:'player',
content:function(){
'step 0'
var target=trigger.player;
event.target=target;
target.chooseControl().set('choiceList',[
'你摸一张牌,然后直到'+get.translation(player)+'下个回合开始时,其至其他角色的距离-1',
get.translation(player)+'摸一张牌,然后直到其下个回合开始时,你至其的距离-1',
]).set('prompt','先锋:请选择一项').set('ai',()=>{
return _status.event.choice;
}).set('choice',function(){
var att=get.attitude(target,player);
if(att==0) return 0;
if(player.hasSkill('twzhiqu')){
var cnt=game.countPlayer(current=>get.distance(player,current)==2);
if(cnt>=2){
if(att<0) return 1;
return 0;
}
if(att<0&&cnt>=2||att>0&&!cnt) return 1;
return 0;
}
else{
if(att<0) return 0;
return [0,1].randomGet();
}
}());
'step 1'
if(result.index==0){
target.draw();
player.addTempSkill('twxianfeng_me',{player:'phaseBegin'});
}
else{
player.draw();
target.addTempSkill('twxianfeng_others');
target.markAuto('twxianfeng_others',[player]);
}
},
subSkill:{
me:{
charlotte:true,
mark:true,
intro:{content:'至其他角色的距离-1'},
mod:{
globalFrom:function(from,to,distance){
return distance-1;
}
}
},
others:{
trigger:{global:['phaseBegin','die']},
filter:function(event,player){
return player.getStorage('twxianfeng_others').contains(event.player);
},
charlotte:true,
mark:true,
intro:{content:'至$的距离-1'},
content:function(){
player.unmarkAuto('twxianfeng_others',[trigger.player]);
},
mod:{
globalFrom:function(from,to,distance){
if(from.getStorage('twxianfeng_others').contains(to)) return distance-1;
}
}
},
}
},
//夏侯紫萼
twxuechang:{
audio:2,
@ -6415,7 +6664,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
logTarget:'player',
content:function(){
trigger.cancel();
player.damage(trigger.source,trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards).twgonghuan=true;
target.damage(trigger.source?trigger.source:'nosource',trigger.nature,trigger.num).set('card',trigger.card).set('cards',trigger.cards).twgonghuan=true;
},
},
//桥蕤
@ -13646,6 +13895,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
twxuechang_info:'出牌阶段限一次。你可以与一名其他角色拼点。若你你获得其一张牌若此牌为装备牌你视为对其使用一张【杀】没赢其对你造成1点伤害且你下次对其造成的伤害+1。',
twduoren:'夺刃',
twduoren_info:'①当你杀死角色后你可以减1点体力上限然后获得其所有的非主公技和非隐匿技。②当你令其他角色进入濒死状态时你失去因〖夺刃①〗获得的技能。',
tw_yangang:'严纲',
twzhiqu:'直取',
twzhiqu_info:'结束阶段你可以选择一名其他角色并依次使用牌堆顶X张牌中的【杀】。搏击依次使用牌堆顶X张牌中的锦囊牌X为你距离不大于1内的角色数且你或其以外的角色不是你以此法使用牌的合法目标。',
twxianfeng:'先锋',
twxianfeng_info:'当你于出牌阶段使用【杀】或伤害类锦囊牌对其他角色造成伤害后你可以令受伤角色选择一项1.其摸一张牌,然后直到你下个回合开始时,你至其他角色的距离-12.你摸一张牌,然后直到你下个回合开始时,其至你的距离-1。',
tw_gongsunfan:'公孙范',
twhuiyuan:'回援',
twhuiyuan_info:'当你于出牌阶段使用牌结算结束后若你未于此阶段获得过此类型的牌你可以展示一名角色的一张手牌若此牌与你使用的牌类型相同你获得此牌否则你弃置此牌然后其摸一张牌。游击对其造成1点伤害。',
twshoushou:'收绶',
twshoushou_info:'①当你获得其他角色的牌时,若你在任意角色的攻击范围内,其他角色至你的距离+1。②当你造成或受到伤害后若你不在任意其他角色的攻击范围内其他角色至你的距离-1。',
tw_mobile:'海外服·稀有专属',
tw_yunchouzhi:'运筹帷幄·智',

View File

@ -1484,7 +1484,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_taishici:['re_sp_taishici','sp_taishici'],
mazhong:['mazhong','re_mazhong'],
wenpin:['re_wenpin','wenpin'],
liuyan:['jsrg_liuyan','liuyan'],
liuyan:['jsrg_liuyan','ol_liuyan','liuyan'],
},
translate:{
xinghuoliaoyuan:'星火燎原',
@ -1563,7 +1563,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"xinfu_tushe":"图射",
"xinfu_tushe_info":"当你使用非装备牌指定目标后若你没有基本牌则你可以摸X张牌。X为此牌指定的目标数",
"xinfu_limu":"立牧",
"xinfu_limu_info":"出牌阶段限一次你可以将一张♦牌当做【乐不思蜀】对自己使用然后回复1点体力。只要你的判定区内有牌你对攻击范围内的其他角色使用牌便没有次数和距离限制。",
"xinfu_limu_info":"出牌阶段你可以将一张♦牌当做【乐不思蜀】对自己使用然后回复1点体力。只要你的判定区内有牌你对攻击范围内的其他角色使用牌便没有次数和距离限制。",
xinyingshi:'应势',
xinyingshi_info:'出牌阶段开始时,若场上所有角色的武将牌上均没有“酬”,则你可以将任意张牌置于一名角色的武将牌上,称为“酬”。若如此做:当有角色使用牌对有“酬”的角色造成伤害后,其可以获得一张“酬”,并获得牌堆中所有与“酬”花色点数均相同的牌;有“酬”的角色死亡时,你获得其所有“酬”。',
},

Some files were not shown because too many files have changed in this diff Show More