lisu/fanyufeng

This commit is contained in:
Spmario233 2021-04-16 19:41:43 +08:00
parent e5b3e3382c
commit 3ab7df000d
22 changed files with 471 additions and 169 deletions

BIN
audio/die/fanyufeng.mp3 Normal file

Binary file not shown.

BIN
audio/die/ol_lisu.mp3 Normal file

Binary file not shown.

8
audio/skill.TXT Normal file
View File

@ -0,0 +1,8 @@
bazhan1.mp3
bazhan2.mp3
jiaoying1.mp3
jiaoying2.mp3
qiaoyan1.mp3
qiaoyan2.mp3
xianzhu1.mp3
xianzhu2.mp3

BIN
audio/skill/bazhan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/bazhan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/jiaoying1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/jiaoying2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/qiaoyan1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/qiaoyan2.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xianzhu1.mp3 Normal file

Binary file not shown.

BIN
audio/skill/xianzhu2.mp3 Normal file

Binary file not shown.

View File

@ -17,9 +17,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
globalFrom:-1,
globalTo:+1,
},
onEquip:function(){
var cards=player.getCards('e',{subtype:['equip3','equip4']});
if(cards.length) player.discard(cards);
customSwap:function(card){
var type=get.subtype(card,false);
return type=='equip3'||type=='equip4'||type=='equip6';
},
skills:['liulongcanjia'],
ai:{

View File

@ -630,6 +630,7 @@ window.noname_character_rank={
'hanfu',
're_quyi',
'zhanghuyuechen',
'fanyufeng',
'key_kengo',
'key_riki',
'key_hinata',
@ -649,6 +650,7 @@ window.noname_character_rank={
're_fuhuanghou',
're_gongsunyuan',
're_caozhen',
'ol_lisu',
],
b:[
'diy_feishi',
@ -1284,6 +1286,7 @@ window.noname_character_rank={
'jin_simashi',
'zhangling',
'ns_luyusheng',
'fanyufeng',
'key_haruko',
'key_akiko',
'key_sunohara',
@ -1580,6 +1583,8 @@ window.noname_character_rank={
're_chunyuqiong',
'sp_chenzhen',
'sp_wangcan',
'lisu',
'ol_lisu',
],
junk:[
'sunshao',

View File

@ -5,7 +5,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
sp:{
sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang','sp_zhangliao','wolongfengchu','ol_xinxianying','ol_lisu'],
sp_default:["caoying","simahui","yangxiu","chenlin","caohong","xiahouba","yuanshu","sp_diaochan","sp_zhaoyun","liuxie","zhugejin","zhugeke","guanyinping","simalang","zhangxingcai","fuwan","sp_sunshangxiang","caoang","sp_caoren","zhangbao","maliang","zhugedan","sp_jiangwei","sp_machao","sunhao","shixie","mayunlu","zhanglu","wutugu","sp_caiwenji","zhugeguo","lingju","jsp_guanyu","jsp_huangyueying","sunluyu","zumao","wenpin","daxiaoqiao","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","xujing","yuantanyuanshang","sunshao","zhangling",'guansuo','baosanniang','ol_zhangchangpu','caoshuang','sp_zhangliao','wolongfengchu','ol_xinxianying'],
sp_zhongdan:["cuiyan","huangfusong"],
sp_star:["sp_xiahoushi","jsp_zhaoyun","huangjinleishi","sp_pangtong","sp_daqiao","sp_ganning","sp_xiahoudun","sp_lvmeng","sp_zhangfei","sp_liubei"],
sp_sticker:['sp_gongsunzan','sp_simazhao','sp_wangyuanji','sp_xinxianying','sp_liuxie'],
@ -17,7 +17,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterFilter:{},
character:{
ol_lisu:['male','qun',3,['qiaoyan','xianzhu'],['unseen']],
luyusheng:['female','wu',3,['zhente','zhiwei']],
ol_xinxianying:['female','wei',3,['xincaishi','xinzhongjian']],
huaxin:['male','wei',3,['wanggui','xibing']],
@ -401,107 +400,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//李肃
qiaoyan:{
trigger:{player:'damageBegin2'},
forced:true,
filter:function(event,player){
return player!=_status.currentPhase&&event.source&&event.source!=player;
},
logTarget:'source',
content:function(){
'step 0'
var cards=player.getStorage('qiaoyan');
if(cards.length){
var source=trigger.source;
player.$give(cards,source,false);
source.gain(cards,'log');
player.unmarkAuto('qiaoyan',cards);
event.goto(3);
}
else{
trigger.cancel();
player.draw();
}
'step 1'
var hs=player.getCards('he');
if(!hs.length) event.finish();
else if(hs.length==1) event._result={bool:true,cards:hs};
else player.chooseCard('he',true,'将一张牌作为“珠”置于武将牌上');
'step 2'
if(result.bool&&result.cards&&result.cards.length){
var cards=result.cards;
player.lose(cards,ui.special,'visible','toStorage');
player.$give(cards,player,false);
player.markAuto('qiaoyan',cards);
game.log(player,'将',cards,'放在了武将牌上');
}
event.finish();
'step 3'
game.delayx();
},
marktext:'珠',
intro:{content:'cards',onunmark:'throw'},
ai:{
filterDamage:true,
skillTagFilter:function(player,tag,arg){
if(!player.getStorage('qiaoyan').length) return false;
if(arg&&arg.player){
if(arg.player.hasSkillTag('jueqing',false,player)) return false;
}
},
combo:'xianzhu',
},
},
xianzhu:{
trigger:{player:'phaseUseBegin'},
direct:true,
locked:true,
filter:function(event,player){
return player.storage.qiaoyan&&player.storage.qiaoyan.length>0;
},
content:function(){
'step 0'
event.cards=player.storage.qiaoyan;
player.chooseTarget(true,'请选择【献珠】的目标','令一名角色获得'+get.translation(event.cards)+'。若该角色不为你自己,则你令其视为对其攻击范围内的另一名角色使用【杀】').set('ai',function(target){
var player=_status.event.player;
var eff=get.sgn(get.attitude(player,target))*get.value(_status.event.getParent().cards);
if(player!=target) eff+=Math.max.apply(null,game.filterPlayer().map(function(current){
if(current!=target&&target.inRange(current)&&target.canUse('sha',current)) return get.effect(current,{name:'sha'},target,player);
return 0;
}));
return eff;
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('xianzhu',target);
player.$give(cards,target,false);
target.gain(cards,'log');
player.unmarkAuto('qiaoyan',cards);
}
else event.finish();
'step 2'
game.delayx();
if(player!=target&&target.isIn()&&player.isIn()&&game.hasPlayer(function(current){
return current!=target&&target.inRange(current)&&target.canUse('sha',current);
})){
var str=get.translation(target);
player.chooseTarget(true,'选择'+str+'攻击范围内的一名角色,视为'+str+'对其使用【杀】',function(card,player,target){
var source=_status.event.target;
return source.inRange(target)&&source.canUse('sha',target);
}).set('target',target).set('ai',function(target){
var evt=_status.event;
return get.effect(target,{name:'sha'},evt.target,evt.player)
});
}
else event.finish();
'step 3'
if(result.bool) target.useCard({name:'sha',isCard:true},result.targets[0],false);
},
ai:{combo:'qiaoyan'},
},
//陆郁生
zhente:{
audio:2,
@ -7399,6 +7297,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
group:'rejici2',
},
rejici2:{
audio:'jici',
trigger:{player:'die'},
forced:true,
forceDie:true,
@ -7738,47 +7637,69 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!event.source) return false;
var nh1=player.countCards('h');
var nh2=event.source.countCards('h');
if(nh1==nh2) return false;
if(nh2<nh2&&nh1>=5) return false;
if(nh2>nh2&&event.source.isDead()) return false;
return true;
var eh=player.countCards('e');
if((nh1+eh)>nh2&&event.source.isAlive()) return true;
if(nh1<Math.min(5,nh2)) return true;
},
direct:true,
content:function(){
"step 0"
var num1=player.countCards('h');
var num2=trigger.source.countCards('h');
if(num1>num2){
var next=player.chooseToDiscard([num2+1,num1],'贲育:是否弃置至少'+(num2+1)+'张手牌,并对'+get.translation(trigger.source)+'造成一点伤害?');
next.logSkill=['benyu',trigger.source];
next.set('ai',function(card){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
if(ui.selected.cards.length>=_status.event.num){
return -1;
}
if(get.damageEffect(trigger.source,player,player)>0&&_status.event.num<=2){
return 8-get.value(card);
}
return -1;
});
next.set('num',num2+1);
var eh=player.countCards('he',function(card){
return lib.filter.cardDiscardable(card,player,'benyu');
});
var bool1=false,bool2=false;
if(num1<Math.min(num2,5)) bool1=true;
if(eh>num2&&trigger.source.isAlive()) bool2=true;
if(bool1&&bool2){
event.chosen=true;
player.chooseControl('cancel2').set('prompt',get.prompt('benyu',trigger.source)).set('choiceList',[
'将手牌摸至'+get.cnNumber(Math.min(num2,5))+'张',
'弃置至少'+get.cnNumber(num2+1)+'张牌并对其造成1点伤害',
])
}
else if(bool2) event.goto(3);
"step 1"
if(event.chosen){
if(result.control=='cancel2') event.finish();
else if(result.index==1) event.goto(3);
else event._result={bool:true};
}
else player.chooseBool(get.prompt('benyu',trigger.source),'将手牌摸至'+get.cnNumber(Math.min(trigger.source.countCards('h'),5))+'张');
"step 2"
if(result.bool){
player.logSkill('benyu',trigger.source);
player.drawTo(Math.min(trigger.source.countCards('h'),5));
}
event.finish();
"step 3"
var num=trigger.source.countCards('h')+1;
var args=[[num,player.countCards('he')],'he'];
if(event.chosen){
player.logSkill('benyu',trigger.source);
args.push(true);
}
else{
event.draw=true;
event.num=Math.min(num2,5)-num1;
player.chooseBool(get.prompt2('benyu'));
args.push(get.prompt('benyu',trigger.source));
args.push('弃置'+get.cnNumber(num)+'张牌并对其造成1点伤害');
}
"step 1"
if(result.bool){
if(event.draw){
player.logSkill('benyu',trigger.source);
player.draw(event.num);
var next=player.chooseToDiscard.apply(player,args);
if(!event.chosen) next.logSkill=['benyu',trigger.source];
next.set('ai',function(card){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
if(ui.selected.cards.length>=_status.event.num){
return -1;
}
else{
trigger.source.damage(player);
if(get.damageEffect(trigger.source,player,player)>0&&(get.value(card,player)<0||_status.event.num<=2)){
return 8-get.value(card);
}
}
return -1;
});
next.set('num',num);
"step 4"
if(result.bool) trigger.source.damage();
},
},
jili:{
@ -16075,7 +15996,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
regushe_info:'出牌阶段若X小于7则你可以用一张手牌与至多三名角色同时拼点然后依次结算拼点结果没赢的角色选择一项1.弃置一张牌2.令你摸一张牌。若你没赢你获得一个“饶舌”标记。当你获得第7个“饶舌”标记时你死亡。X为你的“饶舌”标记数与本回合因“鼓舌”拼点而胜利的次数之和',
rejici:'激词',
rejici2:'激词',
rejici_info:'锁定技当你展示拼点牌后若此牌的点数不大于X则你令此牌点数+X并获得此次拼点中原点数最大的拼点牌。',
rejici_info:'锁定技当你展示拼点牌后若此牌的点数不大于X则你令此牌点数+X并获得此次拼点中原点数最大的拼点牌。当你死亡时你令杀死你的角色弃置7-X张牌并失去1点体力。X为你的“饶舌”标记数',
gushe:'鼓舌',
gushe_bg:'舌',
gushe_info:'出牌阶段限一次你可以用一张手牌与至多三名角色同时拼点然后依次结算拼点结果没赢的角色选择一项1.弃置一张牌2.令你摸一张牌。若你没赢你获得一个“饶舌”标记。当你获得第7个“饶舌”标记时你死亡。',
@ -16517,11 +16438,6 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhiwei2:'至微',
zhiwei_info:'游戏开始时,你选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。 ',
zhiwei_info_guozhan:'你明置此武将牌时,选择一名其他角色。该角色造成伤害后,你摸一张牌,该角色受到伤害后,你随机弃置一张手牌。你弃牌阶段弃置的牌均被该角色获得。该角色死亡时,若你的两个武将牌均明置,你暗置此武将牌。 ',
ol_lisu:'OL李肃',
qiaoyan:'巧言',
qiaoyan_info:'锁定技,当你于回合外受到其他角色造成的伤害时,若你:有“珠”,则你令伤害来源获得“珠”;没有“珠”,则你防止此伤害,然后摸一张牌,并将一张牌正面朝上置于武将牌上,称为“珠”。',
xianzhu:'献珠',
xianzhu_info:'锁定技出牌阶段开始时你令一名角色A获得“珠”。若A不为你自己则你选择A攻击范围内的一名角色B视为A对B使用一张【杀】。',
sp_default:"常规",
sp_zhongdan:"忠胆英杰",

View File

@ -4,6 +4,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'sp2',
connect:true,
character:{
fanyufeng:['female','qun',3,['bazhan','jiaoying']],
ol_lisu:['male','qun',3,['qiaoyan','xianzhu']],
jin_yanghuiyu:['female','jin',3,['huirong','ciwei','caiyuan'],['hiddenSkill','unseen']],
shibao:['male','jin',4,['shibao_skill'],['unseen']],
jin_zhangchunhua:['female','jin',3,['huishi','qingleng','xuanmu'],['hiddenSkill']],
@ -87,7 +89,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
characterSort:{
sp2:{
sp_yingbian:['jin_zhangchunhua','jin_simayi','jin_wangyuanji','jin_simazhao','jin_xiahouhui','jin_yanghuiyu','jin_simashi','duyu','zhanghuyuechen','shibao'],
sp_yingbian:['jin_zhangchunhua','jin_simayi','jin_wangyuanji','jin_simazhao','jin_xiahouhui','jin_yanghuiyu','jin_simashi','duyu','zhanghuyuechen','shibao','ol_lisu'],
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"],
sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"],
sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"],
@ -98,7 +100,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_guandu:["sp_zhanghe","xunchen","sp_shenpei","gaolan","lvkuanglvxiang","chunyuqiong","sp_xuyou"],
sp_huangjin:['liuhong','zhujun','re_hejin','re_hansui','liubian'],
sp_fadong:['ol_dingyuan','wangrong','re_quyi','hanfu'],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao'],
sp_decade:['wulan','leitong','huaman','wangshuang','wenyang','re_liuzan','re_sunluyu','caobuxing','ol_yujin','re_maliang','xin_baosanniang','re_xinxianying','dongxie','guozhao','fanyufeng'],
sp_mini:["mini_sunquan","mini_zuoci","mini_jiangwei","mini_diaochan","mini_zhangchunhua"],
sp_luanwu:["ns_lijue","ns_zhangji","ns_fanchou"],
sp_yongjian:["ns_chendao","yj_caoang"],
@ -106,6 +108,309 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
skill:{
//樊玉凤
bazhan:{
audio:2,
enable:'phaseUse',
usable:1,
filter:function(event,player){
if(player.storage.bazhan){
return game.hasPlayer(function(current){
return current!=player&&current.countGainableCards(player,'h')>0;
})
}
return player.countCards('h')>0;
},
filterCard:true,
discard:false,
lose:false,
selectCard:function(){
if(_status.event.player.storage.bazhan) return 0;
return 1;
},
filterTarget:function(card,player,target){
if(player==target) return false;
if(player.storage.bazhan) return target.countGainableCards(player,'he')>0;
return true;
},
prompt:function(){
if(_status.event.player.storage.bazhan) return '获得一名其他角色的一张手牌';
return '将一张手牌交给一名其他角色';
},
delay:false,
check:function(card){
var player=_status.event.player;
var bool1=false,bool2=false;
for(var i of game.players){
if(get.attitude(player,i)<=0||player==i) continue;
bool1=true;
if(i.isDamaged()||i.isTurnedOver()){
bool2=true;
break;
}
}
if(bool2&&(get.suit(card,player)=='heart'||get.name(card,player)=='jiu')) return 10;
if(bool1) return 9-get.value(card);
if(get.color(card)=='red') return 5-get.value(card);
return 0;
},
content:function(){
'step 0'
if(player.storage.bazhan){
player.storage.bazhan=false;
event.recover=player;
player.gainPlayerCard(target,'h',true,'visibleMove');
}
else{
player.storage.bazhan=true;
event.recover=target;
target.gain(cards,player,'give');
event.card=cards[0];
}
'step 1'
var target=event.recover;
if(result.bool&&result.cards&&result.cards.length){
card=result.cards[0];
}
if(!card||!target||!target.getCards('h').contains(card)||(get.suit(card,target)!='heart'&&get.name(card,target)!='jiu')){
event.finish();
return;
}
var list=[];
event.addIndex=0;
var str=get.translation(target);
if(target.isDamaged()) list.push('令'+str+'回复一点体力');
else event.addIndex++;
if(target.isLinked()||target.isTurnedOver()) list.push('令'+get.translation(target)+'复原武将牌');
if(!list.length) event.finish();
else player.chooseControl('cancel2').set('choiceList',list).set('ai',function(){
var evt=_status.event.getParent();
if(get.attitude(evt.player,evt.target)<0) return 'cancel2';
if(target.hp>1&&target.isTurnedOver()) return 1-evt.addIndex;
return 0;
});
'step 2'
if(result.control=='cancel2') event.finish();
else if(result.index+event.addIndex==0){
event.recover.recover();
event.finish();
}
else if(event.recover.isLinked()) event.recover.link();
'step 3'
if(event.recover.isTurnedOver()) event.recover.turnOver();
},
ai:{
order:7,
result:{
target:function(player,target){
if(player.storage.bazhan) return -1;
if(ui.selected.cards.length){
var card=ui.selected.cards[0];
if(get.value(card,target)<0) return -0.5;
if(get.attitude(player,target)>0){
if((target.isDamaged()||target.isTurnedOver())&&(get.suit(card,target)=='heart'||get.name(card,target)=='jiu')) return 3;
if(target.hasUseTarget(card)&&target.getUseValue(card)>player.getUseValue(card,null,true)) return 1.4;
return 1;
}
if(player.hasSkill('jiaoying',true)&&target.countCards('h','shan')&&!target.hasSkillTag('respondShan',true,null,true)&&get.color(card)=='red'&&player.countCards('h',function(card){
return get.tag(card,'respondShan')&&get.effect(target,card,player,player)>0&&player.getUseValue(card)>0;
})) return -1;
return 1;
}
return 0;
},
},
},
},
jiaoying:{
audio:2,
trigger:{source:'gainEnd'},
forced:true,
filter:function(event,player){
if(player==event.player) return false;
var evt=event.getl(player);
return evt&&evt.hs&&evt.hs.length;
},
logTarget:'player',
content:function(){
var target=trigger.player;
if(!target.storage.jiaoying2) target.storage.jiaoying2=[];
var cs=trigger.getl(player).hs;
for(var i of cs) target.storage.jiaoying2.add(get.color(i,player));
target.addTempSkill('jiaoying2');
target.markSkill('jiaoying2');
player.addTempSkill('jiaoying3');
if(!player.storage.jiaoying3) player.storage.jiaoying3=[];
player.storage.jiaoying3.add(target);
},
ai:{
directHit_ai:true,
skillTagFilter:function(player,tag,arg){
var target=arg.target;
if(target.getStorage('jiaoying2').contains('red')&&get.tag(arg.card,'respondShan')&&!target.hasSkillTag('respondShan',true,null,true)) return true;
return false;
},
}
},
jiaoying2:{
onremove:true,
charlotte:true,
mod:{
cardEnabled2:function(card,player){
if(player.getStorage('jiaoying2').contains(get.color(card))) return false;
},
},
intro:{
content:'本回合内不能使用或打出$牌',
},
},
jiaoying3:{
onremove:true,
trigger:{global:'useCard1'},
silent:true,
firstDo:true,
charlotte:true,
filter:function(event,player){
return player.storage.jiaoying3.contains(event.player);
},
content:function(){
while(player.storage.jiaoying3.contains(trigger.player)) player.storage.jiaoying3.remove(trigger.player);
if(!player.storage.jiaoying3.length) player.removeSkill('jiaoying3');
},
group:'jiaoying3_draw',
},
jiaoying3_draw:{
trigger:{global:'phaseEnd'},
direct:true,
charlotte:true,
filter:function(event,player){
return player.getStorage('jiaoying3').length>0&&game.hasPlayer(function(current){
return current.countCards('h')<Math.min(5,current.maxHp);
})
},
content:function(){
'step 0'
player.storage.jiaoying3.shift();
player.chooseTarget('醮影:令一名角色将手牌摸至手牌上限',function(card,player,target){
return target.countCards('h')<Math.min(target.maxHp,5);
}).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(att>2){
return Math.min(5,target.maxHp)-target.countCards('h');
}
return att/3;
});
'step 1'
if(result.bool){
player.logSkill('jiaoying',result.targets);
for(var i=0;i<result.targets.length;i++){
result.targets[i].drawTo(Math.min(5,result.targets[i].maxHp));
}
if(lib.skill.jiaoying3_draw.filter(null,player)) event.goto(0);
}
},
},
//李肃
qiaoyan:{
trigger:{player:'damageBegin2'},
forced:true,
filter:function(event,player){
return player!=_status.currentPhase&&event.source&&event.source!=player;
},
logTarget:'source',
content:function(){
'step 0'
var cards=player.getStorage('qiaoyan');
if(cards.length){
var source=trigger.source;
player.$give(cards,source,false);
source.gain(cards,'log');
player.unmarkAuto('qiaoyan',cards);
event.goto(3);
}
else{
trigger.cancel();
player.draw();
}
'step 1'
var hs=player.getCards('he');
if(!hs.length) event.finish();
else if(hs.length==1) event._result={bool:true,cards:hs};
else player.chooseCard('he',true,'将一张牌作为“珠”置于武将牌上');
'step 2'
if(result.bool&&result.cards&&result.cards.length){
var cards=result.cards;
player.lose(cards,ui.special,'visible','toStorage');
player.$give(cards,player,false);
player.markAuto('qiaoyan',cards);
game.log(player,'将',cards,'放在了武将牌上');
}
event.finish();
'step 3'
game.delayx();
},
marktext:'珠',
intro:{content:'cards',onunmark:'throw'},
ai:{
filterDamage:true,
skillTagFilter:function(player,tag,arg){
if(!player.getStorage('qiaoyan').length) return false;
if(arg&&arg.player){
if(arg.player.hasSkillTag('jueqing',false,player)) return false;
}
},
combo:'xianzhu',
},
},
xianzhu:{
trigger:{player:'phaseUseBegin'},
direct:true,
locked:true,
filter:function(event,player){
return player.storage.qiaoyan&&player.storage.qiaoyan.length>0;
},
content:function(){
'step 0'
event.cards=player.storage.qiaoyan;
player.chooseTarget(true,'请选择【献珠】的目标','令一名角色获得'+get.translation(event.cards)+'。若该角色不为你自己,则你令其视为对其攻击范围内的另一名角色使用【杀】').set('ai',function(target){
var player=_status.event.player;
var eff=get.sgn(get.attitude(player,target))*get.value(_status.event.getParent().cards);
if(player!=target) eff+=Math.max.apply(null,game.filterPlayer().map(function(current){
if(current!=target&&target.inRange(current)&&target.canUse('sha',current)) return get.effect(current,{name:'sha'},target,player);
return 0;
}));
return eff;
});
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('xianzhu',target);
player.$give(cards,target,false);
target.gain(cards,'log');
player.unmarkAuto('qiaoyan',cards);
}
else event.finish();
'step 2'
game.delayx();
if(player!=target&&target.isIn()&&player.isIn()&&game.hasPlayer(function(current){
return current!=target&&target.inRange(current)&&target.canUse('sha',current);
})){
var str=get.translation(target);
player.chooseTarget(true,'选择'+str+'攻击范围内的一名角色,视为'+str+'对其使用【杀】',function(card,player,target){
var source=_status.event.target;
return source.inRange(target)&&source.canUse('sha',target);
}).set('target',target).set('ai',function(target){
var evt=_status.event;
return get.effect(target,{name:'sha'},evt.target,evt.player)
});
}
else event.finish();
'step 3'
if(result.bool) target.useCard({name:'sha',isCard:true},result.targets[0],false);
},
ai:{combo:'qiaoyan'},
},
recangchu:{
audio:2,
trigger:{
@ -1343,11 +1648,21 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function(){
'step 0'
event.card=target.getCards('h').randomGet();
var cards=get.cards(2);
var cards;
cards=get.cards(2);
event.cards=cards.concat([event.card]);
while(cards.length){
ui.cardPile.insertBefore(cards.pop().fix(),ui.cardPile.firstChild);
}
if(get.mode()=='guozhan'){
var num=ui.cardPile.childElementCount;
var num1=get.rand(1,num-1),num2=get.rand(1,num-1);
if(num1==num2){
if(num1==0) num2++;
else num1--;
}
event.cards=[event.card,ui.cardPile.childNodes[num1],ui.cardPile.childNodes[num2]];
}
game.updateRoundNumber();
event.cards.randomSort();
game.log(player,'展示了',event.cards);
@ -1429,7 +1744,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var stat=player.getStat();
if(!stat.sanchen) stat.sanchen=[];
stat.sanchen.push(target);
player.addMark('sanchen',1,false);
if(get.mode()!='guozhan') player.addMark('sanchen',1,false);
target.draw(3);
'step 1'
if(!target.countCards('he')) event.finish();
@ -1447,11 +1762,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(list.length==result.cards.length){
target.draw();
player.getStat('skill').sanchen--;
if(get.mode()=='guozhan') player.addTempSkill('pozhu');
}
}
else{
target.draw();
player.getStat('skill').sanchen--;
if(get.mode()=='guozhan') player.addTempSkill('pozhu');
}
},
ai:{
@ -1470,6 +1787,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
marktext:'陈',
},
zhaotao:{
forbid:['guozhan'],
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
juexingji:true,
@ -1502,9 +1820,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'useCardAfter'},
silent:true,
filter:function(event,player){
return event.skill=='pozhu'&&!player.getHistory('sourceDamage',function(evt){
return event.skill=='pozhu'&&(get.mode()=='guozhan'||!player.getHistory('sourceDamage',function(evt){
return evt.card==event.card;
}).length;
}).length);
},
content:function(){
player.addTempSkill('pozhu3');
@ -1515,17 +1833,23 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
trigger:{
global:'gameDrawAfter',
player:'enterGame',
player:['enterGame','showCharacterAfter'],
},
forced:true,
filter:function(event,player){
if(player._xijue) return false;
if(get.mode()=='guozhan') return event.name=='showCharacter'&&event.toShow&&event.toShow.contains('gz_zhanghuyuechen');
return event.name!='showCharacter';
},
content:function(){
player.addMark('xijue',4);
player._xijue=true;
},
intro:{
name2:'爵',
content:'mark',
},
derivation:['retuxi','xiaoguo'],
derivation:['xijue_tuxi','xijue_xiaoguo'],
group:['xijue_gain','xijue_tuxi','xijue_xiaoguo'],
},
xijue_gain:{
@ -1554,6 +1878,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
content:function (){
"step 0"
var num=trigger.num;
if(get.mode()=='guozhan'&&num>2) num=2;
player.chooseTarget('是否弃置一枚“爵”发动【突袭】?','获得至多'+get.translation(num)+'名角色的各一张手牌,然后少摸等量的牌',[1,num],function(card,player,target){
return target.countCards('h')>0&&player!=target;
},function(target){
@ -1621,7 +1946,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
"step 2"
if(result.bool){
player.draw();
if(get.mode()!='guozhan') player.draw();
}
else{
trigger.player.damage();
@ -1845,8 +2170,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:2,
enable:'phaseUse',
locked:true,
filter:function(event,player){
return Array.isArray(event.smyyingshi);
},
onChooseToUse:function(event){
if(game.online) return;
if(game.online||!event.player.hasSkill('smyyingshi')) return;
var cards=[];
for(var i=0;i<event.player.maxHp;i++){
var card=ui.cardPile.childNodes[i];
@ -8857,6 +9185,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
guozhao:'郭照,电视剧《军师联盟》中的女主角之一,由唐艺昕饰演。原型为文德皇后郭氏(字女王),魏国皇后,张春华的义妹,深爱曹丕,替甄宓抚育曹叡,因甄宓之死被曹叡记恨,曹丕死后,成为皇太后,被曹叡逼上死路。自尽身亡。',
shibao:'石苞273年字仲容渤海南皮今河北省南皮县人。三国时曹魏至西晋重要将领西晋开国功臣。西晋建立后历任大司马、侍中、司徒等职封乐陵郡公卒后谥号为“武”。',
caoanmin:'曹安民(?-197年沛国谯县今安徽亳州字安民。东汉时期人物曹德之子曹操之侄曹昂的堂兄弟曹丕的堂兄死于宛城之战。按曹丕《典论》记载的“亡兄孝廉子脩、从兄安民遇害。”等情况来看安民应该是曹操侄子错不了曹丕是他们属于兄弟关系肯定不会弄错。另外从典论的记载来看安民是和子脩并提的子脩是曹昂的字安民则肯定也是字不是名至于三国志中记载则应取自曹丕之《典论》但陈寿又不知曹安民其名故写为“长子昂、弟子安民”。',
fanyufeng:'樊夫人东汉末年人物昔桂阳太守赵范寡嫂。赵云随刘备平定江南四郡后刘备以赵云为桂阳太守。赵范居心叵测要将自己的嫂嫂樊氏嫁给赵云但遭到赵云的拒绝。后来赵范逃走樊氏也下落不明。2001年应日本日中青少年文化中心成立50周年之邀北京京剧院赴日进行40场巡回演出这次访日的剧目都不同程度地进行了加工改编以符合日本观众的需求。《取桂阳》是根据老本重新排演的叶金援饰赵云王怡饰樊玉凤。剧中的樊玉凤成为文武双全的巾帼英雄被赵云收降后来在《龙凤呈祥》中也参与堵截东吴的追兵。',
},
characterTitle:{
wulan:'#b对决限定武将',
@ -8902,6 +9231,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
rezhongjian:function(player){
return '出牌阶段限'+(player.hasSkill('recaishi2')?'两':'一')+'次,你可以选择一名本回合内未选择过的角色。你令其获得一项效果直至你的下回合开始:①其下次造成伤害后弃置两张牌,然后你摸一张牌。②其下次受到伤害后摸两张牌,然后你摸一张牌。'
},
bazhan:function(player){
if(player.storage.bazhan) return '转换技,出牌阶段限一次,阴:你可以将一张手牌交给一名其他角色。<span class="bluetext">阳:你可以获得一名其他角色的一张手牌。</span>若以此法移动的牌为【酒】或♥牌则你可令得到此牌的角色执行一项①回复1点体力。②复原武将牌。';
return '转换技,出牌阶段限一次,<span class="bluetext">阴:你可以将一张手牌交给一名其他角色。</span>阳你可以获得一名其他角色的一张手牌。若以此法移动的牌为【酒】或♥牌则你可令得到此牌的角色执行一项①回复1点体力。②复原武将牌。';
},
},
perfectPair:{
jin_simayi:['jin_zhangchunhua'],
@ -9334,15 +9667,22 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xijue:'袭爵',
xijue_gain:'袭爵',
xijue_info:'锁定技游戏开始时你获得4枚“爵”。回合结束时你获得X枚“爵”X为你本回合内造成的伤害数。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。',
xijue_info_guozhan:'锁定技当你首次明置此武将牌时你获得4枚“爵”。回合结束时你获得X枚“爵”X为你本回合内造成的伤害数。你可弃置一枚“爵”并在合适的时机发动〖突袭〗和〖骁果〗。',
xijue_tuxi:'突袭',
xijue_tuxi_info:'摸牌阶段摸牌时,你可以少摸任意张牌,然后获得等量的角色的各一张手牌。',
xijue_tuxi_info_guozhan:'摸牌阶段摸牌时,你可以少摸至多两张牌,然后获得等量的角色的各一张手牌。',
xijue_xiaoguo:'骁果',
xijue_xiaoguo_info:'其他角色的结束阶段开始时你可以弃置一张基本牌令该角色选择一项1.弃置一张装备牌然后你摸一张牌2.受到你对其造成的1点伤害。',
xijue_xiaoguo_info_guozhan:'其他角色的结束阶段开始时你可以弃置一张基本牌令该角色选择一项1.弃置一张装备牌2.受到你对其造成的1点伤害。',
duyu:'杜预',
sanchen:'三陈',
sanchen_info:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌。否则你本阶段内不能再发动〖三陈〗。',
sanchen_info_guozhan:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌且你获得技能〖破竹〗只到回合结束。否则你本阶段内不能再发动〖三陈〗。',
zhaotao:'诏讨',
zhaotao_info:'觉醒技准备阶段若你本局游戏内发动〖三陈〗的次数大于2则你减1点体力上限并获得〖破竹〗。',
pozhu:'破竹',
pozhu_info:'出牌阶段,你可以将一张手牌当做【出其不意】使用。若你未因此牌造成过伤害,则你不能再发动〖破竹〗直到回合结束。',
pozhu_info_guozhan:'出牌阶段限一次,你可以将一张手牌当做【出其不意】使用。',
jin_wangyuanji:'晋王元姬',
jin_wangyuanji_ab:'王元姬',
shiren:'识人',
@ -9350,6 +9690,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yanxi:'宴戏',
yanxi2:'宴戏',
yanxi_info:'出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆顶的两张牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗获得的牌,不计入当前回合的手牌上限。',
yanxi_info_guozhan:'出牌阶段,你可选择一名有手牌的角色。你将该角色的一张随机手牌与牌堆中的两张随机牌混合后展示,并选择其中一张。若你以此法选择的是该角色的手牌,则你获得这三张牌。否则你获得选择的牌。你通过〖宴戏〗获得的牌,不计入当前回合的手牌上限。',
jin_simazhao:'晋司马昭',
jin_simazhao_ab:'司马昭',
tuishi:'推弑',
@ -9423,7 +9764,20 @@ game.import('character',function(lib,game,ui,get,ai,_status){
reshishou:'失守',
reshishou2:'失守',
reshishou_info:'锁定技当你使用【酒】时或受到1点火焰伤害后你移去一个“粮”。准备阶段若你没有“粮”你失去1点体力。',
ol_lisu:'OL李肃',
qiaoyan:'巧言',
qiaoyan_info:'锁定技,当你于回合外受到其他角色造成的伤害时,若你:有“珠”,则你令伤害来源获得“珠”;没有“珠”,则你防止此伤害,然后摸一张牌,并将一张牌正面朝上置于武将牌上,称为“珠”。',
xianzhu:'献珠',
xianzhu_info:'锁定技出牌阶段开始时你令一名角色A获得“珠”。若A不为你自己则你选择A攻击范围内的一名角色B视为A对B使用一张【杀】。',
fanyufeng:'樊玉凤',
bazhan:'把盏',
bazhan_info:'转换技出牌阶段限一次你可以将一张手牌交给一名其他角色。阳你可以获得一名其他角色的一张手牌。若以此法移动的牌为【酒】或♥牌则你可令得到此牌的角色执行一项①回复1点体力。②复原武将牌。',
jiaoying:'醮影',
jiaoying2:'醮影',
jiaoying3:'醮影',
jiaoying3_draw:'醮影',
jiaoying_info:'锁定技,其他角色获得你的手牌后,该角色本回合不能使用或打出与此牌颜色相同的牌。然后此回合结束时,若其本回合没有再使用牌,你令一名角色将手牌摸至体力上限(至多摸至五张)。',
sp_yingbian:'文德武备',
sp_whlw:"文和乱武",
sp_zlzy:"逐鹿中原",

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.109.3.1',
'v1.9.109.3.2',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -689,6 +689,8 @@ window.noname_asset_list=[
'audio/die/sp_sunshao.mp3',
'audio/die/sp_wangcan.mp3',
'audio/die/sp_xunchen.mp3',
'audio/die/fanyufeng.mp3',
'audio/die/ol_lisu.mp3',
'audio/skill/decadezishou1.mp3',
'audio/skill/decadezishou2.mp3',
@ -3025,6 +3027,14 @@ window.noname_asset_list=[
'audio/skill/spshanxi2.mp3',
'audio/skill/zuici1.mp3',
'audio/skill/zuici2.mp3',
'audio/skill/bazhan1.mp3',
'audio/skill/bazhan2.mp3',
'audio/skill/jiaoying1.mp3',
'audio/skill/jiaoying2.mp3',
'audio/skill/qiaoyan1.mp3',
'audio/skill/qiaoyan2.mp3',
'audio/skill/xianzhu1.mp3',
'audio/skill/xianzhu2.mp3',
'audio/voice/male/0.mp3',
'audio/voice/male/1.mp3',
@ -3137,6 +3147,7 @@ window.noname_asset_list=[
'image/card/kamome_suitcase.png',
'image/card/miki_hydrogladiator.png',
'image/card/hina_shenji.png',
'image/card/miki_binoculars.png',
'image/card/bagua.png',
'image/card/baihupifeng.png',
@ -3812,6 +3823,8 @@ window.noname_asset_list=[
'image/character/mifangfushiren.jpg',
'image/character/tangzi.jpg',
'image/character/key_yukito.jpg',
'image/character/fanyufeng.jpg',
'image/character/ol_lisu.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -10473,7 +10473,7 @@
var e2=target.getCards('e');
var todis2=[];
for(var i=0;i<e2.length;i++){
if(player.isDisabled(get.subtype(e2[i]))) todis1.push(e2[i]);
if(player.isDisabled(get.subtype(e2[i]))) todis2.push(e2[i]);
}
target.discard(todis2);
"step 1"
@ -19646,6 +19646,7 @@
if(this.num<=0){
delete this.filterStop;
this.trigger('damageZero');
this.finish();
this._triggered=null;
return true;
}

View File

@ -1,15 +1,15 @@
window.noname_update={
version:'1.9.109.3.1',
update:'1.9.109.3',
version:'1.9.109.3.2',
update:'1.9.109.3.1',
changeLog:[
'国崎往人',
'王朗、程昱',
'樊玉凤、李肃',
'国战杜预、张虎乐綝、王元姬',
'bug修复',
],
files:[
//'card/extra.js',
//'card/gujian.js',
//'card/guozhan.js',
'card/guozhan.js',
//'card/gwent.js',
//'card/huanlekapai.js',
//'card/mtg.js',
@ -20,13 +20,13 @@ window.noname_update={
//'card/yingbian.js',
//'card/zhenfa.js',
//'card/zhulu.js',
'character/diy.js',
//'character/diy.js',
//'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
//'character/gwent.js',
//'character/hearth.js',
'character/mobile.js',
//'character/mobile.js',
//'character/mtg.js',
//'character/old.js',
//'character/ow.js',
@ -40,7 +40,7 @@ window.noname_update={
//'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
'character/yijiang.js',
//'character/yijiang.js',
//'character/yxs.js',
//'extension/boss/extension.js',
//'layout/default/layout.css',
@ -50,7 +50,7 @@ window.noname_update={
//'mode/brawl.js',
//'mode/chess.js',
//'mode/doudizhu.js',
//'mode/guozhan.js',
'mode/guozhan.js',
//'mode/identity.js',
//'mode/single.js',
//'mode/stone.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

BIN
image/character/ol_lisu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

View File

@ -26,6 +26,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
}
}
if(lib.skill.sanchen) lib.skill.sanchen.derivation='pozhu';
},
onreinit:function(){
var pack=lib.characterPack.mode_guozhan;
@ -140,6 +141,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
}
lib.characterReplace={};
if(lib.skill.sanchen) lib.skill.sanchen.derivation='pozhu';
},_status.mode);
game.randomMapOL();
}
@ -285,7 +287,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_shamoke','gz_lifeng','gz_wangping',
'gz_xiaoqiao','gz_zhoutai','gz_lvfan',
'gz_beimihu','gz_mateng','gz_jiaxu',
'gz_jin_wangyuanji','gz_huaxin',
'gz_jin_wangyuanji','gz_huaxin','gz_duyu',
],
'7':[
'gz_zhanghe','gz_jianggan','gz_simayi',
@ -305,6 +307,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
'gz_liushan','gz_pangtong','gz_zhaoyun',
'gz_re_lusu','gz_sunquan','gz_ganning',
'gz_zhangxiu','gz_liqueguosi','gz_huatuo',
'gz_zhanghuyuechen',
],
'4':[
'gz_dianwei','gz_dengai','gz_xunyu',
@ -343,7 +346,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
guozhan_bian:["gz_liqueguosi","gz_zuoci","gz_bianfuren","gz_xunyou","gz_lingtong","gz_lvfan","gz_masu","gz_shamoke",],
guozhan_quan:["gz_cuimao","gz_yujin","gz_wangping","gz_fazheng","gz_wuguotai","gz_lukang","gz_yuanshu","gz_zhangxiu"],
guozhan_jun:["gz_jun_caocao","gz_jun_sunquan","gz_jun_liubei","gz_jun_zhangjiao"],
guozhan_jin:['gz_jin_simayi','gz_jin_simazhao','gz_jin_simashi','gz_jin_zhangchunhua','gz_jin_wangyuanji','gz_jin_xiahouhui'],
guozhan_jin:['gz_jin_simayi','gz_jin_simazhao','gz_jin_simashi','gz_jin_zhangchunhua','gz_jin_wangyuanji','gz_jin_xiahouhui','gz_duyu','gz_zhanghuyuechen'],
guozhan_double:['gz_tangzi','gz_liuqi','gz_mengda','gz_mifangfushiren','gz_zhanglu','gz_shixie'],
guozhan_zongheng:['gz_huaxin','gz_luyusheng'],
guozhan_others:["gz_lingcao","gz_lifeng","gz_beimihu","gz_jianggan"],
@ -487,6 +490,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
gz_jin_simazhao:['male','jin',3,['choufa','zhaoran']],
gz_jin_xiahouhui:['female','jin',3,['jyishi','shiduo']],
gz_jin_simashi:['male','jin',3,['yimie','tairan']],
gz_duyu:['male','jin',4,['sanchen']],
gz_zhanghuyuechen:['male','jin',4,['xijue']],
}
},
skill:{
@ -1053,7 +1058,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
player.logSkill('mffengshi');
source.line(player,'green');
}
trigger.getParent().baseDamage++;
if(get.tag(trigger.card,'damage')) trigger.getParent().baseDamage++;
source.chooseToDiscard('he',true);
}
else event.finish();
@ -2486,8 +2491,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(player.hasSkill('new_paoxiao',true)||player.getEquip('zhuge')) return 0;
if(player.countCards('h',function(cardx){
return cardx!=card&&cardx.name=='sha'&&player.hasUseTarget(cardx);
})<2) return 0;
return 6.5-get.value(card);
})<(player.getCardUsable('sha')+1)) return 0;
return 7-get.value(card);
},
content:function(){
'step 0'