This commit is contained in:
copcap 2024-02-25 02:05:11 +08:00
parent 1fd09c9cac
commit 0aa848735e
No known key found for this signature in database
GPG Key ID: 30E7AB6699451AEE
3 changed files with 193 additions and 2 deletions

View File

@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'huicui',
connect:true,
character:{
dc_jiangji:['male','wei',3,['dcshiju','dcyingshi']],
gongsunxiu:['male','qun',4,['dcgangu','dckuizhen']],
dc_liuli:['male','shu',3,['dcfuli','dcdehua']],
yue_daqiao:['female','wu',3,['dcqiqin','dczixi']],
@ -115,10 +116,181 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_raoting:['dc_huanghao','dc_sunziliufang','dc_sunchen','dc_jiachong'],
sp_yijun:['gongsundu','mengyou','dc_sp_menghuo','gongsunxiu'],
sp_zhengyin:['yue_caiwenji','yue_zhoufei','yue_caiyong','yue_xiaoqiao','yue_daqiao'],
sp_zhonghu:['dc_jiangji'],
}
},
/** @type { importCharacterConfig['skill'] } */
skill:{
//蒋济
dcshiju:{
audio:2,
global:'dcshiju_global',
subSkill:{
global:{
audio:'dcshiju',
enable:'phaseUse',
usable:1,
filter(event,player){
return game.hasPlayer(current=>{
if(current==player||!current.hasSkill('dcshiju')) return false;
return player.countCards('he');
});
},
filterTarget(card,player,target){
return target!=player&&target.hasSkill('dcshiju');
},
selectTarget(){
const num=game.countPlayer(current=>{
return current.hasSkill('dcshiju');
});
return num>1?1:-1;
},
filterCard:true,
position:'he',
check(card){
const player=get.player();
if(get.type(card)==='equip'){
if(player.countCards('he',{subtype:get.subtype(card)})>1){
return 11-get.equipValue(card);
}
return 6-get.value(card);
}
return 4-get.value(card);
},
prompt(){
const list=game.filterPlayer(current=>{
return current.hasSkill('dcshiju');
});
return `将一张牌交给${get.translation(list)}${list.length>1?'中的一人':''},若此牌为装备牌,其可以使用之,且你本回合的攻击范围+XX为其装备区的牌数。若其以此法替换了装备你与其各摸两张牌。`;
},
discard:false,
lose:false,
prepare(cards,player,targets){
player.$give(cards,targets[0],false);
},
async content(event,trigger,player){
const card=event.cards[0],target=event.target;
await player.give(card,target);
if(!target.getCards('h').includes(card)||get.type(card)!=='equip') return;
const bool=await target.chooseUseTarget(card).forResultBool();
if(!bool) return;
const count=target.countCards('e');
if(count>0){
player.addTempSkill('dcshiju_range');
player.addMark('dcshiju_range',count);
if(target.hasHistory('lose',evt=>{
return evt.getParent().name==='equip'&&evt.getParent(4)===event&&evt.es&&evt.es.length>0;
})){
for(const current of [player,target]) await current.draw(2);
}
}
},
ai:{
order:10,
result:{
target(player,target){
const card=ui.selected.cards[0];
if(card&&get.type(card)!=='equip') return get.value(card,target)/5;
return 0;
},
},
},
},
range:{
charlotte:true,
onremove:true,
mod:{
attackRange:function(player,num){
return num+player.countMark('dcshiju_range');
},
},
intro:{content:'本回合攻击范围+#'},
},
},
},
dcyingshi:{
audio:2,
trigger:{player:'useCardToPlayered'},
filter(event,player){
if(!event.isFirstTarget) return false;
if(get.type(event.card)!=='trick') return false;
const evt=event.getParent();
const evts=game.getGlobalHistory('useCard',null,evt).slice().remove(evt);
return event.targets.some(target=>{
return evts.some(evt=>evt.targets.includes(target));
});
},
costContent(event,player){
const evt=event.getParent();
const evts=game.getGlobalHistory('useCard',null,evt).slice().remove(evt);
const targets=event.targets.filter(target=>{
return evts.some(evt=>evt.targets.includes(target));
});
return player.chooseTarget()
.set('filterTarget',(card,player,target)=>{
return get.event('targets').includes(target);
})
.set('targets',targets)
.set('toFriends',(()=>{
if(player.hasSkill('dcyingshi_choice1')||player.countCards('e')<2) return true;
if(!player.hasSkill('dcyingshi_choice1')&&get.tag(event.card,'norepeat')) return true;
if(targets.some(current=>{
return get.effect(current,event.card,event.player,player)>0;
})) return true;
return false;
})())
.set('ai',target=>{
const player=get.player(),count=player.countCards('e'),att=get.attitude(player,target);
if(att>0&&get.event('toFriends')){
if(target.countCards('he',card=>get.value(card)<5)<count) return 0;
return att;
}
if(player.hasSkill('dcyingshi_choice1')&&!count) return 0;
return -get.attitude(player,target);
});
},
async content(event,trigger,player){
const {costResult:{targets}}=event,target=targets[0];
let bool;
if([1,2].every(i=>!player.hasSkill(`dcyingshi_choice${i}`))){
const count=player.countCards('e');
if(count>0){
bool=await target.chooseToDiscard(`${get.translation(player)}对你发动了【应时】`,`是否弃置${get.cnNumber(count)}张牌,令${get.translation(trigger.card)}对你无效?或点击“取消”,令此牌对你额外结算一次。`,count).set('ai',card=>{
if(get.event('goon')) return 5.5-get.value(card);
return 0;
}).set('goon',!get.tag(trigger.card,'norepeat')&&get.effect(target,trigger.card,trigger.player,target)<-5).forResultBool();
}
else bool=false;
}
else bool=player.hasSkill('dcyingshi_choice1');
if(bool){
trigger.excluded.add(target);
}
else{
player.when({global:'useCardAfter'})
.filter(evt=>evt===trigger.getParent())
.vars({
targetx:target,
cardx:{
name:trigger.card.name,
nature:trigger.card.nature,
isCard:true,
storage:{dcyingshi:true},
},
})
.then(()=>{
const next=player.useCard(get.copy(cardx),targetx,false);
if(trigger.addedTarget) next.addedTarget=trigger.addedTarget;
if(trigger.addedTargets&&trigger.addedTargets.length) next.addedTargets=trigger.addedTargets.slice(0);
});
}
player.addTempSkill(`dcyingshi_choice${bool+1}`);
},
subSkill:{
choice1:{charlotte:true},
choice2:{charlotte:true},
},
},
//公孙修
dcgangu:{
audio:2,
@ -165,6 +337,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
await target.loseHp();
}
},
ai:{
result:{
target(player,target){
const [juedouEff,loseEff]=[
get.effect(player,{name:'juedou'},target,player),
get.effect(target,{name:'losehp'},target,player)
];
if(juedouEff>0) return loseEff*get.attitude(player,target)/10;
return 0;
},
}
},
subSkill:{
effect:{
trigger:{player:'useCard1'},
@ -12195,6 +12379,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
dcgangu_info:'锁定技。每回合限一次。当其他角色失去体力后你摸两张牌然后失去1点体力。',
dckuizhen:'溃阵',
dckuizhen_info:'出牌阶段限一次。你可以令一名手牌数或体力值大于你的角色视为对你使用一张【决斗】。若你受到渠道为此牌的伤害你观看其手牌并获得其中所有的【杀】你使用以此法得到的牌无任何次数限制未受到渠道为此牌的伤害其失去1点体力。',
dc_jiangji:'蒋济',
dcshiju:'势举',
dcshiju_info:'其他角色的出牌阶段限一次。其可以交给你一张牌,若此牌为装备牌,你可以使用之,然后其本回合攻击范围+XX为你装备区里的牌数。若你以此法替换了装备你与其各摸两张牌。',
dcyingshi:'应时',
dcyingshi_info:'每回合每项各限一次。当你使用普通锦囊牌指定第一个目标后若有目标不为本回合第一次成为牌的目标则你可以令其选择一项⒈令你于此牌结算结束后视为对其使用一张与此牌牌名相同的牌⒉弃置X张牌此牌对其无效X为你装备区里的牌数。',
sp_baigei:'无双上将',
sp_caizijiaren:'才子佳人',
@ -12209,6 +12398,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_raoting:'绕庭之鸦',
sp_yijun:'异军突起',
sp_zhengyin:'正音雅乐',
sp_zhonghu:'冢虎狼顾',
},
};
});

