Merge pull request #832 from mengxinzxz/PR-Branch

部分新武将2
This commit is contained in:
Spmario233 2024-01-21 23:17:53 +08:00 committed by GitHub
commit 1cd6b4bf72
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
30 changed files with 252 additions and 33 deletions

BIN
audio/die/liyi.mp3 Normal file

Binary file not shown.

BIN
audio/die/muludawang.mp3 Normal file

Binary file not shown.

Binary file not shown.

BIN
audio/die/sb_caopi.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/olfengyan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olfengyan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olfudao1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olfudao2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olzhanjin1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olzhanjin2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbfangzhu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbfangzhu2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbsongwei1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/sbsongwei2.mp3 Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
audio/skill/shoufa1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/shoufa2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/yuxiang.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhoulin1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/zhoulin2.mp3 Normal file

Binary file not shown.

View File

@ -5336,7 +5336,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var dialog=ui.create.dialog('劝谏:令一名其他角色…','hidden'); var dialog=ui.create.dialog('劝谏:令一名其他角色…','hidden');
dialog.add([[ dialog.add([[
['damage','对其攻击范围内的一名角色造成1点伤害'], ['damage','对其攻击范围内的一名角色造成1点伤害'],
['draw','将其手牌数调整至体力上限(至多摸至五张),且其本回合内不能使用手牌'] ['draw','将其手牌数调整至手牌上限(至多摸至五张),且其本回合内不能使用手牌']
],'textbutton']); ],'textbutton']);
return dialog; return dialog;
}, },
@ -5349,7 +5349,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
prompt:function(links){ prompt:function(links){
if(links[0]=='damage') return '令一名其他角色对攻击范围内的另一名角色造成1点伤害'; if(links[0]=='damage') return '令一名其他角色对攻击范围内的另一名角色造成1点伤害';
return '令一名其他角色将手牌数调整至体力上限(至多摸至五张)且本回合内不能使用手牌'; return '令一名其他角色将手牌数调整至手牌上限(至多摸至五张)且本回合内不能使用手牌';
}, },
}, },
ai:{ ai:{
@ -5407,15 +5407,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filterTarget:function(card,player,target){ filterTarget:function(card,player,target){
if(target==player) return false; if(target==player) return false;
var num=target.countCards('h'); var num=target.countCards('h');
if(num>target.maxHp) return true; if(num>target.getHandcardLimit()) return true;
return num<Math.min(5,target.maxHp); return num<Math.min(5,target.getHandcardLimit());
}, },
filterCard:()=>false, filterCard:()=>false,
selectCard:-1, selectCard:-1,
content:function(){ content:function(){
'step 0' 'step 0'
player.addTempSkill('dcquanjian_draw','phaseUseAfter'); player.addTempSkill('dcquanjian_draw','phaseUseAfter');
var num1=target.countCards('h'),num2=target.maxHp; var num1=target.countCards('h'),num2=target.getHandcardLimit();
var num=0; var num=0;
if(num1>num2){ if(num1>num2){
event.index=0; event.index=0;
@ -5459,7 +5459,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{ ai:{
result:{ result:{
target:function(player,target){ target:function(player,target){
var num1=target.countCards('h'),num2=target.maxHp; var num1=target.countCards('h'),num2=target.getHandcardLimit();
if(num1>num2) return -1; if(num1>num2) return -1;
return Math.min(5,num2)-num1; return Math.min(5,num2)-num1;
}, },
@ -10461,7 +10461,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){ content:function(){
player.markAuto('dcxunji_effect',[target]); player.markAuto('dcxunji_effect',[target]);
player.addTempSkill('dcxunji_effect',{player:'die'}); player.addTempSkill('dcxunji_effect',{player:'die'});
target.markSkill('dcxunji_mark'); target.addTempSkill('dcxunji_mark',{player:'phaseEnd'});
}, },
ai:{ ai:{
order:1, order:1,
@ -10474,6 +10474,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
subSkill:{ subSkill:{
mark:{ mark:{
mark:true,
marktext:'嫉', marktext:'嫉',
intro:{content:'你已经被盯上了!'}, intro:{content:'你已经被盯上了!'},
}, },
@ -10505,10 +10506,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
forced:true, forced:true,
popup:false, popup:false,
filter:function(event,player){ filter:function(event,player){
return event.card&&event.card.name=='juedou'&&event.getParent().skill=='dcxunji_effect'; return event.card&&event.card.name=='juedou'&&event.getParent().skill=='dcxunji_effect'&&event.player.isIn();
}, },
content:function(){ content:function(){
player.loseHp(trigger.num); trigger.player.line(player);
player.damage(trigger.num,trigger.player);
}, },
}, },
}, },
@ -11118,7 +11120,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhuangdan_info:'锁定技,其他角色的回合结束时,若你的手牌数为全场唯一最多,则你令〖裂胆〗失效直到你下回合结束。', zhuangdan_info:'锁定技,其他角色的回合结束时,若你的手牌数为全场唯一最多,则你令〖裂胆〗失效直到你下回合结束。',
dc_caiyang:'蔡阳', dc_caiyang:'蔡阳',
dcxunji:'寻嫉', dcxunji:'寻嫉',
dcxunji_info:'出牌阶段限一次,你可以选择一名其他角色。该角色的下个结束阶段开始时,若其于该回合内造成过伤害,则你视为对其使用一张【决斗】,且当此【决斗】对其造成伤害后,你失去等量的体力。', dcxunji_info:'出牌阶段限一次,你可以选择一名其他角色。该角色的下个结束阶段开始时,若其于该回合内造成过伤害,则你视为对其使用一张【决斗】,且当此【决斗】对其造成伤害后,其对你造成等量的伤害。',
dcjiaofeng:'交锋', dcjiaofeng:'交锋',
dcjiaofeng_info:'锁定技。每回合限一次当你造成伤害时若你本回合内未造成过其他伤害且你已损失的体力值大于0则你摸一张牌大于1则此伤害+1大于2则你回复1点体力。', dcjiaofeng_info:'锁定技。每回合限一次当你造成伤害时若你本回合内未造成过其他伤害且你已损失的体力值大于0则你摸一张牌大于1则此伤害+1大于2则你回复1点体力。',
zhoushan:'周善', zhoushan:'周善',
@ -11328,7 +11330,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcyongbi_info:'限定技。出牌阶段你可以将所有手牌交给一名其他男性角色。你将〖媵予〗的发动时机改为“准备阶段和结束阶段开始时”。然后若这些牌中包含的花色数大于1则你与其本局游戏的手牌上限+2大于2则当你或其于本局游戏内受到大于1的伤害时此伤害-1。', dcyongbi_info:'限定技。出牌阶段你可以将所有手牌交给一名其他男性角色。你将〖媵予〗的发动时机改为“准备阶段和结束阶段开始时”。然后若这些牌中包含的花色数大于1则你与其本局游戏的手牌上限+2大于2则当你或其于本局游戏内受到大于1的伤害时此伤害-1。',
dc_huangquan:'黄权', dc_huangquan:'黄权',
dcquanjian:'劝谏', dcquanjian:'劝谏',
dcquanjian_info:'出牌阶段每项各限一次。你可以选择一项流程并选择一名其他角色A⒈令A对其攻击范围内的另一名角色B造成1点伤害。⒉令A将手牌数调整至体力上限至多摸至五张且其本回合内不能使用或打出手牌。然后A选择一项⒈执行此流程。⒉本回合下次受到的伤害+1。', dcquanjian_info:'出牌阶段每项各限一次。你可以选择一项流程并选择一名其他角色A⒈令A对其攻击范围内的另一名角色B造成1点伤害。⒉令A将手牌数调整至手牌上限至多摸至五张且其本回合内不能使用或打出手牌。然后A选择一项⒈执行此流程。⒉本回合下次受到的伤害+1。',
dctujue:'途绝', dctujue:'途绝',
dctujue_info:'限定技。当你进入濒死状态时,你可以将所有牌交给一名其他角色。然后你回复等量的体力并摸等量的牌。', dctujue_info:'限定技。当你进入濒死状态时,你可以将所有牌交给一名其他角色。然后你回复等量的体力并摸等量的牌。',
chengui:'陈珪', chengui:'陈珪',

View File

@ -482,32 +482,34 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'twjieyu', audio:'twjieyu',
trigger:{player:'phaseJieshuBegin'}, trigger:{player:'phaseJieshuBegin'},
filter:function(event,player){ filter:function(event,player){
for(var i=0;i<ui.discardPile.childElementCount;i++){ for(let i=0;i<ui.discardPile.childElementCount;i++){
if(get.type(ui.discardPile.childNodes[i])=='basic') return true; if(get.type(ui.discardPile.childNodes[i],false)=='basic') return true;
} }
return false; return false;
}, },
prompt2:function(event,player){ prompt2:function(event,player){
const num=lib.skill.jieyu.getNum(player,true); const num=lib.skill.jieyu.getNum(player);
return '获得弃牌堆中'+get.cnNumber(num)+'张'+(num>1?'牌名各不相同的':'')+'基本牌'; return '获得弃牌堆中'+get.cnNumber(num)+'张'+(num>1?'牌名各不相同的':'')+'基本牌';
}, },
async content(event,trigger,player){ async content(event,trigger,player){
const num=lib.skill.jieyu.getNum(player,false); const num=lib.skill.jieyu.getNum(player,event);
let gains=[],names=lib.inpile.filter(name=>get.type(name)=='basic').randomGets(num); let gains=[],names=[];
names.forEach(name=>{ for(let i=0;i<ui.discardPile.childElementCount;i++){
let card=get.discardPile(card=>card.name==name); let card=ui.discardPile.childNodes[i];
if(name) gains.push(card); if(get.type(card,false)=='basic'&&!names.includes(card.name)){
}); gains.push(card);
if(gains.length) player.gain(gains,'gain2'); names.push(card.name);
}
}
if(gains.length) player.gain(gains.randomGets(Math.min(gains.length,num)),'gain2');
}, },
getNum:function(player,goon){ getNum:function(player,event){
let num=3,bool=goon; let num=3;
const history=game.getAllGlobalHistory('everything'); const history=game.getAllGlobalHistory('everything');
for(let i=history.length-1;i>=0;i--){ for(let i=history.length-1;i>=0;i--){
const evt=history[i]; const evt=history[i];
if(evt.name=='useSkill'&&evt.player==player&&evt.skill=='jieyu'){ if(evt.name=='jieyu'&&evt.player==player){
if(!bool) bool=true; if(!event||evt!=event) break;
else break;
} }
if(evt.name=='useCard'&&evt.player!=player&&evt.targets&&evt.targets.includes(player)&&get.tag(evt.card,'damage')){ if(evt.name=='useCard'&&evt.player!=player&&evt.targets&&evt.targets.includes(player)&&get.tag(evt.card,'damage')){
num--; num--;
@ -599,7 +601,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(to.hujia>0) return distance+1; if(to.hujia>0) return distance+1;
}, },
}, },
audio:2, audio:true,
trigger:{player:'damageBegin2'}, trigger:{player:'damageBegin2'},
filter:function(event,player){ filter:function(event,player){
return player.hujia>0&&event.hasNature('fire'); return player.hujia>0&&event.hasNature('fire');

View File

@ -129,6 +129,7 @@ window.noname_character_rank={
'caoxian', 'caoxian',
'sb_guanyu', 'sb_guanyu',
'mb_chengui', 'mb_chengui',
'sb_caopi',
], ],
a:[ a:[
'diy_zaozhirenjun', 'diy_zaozhirenjun',
@ -356,6 +357,7 @@ window.noname_character_rank={
'dc_sb_zhouyu', 'dc_sb_zhouyu',
], ],
am:[ am:[
'muludawang',
'diy_caiwenji', 'diy_caiwenji',
'diy_liuyan', 'diy_liuyan',
'diy_zhenji', 'diy_zhenji',
@ -650,6 +652,7 @@ window.noname_character_rank={
'mb_huban', 'mb_huban',
], ],
bp:[ bp:[
'xin_huojun',
'chess_diaochan', 'chess_diaochan',
'chess_huangzhong', 'chess_huangzhong',
'chess_sunshangxiang', 'chess_sunshangxiang',
@ -1019,6 +1022,7 @@ window.noname_character_rank={
'sb_huangyueying', 'sb_huangyueying',
], ],
b:[ b:[
'liyi',
'diy_feishi', 'diy_feishi',
'diy_liufu', 'diy_liufu',
'diy_tianyu', 'diy_tianyu',
@ -2089,6 +2093,8 @@ window.noname_character_rank={
'dc_sb_zhouyu', 'dc_sb_zhouyu',
], ],
rare:[ rare:[
'xin_huojun',
'muludawang',
'mb_huban', 'mb_huban',
'sp_jianggan', 'sp_jianggan',
'ol_caozhang', 'ol_caozhang',

View File

@ -6363,7 +6363,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sbfangzhu:'放逐', sbfangzhu:'放逐',
sbfangzhu_info:'出牌阶段限一次你可以1.移去2个“颂”标记令一名其他角色的非Charlotte技能失效直到其回合结束2.移去2个“颂”标记令一名其他角色不能响应除其以为的角色使用的牌直到其回合结束3.移去2个“颂”标记令一名其他角色将武将牌翻面4.移去2个“颂”标记令一名其他角色只能使用你选择的一种类型的牌直到其回合结束。', sbfangzhu_info:'出牌阶段限一次你可以1.移去2个“颂”标记令一名其他角色的非Charlotte技能失效直到其回合结束2.移去2个“颂”标记令一名其他角色不能响应除其以为的角色使用的牌直到其回合结束3.移去2个“颂”标记令一名其他角色将武将牌翻面4.移去2个“颂”标记令一名其他角色只能使用你选择的一种类型的牌直到其回合结束。',
sbsongwei:'颂威', sbsongwei:'颂威',
sbsongwei_info:'①出牌阶段开始时你获得Y个“颂”标记Y为场上其他魏势力角色数。②每局游戏限一次出牌阶段你可以令一名其他魏势力角色失去所有武将牌的技能。', sbsongwei_info:'主公技。①出牌阶段开始时你获得Y个“颂”标记Y为场上其他魏势力角色数。②每局游戏限一次出牌阶段你可以令一名其他魏势力角色失去所有武将牌的技能。',
sb_zhi:'谋攻篇·知', sb_zhi:'谋攻篇·知',
sb_shi:'谋攻篇·识', sb_shi:'谋攻篇·识',

View File

@ -8,7 +8,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","ol_bianfuren","qinghegongzhu","tengfanglan","ruiji",'caoxiancaohua'], sp_tianji:["sunhao","liuxie","caoang","hetaihou","sunluyu",'ol_wangrong',"zuofen","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','sunhong','caoxi'], 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','caoxi'],
sp_tianzhu:['zhangyan','niujin','hejin','hansui',"wutugu","yanbaihu","shamoke","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna",'ol_wenqin'], sp_tianzhu:['zhangyan','niujin','hejin','hansui',"wutugu","yanbaihu","shamoke","zhugedan",'huangzu','gaogan',"tadun","fanjiangzhangda","ahuinan","dongtuna",'ol_wenqin'],
sp_nvshi:["lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu',"daxiaoqiao","jin_guohuai"], sp_nvshi:['ol_dingshangwan',"lingju","guanyinping","zhangxingcai","mayunlu","dongbai","zhaoxiang",'ol_zhangchangpu',"daxiaoqiao","jin_guohuai"],
sp_shaowei:["simahui","zhangbao","zhanglu","zhugeguo","xujing","zhangling",'huangchengyan','zhangzhi','lushi'], 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","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_liesi:['lvboshe','mizhu','weizi','ol_liuba','zhangshiping'], sp_liesi:['lvboshe','mizhu','weizi','ol_liuba','zhangshiping'],
@ -18,7 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_zhongdan:["cuiyan","huangfusong"], sp_zhongdan:["cuiyan","huangfusong"],
sp_guozhan2:["sp_dongzhuo","liqueguosi","zhangren"], sp_guozhan2:["sp_dongzhuo","liqueguosi","zhangren"],
sp_others:["hanba","caiyang"], sp_others:["hanba","caiyang"],
sp_waitforsort:['ol_luyusheng','ol_pengyang','ol_tw_zhangji','ol_dingshangwan','ol_liwan','ol_liuyan','caoyu'], sp_waitforsort:['ol_luyusheng','ol_pengyang','ol_tw_zhangji','ol_liwan','ol_liuyan','caoyu','liyi'],
}, },
}, },
characterFilter:{ characterFilter:{
@ -30,6 +30,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
character:{ character:{
liyi:['male','wu',4,['olchanshuang','olzhanjin']],
caoyu:['male','wei',3,['olgongjie','olxiangxv','olxiangzuo']], caoyu:['male','wei',3,['olgongjie','olxiangxv','olxiangzuo']],
ol_liwan:['female','wei',3,['ollianju','olsilv']], ol_liwan:['female','wei',3,['ollianju','olsilv']],
ol_dingshangwan:['female','wei',3,['olfudao','olfengyan']], ol_dingshangwan:['female','wei',3,['olfudao','olfengyan']],
@ -202,6 +203,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
luzhi:['male','wei',3,['qingzhong','weijing']] luzhi:['male','wei',3,['qingzhong','weijing']]
}, },
characterIntro:{ characterIntro:{
liyi:'李异生卒年不详三国时期东吴将领。建安末与谢旌率水陆三千击破刘备军将领詹晏、陈凤。刘备领兵攻孙权时李异与陆逊等人屯巫、秭归为蜀将所破。黄武元年222年陆逊破刘备于猇亭李异追踪蜀军屯驻南山。清代学者赵一清认为此李异与刘璋部将李异为同一人。',
caoyu:'曹宇278年字彭祖沛国谯县今安徽亳州人。三国时期魏国宗室魏武帝曹操与环夫人之子邓哀王曹冲同母兄弟。太和六年封为燕王。魏明帝病危欲以大将军辅政不果。其子常道乡公曹奂是魏国末代皇帝史称魏元帝。晋朝建立后降封燕公。咸宁四年278年曹宇去世。', caoyu:'曹宇278年字彭祖沛国谯县今安徽亳州人。三国时期魏国宗室魏武帝曹操与环夫人之子邓哀王曹冲同母兄弟。太和六年封为燕王。魏明帝病危欲以大将军辅政不果。其子常道乡公曹奂是魏国末代皇帝史称魏元帝。晋朝建立后降封燕公。咸宁四年278年曹宇去世。',
zhangyan:'张燕,本姓褚,生卒年不详,常山真定(今河北正定南)人,东汉末年黑山军首领。张燕剽捍,敏捷过人,军中称为“飞燕”。官渡之战时投降曹操,被任命为平北将军,封安国亭侯。死后其子张方袭爵。', zhangyan:'张燕,本姓褚,生卒年不详,常山真定(今河北正定南)人,东汉末年黑山军首领。张燕剽捍,敏捷过人,军中称为“飞燕”。官渡之战时投降曹操,被任命为平北将军,封安国亭侯。死后其子张方袭爵。',
lushi:'卢氏,五斗米教主张衡妻,张鲁母,擅长驻颜之术,常年令自己保持少女的容颜。常拜访刘焉,与其交好。', lushi:'卢氏,五斗米教主张衡妻,张鲁母,擅长驻颜之术,常年令自己保持少女的容颜。常拜访刘焉,与其交好。',
@ -705,6 +707,207 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
skill:{ skill:{
//李异
olchanshuang:{
audio:2,
enable:'phaseUse',
filterTarget:lib.filter.notMe,
usable:1,
content:function*(event,map){
const player=map.player,target=event.target;
const choiceList=[
'重铸一张牌',
'使用一张【杀】',
'弃置两张牌',
],list=['重铸','出杀','弃牌','无法选择'];
let result=[];
for(let current of [player,target]){
let list1=list.slice(),choiceList1=choiceList.slice();
list1=list1.filter(control=>{
if(control=='无法选择') return false;
if(control=='重铸') return current.countCards('he',card=>current.canRecast(card));
if(control=='出杀') return current.countCards('he',card=>card.name=='sha'&&current.hasUseTarget(card));
if(control=='弃牌') return current.countCards('he',card=>lib.filter.cardDiscardable(card,current))>1;
});
choiceList1=choiceList.filter(control=>{
if(choiceList.indexOf(control)==0) return current.countCards('he',card=>current.canRecast(card));
if(choiceList.indexOf(control)==1) return current.countCards('he',card=>card.name=='sha'&&current.hasUseTarget(card));
if(choiceList.indexOf(control)==2) return current.countCards('he',card=>lib.filter.cardDiscardable(card,current))>1;
});
if(list1.length){
if(list1.length==1) result.push(list.indexOf(list1[0]));
else{
let result1=yield current.chooseControl(list1).set('ai',()=>{
const current=_status.event.player;
const controls=_status.event.controls.slice();
if(controls.includes('出杀')&&current.countCards('hs',card=>card.name=='sha'&&current.hasValueTarget(card))) return '出杀';
if(controls.includes('重铸')) return '重铸';
return '弃牌';
}).set('choiceList',choiceList1);
if(result1.control) result.push(list.indexOf(result1.control));
}
}
else result.push(3);
}
player.popup(list[result[0]]);
target.popup(list[result[1]]);
for(let current of [player,target]){
switch(list[result[current==player?0:1]]){
case '重铸':
let result2=yield current.chooseCard('he','请重铸一张牌',(card,player)=>player.canRecast(card),true);
if(result2.bool) current.recast(result2.cards);
break;
case '出杀':
current.chooseToUse({
prompt:'请使用一张【杀】',
filterCard:function(card,player){
if(card.name!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},
forced:true,
ai1:function(card){
return _status.event.player.getUseValue(card);
},
});
break;
case '弃牌':
current.chooseToDiscard('he',2,true);
break;
}
}
},
ai:{
order:function(item,player){
return get.order({name:'sha'},player)-0.1;
},
result:{
target:function(player,target){
const att=get.attitude(player,target);
if(target.countCards('hs',card=>{
return card.name=='sha'&&game.hasPlayer(current=>{
return target.canUse(card,current)&&get.effect(current,card,target,target)>0&&get.effect(current,card,target,player)>0;
});
})) return 3;
if(att>0) return 2;
if(!target.countCards('h')) return get.sgn(att)+(att==0?1:0);
return 0;
},
},
},
group:'olchanshuang_end',
subSkill:{
end:{
audio:'olchanshuang',
trigger:{player:'phaseJieshuBegin'},
filter:function(event,player){
return player.getHistory('lose',evt=>{
if(evt.type=='discard'){
var evtx=evt.getl(player);
return evtx&&evtx.cards2.length==2;
}
return evt.getParent(2).name=='recast';
}).length||player.getHistory('useCard',evt=>evt.card.name=='sha').length;
},
forced:true,
locked:false,
content:function*(event,map){
let num=0,player=map.player;
if(player.getHistory('lose',evt=>evt.getParent(2).name=='recast').length) num++;
if(player.getHistory('useCard',evt=>evt.card.name=='sha').length) num++;
if(player.getHistory('lose',evt=>{
if(evt.type=='discard'){
var evtx=evt.getl(player);
return evtx&&evtx.cards2.length==2;
}
}).length) num++;
if(num&&player.countCards('he',card=>player.canRecast(card))){
let result=yield player.chooseCard('he','请重铸一张牌',(card,player)=>player.canRecast(card),true);
if(result.bool) yield player.recast(result.cards);
}
if(num>1&&player.countCards('he',card=>card.name=='sha'&&player.hasUseTarget(card))){
yield player.chooseToUse({
prompt:'请使用一张【杀】',
filterCard:function(card,player){
if(card.name!='sha') return false;
return lib.filter.filterCard.apply(this,arguments);
},
forced:true,
ai1:function(card){
return _status.event.player.getUseValue(card);
},
});
}
if(num>2&&player.countCards('he',card=>lib.filter.cardDiscardable(card,player))) yield player.chooseToDiscard('he',2,true);
},
},
},
},
olzhanjin:{
audio:2,
locked:true,
group:'olzhanjin_guanshi',
subSkill:{
guanshi:{
audio:'olzhanjin',
nobracket:true,
equipSkill:true,
trigger:{player:['shaMiss','eventNeutralized']},
filter:function(event,player){
if(!player.hasEmptySlot(1)||!lib.card.guanshi) return false;
if(event.type!='card'||event.card.name!='sha'||!event.target.isIn()) return false;
return player.countCards('he')>=2;
},
direct:true,
locked:false,
content:function(){
"step 0"
player.chooseToDiscard(get.prompt('olzhanjin_guanshi'),'弃置两张牌,令'+get.translation(trigger.card)+'强制命中',2,'he').set('ai',function(card){
var evt=_status.event.getTrigger();
if(get.attitude(evt.player,evt.target)<0){
if(player.needsToDiscard()) return 15-get.value(card);
if(evt.baseDamage+evt.extraDamage>=Math.min(2,evt.target.hp)) return 8-get.value(card);
return 5-get.value(card);
}
return -1;
}).set('complexCard',true).logSkill='olzhanjin_guanshi';
'step 1'
if(result.bool){
if(event.triggername=='shaMiss'){
trigger.untrigger();
trigger.trigger('shaHit');
trigger._result.bool=false;
trigger._result.result=null;
}
else trigger.unneutralize();
}
},
mod:{
attackRange:function(player,num){
if(lib.card.guanshi&&player.hasEmptySlot(1)) return num-lib.card.guanshi.distance.attackFrom;
},
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
if(player._olzhanjin_guanshi_temp||!player.hasEmptySlot(1)||!lib.card.guanshi) return;
player._guanshi_temp=true;
var bool=(get.attitude(player,arg.target)<0&&arg.card&&arg.card.name=='sha'&&player.countCards('he',card=>{
return card!=arg.card&&(!arg.card.cards||!arg.card.cards.includes(card))&&get.value(card)<5;
})>1);
delete player._olzhanjin_guanshi_temp;
return bool;
},
effect:{
target:function(card,player,target){
if(player==target&&get.subtype(card)=='equip1'){
if(get.equipValue(card)<=get.equipValue({name:'guanshi'})) return 0;
}
},
},
},
},
},
},
//曹宇 //曹宇
olgongjie:{ olgongjie:{
audio:2, audio:2,
@ -764,9 +967,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
} }
return cards.length-player.countCards('h')>0; return cards.length-player.countCards('h')>0;
}, },
usable:1,
logTarget:()=>_status.currentPhase, logTarget:()=>_status.currentPhase,
async content(event,trigger,player){ async content(event,trigger,player){
player.tempBanSkill('olxiangxv',null,false);
player.when({global:'phaseEnd'}).then(()=>{ player.when({global:'phaseEnd'}).then(()=>{
if(target&&target.isIn()){ if(target&&target.isIn()){
var num=target.countCards('h')-player.countCards('h'); var num=target.countCards('h')-player.countCards('h');
@ -26815,6 +27018,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olxiangxv_info:'当你的手牌数变为全场最少时,你可以获得以下效果:本回合结束时,将手牌数调整至与当前回合角色手牌数相同(至多摸至五张)。', olxiangxv_info:'当你的手牌数变为全场最少时,你可以获得以下效果:本回合结束时,将手牌数调整至与当前回合角色手牌数相同(至多摸至五张)。',
olxiangzuo:'襄胙', olxiangzuo:'襄胙',
olxiangzuo_info:'限定技,当你进入濒死状态时,你可以交给当前回合角色任意张牌,若如此做,若你本回合已对其发动过〖恭节〗或〖相胥〗,你回复等量的体力。', olxiangzuo_info:'限定技,当你进入濒死状态时,你可以交给当前回合角色任意张牌,若如此做,若你本回合已对其发动过〖恭节〗或〖相胥〗,你回复等量的体力。',
liyi:'李异',
olchanshuang:'缠双',
olchanshuang_info:'①出牌阶段限一次你可以选择一名其他角色。你与其依次选择〖缠双③〗的一项然后你与其依次执行各自选择的项。②结束阶段若X大于0你执行〖缠双③〗的前X项X为你本回合以任意形式执行过的〖缠双③〗的选项数。③选项1.重铸一张牌2.使用一张【杀】3.弃置两张牌。',
olzhanjin:'蘸金',
olzhanjin_guanshi:'贯石斧(蘸金)',
olzhanjin_info:'锁定技,若你有空置的武器栏,则你视为装备【贯石斧】。',
sp_tianji:'天极·皇室宗亲', sp_tianji:'天极·皇室宗亲',
sp_sibi:'四弼·辅国文曲', sp_sibi:'四弼·辅国文曲',

View File

@ -9182,7 +9182,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}, },
}, },
huaping:{ huaping:{
audio:'huaping', audio:2,
trigger:{global:'die'}, trigger:{global:'die'},
limited:true, limited:true,
skillAnimation:true, skillAnimation:true,
@ -13859,7 +13859,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcjinjie:'尽节', dcjinjie:'尽节',
dcjinjie_info:'当一名角色进入濒死状态时可以令其摸一张牌。然后若你本轮未进行过回合你可以弃置X张手牌令其回复1点体力X为本轮你发动过〖尽节〗的次数。', dcjinjie_info:'当一名角色进入濒死状态时可以令其摸一张牌。然后若你本轮未进行过回合你可以弃置X张手牌令其回复1点体力X为本轮你发动过〖尽节〗的次数。',
dcjue:'举讹', dcjue:'举讹',
dcjue_info:'准备阶段,你可以视为对一名未受伤的角色使用一张【杀】。', dcjue_info:'准备阶段,你可以视为对一名体力值或手牌数大于你的角色使用一张【杀】。',
dc_tengfanglan:'滕芳兰', dc_tengfanglan:'滕芳兰',
dcluochong:'落宠', dcluochong:'落宠',
dcluochong_info:'一轮游戏开始时,你可以弃置任意名角色区域里的共计至多[4]张牌,然后若你以此法弃置了一名角色的至少三张牌,则你方括号内的数字-1。', dcluochong_info:'一轮游戏开始时,你可以弃置任意名角色区域里的共计至多[4]张牌,然后若你以此法弃置了一名角色的至少三张牌,则你方括号内的数字-1。',

BIN
image/character/liyi.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 60 KiB