commit
b036b758d3
|
@ -13,7 +13,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
extra_yin:['shen_liubei','shen_luxun'],
|
||||
extra_lei:['shen_ganning','shen_zhangliao'],
|
||||
extra_key:['key_kagari','key_shiki','db_key_hina'],
|
||||
extra_decade:['shen_jiangwei','shen_machao','shen_zhangfei','shen_zhangjiao','shen_dengai'],
|
||||
extra_decade:['shen_jiangwei','shen_machao','shen_zhangfei','shen_zhangjiao','shen_dengai','shen_xuzhu'],
|
||||
extra_ol:['ol_zhangliao','shen_caopi','shen_zhenji','shen_sunquan'],
|
||||
extra_mobilezhi:['shen_guojia','shen_xunyu'],
|
||||
extra_mobilexin:['shen_taishici','shen_sunce'],
|
||||
|
@ -23,6 +23,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
shen_xuzhu:['male','shen',5,['zhengqing','zhuangpo'],['wei']],
|
||||
shen_lusu:['male','shen',3,['dingzhou','tamo','zhimeng'],['wu']],
|
||||
shen_huatuo:['male','shen',3,['wuling','youyi'],['qun']],
|
||||
le_shen_jiaxu:['male','shen',4,['jxlianpo','jxzhaoluan'],['qun']],
|
||||
|
@ -92,6 +93,172 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
/** @type { importCharacterConfig['skill'] } */
|
||||
skill:{
|
||||
//神许褚
|
||||
zhengqing:{
|
||||
audio:2,
|
||||
trigger:{global:'roundStart'},
|
||||
forced:true,
|
||||
filter(){
|
||||
return game.hasPlayer(current=>{
|
||||
return current.countMark('zhengqing');
|
||||
})||lib.skill.zhengqing.getMostInfoLastRound()[0]>0;
|
||||
},
|
||||
getMostInfoLastRound(){
|
||||
let max=-1,players=[];
|
||||
const history=game.getAllGlobalHistory();
|
||||
if(history.length<=2) return [max,players];
|
||||
for(let i=history.length-2;i>=0;i--){
|
||||
const evts=history[i]['everything'].filter(evt=>{
|
||||
if(evt.name!=='damage') return false;
|
||||
const source=evt.source;
|
||||
return source&&source.isIn();
|
||||
});
|
||||
if(evts.length){
|
||||
let curMax=-1,curPlayers=[];
|
||||
const map={};
|
||||
for(const evt of evts){
|
||||
const source=evt.source;
|
||||
const id=source.playerid;
|
||||
if(typeof map[id]!=='number') map[id]=0;
|
||||
map[id]+=evt.num;
|
||||
if(map[id]>curMax){
|
||||
curMax=map[id];
|
||||
curPlayers=[source];
|
||||
}
|
||||
else if(map[id]==curMax){
|
||||
curPlayers.add(source);
|
||||
}
|
||||
}
|
||||
if(curMax>max){
|
||||
max=curMax;
|
||||
players=curPlayers.slice();
|
||||
}
|
||||
else if(curMax===max){
|
||||
players.addArray(curPlayers);
|
||||
}
|
||||
}
|
||||
if(history[i].isRound) break;
|
||||
}
|
||||
return [max,players];
|
||||
},
|
||||
async content(event,trigger,player){
|
||||
game.countPlayer(current=>{
|
||||
if(current.hasMark('zhengqing')) current.clearMark('zhengqing');
|
||||
});
|
||||
const [num,players]=lib.skill.zhengqing.getMostInfoLastRound();
|
||||
player.line(players,'thunder');
|
||||
const onlyMe=players.length===1&&players[0]===player;
|
||||
const isMax=(player.getAllHistory('custom',evt=>evt&&evt.zhengqing_count).map(evt=>evt.zhengqing_count).sort((a,b)=>b-a)[0]||0)<=num;
|
||||
players.forEach(current=>{
|
||||
current.addMark('zhengqing',num);
|
||||
})
|
||||
if(onlyMe&&isMax){
|
||||
player.draw(num);
|
||||
player.getHistory('custom').push({zhengqing_count:num});
|
||||
}
|
||||
else{
|
||||
const drawers=[player].concat(players).sortBySeat(trigger.player);
|
||||
for(const drawer of drawers){
|
||||
await drawer.draw();
|
||||
}
|
||||
}
|
||||
},
|
||||
marktext:'擎',
|
||||
intro:{
|
||||
name:'争擎',
|
||||
name2:'擎',
|
||||
content:'mark',
|
||||
},
|
||||
},
|
||||
zhuangpo:{
|
||||
audio:2,
|
||||
enable:'chooseToUse',
|
||||
onChooseToUse(event){
|
||||
if(!game.online&&!event.zhuangpo_cards){
|
||||
event.set('zhuangpo_cards',event.player.getCards('hes',card=>{
|
||||
const str=lib.skill.shencai.getStr(card);
|
||||
return str.includes('【杀】');
|
||||
}));
|
||||
}
|
||||
},
|
||||
viewAs:{
|
||||
name:'juedou',
|
||||
storage:{zhuangpo:true},
|
||||
},
|
||||
viewAsFilter(){
|
||||
return get.event('zhuangpo_cards').length>0;
|
||||
},
|
||||
prompt:'将一张牌面信息包含“【杀】”的牌当【决斗】使用',
|
||||
filterCard(card,player){
|
||||
return get.event('zhuangpo_cards').includes(card);
|
||||
},
|
||||
position:'hes',
|
||||
precontent(){
|
||||
player.addTempSkill('zhuangpo_effect');
|
||||
},
|
||||
subSkill:{
|
||||
effect:{
|
||||
trigger:{
|
||||
player:'useCardToPlayered',
|
||||
},
|
||||
filter(event,player){
|
||||
const card=event.card;
|
||||
if(!card||!card.storage||!card.storage.zhuangpo) return false;
|
||||
return player.hasMark('zhengqing');
|
||||
},
|
||||
direct:true,
|
||||
charlotte:true,
|
||||
group:'zhuangpo_damage',
|
||||
async content(event,trigger,player){
|
||||
const target=trigger.target;
|
||||
const list=Array.from({length:player.countMark('zhengqing')},(_,i)=>{
|
||||
return get.cnNumber(i+1,true);
|
||||
});
|
||||
const result=await player.chooseControl(list,'cancel2')
|
||||
.set('prompt','壮魄:是否移去任意枚“擎”?')
|
||||
.set('prompt2',`若如此做,${get.translation(target)}须弃置等量的牌`)
|
||||
.set('ai',()=>get.event('choice'))
|
||||
.set('choice',(()=>{
|
||||
if(get.attitude(player,target)>=0) return 'cancel2';
|
||||
const markCount=list.length;
|
||||
const cards=target.getCards('he',card=>lib.filter.cardDiscardable(card,target));
|
||||
let allIn=false;
|
||||
if(player.hp<2||target.hp+target.countCards('h',card=>target.canSaveCard(card,target))<=1+trigger.targets.some(current=>current.hasMark('zhengqing'))) allIn=true;
|
||||
if(cards.map(card=>get.value(card)).reduce((p,c)=>p+c,0)/cards.length>5) allIn=true;
|
||||
if(!player.isPhaseUsing()||!player.hasCard(card=>{
|
||||
if(!lib.skill.shencai.getStr(card).includes('【杀】')) return false;
|
||||
return player.hasValueTarget(get.autoViewAs({name:'juedou'},[card]));
|
||||
})) allIn=true;
|
||||
const maxCount=Math.min(markCount,cards.length);
|
||||
const toRemoveCount=allIn?maxCount:Math.ceil(Math.random()*maxCount);
|
||||
return get.cnNumber(toRemoveCount,true);
|
||||
})())
|
||||
.forResult();
|
||||
if(result.control==='cancel2') return;
|
||||
const toRemoveCount=result.index+1;
|
||||
player.logSkill('zhuangpo_effect',target);
|
||||
player.popup(get.cnNumber(toRemoveCount)+'张');
|
||||
player.removeMark('zhengqing',toRemoveCount);
|
||||
target.chooseToDiscard('he',toRemoveCount,true);
|
||||
}
|
||||
},
|
||||
damage:{
|
||||
audio:'zhuangpo',
|
||||
trigger:{source:'damageBegin1'},
|
||||
filter(event,player){
|
||||
const card=event.card;
|
||||
if(!card||!card.storage||!card.storage.zhuangpo) return false;
|
||||
const evt=event.getParent(2);
|
||||
return evt.targets&&evt.targets.some(current=>current.hasMark('zhengqing'));
|
||||
},
|
||||
charlotte:true,
|
||||
forced:true,
|
||||
async content(event,trigger){
|
||||
trigger.num++;
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//神鲁肃
|
||||
dingzhou:{
|
||||
audio:2,
|
||||
|
@ -8369,6 +8536,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
tamo_info:'游戏开始时,你可以重新分配除主公外所有角色的座次。',
|
||||
zhimeng:'智盟',
|
||||
zhimeng_info:'回合结束后,你可以与一名其他角色将各自所有手牌置于处理区,然后你随机获得这些牌中的一半(向上取整),其获得剩余的牌。',
|
||||
shen_xuzhu:'神许褚',
|
||||
shen_xuzhu_prefix:'神',
|
||||
zhengqing:'争擎',
|
||||
zhengqing_info:'锁定技。一轮游戏开始时,你移去所有角色的“擎”标记,令上一轮于一回合内造成伤害值最多的角色各获得X枚“擎”,且你与这些角色各摸一张牌(X为这些角色该回合内造成的伤害值)。若该角色为你且本次获得的“擎”数为本局游戏最多的一次,你改为摸X张牌。',
|
||||
zhuangpo:'壮魄',
|
||||
zhuangpo_info:'你可以将牌面信息中包含“【杀】”的牌当【决斗】使用,然后你获得如下效果:1.当此【决斗】指定目标后,若你有“擎”,你可以移去任意枚“擎”,令目标角色弃置等量的牌;2.当你造成渠道为此牌的伤害时,若此牌的所有目标角色中存在有“擎”的角色,此伤害+1。',
|
||||
|
||||
|
||||
extra_feng:'神话再临·风',
|
||||
extra_huo:'神话再临·火',
|
||||
|
|
|
@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
connect:true,
|
||||
character:{
|
||||
yue_daqiao:['female','wu',3,['dcqiqin','dczixi']],
|
||||
kongrong:['male','qun',3,['dckrmingshi','lirang']],
|
||||
dc_kongrong:['male','qun',3,['dckrmingshi','lirang']],
|
||||
dc_sp_menghuo:['male','qun',4,['dcmanwang']],
|
||||
dc_lingcao:['male','wu','4/5',['dcdufeng']],
|
||||
yue_xiaoqiao:['female','wu',3,['dcqiqin','dcweiwan']],
|
||||
|
@ -337,7 +337,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
if(get.event('goon')) return 0;
|
||||
return 6-get.value(card);
|
||||
}).set('goon',get.damageEffect(player,target,target)<=0);
|
||||
if(!bool) trigger.decrease('num');
|
||||
if(!bool) trigger.cancel();
|
||||
},
|
||||
ai:{
|
||||
effect:{
|
||||
|
@ -11964,7 +11964,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcmanwang_info:'出牌阶段,你可以弃置任意张牌。然后你依次执行以下选项中的前X项:⒈获得〖叛侵〗。⒉摸一张牌。⒊回复1点体力。⒋摸两张牌并失去〖叛侵〗。',
|
||||
dcpanqin:'叛侵',
|
||||
dcpanqin_info:'出牌阶段或弃牌阶段结束时,你可将你于本阶段内弃置且位于弃牌堆的所有牌当做【南蛮入侵】使用。然后若此牌被使用时对应的实体牌数不大于此牌的目标数,则你执行并移除〖蛮王〗中的最后一个选项,然后加1点体力上限并回复1点体力。',
|
||||
kongrong:'孔融',
|
||||
dc_kongrong:'孔融',
|
||||
dckrmingshi:'名士',
|
||||
dckrmingshi_info:'锁定技,当你受到其他角色造成的伤害时,若其手牌数大于你,则其需弃置一张手牌,否则此伤害-1。',
|
||||
yue_daqiao:'乐大乔',
|
||||
|
|
|
@ -31,7 +31,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mb_chengui:['male','qun',3,['guimou','zhouxian']],
|
||||
mb_huban:['male','wei',4,['mbyilie']],
|
||||
mb_xianglang:['male','shu',3,['naxue','yijie']],
|
||||
yanxiang:['male','qun',3,['kujian','twruilian'],['character:tw_yanxiang','die_audio:tw_yanxiang']],
|
||||
yanxiang:['male','qun',3,['kujian','twruilian'],['die_audio:tw_yanxiang']],
|
||||
mb_sunluyu:['female','wu',3,['mbmeibu','mbmumu']],
|
||||
xin_wuban:['male','shu',4,['xinjintao'],['clan:陈留吴氏','character:wuban']],
|
||||
baoxin:['male','qun',4,['mutao','yimou'],['die_audio:tw_baoxin']],
|
||||
|
|
|
@ -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','zy_kongrong','jiling','tianfeng','mateng'],
|
||||
offline_piracyE:['shen_jiaxu','pe_wangyun','pe_zhonghui','pe_sunchen','pe_mengda','pe_wenqin','ns_caoanmin','chendong','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'],
|
||||
|
@ -33,7 +33,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
mateng:['male','qun',4,['mashu','xiongyi']],
|
||||
tianfeng:['male','qun',3,['sijian','gzsuishi']],
|
||||
jiling:['male','qun',4,['shuangren']],
|
||||
zy_kongrong:['male','qun',3,['zymingshi','lirang']],
|
||||
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']],
|
||||
|
@ -6799,8 +6799,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
tianfeng_prefix:'战役篇',
|
||||
jiling:'战役篇纪灵',
|
||||
jiling_prefix:'战役篇',
|
||||
zy_kongrong:'战役篇孔融',
|
||||
zy_kongrong_prefix:'战役篇',
|
||||
kongrong:'战役篇孔融',
|
||||
kongrong_prefix:'战役篇',
|
||||
mateng:'战役篇马腾',
|
||||
mateng_prefix:'战役篇',
|
||||
|
||||
|
|
|
@ -1047,6 +1047,7 @@ window.noname_character_rank={
|
|||
'jsrg_gaoxiang',
|
||||
'jsrg_sunlubansunluyu',
|
||||
'jsrg_weiwenzhugezhi',
|
||||
'shen_xuzhu',
|
||||
],
|
||||
b:[
|
||||
'ol_sb_guanyu',
|
||||
|
@ -1561,6 +1562,7 @@ window.noname_character_rank={
|
|||
'jsrg_xugong',
|
||||
'old_xiaoqiao',
|
||||
'old_guanyu',
|
||||
'dc_kongrong',
|
||||
],
|
||||
c:[
|
||||
'xiahoudun',
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 110 KiB |
Binary file not shown.
After Width: | Height: | Size: 72 KiB |
Binary file not shown.
Before Width: | Height: | Size: 82 KiB |
Loading…
Reference in New Issue