commit
46e617e93f
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -102,7 +102,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
characterSort:{
|
||||
huicui:{
|
||||
sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie','dc_caiyang','zhoushan'],
|
||||
sp_caizijiaren:['kongrong','re_dongbai','re_sunluyu','heyan','zhaoyan','wangtao','wangyue','zhangxuan','tengyin','zhangyao','xiahoulingnv','dc_sunru','pangshanmin','kuaiqi'],
|
||||
sp_caizijiaren:['dc_kongrong','re_dongbai','re_sunluyu','heyan','zhaoyan','wangtao','wangyue','zhangxuan','tengyin','zhangyao','xiahoulingnv','dc_sunru','pangshanmin','kuaiqi'],
|
||||
sp_zhilan:['dc_liuli','liuyong','wanniangongzhu','zhanghu','lvlingqi','tenggongzhu','panghui','dc_zhaotongzhaoguang','yuantanyuanxiyuanshang','yuechen','dc_lingcao'],
|
||||
sp_guixin:['re_kanze','re_chendeng','caimaozhangyun','dc_lvkuanglvxiang','dc_gaolan','yinfuren','chengui','chenjiao','dc_sp_jiaxu','qinlang','dc_dongzhao'],
|
||||
sp_daihan:['mamidi','dc_jiling','zhangxun','dc_yuejiu','wanglie','leibo','qiaorui','dongwan','yuanyin'],
|
||||
|
|
|
@ -663,6 +663,7 @@ window.noname_character_rank={
|
|||
'dc_guansuo',
|
||||
'dc_dongzhao',
|
||||
'zhugeruoxue',
|
||||
'zhugemengxue',
|
||||
'dc_sb_lusu',
|
||||
'mb_huban',
|
||||
'jsrg_simayi',
|
||||
|
@ -961,6 +962,7 @@ window.noname_character_rank={
|
|||
'ol_dianwei',
|
||||
'wangyan',
|
||||
'chengui',
|
||||
'ol_hujinding',
|
||||
'dc_huangquan',
|
||||
'dc_huban',
|
||||
'dingshangwan',
|
||||
|
@ -2143,6 +2145,7 @@ window.noname_character_rank={
|
|||
'bailingjun',
|
||||
],
|
||||
rare:[
|
||||
'zhugemengxue',
|
||||
'ol_sb_taishici',
|
||||
'clan_wuqiao',
|
||||
'xin_huojun',
|
||||
|
@ -2551,6 +2554,7 @@ window.noname_character_rank={
|
|||
'dukui',
|
||||
'ol_dianwei',
|
||||
'chengui',
|
||||
'ol_hujinding',
|
||||
'dingshangwan',
|
||||
're_zhuhuan',
|
||||
'xin_zhuhuan',
|
||||
|
|
136
character/sp.js
136
character/sp.js
|
@ -18,7 +18,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp_zhongdan:["cuiyan","huangfusong"],
|
||||
sp_guozhan2:["sp_dongzhuo","liqueguosi","zhangren"],
|
||||
sp_others:["hanba","caiyang"],
|
||||
sp_waitforsort:['ol_luyusheng','ol_pengyang','ol_tw_zhangji','ol_liwan','ol_liuyan','caoyu','liyi','tianchou'],
|
||||
sp_waitforsort:['ol_luyusheng','ol_pengyang','ol_tw_zhangji','ol_liwan','ol_liuyan','caoyu','liyi','tianchou','ol_hujinding'],
|
||||
},
|
||||
},
|
||||
characterFilter:{
|
||||
|
@ -30,6 +30,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
character:{
|
||||
ol_hujinding:['female','shu',3,['olqingyuan','olchongshen']],
|
||||
tianchou:['male','qun',4,['olshandao']],
|
||||
liyi:['male','wu',4,['olchanshuang','olzhanjin']],
|
||||
caoyu:['male','wei',3,['olgongjie','olxiangxv','olxiangzuo']],
|
||||
|
@ -709,6 +710,134 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
},
|
||||
},
|
||||
skill:{
|
||||
//胡金定
|
||||
olqingyuan:{
|
||||
audio:2,
|
||||
trigger:{
|
||||
global:['phaseBefore','gainAfter','loseAsyncAfter'],
|
||||
player:['enterGame','damageEnd'],
|
||||
},
|
||||
filter(event,player){
|
||||
const storage=player.getStorage('olqingyuan');
|
||||
if(event.name=='gain'||event.name=='loseAsync'){
|
||||
if(player.hasSkill('olqingyuan_used')) return false;
|
||||
return storage.some(target=>event.getg(target).length)&&storage.some(target=>target.hasCard(card=>lib.filter.canBeGained(card,target,player),'he'));
|
||||
}
|
||||
if(!game.hasPlayer(target=>!storage.includes(target)&&target!=player)) return false;
|
||||
if(event.name=='damage'&&player.getHistory('damage').indexOf(event)!=0) return false;
|
||||
return event.name!='phase'||game.phaseNumber==0;
|
||||
},
|
||||
forced:true,
|
||||
async content(event,trigger,player){
|
||||
if(trigger.name=='gain'||trigger.name=='loseAsync'){
|
||||
const target=player.getStorage('olqingyuan').filter(target=>target.hasCard(card=>lib.filter.canBeGained(card,target,player),'he')).randomGet();
|
||||
player.line(target);
|
||||
player.addTempSkill('olqingyuan_used');
|
||||
player.gainPlayerCard(target,'he',true);
|
||||
}
|
||||
else{
|
||||
const {result:{bool,targets}}=await player.chooseTarget((card,player,target)=>{
|
||||
return target!=player&&!player.getStorage('olqingyuan').includes(target);
|
||||
},true).set('prompt2','每回合限一次,当你以此法选择的角色获得牌后,你随机获得其中一名角色的一张牌')
|
||||
.set('prompt','请选择【轻缘】的目标').set('ai',target=>{
|
||||
const player=get.event('player');
|
||||
return get.effect(target,new lib.element.VCard({name:'shunshou_copy2'}),player,player);
|
||||
});
|
||||
if(bool){
|
||||
const target=targets[0];
|
||||
player.line(target);
|
||||
game.log(player,'选择了',target);
|
||||
player.markAuto('olqingyuan',[target]);
|
||||
}
|
||||
}
|
||||
},
|
||||
subSkill:{used:{charlotte:true}},
|
||||
intro:{content:'已选择$为目标'},
|
||||
},
|
||||
olchongshen:{
|
||||
audio:2,
|
||||
locked:false,
|
||||
enable:'chooseToUse',
|
||||
filterCard(card){
|
||||
return get.itemtype(card)=='card'&&card.hasGaintag('olchongshen');
|
||||
},
|
||||
position:'h',
|
||||
viewAs:{name:'shan'},
|
||||
viewAsFilter(player){
|
||||
if(!player.countCards('h',card=>card.hasGaintag('olchongshen'))) return false;
|
||||
},
|
||||
prompt:'将本轮得到的牌当作【闪】使用',
|
||||
check(card){
|
||||
return 7-get.value(card);
|
||||
},
|
||||
ai:{
|
||||
order:2,
|
||||
respondShan:true,
|
||||
skillTagFilter(player,tag,arg){
|
||||
if(arg=='respond'||!player.countCards('h',card=>card.hasGaintag('olchongshen'))) return false;
|
||||
},
|
||||
effect:{
|
||||
target(card,player,target,current){
|
||||
if(get.tag(card,'respondShan')&¤t<0) return 0.6;
|
||||
},
|
||||
},
|
||||
},
|
||||
group:'olchongshen_mark',
|
||||
mod:{
|
||||
aiValue(player,card,num){
|
||||
if(get.name(card)!='shan'&&!card.hasGaintag('olchongshen')) return;
|
||||
var cards=player.getCards('hs',card=>get.name(card)=='shan'||card.hasGaintag('olchongshen'));
|
||||
cards.sort((a,b)=>(get.name(b)=='shan'?1:2)-(get.name(a)=='shan'?1:2));
|
||||
const geti=()=>{
|
||||
if(cards.includes(card)) return cards.indexOf(card);
|
||||
return cards.length;
|
||||
};
|
||||
if(get.name(card)=='shan') return Math.min(num,[6,4,3][Math.min(geti(),2)])*0.6;
|
||||
return Math.max(num,[6.5,4,3][Math.min(geti(),2)]);
|
||||
},
|
||||
aiUseful(){
|
||||
return lib.skill.olchongshen.mod.aiValue.apply(this,arguments);
|
||||
},
|
||||
ignoredHandcard(card,player){
|
||||
if(card.hasGaintag('olchongshen')) return true;
|
||||
},
|
||||
cardDiscardable(card,player,name){
|
||||
if(name=='phaseDiscard'&&card.hasGaintag('olchongshen')) return false;
|
||||
},
|
||||
},
|
||||
init(player){
|
||||
if(game.phaseNumber>0){
|
||||
const hs=player.getCards('h'),history=player.getAllHistory();
|
||||
let cards=[];
|
||||
for(let i=history.length-1;i>=0;i--){
|
||||
for(const evt of history[i].gain){
|
||||
cards.addArray(evt.cards);
|
||||
}
|
||||
if(history[i].isRound) break;
|
||||
}
|
||||
cards=cards.filter(i=>hs.includes(i));
|
||||
if(cards.length) player.addGaintag(cards,'olchongshen');
|
||||
}
|
||||
},
|
||||
onremove(player){
|
||||
player.removeGaintag('olchongshen');
|
||||
},
|
||||
subSkill:{
|
||||
mark:{
|
||||
charlotte:true,
|
||||
trigger:{player:'gainBegin',global:'roundStart'},
|
||||
filter(event,player){
|
||||
return event.name=='gain'||game.roundNumber>1;
|
||||
},
|
||||
forced:true,
|
||||
popup:false,
|
||||
content(){
|
||||
if(trigger.name=='gain') trigger.gaintag.add('olchongshen');
|
||||
else player.removeGaintag('olchongshen');
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
//田畴
|
||||
olshandao:{
|
||||
audio:2,
|
||||
|
@ -27112,6 +27241,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
tianchou:'田畴',
|
||||
olshandao:'善刀',
|
||||
olshandao_info:'出牌阶段限一次,你可以选择任意名角色,你选择这些角色的各一张牌,依次将这些牌放置到牌堆顶,然后你视为对这些角色使用【五谷丰登】,然后你视为对这些角色外的所有其他角色使用【万箭齐发】。',
|
||||
ol_hujinding:'胡金定',
|
||||
olqingyuan:'轻缘',
|
||||
olqingyuan_info:'锁定技。①游戏开始时,或当你于本局游戏首次受到伤害后,你选择一名未以此法选择过的其他角色。②每回合限一次,你发动〖轻缘①〗选择过的角色得到牌后,你随机获得其中一名角色的一张牌。',
|
||||
olchongshen:'重身',
|
||||
olchongshen_info:'你可以将本轮得到的手牌当作【闪】使用,且这些牌不计入你的手牌上限。',
|
||||
|
||||
sp_tianji:'天极·皇室宗亲',
|
||||
sp_sibi:'四弼·辅国文曲',
|
||||
|
|
|
@ -10817,7 +10817,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
zhujun:['ol_zhujun','zhujun','sp_zhujun','jsrg_zhujun'],
|
||||
tw_liuhong:['liuhong','tw_liuhong','jsrg_liuhong'],
|
||||
re_hejin:['hejin','re_hejin','tw_hejin','jsrg_hejin'],
|
||||
hujinding:['dc_hujinding','hujinding'],
|
||||
hujinding:['dc_hujinding','ol_hujinding','hujinding'],
|
||||
caosong:['caosong','sp_caosong'],
|
||||
re_niujin:['niujin','re_niujin','tw_niujin'],
|
||||
haomeng:['haomeng','tw_haomeng'],
|
||||
|
@ -11303,7 +11303,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
liyixiejing:'李异谢旌',
|
||||
dcdouzhen:'斗阵',
|
||||
dcdouzhen_info:'锁定技。①转换技。你的回合内,阴:当你使用非转化且对应的实体牌为一张黑色基本牌的【决斗】时,你获得目标角色各一张牌并获得1枚“☯”;阳:当你使用或打出非转化且对应的实体牌为一张红色基本牌的【杀】时,你获得1枚“☯”。②若你的“☯”数为:偶数,你的黑色基本牌均视为【决斗】;奇数,你的红色基本牌均视为无次数限制的普【杀】。',
|
||||
dc_hujinding:'胡金定',
|
||||
dc_hujinding:'新杀胡金定',
|
||||
dc_hujinding_prefix:'新杀',
|
||||
dcdeshi:'德释',
|
||||
dcdeshi_info:'锁定技。当你受到【杀】的伤害时,若你已受伤,则你防止此伤害并令系统从弃牌堆/牌堆中检索一张【杀】,你获得此【杀】,然后减1点体力上限。',
|
||||
dcwuyuan:'武缘',
|
||||
|
|
|
@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
name:'xianding',
|
||||
connect:true,
|
||||
character:{
|
||||
zhugemengxue:['female','wei',3,['dcjichun','dchanying']],
|
||||
bailingjun:['female','wei',3,['dclinghui','dcxiace','dcyuxin']],
|
||||
dc_qinghegongzhu:['female','wei',3,['dczhangji','dczengou']],
|
||||
caoxian:['female','wei',3,['dclingxi','dczhifou']],
|
||||
|
@ -99,7 +100,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
sp2_bizhe:['dc_luotong','dc_wangchang','chengbing','dc_yangbiao','ruanji'],
|
||||
sp2_huangjia:['caomao','liubian','dc_liuyu','quanhuijie','dingshangwan','yuanji','xielingyu','sunyu','ganfurenmifuren','dc_ganfuren','dc_mifuren','dc_shixie'],
|
||||
sp2_zhangtai:['guozhao','fanyufeng','ruanyu','yangwan','re_panshu'],
|
||||
sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen','zhugeruoxue','caoxian','dc_qinghegongzhu'],
|
||||
sp2_jinse:['caojinyu','re_sunyi','re_fengfangnv','caohua','laiyinger','zhangfen','zhugeruoxue','caoxian','dc_qinghegongzhu','zhugemengxue'],
|
||||
sp2_yinyu:['zhouyi','luyi','sunlingluan','caoyi'],
|
||||
sp2_wangzhe:['dc_daxiaoqiao','dc_sp_machao'],
|
||||
sp2_doukou:['re_xinxianying','huaman','xuelingyun','dc_ruiji','duanqiaoxiao','tianshangyi','malingli','bailingjun'],
|
||||
|
@ -112,6 +113,95 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
}
|
||||
},
|
||||
skill:{
|
||||
//诸葛梦雪
|
||||
dcjichun:{
|
||||
audio:2,
|
||||
enable:'phaseUse',
|
||||
filter(event,player){
|
||||
return player.countCards('he',card=>lib.skill.dcjichun.filterCard(card,player));
|
||||
},
|
||||
filterCard(card,player){
|
||||
if(!get.cardNameLength(card)||ui.selected.cards.length) return false;
|
||||
if(game.hasPlayer(target=>{
|
||||
return target.countCards('h')<player.countCards('h');
|
||||
})) return true;
|
||||
if(lib.filter.cardDiscardable(card,player)&&game.hasPlayer(target=>{
|
||||
return target.countCards('h')>player.countCards('h')&&target.countDiscardableCards(player,'hej');
|
||||
})) return true;
|
||||
return false;
|
||||
},
|
||||
selectCard:[1,2],
|
||||
filterTarget(cardx,player,target){
|
||||
if(!ui.selected.cards.length) return false;
|
||||
const card=ui.selected.cards[0];
|
||||
if(target.countCards('h')<player.countCards('h')) return true;
|
||||
if(lib.filter.cardDiscardable(card,player)&&target.countCards('h')>player.countCards('h')&&target.countDiscardableCards(player,'hej')) return true;
|
||||
return false;
|
||||
},
|
||||
usable:1,
|
||||
position:'he',
|
||||
check(card){
|
||||
return get.cardNameLength(card);
|
||||
},
|
||||
complexCard:true,
|
||||
complexSelect:true,
|
||||
lose:false,
|
||||
discard:false,
|
||||
delay:false,
|
||||
targetprompt(){
|
||||
const target=ui.selected.targets[0],player=get.event('player');
|
||||
return target.countCards('h')<player.countCards('h')?'给牌摸牌':'双双弃牌';
|
||||
},
|
||||
async content(event,trigger,player){
|
||||
const card=event.cards[0],target=event.target;
|
||||
const num=get.cardNameLength(card);
|
||||
await player.showCards([card],get.translation(player)+'发动了【寄春】');
|
||||
if(target.countCards('h')<player.countCards('h')){
|
||||
await player.give(card,target);
|
||||
await player.draw(num);
|
||||
}
|
||||
else{
|
||||
await player.discard(card);
|
||||
await player.discardPlayerCard(target,'hej',[1,num]);
|
||||
}
|
||||
},
|
||||
ai:{
|
||||
order:7,
|
||||
result:{
|
||||
target(player,target){
|
||||
return target.countCards('h')<player.countCards('h')?get.attitude(player,target):-get.effect(target,{name:'guohe'},player,player);
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
dchanying:{
|
||||
audio:2,
|
||||
trigger:{player:'phaseZhunbeiBegin'},
|
||||
frequent:true,
|
||||
async content(event,trigger,player){
|
||||
const card=get.cardPile(card=>get.type(card)=='equip'&&!get.cardtag(card,'gifts'));
|
||||
if(!card){
|
||||
player.chat('无牌可得?!');
|
||||
game.log('但是牌堆已经没有装备牌了!');
|
||||
return;
|
||||
}
|
||||
await player.showCards([card],get.translation(player)+'发动了【寒英】');
|
||||
if(game.hasPlayer(target=>target.countCards('h')==player.countCards('h')&&target.hasUseTarget(card))){
|
||||
const {result:{bool,targets}}=await player.chooseTarget('请选择使用'+get.translation(card)+'的目标角色',(card,player,target)=>{
|
||||
return target.countCards('h')==player.countCards('h')&&target.hasUseTarget(get.event('card'));
|
||||
},true).set('ai',target=>get.effect(target,get.event('card'),target,get.event('player'))).set('card',card);
|
||||
if(bool){
|
||||
const target=targets[0];
|
||||
player.line(target);
|
||||
target.chooseUseTarget(card,true,'nopopup');
|
||||
}
|
||||
}
|
||||
else{
|
||||
player.chat('无人可装?!');
|
||||
game.log('但是场上没有角色可以使用',card,'!');
|
||||
}
|
||||
},
|
||||
},
|
||||
//柏灵筠
|
||||
dclinghui:{
|
||||
audio:2,
|
||||
|
@ -13700,6 +13790,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
tianshangyi:'田尚衣,一作陈尚衣,魏文帝曹丕宫中著名宫人。能歌善舞,一时冠绝于世,私以为比之汉宫飞燕也不遑多让。',
|
||||
malingli:'马伶俐,游卡桌游原创角色,设定上为,马超之女,其身形虽娇小,却继承了马超英勇略带冲动的个性,活泼阳光,调皮伶俐,爱摆弄爆竹烟花一类的小器具,包包里经常放置用五色彩纸包装的小炸弹球。马伶俐从小跟随马超和马云騄学习战斗技巧,战斗力超强,坚强的意志和勇气也得到了提升,同时擅长马术,有一匹可爱的小白马伴随其身边。后马伶俐成年,嫁与刘备之子刘理,获封梁王妃。两人琴瑟相和,极为恩爱,常结伴出游,被人誉为天作之合。',
|
||||
zhugeruoxue:'诸葛氏(“若雪”为网络小说虚构),诸葛亮的二姐,庞山民之妻。',
|
||||
zhugemengxue:'诸葛氏(“梦雪”为网络小说虚构),诸葛亮的大姐。',
|
||||
caoyi:'曹轶,游卡桌游旗下产品《三国杀》原创角色。设定上为曹纯所收养的孙女,从小受到曹纯的教导,在军营中长大,性情坚毅有担当,军事谋略丰富,战斗能力超强。曹轶喜欢美食,特别是甜食,并且擅长制作各种点心。她身边跟随的雪白小老虎是曹纯在她及笄时送的生辰礼物,希望她如小老虎一样,英勇无畏。曹轶与曹婴交好,两人以姐妹相称。曹轶成年后继承祖父衣钵,接手精锐部队“虎豹骑”,成为新的虎豹骑的统领者。',
|
||||
},
|
||||
characterTitle:{
|
||||
|
@ -14339,6 +14430,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
|||
dcxiace_info:'每回合每项各限一次。当你造成/受到伤害后,你可以弃置一张牌并回复1点体力/令一名其他角色的非锁定技于本回合失效。',
|
||||
dcyuxin:'御心',
|
||||
dcyuxin_info:'限定技,一名角色进入濒死状态时,你可以令其将体力回复至X点(X为1,若该角色不为你则X为你的体力值)。',
|
||||
zhugemengxue:'诸葛梦雪',
|
||||
dcjichun:'寄春',
|
||||
dcjichun_info:'出牌阶段限一次,你可以展示一张手牌并选择一项:①将此牌交给一名手牌数小于你的角色,然后摸X张牌。②弃置此牌并弃置一名手牌数大于你的角色区域里至多X张牌。(X为此牌牌名字数)',
|
||||
dchanying:'寒英',
|
||||
dchanying_info:'准备阶段,你可以展示牌堆里的一张非赠物装备牌,然后令一名手牌数等于你的角色使用此牌。',
|
||||
|
||||
sp2_yinyu:'隐山之玉',
|
||||
sp2_huben:'百战虎贲',
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 58 KiB |
Binary file not shown.
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 53 KiB |
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
Loading…
Reference in New Issue