View File

@ -16472,7 +16472,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
mutao_info:'出牌阶段限一次。你可以选择一名角色令其将手牌中所有的【杀】置于武将牌上然后将这些牌依次随机交给其下家开始的每一名角色。然后其对最后一名以此法获得【杀】的角色A造成X点伤害X为A手牌中【杀】的数量且至多为2。',
yimou:'毅谋',
yimou_info:'当一名角色受到伤害后若其存活且你至其的距离不大于1你可以选择一项1.令其从牌堆中获得一张【杀】2.令其将一张手牌交给另一名角色,然后摸一张牌。',
jiangji:'蒋济',
jiangji:'手杀蒋济',
jiangji_prefix:'手杀',
jilun:'机论',
jilun_info:'①当你受到伤害后若你拥有技能〖急筹〗则你可以一项1.摸两张牌。2.获得1枚“机论”标记。②一名角色的结束阶段若你拥有“机论”则重复选择执行以下项直到你没有“机论”标记1.失去1枚“机论”标记视为使用一张〖急筹①〗记录过且未被〖机论②〗记录过的普通锦囊牌并记录此牌牌名。2.失去所有“机论”标记。',
liwei:'李遗',

View File

@ -15338,7 +15338,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
tw_caocao:['tw_caocao','jsrg_caocao','yj_caocao'],
mateng:['tw_mateng','mateng'],
xiahouen:['tw_xiahouen','jsrg_xiahouen'],
jiangji:['tw_jiangji','jiangji'],
jiangji:['dc_jiangji','tw_jiangji','jiangji'],
baoxin:['tw_baoxin','baoxin'],
yanxiang:['yanxiang','tw_yanxiang'],
liwei:['liwei','tw_liwei'],