族吴乔、OL谋关羽

This commit is contained in:
mengxinzxz 2024-01-28 02:32:56 +08:00
parent 6208ddb0f2
commit c8ce3a5b4f
2 changed files with 191 additions and 3 deletions

View File

@ -22,10 +22,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
clan_zhongyu:['male','wei',3,['clanjiejian','clanhuanghan','clanbaozu'],['clan:颍川钟氏']],
clan_wanglun:['male','wei',3,['clanqiuxin','clanjianyuan','clanzhongliu'],['clan:太原王氏']],
clan_xunyou:['male','wei',3,['clanbaichu','clandaojie'],['clan:颍川荀氏']],
clan_wuqiao:['male','jin',4,['clanqiajue','clanmuyin'],['clan:陈留吴氏']],
},
characterSort:{
clan:{
clan_wu:['clan_wuxian','clan_wuban','clan_wukuang'],
clan_wu:['clan_wuxian','clan_wuban','clan_wukuang','clan_wuqiao'],
clan_xun:['clan_xunshu','clan_xunchen','clan_xuncai','clan_xuncan','clan_xunyou'],
clan_han:['clan_hanshao','clan_hanrong'],
clan_wang:['clan_wangling','clan_wangyun','clan_wanghun','clan_wanglun'],
@ -33,6 +34,46 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//族吴乔
clanqiajue:{
audio:2,
trigger:{player:'phaseDrawBegin'},
filter(event,player){
return player.countCards('he',card=>{
if(_status.connectMode&&get.position(card)=='h') return true;
return get.color(card,player)=='black'&&lib.filter.cardDiscardable(card,player);
});
},
direct:true,
async content(event,trigger,player){
const {result:{bool}}=await player.chooseToDiscard(get.prompt2('clanqiajue'),(card,player)=>{
return get.color(card,player)=='black'&&lib.filter.cardDiscardable(card,player);
},'he').set('ai',card=>{
const player=get.event('player'),goon=get.position(card)=='h';
let num=player.getCards('h').reduce((sum,card)=>sum+get.number(card),0);
if(num-(goon?get.number(card):0)>30) return 0;
return goon?get.number(card):1/(get.value(card)||0.5);
}).set('logSkill','clanqiajue');
if(bool){
player.when({player:['phaseDrawEnd','phaseDrawCancelled','phaseUseSkipped']})
.filter(evt=>evt==trigger)
.then(()=>{
const cards=player.getCards('h'),num=cards.reduce((sum,card)=>sum+get.number(card),0);
if(cards.length) player.showCards(cards,get.translation(player)+'【跒倔】展示');
if(num>30){
player.popup('杯具');
lib.skill.chenliuwushi.change(player,-2);
}
else{
player.popup('洗具');
const next=player.phaseDraw();
event.next.remove(next);
trigger.getParent('phase').next.push(next);
}
})
}
},
},
//族荀攸
clanbaichu:{
derivation:'qice',
@ -2508,7 +2549,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
clanmuyin:{
audio:2,
clanSkill:true,
audioname:['clan_wuxian','clan_wuban','clan_wukuang'],
audioname:['clan_wuxian','clan_wuban','clan_wukuang','clan_wuqiao'],
trigger:{player:'phaseBegin'},
isMax(player){
var num=player.getHandcardLimit();
@ -2582,6 +2623,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
wanghun:'王浑223年297年字玄冲太原郡晋阳县今山西省太原市人。魏晋时期名臣曹魏司空王昶的儿子。王浑早年为大将军曹爽的掾吏高平陵政变后循例免官出任怀县县令、散骑侍郎等职袭封京陵县侯。西晋王朝建立后加号扬烈将军历任征虏将军、东中郎将、豫州刺史等职积极筹划伐吴方略。咸宁五年279年配合镇南将军杜预灭亡吴国迁征东大将军、左仆射、司徒公晋爵京陵县公。晋惠帝司马衷即位加任侍中衔。楚王司马玮发动政变有意寻求支持遭到严词拒绝。楚王司马玮死后复任司徒、录尚书事。元康七年297年王浑去世享年七十五岁谥号为元。《唐会要》尊为“魏晋八君子”之一。',
zhongyu:'钟毓(?-263年字稚叔颍川长社今河南长葛市人。三国时期魏国大臣太傅钟繇之子、司徒钟会之兄。出身颍川钟氏机灵敏捷有其父之遗风。十四岁时起家散骑侍郎。太和初年迁黄门侍郎袭封定陵县侯。正始年间拜散骑常侍迁魏郡太守入为侍中、御史中丞、廷尉 [5] 。随平诸葛诞的淮南叛乱拜青州刺史、后将军都督徐州、荆州诸军事。景元四年263年去世追赠车骑将军谥号为惠著有文集五卷见《隋书·经籍志》及《两唐书·经籍志》传于世。',
wanglun:'王沦233年257年字太冲出身太原晋阳王姓世族今山西省太原市王昶三子王浑、王深之弟王湛之兄。醇粹简远崇尚老庄之学心思平淡。二十多时被举荐为孝廉没有前往后任大将军参军。257年诸葛诞不满司马氏篡权而在寿春起义王沦跟随司马昭征讨遭遇疾疫去世时年二十五时人惜之司马昭为他流泪。其兄著诔文《表德论》表述其德行说“因为畏惧帝王的典章制度不能写墓志铭于是撰写过往的事迹刻在墓的背面。”',
wuqiao:'吴乔,西晋人物,蜀车骑将军吴懿之孙。李雄建立成汉政权,他沦落益州,长达三十年,始终不向李雄屈服。',
},
dynamicTranslate:{
clanlianzhu(player){
@ -2615,6 +2657,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
clan_zhongyu_prefix:'族',
clan_wanglun_prefix:'族',
clan_xunyou_prefix:'族',
clan_wuqiao_prefix:'族',
clan_wuxian:'族吴苋',
clanyirong:'移荣',
@ -2708,6 +2751,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
clan_xunyou:'族荀攸',
clanbaichu:'百出',
clanbaichu_info:'锁定技当你使用一张牌结算完毕后若你未记录过此牌的花色和类型组合则你记录此组合并记录一个普通锦囊牌名否则你于本轮获得技能〖奇策〗已记录此牌牌名你回复1点体力或摸一张牌。',
clan_wuqiao:'族吴乔',
clanqiajue:'跒倔',
clanqiajue_info:'摸牌阶段开始时你可以弃置一张黑色牌。若如此做此阶段结束时你展示手牌若这些牌的点数和大于30你的手牌上限-2否则你执行一个额外的摸牌阶段。',
clan_wu:'陈留·吴氏',
clan_xun:'颍川·荀氏',

View File

@ -8,12 +8,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ol_caozhang:['male','wei',4,['oljiangchi'],['die_audio:xin_caozhang']],
ol_jianyong:['male','shu',3,['olqiaoshui','jyzongshi'],['tempname:re_jianyong','die_audio:re_jianyong']],
ol_lingtong:['male','wu',4,['olxuanfeng'],['die_audio:re_lingtong']],
ol_sb_guanyu:['male','shu',4,['olsbfumeng','olsbguidao']],
},
characterSort:{
onlyOL:{
onlyOL_yijiang1:['ol_jianyong','ol_lingtong'],
onlyOL_yijiang2:['ol_caozhang'],
onlyOL_sb:['ol_sb_jiangwei'],
onlyOL_sb:['ol_sb_jiangwei','ol_sb_guanyu'],
},
},
characterIntro:{
@ -21,6 +22,141 @@ game.import('character',function(lib,game,ui,get,ai,_status){
characterReplace:{
},
skill:{
//OL谋关羽
//可以和手杀谋关羽组成卧龙凤雏了
olsbfumeng:{
audio:2,
trigger:{global:'roundStart'},
filter(event,player){
return player.countCards('h');
},
direct:true,
async content(event,trigger,player){
const {result:{bool,cards}}=await player.chooseCard(get.prompt2('olsbfumeng'),[1,Infinity]).set('ai',card=>{
const player=get.event('player');
if(player.hasSkill('olsbfumeng')) return 7-get.value(card);
return 4.5-get.value(card);
});
if(!bool) return;
player.logSkill('olsbfumeng');
player.addSkill('olsbfumeng_buff');
player.addGaintag(cards,'olsbfumeng_buff');
},
subSkill:{
buff:{
charlotte:true,
mod:{
cardname:function(card){
if(get.itemtype(card)=='card'&&card.hasGaintag('olsbfumeng_buff')) return 'sha';
},
},
},
},
},
olsbguidao:{
audio:2,
enable:'phaseUse',
filter(event,player){
if(event.olsbguidao_num>2) return false;
const card=new lib.element.VCard({name:'juedou',storage:{olsbguidao:true}});
return game.hasPlayer(target=>{
return player.canUse(card,target,false);
})&&player.countCards('he',cardx=>{
return player.canRecast(cardx);
})>=2&&player.countCards('he',cardx=>{
return get.name(cardx,player)=='sha'&&player.canRecast(cardx);
})>=event.olsbguidao_num;
},
onChooseToUse(event){
if(!game.online&&!event.olsbguidao_num){
const player=event.player,history=player.getHistory('lose',evt=>{
return evt.getParent(2).name=='recast'&&evt.getParent(3).name=='olsbguidao';
});
if(!history.length) event.set('olsbguidao_num',0);
else{
const evt=history[history.length-1];
event.set('olsbguidao_num',evt.cards.filter(card=>get.name(card,player)=='sha').length+1);
}
}
},
filterCard(card,player){
const num=get.event('olsbguidao_num');
if(ui.selected.cards.filter(cardx=>get.name(cardx,player)=='sha').length<num&&get.name(card,player)!='sha') return false;
return player.canRecast(card);
},
selectCard:2,
position:'he',
check(card){
const player=get.event('player');
if(get.name(card,player)=='sha') return 1/(get.value(card)||0.5);
return 7-get.value(card);
},
complexCard:true,
lose:false,
discard:false,
delay:0,
filterTarget(card,player,target){
const cardx=new lib.element.VCard({name:'juedou',storage:{olsbguidao:true}});
return player.canUse(cardx,target,false);
},
prompt(){
let str='重铸两张牌';
const num=get.event('olsbguidao_num');
if(num>0) str+='(至少重铸'+get.cnNumber(num)+'张【杀】)';
str+='并视为使用【决斗】';
return str;
},
async content(event,trigger,player){
const target=event.target,cards=event.cards;
const card=new lib.element.VCard({name:'juedou',storage:{olsbguidao:true}});
await player.recast(cards);
player.addTempSkill('olsbguidao_buff');
if(player.canUse(card,target,false)) player.useCard(card,target,false);
},
ai:{
order(item,player){
const card=new lib.element.VCard({name:'juedou',storage:{olsbguidao:true}});
const order=get.order(card,player);
if(order<=0) return 0;
return order+0.1;
},
result:{
target(player,target){
const card=new lib.element.VCard({name:'juedou',storage:{olsbguidao:true}});
return get.sgn(get.attitude(player,target))*get.effect(target,card,player,player);
},
},
},
subSkill:{
buff:{
charlotte:true,
trigger:{global:'damageBegin3'},
filter(event,player){
return event.card&&event.source&&event.card.storage&&event.card.storage.olsbguidao&&event.source==player;
},
forced:true,
popup:false,
async content(event,trigger,player){
const target=trigger.player;
const {result:{control}}=await target.chooseControl('【杀】更多','非【杀】更多')
.set('prompt','归刀:请猜测'+get.translation(player)+'手牌中【杀】与非【杀】牌数哪个更多')
.set('prompt2','若猜错,则'+get.translation(trigger.card)+'对你造成的伤害+1')
.set('ai',()=>_status.event.controls.randomGet());
const goon1=player.countCards('h',card=>get.name(card,player)=='sha')>=player.countCards('h',card=>get.name(card,player)!='sha');
const goon2=player.countCards('h',card=>get.name(card,player)!='sha')>=player.countCards('h',card=>get.name(card,player)=='sha');
if((goon1&&control=='【杀】更多')||(goon2&&control=='非【杀】更多')){
target.popup('判断正确','wood');
game.log(target,'猜测','#g正确');
}
else{
target.popup('判断错误','fire');
game.log(target,'猜测','#y错误');
trigger.increase('num');
}
},
},
},
},
//OL谋姜维
olsbzhuri:{
audio:2,
@ -354,6 +490,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
olsbranji_info:'限定技,结束阶段。若你本回合使用过牌的阶段数大于等于/小于等于体力值,你可以获得技能〖困奋〗/〖诈降〗(同时满足则都获得,以此法获得的〖困奋〗直接修改为非锁定技)。若如此做,你将手牌数调整至手牌上限或将体力值回复至体力上限,然后你不能回复体力直到你杀死角色。',
kunfenx:'困奋',
kunfenx_info:'结束阶段开始时你可以失去1点体力然后摸两张牌。',
ol_sb_guanyu:'OL谋关羽',
ol_sb_guanyu_prefix:'OL谋',
olsbfumeng:'赋梦',
olsbfumeng_info:'一轮游戏开始时,你可以令任意张手牌的牌名视为【杀】。',
olsbguidao:'归刀',
olsbguidao_info:'出牌阶段,你可以重铸两张牌并视为使用一张【决斗】(若你本回合已发动过〖归刀〗,则此次重铸的【杀】数必须比本回合上一次发动〖归刀〗重铸的【杀】数多)。目标角色受到此牌伤害时,其须猜测你手牌中牌名为【杀】的牌数量多还是牌名不为【杀】的牌数多,若其猜错,则此【决斗】对其造成的伤害+1。',
onlyOL_yijiang1:'OL专属·将1',
onlyOL_yijiang2:'OL专属·将2',