成济成倅

This commit is contained in:
copcap 2023-11-07 06:33:38 +08:00
parent ff4603a07b
commit 04f9e2f132
No known key found for this signature in database
GPG Key ID: 9AE7B8AF097EC926
12 changed files with 171 additions and 5 deletions

Binary file not shown.

BIN
audio/skill/olchuming1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/olchuming2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/oltousui1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/oltousui2.mp3 Normal file

Binary file not shown.

View File

@ -1685,10 +1685,22 @@ game.import('card',function(lib,game,ui,get,ai,_status){
useful:1,
},
result:{
target:-1.5,
target:function(player,target){
if(ui.selected.targets.length){
const preTarget=ui.selected.targets.lastItem;
const eff=get.effect(target,{name:'sha'},preTarget,player);
return Math.sign(eff)*get.sgnAttitude(player,target);
}
const filter=get.info({name:'jiedao'}).filterAddedTarget;
if(game.hasPlayer(current=>{
return filter(null,null,current,target)&&get.effect(current,{name:'sha'},target,player)>=0;
})) return -1;
if(target.mayHaveSha(player,'use')) return 0.25;
return -1;
},
player:function(player){
if(player.getCards('he',{subtype:'equip1'}).length) return 0;
return 1.5;
return 1.25;
},
},
tag:{

View File

@ -561,13 +561,13 @@ game.import('card',function(lib,game,ui,get,ai,_status){
prompt:'是否发动【赠毒】?',
prompt2:'将本次获得的【毒】交给其他角色',
ai1:function(card){
var player = _status.event.player;
if(player.hasSkillTag("usedu")||get.effect(player,{name: "losehp"}, player, player)>0) return 0;
var player=get.player();
if(['usedu','keepdu'].some(tag=>player.hasSkillTag(tag))||get.effect(player,{name:"losehp"},player,player)>0) return 0;
if(!ui.selected.cards.length) return 1;
return 0;
},
ai2:function(target){
if (target.hasSkillTag("usedu")) return get.attitude(_status.event.player,target)-0.01;
if(['usedu','keepdu'].some(tag=>target.hasSkillTag(tag))) return get.attitude(_status.event.player,target)-0.01;
return -get.attitude(_status.event.player,target)+0.01;
},
});

View File

@ -982,6 +982,7 @@ window.noname_character_rank={
'jsrg_zhangchu',
'ol_dingshangwan',
'ol_liwan',
'chengjichengcui',
],
b:[
'diy_feishi',

View File

@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'yingbian',
connect:true,
character:{
chengjichengcui:['male','jin',6,['oltousui','olchuming']],
wangxiang:['male','jin',3,['bingxin']],
jin_jiachong:['male','jin',3,['xiongshu','jianhui']],
xuangongzhu:['female','jin',3,['gaoling','qimei','ybzhuiji'],['hiddenSkill']],
@ -37,6 +38,151 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//二成
oltousui:{
audio:2,
enable:'chooseToUse',
viewAsFilter:function(player){
return player.countCards('he');
},
viewAs:{
name:'sha',
suit:'none',
number:null,
isCard:true,
},
filterCard:true,
selectCard:[1,Infinity],
position:'he',
check:function(card){
const player=get.player();
return 4.5+(player.hasSkill('olchuming')?1:0)-1.5*ui.selected.cards.length-get.value(card);
},
popname:true,
ignoreMod:true,
precontent:function*(event,map){
var player=map.player;
var evt=event.getParent();
if(evt.dialog&&typeof evt.dialog=='object') evt.dialog.close();
player.logSkill('oltousui');
delete event.result.skill;
var cards=event.result.cards;
player.loseToDiscardpile(cards,ui.cardPile,false,'blank').log=false;
var shownCards=cards.filter(i=>get.position(i)=='e'),handcardsLength=cards.length-shownCards.length;
if(shownCards.length){
player.$throw(shownCards,null);
game.log(player,'将',shownCards,'置于了牌堆底');
}
if(handcardsLength>0){
player.$throw(handcardsLength,null);
game.log(player,'将',get.cnNumber(handcardsLength),'张牌置于了牌堆底');
}
game.delayex();
var viewAs=new lib.element.VCard({name:event.result.card.name,isCard:true});
event.result.card=viewAs;
event.result.cards=[];
event.result._apply_args={
shanReq:cards.length,
oncard:()=>{
var evt=get.event();
for(var target of evt.targets){
var id=target.playerid;
var map=evt.customArgs;
if(!map[id]) map[id]={};
map[id].shanRequired=evt.shanReq;
}
}
};
},
ai:{
order:function(item,player){
return get.order({name:'sha'})+0.1;
},
result:{player:1},
keepdu:true,
respondSha:true,
skillTagFilter:(player,tag,arg)=>{
if(tag=='respondSha'&&arg!='use') return false;
},
},
},
olchuming:{
audio:2,
trigger:{
source:'damageBegin1',
player:'damageBegin3',
},
filter:function(event,player){
return event.source!=event.player;
},
forced:true,
content:function*(event,map){
var player=map.player,trigger=map.trigger;
if(!trigger.card||!trigger.cards.length){
trigger.num++;
event.finish();
return;
}
else{
var target=trigger[trigger.source==player?'player':'source'];
trigger._olchuming=true;
target.addTempSkill('olchuming_effect');
}
},
ai:{
effect:{
player:function(card,player,target){
if(!get.tag(card,'damage')) return;
if(!lib.card[card.name]||!card.cards||!card.cards.length) return [1,0,1,-1];
return [1,-1];
},
},
},
subSkill:{
effect:{
charlotte:true,
trigger:{global:'phaseEnd'},
forced:true,
popup:false,
content:function*(event,map){
var player=map.player;
var mapx={};
var history=player.getHistory('damage').concat(player.getHistory('sourceDamage'));
history.forEach(evt=>{
if(!evt._olchuming) return;
var target=evt[evt.source==player?'player':'source'];
if(!target.isIn()) return;
if(!mapx[target.playerid]) mapx[target.playerid]=[];
mapx[target.playerid].addArray(evt.cards.filterInD('d'));
});
var entries=Object.entries(mapx).map(entry=>{
return [(_status.connectMode?lib.playerOL:game.playerMap)[entry[0]],entry[1]];
});
if(!entries.length){
event.finish();
return;
}
player.logSkill('olchuming_effect',entries.map(i=>i[0]));
entries.sort((a,b)=>lib.sort.seat(a[0],b[0]));
for(var entry of entries){
var current=entry[0],cards=entry[1];
var list=['jiedao','guohe'].filter(i=>player.canUse(new lib.element.VCard({name:i,cards:cards}),current,false));
if(!list.length) return;
var result=({});
if(list.length==1) result={bool:true,links:[['','',list[0]]]};
else result=yield player.chooseButton([`畜鸣:请选择要对${get.translation(current)}使用的牌`,[list,'vcard']],true).set('ai',button=>{
var player=get.player();
return get.effect(get.event('currentTarget'),{name:button.link[2]},player,player);
}).set('currentTarget',current);
if(result.bool){
var card=get.autoViewAs({name:result.links[0][2]},cards);
if(player.canUse(card,current,false)) player.useCard(card,cards,current,false);
}
}
}
}
}
},
bingxin:{
audio:2,
enable:'chooseToUse',
@ -3588,6 +3734,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xuangongzhu:'高陵宣公主司马氏晋宣帝司马懿第二女。司马氏下嫁杜预。其侄司马炎登基时司马氏已经去世。泰始年间265年—274年追赠高陵公主。',
jin_guohuai:'郭槐237年-296年字媛韶太原阳曲今山西太原魏晋权臣贾充的妻子。父亲是曹魏城阳郡太守郭配伯父是曹魏名将郭淮。出身太原郭氏。二十一岁时嫁贾充作继室生二女二子长女贾南风次女贾午一子贾黎民。贾南风是西晋惠帝司马衷皇后干预国政专权误国直接导致“八王之乱”和西晋亡国。',
wangxiang:'王祥184年一作180年268年4月30日字休徵。琅邪临沂今山东省临沂市西孝友村人。三国曹魏及西晋时大臣。王祥于东汉末隐居二十年在曹魏先后任县令、大司农、司空、太尉等职封爵睢陵侯。西晋建立拜太保进封睢陵公。泰始四年四月戊戌日268年4月30日去世年八十五一作八十九谥号“元”。有《训子孙遗令》一文传世。王祥侍奉后母朱氏极孝为传统文化中二十四孝之一“卧冰求鲤”的主人翁。',
chengjichengcui:'成倅、成济260年6月21日扬州丹阳今安徽省宣城市人。三国时期曹魏将领。依附于司马氏家族得到司马昭的心腹贾充指使刺死魏帝曹髦。司马昭为平息众怒将成倅、成济兄弟二人杀死。据《魏氏春秋》记载成济兄弟不服罪光着身子跑到屋顶大骂司马昭被军士从下乱箭射杀。',
},
characterTitle:{},
perfectPair:{},
@ -3805,6 +3952,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
qiaoyan_info:'锁定技,当你于回合外受到其他角色造成的伤害时,若你:有“珠”,则你令伤害来源获得“珠”;没有“珠”,则你防止此伤害,然后摸一张牌,并将一张牌正面朝上置于武将牌上,称为“珠”。',
xianzhu:'献珠',
xianzhu_info:'锁定技出牌阶段开始时你令一名角色A获得“珠”。若A不为你自己则你选择A攻击范围内的一名角色B视为A对B使用一张【杀】。',
chengjichengcui:'成济成倅',
oltousui:'透髓',
oltousui_info:'你可以将任意张牌置于牌堆底,视为使用一张需使用等量张【闪】抵消的【杀】。',
olchuming:'畜鸣',
olchuming_info:'锁定技。当你对其他角色造成伤害时,或当你受到其他角色造成的伤害时,若此伤害的渠道不为牌或没有对应的实体牌,此伤害+1否则其于本回合结束时将所有以此法造成伤害的牌当【借刀杀人】或【过河拆桥】对你使用。',
yingbian_pack1:'文德武备·理',
yingbian_pack2:'文德武备·备',

View File

@ -64,6 +64,7 @@ var pinyin_dict_polyphone = {
"库特莉亚芙卡": " kǎ",
"露娜": "lù ",
// 技能名
"畜鸣": "chù ",
"聆乐": " yuè",
"没矢": "mò ",
"没欲": "mò ",

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB