Merge pull request #999 from mengxinzxz/PR-Branch

技能修改+国战转身份武将
This commit is contained in:
Spmario233 2024-02-29 09:26:04 +08:00 committed by GitHub
commit 6693d1c000
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
9 changed files with 268 additions and 108 deletions

View File

@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'huicui',
connect:true,
character:{
zangba:['male','wei',4,['rehengjiang']],
dc_simashi:['male','wei',3,['dcsanshi','dczhenrao','dcchenlve']],
dc_wangling:['male','wei',4,['dcjichou','dcmouli'],['clan:太原王氏']],
dc_jiangji:['male','wei',3,['dcshiju','dcyingshi']],
@ -108,7 +109,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie','dc_caiyang','zhoushan'],
sp_caizijiaren:['dc_kongrong','re_dongbai','re_sunluyu','heyan','zhaoyan','wangtao','wangyue','zhangxuan','tengyin','zhangyao','xiahoulingnv','dc_sunru','pangshanmin','kuaiqi'],
sp_zhilan:['dc_liuli','liuyong','wanniangongzhu','zhanghu','lvlingqi','tenggongzhu','panghui','dc_zhaotongzhaoguang','yuantanyuanxiyuanshang','yuechen','dc_lingcao'],
sp_guixin:['re_kanze','re_chendeng','caimaozhangyun','dc_lvkuanglvxiang','dc_gaolan','yinfuren','chengui','chenjiao','dc_sp_jiaxu','qinlang','dc_dongzhao'],
sp_guixin:['zangba','re_kanze','re_chendeng','caimaozhangyun','dc_lvkuanglvxiang','dc_gaolan','yinfuren','chengui','chenjiao','dc_sp_jiaxu','qinlang','dc_dongzhao'],
sp_daihan:['mamidi','dc_jiling','zhangxun','dc_yuejiu','wanglie','leibo','qiaorui','dongwan','yuanyin'],
sp_jianghu:['guanning','huzhao','dc_huangchengyan','mengjie'],
sp_zongheng:['huaxin','luyusheng','re_xunchen','re_miheng','fengxi','re_dengzhi','dc_yanghu','zongyu'],
@ -3675,7 +3676,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
filter:function(event,player){
if(event.dcgue||event.type=='wuxie'||player==_status.currentPhase) return false;
if(!player.countCards('h')||player.hasSkill('dcgue_blocker',null,null,false)) return false;
if(player.hasSkill('dcgue_blocker',null,null,false)) return false;
for(var name of ['sha','shan']){
if(event.filterCard({name:name,isCard:true},player,event)) return true;
}
@ -3707,7 +3708,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 0'
player.logSkill('dcgue');
player.addTempSkill('dcgue_blocker');
player.showHandcards();
if(player.countCards('h')) player.showHandcards();
delete event.result.skill;
'step 1'
if(player.countCards('h',{name:['sha','shan']})>1){
@ -3722,7 +3723,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
prompt:function(links,player){
return '展示所有手牌'+(player.countCards('h',{name:['sha','shan']})<=1?',然后视为使用【'+get.translation(links[0][2])+'】':'');
return (player.countCards?'展示所有手牌':'')+(player.countCards('h',{name:['sha','shan']})<=1?',然后视为使用【'+get.translation(links[0][2])+'】':'');
}
},
subSkill:{blocker:{charlotte:true}},
@ -5871,16 +5872,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dccuijin:{
audio:2,
trigger:{global:'useCard'},
direct:true,
filter:function(event,player){
return event.card.name=='sha'&&(event.player==player||player.inRange(event.player))&&player.countCards('he')>0;
return (event.card.name=='sha'||event.card.name=='juedou')&&(event.player==player||player.inRange(event.player))&&player.countCards('he')>0;
},
direct:true,
content:function(){
'step 0'
if(player!=game.me&&!player.isOnline()) game.delayx();
var target=trigger.player;
event.target=target;
player.chooseToDiscard('he',get.prompt('dccuijin',target),'弃置一张牌并令'+get.translation(trigger.player)+'使用的【杀】伤害+1但若其未造成伤害则你摸张牌并对其造成1点伤害。').set('ai',function(card){
player.chooseToDiscard('he',get.prompt('dccuijin',target),'弃置一张牌并令'+get.translation(trigger.player)+'使用的【杀】伤害+1但若其未造成伤害则你摸张牌并对其造成1点伤害。').set('ai',function(card){
if(_status.event.goon) return 7-get.value(card);
return 0;
}).set('goon',lib.skill.cuijin.checkx(trigger,player)).logSkill=['dccuijin',target];
@ -5938,7 +5939,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
})){
player.logSkill('dccuijin_damage',source);
player.storage.dccuijin_map[card.cardid].remove(target);
player.draw();
player.draw(2);
if(source&&source.isIn()){
player.line(trigger.player,'green');
trigger.player.damage();
@ -12523,7 +12524,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcanliao_info:'出牌阶段限X次X为群势力角色数。你可以重铸一名角色的一张牌。',
dc_yuejiu:'乐就',
dccuijin:'催进',
dccuijin_info:'当你或你攻击范围内的角色使用【杀】时,你可以弃置一张牌,令此【杀】的伤害基数+1。然后当此杀被目标角色抵消或无效或防止伤害后,你摸一张牌,对使用者造成1点伤害。',
dccuijin_info:'当你或你攻击范围内的角色使用【杀】或【决斗】时,你可以弃置一张牌,令此【杀】的伤害基数+1。然后当此牌被目标角色抵消或无效或防止伤害后,你摸两张牌并对使用者造成1点伤害。',
panghui:'庞会',
dcyiyong:'异勇',
dcyiyong_info:'当你对其他角色造成伤害时若你有牌你可以与其同时弃置至少一张牌。若你以此法弃置的牌的点数之和不大于其你摸X张牌不小于其此伤害+1X为其以此法弃置的牌数。',
@ -12621,7 +12622,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcqinghuang_info:'出牌阶段开始时你可以减1点体力上限然后你于本回合发动〖踏寂〗时额外随机执行一种效果。',
dc_huojun:'霍峻',
dcgue:'孤扼',
dcgue_info:'每回合限一次。当你需要于回合外使用或打出【杀】或【闪】时,若你有手牌,你可以展示之。若其中【杀】和【闪】的数量之和不超过1你视为使用或打出此牌。',
dcgue_info:'每回合限一次。当你需要于回合外使用或打出【杀】或【闪】时,你可以发动此技能:你展示所有手牌,若其中【杀】和【闪】的数量之和不超过1你视为使用或打出此牌。',
dcsigong:'伺攻',
dcsigong_info:'其他角色的回合结束时若其于本回合内使用牌被响应过你可以将手牌摸至或弃置至1视为对其使用一张需使用X张【闪】抵消的【杀】且此【杀】的伤害基数+1X为你以此法弃置的牌数且至少为1。当你以此法造成伤害后该技能于本轮失效。',
peiyuanshao:'裴元绍',

View File

@ -11,7 +11,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
offline_yijiang:['ol_xinxianying'],
offline_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"],
offline_yongjian:["ns_chendao","yj_caoang","yj_caocao",'yj_liru','yj_caohong','yj_zhangfei','yongjian_ganning','yj_dongzhuo','yj_xuyou','yj_jiaxu','yj_zhenji'],
offline_piracyE:['shen_jiaxu','pe_wangyun','pe_zhonghui','pe_sunchen','pe_mengda','pe_wenqin','ns_caoanmin','chendong','jiangqing','kongrong','jiling','tianfeng','mateng'],
offline_piracyE:['shen_jiaxu','pe_wangyun','pe_zhonghui','pe_sunchen','pe_mengda','pe_wenqin','ns_caoanmin','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'],
@ -34,7 +34,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tianfeng:['male','qun',3,['sijian','gzsuishi']],
jiling:['male','qun',4,['shuangren']],
kongrong:['male','qun',3,['zymingshi','lirang']],
chendong:['male','wu',4,['duanxie','fenming']],
jiangqing:['male','wu',4,['zyshangyi']],
pk_sp_duyu:['male','qun',4,['pkwuku','pksanchen']],
ps_lvbu:['male','qun',4,['wushuang','pssheji']],
@ -6791,8 +6790,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhangliang_prefix:'SP',
ol_xinxianying:'将辛宪英',
ol_xinxianying_prefix:'将',
chendong:'战役篇陈武董袭',
chendong_prefix:'战役篇',
jiangqing:'战役篇蒋钦',
jiangqing_prefix:'战役篇',
tianfeng:'战役篇田丰',

View File

@ -922,6 +922,9 @@ window.noname_character_rank={
'tw_mayunlu',
'tw_hucheer',
'sp_lvfan',
'lvfan',
'cuimao',
'liqueguosi',
're_chendeng',
'wuyan',
'wangyue',
@ -1644,6 +1647,7 @@ window.noname_character_rank={
'sb_yl_luzhi',
],
d:[
'chendong',
'lvmeng',
'huaxiong',
'gongsunzan',

View File

@ -1421,20 +1421,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
marktext:'破',
intro:{
markcount:function(storage,player){
if(player.isUnderControl(true)) return storage[1].length;
return '?';
markcount:function(storage){
return storage[1].length;
},
mark:function(dialog,content,player){
if(player.isUnderControl(true)){
const storage=player.getStorage('sbkanpo');
const sum=storage[0];
const names=storage[1];
dialog.addText('剩余可记录'+sum+'次牌名');
if(names.length){
dialog.addText('已记录牌名:');
dialog.addSmall([names,'vcard']);
}
const storage=player.getStorage('sbkanpo');
const sum=storage[0];
const names=storage[1];
dialog.addText('剩余可记录'+sum+'次牌名');
if(player.isUnderControl(true)&&names.length){
dialog.addText('当前记录牌名:');
dialog.addSmall([names,'vcard']);
}
},
},

View File

@ -6769,7 +6769,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dbchongjian_info:'吴势力技。你可以将一张装备牌当做一种【杀】无距离限制且无视防具或【酒】使用。当你以此法使用【杀】造成伤害后你获得目标角色装备区内的X张牌X为伤害值。',
dbchoujue:'仇决',
dbchoujue_info:'锁定技。当你杀死其他角色后你加1点体力上限并摸两张牌然后本回合发动【却敌】的次数上限+1。',
sp_chendong:'陈武董袭',
sp_chendong:'手杀陈武董袭',
sp_chendong_prefix:'手杀',
spyilie:'毅烈',
spyilie_info:'出牌阶段开始时,你可选择:①本阶段内使用【杀】的次数上限+1。②本回合内使用【杀】被【闪】抵消时摸一张牌。③背水失去1点体力然后依次执行上述所有选项。',
spfenming:'奋命',
@ -6826,7 +6827,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
spjianyi_info:'锁定技。其他角色的回合结束时,若弃牌堆中有于本回合内因弃置而进入弃牌堆的防具牌,则你获得其中一张。',
spshangyi:'尚义',
spshangyi_info:'出牌阶段限一次。你可以弃置一张牌并选择一名其他角色。其观看你的手牌,然后你观看其手牌并获得其中的一张。',
sp_lvfan:'吕范',
sp_lvfan:'手杀吕范',
sp_lvfan_prefix:'手杀',
spdiaodu:'调度',
spdiaodu_info:'准备阶段,你可令一名角色摸一张牌,然后移动其装备区内的一张牌。',
spdiancai:'典财',

View File

@ -10,7 +10,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_tianzhu:['liyi','zhangyan','niujin','hejin','hansui',"wutugu","yanbaihu","shamoke","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna",'ol_wenqin'],
sp_nvshi:['ol_dingshangwan',"lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu',"daxiaoqiao","jin_guohuai",'ol_hujinding'],
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','zhangzhi','lushi'],
sp_huben:['duanjiong','ol_mengda',"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','ol_huban','haopu','ol_qianzhao'],
sp_huben:['duanjiong','ol_mengda',"caohong","xiahouba","zhugeke","zumao","wenpin","litong","mazhong","heqi","quyi","luzhi","yuejin","dingfeng","wuyan","ol_zhuling","tianyu","huojun",'zhaoyǎn','dengzhong','ol_furong','macheng','ol_zhangyì','ol_zhujun','maxiumatie','luoxian','ol_huban','haopu','ol_qianzhao'],
sp_liesi:['lvboshe','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_qifu:['ol_feiyi',"caoying",'panshu',"caochun","yuantanyuanshang",'caoshuang','wolongfengchu','guansuo','baosanniang','fengfangnv','jin_zhouchu'],
@ -186,16 +186,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
kanze:['male','wu',3,['xiashu','kuanshi']],
heqi:['male','wu',4,['olqizhou','olshanxi']],
//mifuren:['female','shu',3,['guixiu','cunsi']],
yuejin:['male','wei',4,['xiaoguo']],
sp_dongzhuo:['male','qun',5,['hengzheng']],
hetaihou:['female','qun',3,['zhendu','qiluan']],
dingfeng:['male','wu',4,['reduanbing','refenxun']],
shamoke:['male','shu',4,['gzjili']],
//liqueguosi:['male','qun',4,['xiongsuan']],
//cuimao:['male','wei',3,['zhengbi','fengying']],
zangba:['male','wei',4,['rehengjiang']],
zhangren:['male','qun',4,['chuanxin','zfengshi']],
wangyun:['male','qun',4,['xinlianji','xinmoucheng'],['clan:太原王氏']],
@ -15142,21 +15138,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
}
},
xiongsuan:{
audio:2,
},
diancai:{
audio:2,
},
diaodu:{
audio:2,
},
zhengbi:{
audio:2,
},
fengying:{
audio:2,
},
//新服曹笨
xinshanjia:{
group:["xinshanjia_count"],
@ -26272,7 +26253,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mifuren:'糜夫人',
sp_dongzhuo:'SP董卓',
sp_dongzhuo_prefix:'SP',
gz_chendong:'陈武董袭',
gz_jiangfei:'蒋琬费祎',
gz_jiangqing:'蒋钦',
hetaihou:'何太后',
@ -26338,9 +26318,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
bianfuren:'卞夫人',
ol_bianfuren:'卞夫人',
shamoke:'沙摩柯',
lvfan:'吕范',
liqueguosi:'李傕郭汜',
cuimao:'崔琰毛玠',
caoying:"曹婴",
simahui:"司马徽",
@ -26438,16 +26415,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wanwei_info:'当你因被其他角色获得或弃置而失去牌时,你可以改为自己选择失去的牌。',
gzjili:'蒺藜',
gzjili_info:'当你于一回合内使用或打出第X张牌时你可以摸X张牌X为你的攻击范围。',
xiongsuan:'凶算',
xiongsuan_info:'限定技出牌阶段你可以弃置一张手牌并选择一名角色对其造成1点伤害然后你摸三张牌。若该角色有已发动的限定技则你选择其中一个限定技。此回合结束后视为该限定技未发动过。',
diaodu:"调度",
diaodu_info:"当你使用装备牌时,你可以摸一张牌;出牌阶段开始时,你可以获得一名其他角色装备区里的一张牌,然后你可以将此牌交给另一名角色。",
diancai:'典财',
diancai_info:'其他角色的出牌阶段结束时若你于此阶段失去了X张或更多的牌则你可以将手牌摸至体力上限。X为你的体力值',
zhengbi:'征辟',
zhengbi_info:'出牌阶段开始时,你可以选择一项:选择一名未受伤的其他角色,你对其使用的牌无距离限制且不计入使用次数直到回合结束;或将一张基本牌交给一名其他角色,然后其交给你一张非基本牌或两张基本牌。',
fengying:'奉迎',
fengying_info:'限定技出牌阶段你可以弃置所有手牌。若如此做你可以令等量的角色将手牌摸至X张(X为其体力上限且至多为5)。然后,你结束出牌阶段,并在当前回合结束后进行一个新的回合。',
qingzhong:'清忠',
qingzhong_info:'出牌阶段开始时,你可以摸两张牌,若如此做,此阶段结束时,你与手牌数最少的角色交换手牌。',

View File

@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
liqueguosi:['male','qun',4,['xiongsuan']],
star_zhangchunhua:['female','wei',3,['starliangyan','starminghui']],
star_yuanshao:['male','qun',4,['starxiaoyan','starzongshi','starjiaowang','staraoshi'],['zhu']],
star_dongzhuo:['male','qun',5,['starweilin','starzhangrong','starhaoshou'],['zhu']],
@ -97,7 +98,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterSort:{
sp2:{
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi","duanwei","liangxing","zhangheng",'tangji','niufu','dongxie'],
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi","duanwei","liangxing","zhangheng",'tangji','niufu','dongxie','liqueguosi'],
sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"],
sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"],
sp_zizouqi:["mangyachang","xugong","zhangchangpu"],
@ -118,6 +119,33 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
//李傕郭汜
xiongsuan:{
audio:2,
enable:'phaseUse',
filterTarget:true,
filterCard:lib.filter.cardDiscardable,
position:'h',
usable:1,
async content(event,trigger,player){
const target=event.target;
await target.damage();
await player.draw(3);
if(target!=player) await player.loseHp();
},
ai:{
order:9,
result:{
target(player,target){
if(player.getHp()+player.countCards('hs',card=>player.canSaveCard(card,player))<=1) return 0;
const num=get.sgn(get.attitude(player,target));
if(num*get.damageEffect(target,player,player)>0) return num*get.damageEffect(target,player,player);
if(target==player) return 0.00001;
return 0;
},
},
},
},
//张春华
starliangyan:{
audio:2,
@ -10739,34 +10767,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
direct:true,
async content(event,trigger,player){
const targetx=trigger.targets.filter(target=>{
const {result:{bool,targets}}=await player.chooseTarget(get.prompt('fengshi'),'弃置你与一名目标角色的各一张牌,然后令'+get.translation(event.card)+'对其造成的伤害+1',(card,player,target)=>{
const targets=get.event().getTrigger().targets;
if(!targets.includes(target)) return false;
return player.countCards('h')>target.countCards('h')&&target.countCards('he')>0&&player.hasCard(card=>{
return lib.filter.cardDiscardable(card,player,'fengshi');
},'he');
}).set('ai',target=>{
const player=get.event('player');
const card=get.event().getTrigger().card;
if(!get.info('dcmffengshi').check({card:card,target:target})) return 0;
return get.effect(target,{name:'guohe_copy2'},player,player);
});
if(targetx.length==1){
const aim=targetx[0],info=get.info('dcmffengshi');
const {result:{bool}}=await player.chooseBool(get.prompt('fengshi',targets[0]),info.prompt2({card:trigger.card,target:aim},player)).set('choice',info.check({card:trigger.card,target:aim},player));
}
else{
const {result:{bool,targets}}=await player.chooseTarget(get.prompt('fengshi'),'弃置你与一名目标角色的各一张牌,然后令'+get.translation(event.card)+'对其造成的伤害+1',(card,player,target)=>{
const targets=get.event().getTrigger().targets;
if(!targets.includes(target)) return false;
return player.countCards('h')>target.countCards('h')&&target.countCards('he')>0&&player.hasCard(card=>{
return lib.filter.cardDiscardable(card,player,'fengshi');
},'he');
}).set('ai',target=>{
const player=get.event('player');
const card=get.event().getTrigger().card;
if(!get.info('dcmffengshi').check({card:card,target:target})) return 0;
return get.effect(target,{name:'guohe_copy2'},player,player);
});
}
if(bool){
const target=(targets?targets[0]:aim);
const target=targets[0];
player.logSkill('fengshi',target);
player.chooseToDiscard('he',true);
player.discardPlayerCard(target,'he',true);
await player.chooseToDiscard('he',true);
await player.discardPlayerCard(target,'he',true);
if(get.tag(trigger.card,'damage')){
var id=target.playerid;
var map=trigger.getParent().customArgs;
@ -10783,14 +10800,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{target:'useCardToTargeted'},
filter(event,player){
if(event.player==event.target) return false;
return event.player.countCards('h')>event.target.countCards('h')&&event.target.countCards('he')>0&&player.hasCard(card=>{
return event.player.countCards('h')>player.countCards('h')&&event.player.countCards('he')>0&&player.hasCard(card=>{
return lib.filter.cardDiscardable(card,player,'fengshi');
},'he');
},
content(){
var target=lib.skill.dcmffengshi.logTarget(trigger,player);
player.chooseToDiscard('he',true);
player.discardPlayerCard(target,'he',true);
async content(event,trigger,player){
const target=trigger.player;
await player.chooseToDiscard('he',true);
await player.discardPlayerCard(target,'he',true);
if(get.tag(trigger.card,'damage')){
var id=player.playerid;
var map=trigger.getParent().customArgs;
@ -10827,7 +10844,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(viewer==player){
if(get.attitude(viewer,target)>=0) return false;
if(player.countCards('he',(card)=>get.value(card,player)<5)) return true;
var card=_status.event.getTrigger().card;
var card=get.event().getTrigger().card;
if((get.tag(card,'damage')||target.countCards('he',(card)=>get.value(card,target)>6))&&player.countCards('he',(card)=>get.value(card,player)<7)) return true;
return false;
}
@ -11427,7 +11444,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcmffengshi:'锋势',
dcmffengshi_info:'当你使用牌指定唯一目标后,或成为其他角色使用牌的唯一目标后,若此牌使用者的手牌数大于此牌目标的手牌数,则你可弃置自己和对方的各一张牌,并令此牌的伤害值+1。',
fengshi:'锋势',
fengshi_info:'当你使用牌指定第一个目标后,你可弃置你与其中一名手牌数小于你的目标角色和对方的各一张牌,并令此牌对其造成的伤害+1当你称为其他角色使用牌的目标后,你可以弃置你与其的各一张牌,并令此牌对你造成的伤害+1。',
fengshi_info:'当你使用牌指定第一个目标后,你可弃置你与其中一名手牌数小于你的目标角色的各一张牌,并令此牌对其造成的伤害+1当你成为其他角色使用牌的目标后,若你的手牌数小于其,则你可以弃置你与其的各一张牌,并令此牌对你造成的伤害+1。',
tongyuan:'童渊',
chaofeng:'朝凤',
chaofeng_info:'出牌阶段限一次。当你造成伤害时,你可以弃置一张牌,然后摸一张牌。若此伤害的渠道为牌且你弃置的牌:与此牌颜色相同,则你改为摸两张牌;与此牌类型相同,则此伤害+1。',
@ -11616,6 +11633,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
starliangyan_info:'出牌阶段限一次。你可以选择一名其他角色,你摸/弃置至多两张牌,令其弃置/摸等量的牌。然后若你与其手牌数相同,以此法摸牌的角色跳过其下一个弃牌阶段。',
starminghui:'明慧',
starminghui_info:'一名角色的回合结束时若你的手牌数最少你可以视为使用一张无距离限制的【杀】最多你可以将手牌弃置至你手牌数不为最多然后令一名角色回复1点体力。',
liqueguosi:'李傕郭汜',
xiongsuan:'凶算',
xiongsuan_info:'出牌阶段限一次你可以弃置一张手牌并对一名角色造成1点伤害然后你摸三张牌。若该角色不为你你失去1点体力。',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",

View File

@ -14038,22 +14038,25 @@ game.import('character',function(lib,game,ui,get,ai,_status){
let d1=true,e=false;
if(event.player.hasSkill('jueqing')||event.player.hasSkill('gangzhi')) d1=false;
for(let tar of event.targets){
if(!tar.mayHaveShan(player,'use',tar.getCards('h',i=>{
return i.hasGaintag('sha_notshan');
}))||event.player.hasSkillTag('directHit_ai',true,{
target:tar,
card:event.card,
},true)){
if(!tar.hasSkill('gangzhi')) d1=false;
if(!tar.hasSkillTag('filterDamage',null,{
player:event.player,
if(event.card.name=='sha'){
if(!tar.mayHaveShan(player,'use',tar.getCards('h',i=>{
return i.hasGaintag('sha_notshan');
}))||event.player.hasSkillTag('directHit_ai',true,{
target:tar,
card:event.card,
})){
let att=get.attitude(_status.event.player,tar);
if(att>0) return false;
if(att<0) e=true;
},true)){
if(!tar.hasSkill('gangzhi')) d1=false;
if(!tar.hasSkillTag('filterDamage',null,{
player:event.player,
card:event.card,
})){
let att=get.attitude(_status.event.player,tar);
if(att>0) return false;
if(att<0) e=true;
}
}
}
else e=true;
}
if(e) return true;
if(d1) return get.damageEffect(event.player,player,_status.event.player)>0;

View File

@ -4,6 +4,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'xianding',
connect:true,
character:{
chendong:['male','wu',4,['dcduanxie','fenming']],
lvfan:['male','wu',3,['diaodu','diancai']],
cuimao:['male','wei',3,['zhengbi','fengying']],
huzun:['male','wei',4,['dczhantao','dcanjing']],
zhugemengxue:['female','wei',3,['dcjichun','dchanying']],
bailingyun:['female','wei',3,['dclinghui','dcxiace','dcyuxin']],
@ -96,16 +99,16 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterSort:{
xianding:{
sp2_huben:['wangshuang','wenyang','re_liuzan','dc_huangzu','wulan','leitong','chentai','dc_duyu','dc_wangjun','dc_xiahouba','old_huangfusong','huzun'],
sp2_huben:['chendong','wangshuang','wenyang','re_liuzan','dc_huangzu','wulan','leitong','chentai','dc_duyu','dc_wangjun','dc_xiahouba','old_huangfusong','huzun'],
sp2_shengun:["puyuan","guanlu","gexuan",'wufan','re_zhangbao','dukui','zhaozhi','zhujianping','dc_zhouxuān','zerong'],
sp2_bizhe:['dc_luotong','dc_wangchang','chengbing','dc_yangbiao','ruanji'],
sp2_bizhe:['dc_luotong','dc_wangchang','chengbing','dc_yangbiao','ruanji','cuimao'],
sp2_huangjia:['caomao','liubian','dc_liuyu','quanhuijie','dingshangwan','yuanji','xielingyu','sunyu','ganfurenmifuren','dc_ganfuren','dc_mifuren','dc_shixie'],
sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'],
sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen','zhugeruoxue','caoxian','dc_qinghegongzhu','zhugemengxue'],
sp2_yinyu:['zhouyi','luyi','sunlingluan','caoyi'],
sp2_wangzhe:['dc_daxiaoqiao','dc_sp_machao'],
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao','tianshangyi','malingli','bailingyun'],
sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng'],
sp2_jichu:['zhaoang','dc_liuye','dc_wangyun','yanghong','huanfan','xizheng','lvfan'],
sp2_yuxiu:['dongguiren','dc_tengfanglan','zhangjinyun','zhoubuyi','dc_xujing'],
sp2_qifu:['dc_guansuo','xin_baosanniang','dc_zhaoxiang'],
sp2_gaoshan:['wanglang','liuhui','zhangjian'],
@ -114,6 +117,158 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
//陈武董袭
dcduanxie:{
audio:'duanxie',
inherit:'duanxie',
selectTarget:1,
},
//吕范
diaodu:{
audio:2,
trigger:{player:['phaseUseBegin','logSkill']},
filter(event,player){
if(event.name=='logSkill'&&event.skill!='diancai') return false;
return game.hasPlayer(target=>{
return get.distance(player,target)<=1&&target.countGainableCards(player,'e');
});
},
direct:true,
async content(event,trigger,player){
const {result:{bool,targets}}=await player.chooseTarget(get.prompt2('diaodu'),(card,player,target)=>{
return get.distance(player,target)<=1&&target.countGainableCards(player,'e');
}).set('ai',target=>{
const player=get.event('player'),att=get.attitude(player,target);
let num=0;
if(target.hasSkill('gzxiaoji')) num+=2.5;
if(target.isDamaged()&&target.getEquip('baiyin')) num+=2.5;
if(target.hasSkill('xuanlve')) num+=2;
return get.sgn(att)*num+(target==player?1:0);
});
if(bool){
const aim=targets[0];
player.logSkill('diaodu',aim);
const {result:{bool,cards}}=await player.gainPlayerCard(aim,'e',true);
if(bool&&game.hasPlayer(target=>target!=aim)){
const card=cards[0];
const {result:{bool,targets}}=await player.chooseTarget('调度:将'+get.translation(card)+'交给另一名角色',(card,player,target)=>{
return target!=get.event('aim');
},true).set('ai',target=>{
const player=get.event('player');
return att=get.attitude(player,target);
}).set('aim',aim);
if(bool&&get.owner(card)==player){
const target=targets[0];
player.line(target,'green');
await player.give([card],target);
if(get.owner(card)==target){
const {result:{bool}}=await target.chooseUseTarget(card);
if(bool) await player.draw();
else await target.draw();
}
}
}
}
},
},
diancai:{
audio:2,
inherit:'mbdiancai',
filter(event,player){
if(!player.getHp()||_status.currentPhase===player) return false;
let num=player.getHistory('lose',evt=>{
return evt.cards2&&evt.cards2.length&&evt.getParent('phaseUse')==event;
}).reduce((sum,evt)=>{
return sum+evt.cards2.length;
},0);
return num>=Math.min(5,player.getHp());
},
},
//崔琰毛玠
zhengbi:{
audio:2,
trigger:{player:'phaseUseBegin'},
filter(event,player){
return game.hasPlayer(target=>target!=player);
},
direct:true,
async content(event,trigger,player){
const {result:{bool,targets}}=await player.chooseTarget(get.prompt2('zhengbi'),lib.filter.notMe).set('ai',target=>{
const player=get.event('player');
return -get.attitude(player,target)*target.countCards('he');
});
if(bool){
const target=targets[0],str=get.translation(target);
player.logSkill('zhengbi',target);
let choiceList=['此阶段结束时,若'+str+'本阶段获得过牌,则你获得其手牌区和装备区各一张牌'];
if(player.countCards('h',{type:'basic'})) choiceList.push('交给'+str+'一张基本牌,然后其交给你一张非基本牌或两张基本牌');
const {result:{index}}=await player.chooseControl().set('choiceList',choiceList).set('ai',()=>get.event('controls').length-1);
if(index==0){
player.line(target);
player.when('phaseUseEnd').filter(evt=>evt==trigger).then(()=>{
if(target.isIn()&&target.getHistory('gain',evt=>evt.getParent('phaseUse')==trigger).length){
player.line(target);
let num=(target.countGainableCards(player,'h')>0)+(target.countCardsGainableCards(player,'e')>0);
if(num){
player.gainPlayerCard(target,num,'he',true).set('filterButton',button=>{
return !ui.selected.buttons.some(but=>get.position(button.link)==get.position(but.link));
});
}
}
}).vars({target:target});
}
else{
const {result:{bool}}=await player.chooseToGive(target,{type:'basic'},true).set('prompt','征辟:交给'+str+'一张基本牌');
if(bool){
let choices=[];
if(target.countCards('he',{type:['trick','delay','equip']})) choices.push('一张非基本牌');
if(target.countCards('h',{type:'basic'})>1) choices.push('两张基本牌');
if(choices.length){
const {result:{control}}=await target.chooseControl(choices).set('ai',function(event,player){
if(choices.length>1){
if(player.countCards('he',{type:['trick','delay','equip']},function(card){return get.value(card)<7})) return 0;
return 1;
}
return 0;
}).set('prompt','征辟:交给'+get.translation(player)+'…</div>');
const check=(control=='一张非基本牌');
await target.chooseToGive('he',(check?1:2),{type:(check?['trick','delay','equip']:'basic')},player,true).set('prompt','征辟:交给'+get.translation(player)+control);
}
else if(target.countCards('h')) await target.give(target.getCards('h'),player);
}
}
}
},
},
fengying:{
unique:true,
limited:true,
audio:2,
enable:'phaseUse',
filter(event,player){
return player.countCards('h')&&player.countCards('h')==player.countDiscardableCards(player,'h');
},
skillAnimation:true,
animationColor:'thunder',
async content(event,trigger,player){
player.awakenSkill('fengying');
await player.discard(player.getCards('h'));
const evt=player.insertPhase();
player.when('phaseBegin').filter(evtx=>evtx==evt).then(()=>{
if(player.isMinHp()&&player.maxHp>0&&player.countCards('h')<player.maxHp){
player.drawTo(player.maxHp);
}
})
},
ai:{
order:0.0001,
result:{
player(player){
return player.isMinHp()?1:0;
},
},
},
},
//胡遵
dczhantao:{
audio:2,
@ -13815,6 +13970,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
characterIntro:{
cuimao:'请分别查看“崔琰”和“毛玠”的武将介绍。',
bailingyun:'柏灵筠是电视剧《大军师司马懿之军师联盟》、《虎啸龙吟》中的主要角色之一由张钧甯饰演。20岁是曹丕赏赐司马懿的美人也是曹丕的眼线被送入司马府中为妾室。柔弱美貌、心机极深。',
caoxian:'曹宪生卒年不详沛国谯县今安徽省亳州市人。东汉末年历史人物汉献帝刘协嫔妃魏武帝曹操女儿。建安十八年嫁给汉献帝刘协受封为贵人。黄初元年220年兄弟曹丕称帝后汉献帝成为山阳公不知所终。',
zhangjian:'张臶136年240年字子明钜鹿人。汉末三国时期隐士、音乐家精通谶纬之学。张臶生活的年代从东汉一直到曹魏齐王时期受到朝廷多次征召一直回避不愿做官。他活了一百零五岁是三国时期有可靠记载的最长寿的人之一。',
@ -14517,6 +14673,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dczhantao_info:'当你或你攻击范围内的角色受到伤害后,若你不为伤害来源,你可以判定,若造成此伤害的渠道为牌且此牌有点数且判定结果点数大于此牌的点数,你视为对来源使用一张【杀】。',
dcanjing:'安境',
dcanjing_info:'每回合限一次。当你造成伤害后你可以令至多X名已受伤的角色各摸一张牌然后其中体力值最少的角色回复1点体力X为你本局游戏发动〖安境〗的次数。',
cuimao:'崔琰毛玠',
zhengbi:'征辟',
zhengbi_info:'出牌阶段开始时,你可以选择一名其他角色并选择一项:①本阶段结束时,若其本阶段得到过牌,则你获得其手牌区和装备区各一张牌;②将一张基本牌交给该角色,然后其交给你一张非基本牌或两张基本牌。',
fengying:'奉迎',
fengying_info:'限定技,出牌阶段,你可以弃置所有手牌。若如此做,你于本回合结束后进行一个额外回合,此额外回合开始时,若你的体力值为全场最低,则你将手牌数摸至体力上限。',
lvfan:'吕范',
diaodu:'调度',
diaodu_info:'出牌阶段开始时或当你发动〖典财〗后你可以获得一名距离不大于1的一名角色A装备区里的一张牌然后你将此牌交给另一名角色B然后B选择是否使用此牌若B使用/不使用,则你/B摸一张牌。',
diancai:'典财',
diancai_info:'其他角色的出牌阶段结束时若你于此阶段失去了至少X张牌则你可以将手牌摸至体力上限X为你的体力值且X至多为5。',
chendong:'陈武董袭',
dcduanxie:'断绁',
dcduanxie_info:'出牌阶段限一次,你可以令一名其他角色横置,然后你横置。',
sp2_yinyu:'隐山之玉',
sp2_huben:'百战虎贲',