This commit is contained in:
parent
e1ca328cbf
commit
c840f157f9
|
@ -4,6 +4,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
name:'huicui',
|
name:'huicui',
|
||||||
connect:true,
|
connect:true,
|
||||||
character:{
|
character:{
|
||||||
|
kuaiqi:['male','wei',3,['dcliangxiu','dcxunjie']],
|
||||||
yue_caiyong:['male','qun',3,['dcjiaowei','dcfeibai']],
|
yue_caiyong:['male','qun',3,['dcjiaowei','dcfeibai']],
|
||||||
pangshanmin:['male','wei',3,['dccaisi','dczhuoli']],
|
pangshanmin:['male','wei',3,['dccaisi','dczhuoli']],
|
||||||
dc_jiachong:['male','wei',3,['dcbeini','dcshizong']],
|
dc_jiachong:['male','wei',3,['dcbeini','dcshizong']],
|
||||||
|
@ -93,7 +94,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
characterSort:{
|
characterSort:{
|
||||||
huicui:{
|
huicui:{
|
||||||
sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie','dc_caiyang','zhoushan'],
|
sp_baigei:['re_panfeng','xingdaorong','caoxing','re_chunyuqiong','xiahoujie','dc_caiyang','zhoushan'],
|
||||||
sp_caizijiaren:['re_dongbai','re_sunluyu','heyan','zhaoyan','wangtao','wangyue','zhangxuan','tengyin','zhangyao','xiahoulingnv','dc_sunru','pangshanmin'],
|
sp_caizijiaren:['re_dongbai','re_sunluyu','heyan','zhaoyan','wangtao','wangyue','zhangxuan','tengyin','zhangyao','xiahoulingnv','dc_sunru','pangshanmin','kuaiqi'],
|
||||||
sp_zhilan:['liuyong','wanniangongzhu','zhanghu','lvlingqi','tenggongzhu','panghui','dc_zhaotongzhaoguang','yuantanyuanxiyuanshang','yuechen'],
|
sp_zhilan:['liuyong','wanniangongzhu','zhanghu','lvlingqi','tenggongzhu','panghui','dc_zhaotongzhaoguang','yuantanyuanxiyuanshang','yuechen'],
|
||||||
sp_guixin:['re_kanze','re_chendeng','caimaozhangyun','dc_lvkuanglvxiang','dc_gaolan','yinfuren','chengui','chenjiao','dc_sp_jiaxu','qinlang'],
|
sp_guixin:['re_kanze','re_chendeng','caimaozhangyun','dc_lvkuanglvxiang','dc_gaolan','yinfuren','chengui','chenjiao','dc_sp_jiaxu','qinlang'],
|
||||||
sp_daihan:['mamidi','dc_jiling','zhangxun','dc_yuejiu','wanglie','leibo','qiaorui','dongwan','yuanyin'],
|
sp_daihan:['mamidi','dc_jiling','zhangxun','dc_yuejiu','wanglie','leibo','qiaorui','dongwan','yuanyin'],
|
||||||
|
@ -108,6 +109,162 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
skill:{
|
skill:{
|
||||||
|
//蒯祺
|
||||||
|
dcliangxiu:{
|
||||||
|
audio:2,
|
||||||
|
enable:'phaseUse',
|
||||||
|
filter:function(event,player){
|
||||||
|
return player.hasCard(card=>{
|
||||||
|
const type=get.type2(card,player);
|
||||||
|
return player.hasCard(cardx=>{
|
||||||
|
if(card==cardx) return false;
|
||||||
|
return get.type2(cardx,player)!=type;
|
||||||
|
},'he');
|
||||||
|
},'he');
|
||||||
|
},
|
||||||
|
filterCard:function(card,player){
|
||||||
|
if(!ui.selected.cards.length) return true;
|
||||||
|
return get.type2(ui.selected.cards[0],player)!=get.type2(card,player);
|
||||||
|
},
|
||||||
|
selectCard:2,
|
||||||
|
check:function(card){
|
||||||
|
const player=get.player();
|
||||||
|
const bannedTypes=[];
|
||||||
|
bannedTypes.addArray(player.getStorage('dcliangxiu'));
|
||||||
|
if(!ui.selected.cards.length){
|
||||||
|
let val=get.value(card);
|
||||||
|
if(val>5.5) return 0;
|
||||||
|
if(bannedTypes.includes(get.type2(card,player))) return 7.5-val;
|
||||||
|
return 5.5-val;
|
||||||
|
}
|
||||||
|
bannedTypes.addArray(ui.selected.cards.map(card=>get.type2(card,player)));
|
||||||
|
bannedTypes.add(get.type2(card,player));
|
||||||
|
const filter=card=>!bannedTypes.includes(get.type2(card,player));
|
||||||
|
if(!get.cardPile(filter)) return 0;
|
||||||
|
return 6-get.value(card);
|
||||||
|
},
|
||||||
|
position:'he',
|
||||||
|
complexCard:true,
|
||||||
|
onremove:true,
|
||||||
|
content:function*(event,map){
|
||||||
|
const player=map.player;
|
||||||
|
const cards=[];
|
||||||
|
const bannedTypes=[];
|
||||||
|
bannedTypes.addArray(event.cards.map(card=>get.type2(card,player)));
|
||||||
|
bannedTypes.addArray(player.getStorage('dcliangxiu'));
|
||||||
|
|
||||||
|
const filter=card=>!bannedTypes.includes(get.type2(card,player));
|
||||||
|
const piles=['cardPile','discardPile'];
|
||||||
|
for(const pile of piles){
|
||||||
|
for(let i=0;i<ui[pile].childNodes.length;i++){
|
||||||
|
const card=ui[pile].childNodes[i];
|
||||||
|
if(filter(card)){
|
||||||
|
cards.add(card);
|
||||||
|
if(cards.length>=2) break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(cards.length>=2) break;
|
||||||
|
}
|
||||||
|
let result;
|
||||||
|
if(!cards.length){
|
||||||
|
player.chat('没牌了…');
|
||||||
|
game.log('但是哪里都找不到没有符合条件的牌!');
|
||||||
|
event.finish();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else if(cards.length==1) result={bool:true,links:cards};
|
||||||
|
else result=yield player.chooseButton(['良秀:获得一张牌',cards],true).set('ai',get.buttonValue);
|
||||||
|
if(result.bool){
|
||||||
|
const toGain=result.links;
|
||||||
|
player.markAuto('dcliangxiu',get.type2(toGain[0],false));
|
||||||
|
player.when({global:'phaseChange'}).then(()=>{
|
||||||
|
player.unmarkSkill('dcliangxiu');
|
||||||
|
});
|
||||||
|
player.gain(toGain,'gain2');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
intro:{
|
||||||
|
content:'已因此技能获得过$牌',
|
||||||
|
onunmark:true,
|
||||||
|
},
|
||||||
|
ai:{
|
||||||
|
order:2,
|
||||||
|
result:{player:1},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
dcxunjie:{
|
||||||
|
audio:2,
|
||||||
|
trigger:{global:'phaseEnd'},
|
||||||
|
filter:function(event,player){
|
||||||
|
if(['handcard','hp'].every(i=>player.isTempBanned(`dcxunjie_${i}`))) return false;
|
||||||
|
return player.hasHistory('gain',evt=>{
|
||||||
|
return !evt.getParent('phaseDraw',true);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
direct:true,
|
||||||
|
content:function*(event,map){
|
||||||
|
const player=map.player;
|
||||||
|
const choices=[];
|
||||||
|
const choiceList=[
|
||||||
|
'令一名角色将手牌数摸或弃置至与其体力值相同',
|
||||||
|
'令一名角色将体力值回复或失去至与其手牌数相同',
|
||||||
|
];
|
||||||
|
if(!player.isTempBanned('dcxunjie_handcard')) choices.push('选项一');
|
||||||
|
else choiceList[0]='<span style="opacity:0.5">'+choiceList[0]+'(已被选择过)</span>';
|
||||||
|
if(!player.isTempBanned('dcxunjie_hp')) choices.push('选项二');
|
||||||
|
else choiceList[1]='<span style="opacity:0.5">'+choiceList[1]+'(已被选择过)</span>';
|
||||||
|
let result;
|
||||||
|
if(_status.connectMode) game.broadcastAll(()=>{_status.noclearcountdown=true});
|
||||||
|
if(choices.length==1) result={control:choices[0]};
|
||||||
|
else result=yield player.chooseControl(choices,'cancel2').set('choiceList',choiceList).set('prompt',get.prompt('dcxunjie')).set('ai',()=>{
|
||||||
|
return get.event('choice');
|
||||||
|
}).set('choice',(()=>{
|
||||||
|
const getValue=(index,target)=>{
|
||||||
|
let att=get.attitude(player,target);
|
||||||
|
att=Math.sign(att)*Math.sqrt(Math.abs(att));
|
||||||
|
let delt=target.getHp(true)-target.countCards('h');
|
||||||
|
if(index==1&&delt<0) delt=0;
|
||||||
|
return (1-3*index)*att*delt;
|
||||||
|
}
|
||||||
|
const list=game.filterPlayer().map(current=>{
|
||||||
|
const val0=getValue(0,current),val1=getValue(1,current);
|
||||||
|
return [val0,val1,Math.max(val0,val1)];
|
||||||
|
}).sort((a,b)=>{
|
||||||
|
return b[2]-a[2];
|
||||||
|
});
|
||||||
|
const toChoose=list[0];
|
||||||
|
if(toChoose[2]<=0) return 'cancel2';
|
||||||
|
return toChoose[0]>toChoose[1]?0:1;
|
||||||
|
})());
|
||||||
|
if(result.control=='cancel2'){
|
||||||
|
if(_status.connectMode){game.broadcastAll(()=>{delete _status.noclearcountdown;game.stopCountChoose()})}
|
||||||
|
return event.finish();
|
||||||
|
}
|
||||||
|
let prompt='';
|
||||||
|
const choice=result.control,index=choice=='选项一'?0:1;
|
||||||
|
if(choices.length==1){
|
||||||
|
prompt=`###${get.prompt('dcxunjie')}###<div class="text center">${choiceList[index]}</div>`;
|
||||||
|
}
|
||||||
|
else prompt=`###殉节:请选择一名角色###<div class="text center">${choiceList[index].replace('一名','该')}</div>`;
|
||||||
|
result=yield player.chooseTarget(prompt).set('ai',target=>{
|
||||||
|
const player=get.player(),index=get.event('index');
|
||||||
|
let att=get.attitude(player,target);
|
||||||
|
att=Math.sign(att)*Math.sqrt(Math.abs(att));
|
||||||
|
let delt=target.getHp(true)-target.countCards('h');
|
||||||
|
if(index==1&&delt<0) delt=0;
|
||||||
|
return (1-2*index)*att*delt;
|
||||||
|
}).set('index',index);
|
||||||
|
if(_status.connectMode){game.broadcastAll(()=>{delete _status.noclearcountdown;game.stopCountChoose()})}
|
||||||
|
if(!result.bool) return event.finish();
|
||||||
|
const target=result.targets[0];
|
||||||
|
player.logSkill('dcxunjie',target);
|
||||||
|
player.tempBanSkill(`dcxunjie_${index==0?'handcard':'hp'}`,'roundStart',false);
|
||||||
|
const delt=(target.getHp(true)-target.countCards('h'))*(1-2*index);
|
||||||
|
if(delt==0) event.finish();
|
||||||
|
else if(index==0) target[delt>0?'draw':'chooseToDiscard'](Math.abs(delt),true);
|
||||||
|
else target[delt>0?'recover':'loseHp'](Math.abs(delt));
|
||||||
|
}
|
||||||
|
},
|
||||||
//乐蔡邕
|
//乐蔡邕
|
||||||
dcjiaowei:{
|
dcjiaowei:{
|
||||||
audio:2,
|
audio:2,
|
||||||
|
@ -10597,6 +10754,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
mengyou:'孟优,《三国演义》里的人物,南蛮王孟获之弟。与诸葛亮的南征军交战,向败战的兄长推荐朵思大王,劝兄长借助朵思之力与蜀汉军对抗。后来与兄长一起发誓归顺蜀汉。',
|
mengyou:'孟优,《三国演义》里的人物,南蛮王孟获之弟。与诸葛亮的南征军交战,向败战的兄长推荐朵思大王,劝兄长借助朵思之力与蜀汉军对抗。后来与兄长一起发誓归顺蜀汉。',
|
||||||
liuchongluojun:'刘宠(?~197年),汉明帝刘庄玄孙,陈敬王刘羡曾孙,陈顷王刘崇之孙,陈孝王刘承之子,陈国第六位国君,也是东汉陈国的最后一位国君。骆俊(?-197),字孝远,东汉末年扬州会稽郡乌伤县(今浙江义乌)人。宗室陈王刘宠的国相,在任期间励精图治,深得民众爱戴。刘宠勇猛过人,善使弓弩,箭法高超。在其父刘承死后,继承陈王爵位。中平年间,黄巾军起义,郡县官兵都弃城逃走,刘宠于是征兵自守卫。当时天下饥荒,诸王侯都已不再享有租赋,反屡遭抢掠,有的甚至流离在外,死于荒野。只有陈国仍很富强,邻郡百姓纷纷前去投靠,陈国拥有部众达十余万人。初平元年(190年),各州郡起兵讨伐董卓,刘宠率军屯驻阳夏,自称辅汉大将军。建安二年(197年),袁术向陈国求取粮草,遭陈国国相骆俊拒绝,袁术大为生气,便派刺客张闿假装路过陈国,乘机杀死骆俊和刘宠。',
|
liuchongluojun:'刘宠(?~197年),汉明帝刘庄玄孙,陈敬王刘羡曾孙,陈顷王刘崇之孙,陈孝王刘承之子,陈国第六位国君,也是东汉陈国的最后一位国君。骆俊(?-197),字孝远,东汉末年扬州会稽郡乌伤县(今浙江义乌)人。宗室陈王刘宠的国相,在任期间励精图治,深得民众爱戴。刘宠勇猛过人,善使弓弩,箭法高超。在其父刘承死后,继承陈王爵位。中平年间,黄巾军起义,郡县官兵都弃城逃走,刘宠于是征兵自守卫。当时天下饥荒,诸王侯都已不再享有租赋,反屡遭抢掠,有的甚至流离在外,死于荒野。只有陈国仍很富强,邻郡百姓纷纷前去投靠,陈国拥有部众达十余万人。初平元年(190年),各州郡起兵讨伐董卓,刘宠率军屯驻阳夏,自称辅汉大将军。建安二年(197年),袁术向陈国求取粮草,遭陈国国相骆俊拒绝,袁术大为生气,便派刺客张闿假装路过陈国,乘机杀死骆俊和刘宠。',
|
||||||
yuechen:'乐綝(195~257年),字号不详,阳平郡卫国县(今河南省清丰县)人。三国时期曹魏将领,右将军乐进的儿子。果毅坚毅,袭封广昌亭侯,累迁扬州刺史。甘露二年,为叛乱的征东大将军诸葛诞所杀,追赠卫尉。',
|
yuechen:'乐綝(195~257年),字号不详,阳平郡卫国县(今河南省清丰县)人。三国时期曹魏将领,右将军乐进的儿子。果毅坚毅,袭封广昌亭侯,累迁扬州刺史。甘露二年,为叛乱的征东大将军诸葛诞所杀,追赠卫尉。',
|
||||||
|
kuaiqi:'蒯祺(?~219年),南郡中卢人,荆州望族子弟,与荆州牧刘表帐下谋士蒯良、蒯越为同族,东汉末年房陵太守。建安二十四年(219年),汉中王刘备遣宜都太守孟达从秭归北攻房陵,蒯祺于战斗中被孟达所部士兵所杀。清朝任兆麟《心斋十种》中的《襄阳记》辑本引用《万历襄阳府志》“(蒯)钦从祖祺妇,即诸葛孔明之姊也”,称蒯祺娶故兖州泰山郡丞诸葛珪长女,即他是知名政治家、蜀汉丞相诸葛亮的姐夫。但在任兆麟之前的《襄阳记》辑本中,并没有这一条。',
|
||||||
},
|
},
|
||||||
characterTitle:{
|
characterTitle:{
|
||||||
},
|
},
|
||||||
|
@ -11086,6 +11244,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
|
||||||
dcjiaowei_info:'锁定技。①游戏开始时,你将所有手牌标记为“弦”。②你的“弦”牌不计入手牌上限。③当你受到伤害时,若来源的手牌数不大于你的“弦”牌数,防止此伤害。',
|
dcjiaowei_info:'锁定技。①游戏开始时,你将所有手牌标记为“弦”。②你的“弦”牌不计入手牌上限。③当你受到伤害时,若来源的手牌数不大于你的“弦”牌数,防止此伤害。',
|
||||||
dcfeibai:'飞白',
|
dcfeibai:'飞白',
|
||||||
dcfeibai_info:'每回合限一次。当你使用牌结算结束后,若你本回合使用过至少两张牌,你可以随机获得一张字数为X的牌。若你的“弦”数不大于X,你重置〖飞白〗(X为此牌与你使用的上一张牌的字数之和)。',
|
dcfeibai_info:'每回合限一次。当你使用牌结算结束后,若你本回合使用过至少两张牌,你可以随机获得一张字数为X的牌。若你的“弦”数不大于X,你重置〖飞白〗(X为此牌与你使用的上一张牌的字数之和)。',
|
||||||
|
kuaiqi:'蒯祺',
|
||||||
|
dcliangxiu:'良秀',
|
||||||
|
dcliangxiu_info:'出牌阶段,你可以弃置两张不同类型的牌,然后从两张与你弃置的牌类型均不同的牌中选择一张获得之(每阶段每种类型限一次)。',
|
||||||
|
dcxunjie:'殉节',
|
||||||
|
dcxunjie_info:'每轮每项限一次。一名角色的回合结束时,若你本回合于摸牌阶段外得到过牌,你可以选择一项:1.令一名角色将手牌数摸或弃置至与其体力值相同;2.令一名角色将体力值回复或失去至与其手牌数相同。',
|
||||||
|
|
||||||
sp_baigei:'无双上将',
|
sp_baigei:'无双上将',
|
||||||
sp_caizijiaren:'才子佳人',
|
sp_caizijiaren:'才子佳人',
|
||||||
|
|
|
@ -27742,10 +27742,10 @@
|
||||||
return skill;
|
return skill;
|
||||||
}
|
}
|
||||||
tempBanSkill(skill,expire,log){
|
tempBanSkill(skill,expire,log){
|
||||||
if(!this.hasSkill(skill)||this.hasStorage(`temp_ban_${skill}`)) return;
|
if(this.isTempBanned(skill)) return;
|
||||||
this.setStorage(`temp_ban_${skill}`,true);
|
this.setStorage(`temp_ban_${skill}`,true);
|
||||||
|
|
||||||
if(log!==false) game.log(this,'的技能',`#g【${get.translation(skill)}】`,'暂时失效了');
|
if(log!==false&&this.hasSkill(skill)) game.log(this,'的技能',`#g【${get.translation(skill)}】`,'暂时失效了');
|
||||||
|
|
||||||
if(!expire) expire={global:['phaseAfter','phaseBeforeStart']};
|
if(!expire) expire={global:['phaseAfter','phaseBeforeStart']};
|
||||||
else if(typeof expire=='string'||Array.isArray(expire)) expire={global:expire};
|
else if(typeof expire=='string'||Array.isArray(expire)) expire={global:expire};
|
||||||
|
@ -27758,6 +27758,9 @@
|
||||||
})
|
})
|
||||||
return skill;
|
return skill;
|
||||||
}
|
}
|
||||||
|
isTempBanned(skill){
|
||||||
|
return this.hasStorage(`temp_ban_${skill}`);
|
||||||
|
}
|
||||||
attitudeTo(target){
|
attitudeTo(target){
|
||||||
if(typeof get.attitude=='function') return get.attitude(this,target);
|
if(typeof get.attitude=='function') return get.attitude(this,target);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 71 KiB |
Loading…
Reference in New Issue