This commit is contained in:
Spmario233 2019-12-07 20:48:38 +08:00 committed by GitHub
parent a3b01fdb4f
commit 0c94a14670
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
13 changed files with 4308 additions and 4030 deletions

View File

@ -78,7 +78,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
if(typeof event.baseDamage!='number') event.baseDamage=1;
if(typeof event.extraDamage!='number') event.extraDamage=0;
"step 1"
if(event.directHit||(!target.hasShan()&&!_status.connectMode)){
if(event.directHit||(!_status.connectMode&&lib.config.skip_shan&&!target.hasShan())){
event._result={bool:false};
}
else if(event.skipShan){
@ -1820,8 +1820,14 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
audio:true,
check:function(event,player){
var source=event.getParent().player;
if(get.damageEffect(player,source,player)>0) return false;
if(event&&(event.ai||event.ai1)){
var ai=event.ai||event.ai1;
var tmp=_status.event;
_status.event=event;
var result=ai({name:'shan'},_status.event.player,event);
_status.event=tmp;
return result>0;
}
return true;
},
content:function(){

View File

@ -33,12 +33,153 @@ game.import('character',function(lib,game,ui,get,ai,_status){
re_zhenji:['female','wei',3,['reluoshen','reqingguo']],
re_zhugeliang:['male','shu',3,['reguanxing','kongcheng']],
re_huaxiong:["male","qun",6,["new_reyaowu"]],
re_zhangjiao:['male','qun',3,['xinleiji','xinguidao','huangtian'],['zhu']],
},
characterIntro:{
re_gongsunzan:'群雄之一。出身贵族,因母地位卑贱,只当了郡中小吏。他貌美,声音洪亮,机智善辩。后随卢植于缑氏山中读书,粗通经传。',
re_lidian:'字曼成,曹操麾下将领。李典深明大义,不与人争功,崇尚学习与高贵儒雅,尊重博学之士,在军中被称为长者。李典有长者之风,官至破虏将军,三十六岁去世。魏文帝曹丕继位后追谥号为愍侯。',
},
skill:{
xinleiji:{
group:'xinleiji_misa',
audio:'releiji',
audioname:['boss_qinglong'],
trigger:{player:['useCard','respond']},
filter:function(event,player){
return event.card.name=='shan'||event.card.name=='shandian';
},
judgeCheck:function(card,bool){
var suit=get.suit(card);
if(suit=='spade'){
if(bool&&card.number>1&&card.number<10) return 5;
return 4;
}
if(suit=='club') return 2;
return 0;
},
content:function(){
player.judge(lib.skill.xinleiji.judgeCheck);
},
ai:{
useShan:true,
effect:{
target:function(card,player,target,current){
if(get.tag(card,'respondShan')){
var hastarget=game.hasPlayer(function(current){
return get.attitude(target,current)<0;
});
var be=target.countCards('e',{color:'black'});
if(target.countCards('h','shan')&&be){
if(!target.hasSkill('xinguidao')) return 0;
return [0,hastarget?target.countCards('he')/2:0];
}
if(target.countCards('h','shan')&&target.countCards('h')>2){
if(!target.hasSkill('xinguidao')) return 0;
return [0,hastarget?target.countCards('h')/4:0];
}
if(target.countCards('h')>3||(be&&target.countCards('h')>=2)){
return [0,0];
}
if(target.countCards('h')==0){
return [1.5,0];
}
if(target.countCards('h')==1&&!be){
return [1.2,0];
}
if(!target.hasSkill('xinguidao')) return [1,0.05];
return [1,Math.min(0.5,(target.countCards('h')+be)/4)];
}
}
}
}
},
xinleiji_misa:{
audio:'releiji',
trigger:{player:'judgeAfter'},
forced:true,
locked:false,
filter:function(event,player){
return ['spade','club'].contains(event.result.suit);
},
content:function(){
'step 0'
event.num=1+['club','spade'].indexOf(trigger.result.suit);
if(event.num==1) player.recover();
player.chooseTarget(true,'雷击:对一名角色造成'+event.num+'点雷电伤害。').ai=function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player,'thunder');
};
'step 1'
if(result.bool&&result.targets&&result.targets.length){
player.line(result.targets,'thunder');
result.targets[0].damage(event.num,'thunder');
}
},
},
xinguidao:{
audio:2,
trigger:{global:'judge'},
filter:function(event,player){
return player.countCards('he',{color:'black'})>0;
},
direct:true,
content:function(){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('xinguidao'),'he',function(card){
return get.color(card)=='black';
}).set('ai',function(card){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
var judging=_status.event.judging;
var result=trigger.judge(card)-trigger.judge(judging);
var attitude=get.attitude(player,trigger.player);
if(attitude==0||result==0){
if(trigger.player!=player) return 0;
if(game.hasPlayer(function(current){
return get.attitude(player,current)<0;
})){
var checkx=lib.skill.xinleiji.judgeCheck(card,true)-lib.skill.xinleiji.judgeCheck(judging);
if(checkx>0) return checkx;
}
return 0;
};
if(attitude>0){
return result;
}
else{
return -result;
}
}).set('judging',trigger.player.judging[0]);
"step 1"
if(result.bool){
player.respond(result.cards,'highlight','xinguidao');
}
else{
event.finish();
}
"step 2"
if(result.bool){
player.$gain2(trigger.player.judging[0]);
player.gain(trigger.player.judging[0]);
var card=result.cards[0];
if(get.suit(card)=='spade'&&card.number>1&&card.number<10) player.draw('nodelay');
trigger.player.judging[0]=result.cards[0];
if(!get.owner(result.cards[0],'judge')){
trigger.position.appendChild(result.cards[0]);
}
game.log(trigger.player,'的判定牌改为',result.cards[0]);
}
"step 3"
game.delay(2);
},
ai:{
tag:{
rejudge:1
}
}
},
reqingguo:{
audio:'qingguo',
enable:['chooseToRespond','chooseToUse'],
@ -3116,7 +3257,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"re_yanwen":"界颜良文丑",
re_pangtong:"界庞统",
xin_yuanshao:"界袁绍",
re_zhangjiao:'界张角',
xinleiji:'雷击',
xinguidao:'鬼道',
xinleiji_info:'当你使用或打出【闪】或【闪电】时你可以进行判定。当你的判定牌生效后若结果为黑桃你对一名角色造成2点雷电伤害梅花你回复1点体力并对一名其他角色造成1点雷电伤害。',
xinguidao_info:'一名角色的判定牌生效前你可以打出一张黑色牌作为判定牌并获得原判定牌。若你以此法打出的牌为黑桃2-9则你摸一张牌。',
reqiangxi:"强袭",
"reqiangxi_info":"出牌阶段对每名其他角色限一次你可以选择一项1. 失去一点体力并对你攻击范围内的一名其他角色造成一点伤害2. 弃置一张武器牌并对你攻击范围内的一名其他角色造成一点伤害。",
rehuoji:"火计",

View File

@ -439,6 +439,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"drlt_qianjie":{
group:["drlt_qianjie_1","drlt_qianjie_2","drlt_qianjie_3"],
locked:true,
subSkill:{
'1':{
audio:2,
@ -6077,6 +6078,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
buqu:{
audio:2,
audioname:['key_yuri'],
trigger:{player:'chooseToUseBefore'},
forced:true,
filter:function(event,player){return event.type=='dying'&&player.isDying()&&event.dying==player},

View File

@ -5,11 +5,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
connect:true,
characterSort:{
sp:{
sp_default:["caoying","simahui","baosanniang","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","guansuo","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","wenyang","guanlu","gexuan","xinpi"],
sp_default:["caoying","simahui","baosanniang","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","guansuo","tadun","yanbaihu","chengyu","wanglang","sp_pangde","sp_jiaxu","litong","mizhu","buzhi","caochun","dongbai","zhaoxiang","mazhong","dongyun","kanze","heqi","wangyun","sunqian","xizhicai","quyi","luzhi","wenyang","guanlu","gexuan"],
sp_whlw:["xurong","lijue","zhangji","fanchou","guosi"],
sp_zlzy:["zhangqiying","lvkai","zhanggong","weiwenzhugezhi","beimihu"],
sp_longzhou:["xf_tangzi","xf_huangquan","xf_sufei","sp_liuqi"],
sp_zizouqi:["mangyachang","xugong","zhangchangpu"],
sp_sbfm:["lisu","xinpi"],
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_guozhan:["shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan"],
@ -20,6 +21,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
character:{
xinpi:['male','wei',3,['xpchijie','yinju'],['unseen']],
lisu:['male','qun',2,['lslixun','lskuizhu']],
hejin:['male','qun',4,['mouzhu','yanhuo']],
hansui:['male','qun',4,['mashu','niluan']],
niujin:['male','wei',4,['cuorui','liewei']],
@ -574,7 +577,110 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//辛毗
//上兵伐谋
//伊籍在标包 不会移动
lslixun:{
audio:2,
forced:true,
trigger:{player:'damageBegin4'},
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=0;
},
marktext:'珠',
intro:{
content:'共有#个“珠”',
},
content:function(){
trigger.cancel();
player.storage.lslixun+=trigger.num;
player.markSkill('lslixun');
},
group:'lslixun_fate',
},
lslixun_fate:{
audio:'lslixun',
trigger:{player:'phaseUseBegin'},
forced:true,
filter:function(event,player){
return player.storage.lslixun&&player.storage.lslixun>0;
},
content:function(){
'step 0'
event.forceDie=true;
_status.lslixun=player.storage.lslixun;
player.judge(function(card){
if(get.number(card)<_status.lslixun) return -_status.lslixun;
return 1;
});
'step 1'
delete _status.lslixun;
if(!result.bool){
player.chooseToDiscard(true,'h',player.storage.lslixun).ai=lib.skill.qiangxi.check;
}
else event.finish();
'step 2'
var num=player.storage.lslixun;
if(result.cards&&result.cards.length) num-=result.cards.length;
if(num) player.loseHp(num);
},
},
lskuizhu:{
audio:2,
trigger:{player:'phaseUseEnd'},
direct:true,
filter:function(event,player){
return player.isMaxHp(true)==false;
},
content:function(){
'step 0'
player.chooseTarget(get.prompt2('lskuizhu'),function(card,player,target){
return target!=player&&target.isMaxHp();
}).ai=function(){return -1};
'step 1'
if(result.bool){
var target=result.targets[0];
event.target=target;
player.logSkill('lskuizhu',target);
player.drawTo(Math.min(5,target.countCards('h')));
}
else event.finish();
'step 2'
if(!player.countCards('h')){
event.finish();
return;
}
target.viewHandcards(player);
'step 3'
if(!target.countCards('h')){
event.finish();
return;
}
target.chooseToDiscard(true,'h',[1,player.countCards('h')],'弃置至多'+get.cnNumber(player.countCards('h'))+'张手牌,并获得'+get.translation(player)+'等量的手牌').ai=lib.skill.zhiheng.check;
'step 4'
if(result.bool&&result.cards&&result.cards.length&&player.countGainableCards(target,'h')>0){
target.gainPlayerCard(player,'h',true,result.cards.length)
}
'step 5'
if(result.bool&&result.cards&&result.cards.length>1){
var bool=player.storage.lslixun>0!==true;
player.chooseTarget(bool,'令'+get.translation(target)+'对其攻击范围内的一名角色造成1点伤害'+(bool?'':',或点「取消」移去一个“珠”'),function(card,player,target){
var source=_status.event.source;
return target!=source&&get.distance(source,target,'attack')<=1;
}).set('source',target).set('ai',function(target){
return get.damageEffect(target,_status.event.source,_status.event.player);
});
}
else event.finish();
'step 6'
if(result.bool&&result.targets&&result.targets.length){
result.targets[0].damage(target);
}
else{
player.storage.lslixun--;
player[player.storage.lslixun?'markSkill':'unmarkSkill']('lslixun');
}
},
},
xpchijie:{
audio:2,
trigger:{
@ -2863,6 +2969,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
prompt:'视为使用一张闪',
ai:{
order:function(){
var player=_status.event.player;
if(player.hasSkill('qingzhong_give')) return 2.95;
return 3.15;
},
@ -7356,6 +7463,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return true;
},
ai:{
respondShan:true,
effect:{
target:function(card,player,target){
if(player==target&&get.subtype(card)=='equip2'){
@ -13021,6 +13129,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
hansui:'韩遂',
niujin:'牛金',
xinpi:'辛毗',
lisu:'李肃',
lslixun:'利熏',
lslixun_fate:'利熏',
lslixun_info:'锁定技,当你受到伤害时,你防止此伤害,然后获得等同于伤害值的“珠”标记。出牌阶段开始时,你进行一次判定,若结果点数小于“珠”的数量,你弃置等同于“珠”数量的手牌(若弃牌的牌数不够,则失去剩余数量的体力值)。',
lskuizhu:'馈珠',
lskuizhu_info:'出牌阶段结束时你可以选择体力值全场最多的一名其他角色将手牌摸至与该角色相同最多摸至五张然后该角色观看你的手牌弃置任意张手牌并从观看的牌中获得等量的牌。若其获得的牌大于一张则你选择一项移去一个“珠”或令其对其攻击范围内的一名角色造成1点伤害。',
xpchijie:'持节',
xpchijie_info:'每回合限一次,当你成为其他角色使用牌的目标后,你可以获得如下效果:当此牌对其他角色造成伤害时,若此牌已对你造成过伤害,则你获得此牌;当此牌使用结算完成时,你可以获得此牌对应的所有实体牌。',
@ -13643,6 +13757,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_zlzy:"逐鹿中原",
sp_longzhou:"同舟共济",
sp_zizouqi:"自走棋",
sp_sbfm:'上兵伐谋',
sp_zhongdan:"忠胆英杰",
sp_star:"☆SP系列",
sp_guozhan:"国战",

View File

@ -3509,7 +3509,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
}
"step 2"
if(get.color(result.links[0])!='black') player.draw();
if(get.color(result.links[0])!='black') player.draw('nodelay');
if(result.links[0].name!='sha'&&event.target.countCards('he')){
player.gainPlayerCard('he',event.target,true);
}

View File

@ -5095,7 +5095,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
direct:true,
audio:2,
filter:function(event,player){
return player.countCards('h','sha')>0&&!player.storage.chunlao.length;
return player.countCards('h')>0&&(_status.connectMode||player.countCards('h','sha')>0)&&!player.storage.chunlao.length;
},
init:function(player){
player.storage.chunlao=[];
@ -5105,7 +5105,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
player.chooseCard([1,player.countCards('h','sha')],get.prompt('chunlao'),{name:'sha'}).set('ai',function(){
player.chooseCard([1,Math.max(1,player.countCards('h','sha'))],get.prompt('chunlao'),{name:'sha'}).set('ai',function(){
return 1;
});
'step 1'

View File

@ -86,7 +86,11 @@ game.import('play',function(lib,game,ui,get,ai,_status){
if(lib.skill[i]) console.log(i);
if(i!='versus_ladder'){
lib.skill[i]=mode.skill[i];
game.finishSkill(i);
}
}
for(var ii in mode.skill){
if(ii!='versus_ladder'){
game.finishSkill(ii);
}
}
storage.versus={};
@ -111,7 +115,11 @@ game.import('play',function(lib,game,ui,get,ai,_status){
for(var i in mode.skill){
if(lib.skill[i]) console.log(i);
lib.skill[i]=mode.skill[i];
game.finishSkill(i);
}
for(var ii in mode.skill){
if(ii!='versus_ladder'){
game.finishSkill(ii);
}
}
storage.boss={};
for(var i in mode.characterPack.mode_boss){

File diff suppressed because it is too large Load Diff

View File

@ -145,6 +145,12 @@
unfrequent:true,
intro:'当候选目标只有1个时点击目标后无需再点击确认',
},
skip_shan:{
name:'无闪自动取消',
init:false,
unfrequent:true,
intro:'当自己需要使用或打出闪时,若自己没有闪,则跳过该步骤',
},
wuxie_self:{
name:'不无懈自己',
init:true,
@ -8934,6 +8940,7 @@
// game.saveConfig('characters',lib.config.all.characters);
// game.saveConfig('cards',lib.config.all.cards);
game.saveConfig('plays',['cardpile']);
game.saveConfig('skip_shan',false);
game.saveConfig('tao_enemy',true);
game.saveConfig('layout','long2');
game.saveConfig('hp_style','ol');
@ -11293,7 +11300,7 @@
delete event.dialog;
return;
}
if(!_status.connectMode&&event.autochoose&&event.autochoose()){
if(!_status.connectMode&&lib.config.skip_shan&&event.autochoose&&event.autochoose()){
event.result={bool:false};
}
else{
@ -17734,6 +17741,35 @@
next.setContent('useSkill');
return next;
},
drawTo:function(num,args){
var num2=num-this.countCards('h');
if(!num2) return;
var next=this.draw(num2);
if(Array.isArray(args)){
for(var i=0;i<args.length;i++){
if(get.itemtype(args[i])=='player'){
next.source=args[i];
}
else if(typeof args[i]=='boolean'){
next.animate=args[i];
}
else if(args[i]=='nodelay'){
next.animate=false;
next.$draw=true;
}
else if(args[i]=='visible'){
next.visible=true;
}
else if(args[i]=='bottom'){
next.bottom=true;
}
else if(typeof args[i]=='object'&&args[i]&&args[i].drawDeck!=undefined){
next.drawDeck=args[i].drawDeck;
}
}
}
return next;
},
draw:function(){
var next=game.createEvent('draw');
next.player=this;

View File

@ -1,43 +1,45 @@
window.noname_update={
version:'1.9.95.9.2',
update:'1.9.95.9.1',
version:'1.9.96',
update:'1.9.95.9.2',
changeLog:[
'修复有关闪的各种BUG',
'界张角,李肃',
'修复BUG',
],
files:[
//'card/extra.js',
//'card/huanlekapai.js',
'card/sp.js',
//'card/sp.js',
'card/standard.js',
//'card/swd.js',
//'card/guozhan.js',
//'card/gwent.js',
//'character/diy.js',
//'character/extra.js',
'character/hearth.js',
//'character/hearth.js',
//'character/gujian.js',
//'character/gwent.js',
//'character/mobile.js',
//'character/mtg.js',
'character/old.js',
//'character/refresh.js',
//'character/old.js',
'character/refresh.js',
'character/shenhua.js',
'character/sp.js',
//'character/tw.js',
'character/standard.js',
'character/swd.js',
'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
//'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
'character/xinghuoliaoyuan.js',
'character/yijiang.js',
//'character/yxs.js',
//'mode/identity.js',
'extension/boss/extension.js',
'mode/identity.js',
//'mode/doudizhu.js',
//'mode/guozhan.js',
//'mode/single.js',
'mode/stone.js',
//'mode/stone.js',
//'mode/versus.js',
//'mode/boss.js',
//'game/game.js',
'game/game.js',
//'game/config.js',
//'game/package.js',
//'game/asset.js',

BIN
image/character/lisu.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -260,6 +260,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(enhance_zhu){
var skill;
switch(game.zhu.name){
case 'key_yuri':skill='buqu';break;
case 'liubei':skill='jizhen';break;
case 'dongzhuo':skill='hengzheng';break;
case 'sunquan':skill='batu';break;
@ -622,7 +623,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
list.remove('shen');
if(list.length) player.group=function(){
if(_status.mode!='zhong'&&game.zhu&&game.zhu.group){
if(['liubei','re_liubei','caocao','re_caocao','sunquan','re_sunquan','zhangjiao','sp_zhangjiao','caopi','re_caopi','liuchen','caorui','sunliang','sunxiu'].contains(game.zhu.name)) return game.zhu.group;
if(['re_zhangjiao','liubei','re_liubei','caocao','re_caocao','sunquan','re_sunquan','zhangjiao','sp_zhangjiao','caopi','re_caopi','liuchen','caorui','sunliang','sunxiu'].contains(game.zhu.name)) return game.zhu.group;
if(game.zhu.name=='sunhao'&&player.identity=='zhong') return 'wu';
if(game.zhu.name=='yl_yuanshu'){
if(player.identity=='zhong') list.remove('qun');