Add files via upload

This commit is contained in:
Spmario233 2020-03-19 21:24:54 +08:00 committed by GitHub
parent a0a7560cbc
commit af2b79673b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
23 changed files with 3935 additions and 3286 deletions

View File

@ -609,7 +609,7 @@ game.import('card',function(lib,game,ui,get,ai,_status){
}
var capt=get.translation(target)+'选择了'+get.translation(button.link);
if(card){
target.gain(card);
target.gain(card,'visible');
target.$gain2(card);
game.broadcast(function(card,id,name,capt){
var dialog=get.idDialog(id);
@ -701,7 +701,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
},
ai:{
basic:{
order:1,
order:function(){
return get.order({name:'tao'})+0.1;
},
useful:[3,1],
value:0
},

View File

@ -17,6 +17,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_rei:['male','key',4,['xiandeng','shulv','xisheng']],
key_komari:['female','key',3,['komari_tiankou','komari_xueshang']],
key_yukine:['female','key',3,['yukine_wenzhou']],
key_yusa:['female','key',3,['yusa_yanyi','yusa_misa','dualside'],['dualside:key_misa']],
key_misa:['female','key',3,['misa_yehuo','misa_yusa','dualside'],['unseen']],
// diy_caocao:['male','wei',4,['xicai','diyjianxiong','hujia']],
// diy_hanlong:['male','wei',4,['siji','ciqiu']],
diy_feishi:['male','shu',3,['shuaiyan','moshou']],
@ -93,7 +95,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy:{
diy_tieba:["diy_wenyang","ns_zuoci","ns_lvzhi","ns_wangyun","ns_nanhua","ns_nanhua_left","ns_nanhua_right","ns_huamulan","ns_huangzu","ns_jinke","ns_yanliang","ns_wenchou","ns_caocao","ns_caocaosp","ns_zhugeliang","ns_wangyue","ns_yuji","ns_xinxianying","ns_guanlu","ns_simazhao","ns_sunjian","ns_duangui","ns_zhangbao","ns_masu","ns_zhangxiu","ns_lvmeng","ns_shenpei","ns_yujisp","ns_yangyi","ns_liuzhang","ns_xinnanhua","ns_zhangwei"],
diy_default:["diy_feishi","diy_liuyan","diy_yuji","diy_caiwenji","diy_lukang","diy_zhenji","diy_liufu","diy_xizhenxihong","diy_liuzan","diy_zaozhirenjun","diy_yangyi","diy_tianyu"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","key_umi","key_rei","key_komari","key_yukine"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_kagari","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa"],
},
},
characterIntro:{
@ -108,6 +110,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
key_yusa:'#bCharlotte',
key_misa:'#rCharlotte',
key_yukine:'#gClannad',
key_komari:'#bLittle Busters!',
key_umi:'#bSummer Pockets',
@ -152,6 +156,119 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yuji:['zuoci']
},
skill:{
yusa_yanyi:{
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return get.distance(player,target)<=player.hp;
},
selectTarget:function(){
return [1,Math.max(_status.event.player.getAttackRange())];
},
line:'thunder',
content:function(){
'step 0'
if(target.isHealthy()){
player.draw();
event.finish();
}
else{
var name=get.translation(player);
target.chooseControl().set('choiceList',[
'令'+name+'摸一张牌',
'回复1点体力然后交给'+name+'一张牌',
]).set('ai',function(){
return 1;
});
}
'step 1'
if(result.index==0){
player.draw();
event.finish();
}
else{
target.recover();
}
'step 2'
if(target!=player&&target.countCards('he')>0){
target.chooseCard('交给'+get.translation(player)+'一张牌','he',true);
}
else event.finish();
'step 3'
target.give(result.cards,player,'giveAuto');
},
ai:{
result:{
player:function(player,target){
return target.isHealthy()?1:0;
},
target:function(player,target){
if(target.isHealthy()) return 0;
return get.recoverEffect(target,player,target);
},
},
},
},
yusa_misa:{
charlotte:true,
trigger:{player:'useSkillAfter'},
filter:function(event,player){
return event.skill=='yusa_yanyi'&&!player.storage.dualside_over&&Array.isArray(player.storage.dualside);
},
content:function(){
player.turnOver();
},
},
misa_yusa:{
charlotte:true,
trigger:{player:'misa_yehuoAfter'},
filter:function(event,player){
return event.bool===true&&!player.storage.dualside_over&&Array.isArray(player.storage.dualside);
},
content:function(){
player.turnOver();
},
},
misa_yehuo:{
charlotte:true,
trigger:{global:'phaseDrawBegin1'},
direct:true,
locked:true,
line:{color:[236,137,52]},
filter:function(event,player){
var target=event.player;
return player.inRange(target)&&player.countCards('he')>=get.distance(player,target);
},
content:function(){
'step 0'
var next=player.chooseToDiscard('he',get.distance(player,trigger.player)||1,get.prompt2('misa_yehuo',trigger.player));
next.set('logSkill',['misa_yehuo',trigger.player,'fire']);
next.set('ai',function(card){
var val=_status.event.val;
for(var i=0;i<ui.selected.cards.length;i++){
val-=get.value(ui.selected.cards[i]);
}
return val-get.value(card);
});
next.set('val',-2*get.attitude(player,trigger.player))
'step 1'
if(result.bool){
event.bool=true;
if(trigger.numFixed) event._result={index:0};
else{
var name=get.translation(trigger.player);
player.chooseControl().set('choiceList',[
'对'+name+'造成一点火属性伤害',
'令'+name+'此出牌阶段的额定摸牌数改为0'
]);
}
}
else event.finish();
'step 2'
if(result.index==0) trigger.player.damage('fire');
else trigger.changeToZero();
},
},
nsqiyue:{
trigger:{global:['turnOverEnd','linkEnd','showCharacterEnd','hideCharacterEnd','removeCharacterEnd']},
forced:true,
@ -5584,6 +5701,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_rei:'零',
key_komari:'神北小毬',
key_yukine:'宫泽有纪宁',
key_yusa:'西森柚咲',
key_misa:'黑羽美砂',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -5615,6 +5734,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
komari_xueshang_info:'锁定技,蓄力技,当有角色死亡时,你对自己造成<span class=yellowtext>1</span>点伤害,然后对所有其他角色依次造成<span class=firetext>1</span>点伤害。当有角色因此法进入濒死状态时你加1点体力上限并回复1点体力然后失去此技能并终止此技能的所有后续结算。',
yukine_wenzhou:'问咒',
yukine_wenzhou_info:'一名角色的出牌阶段开始时,其可以交给你一张牌。若如此做,你选择一项:交给其一张牌,或令其从牌堆中获得一张与此牌类型相同的牌,且其于此阶段内使用与此牌牌名相同的牌时无法被响应。',
yusa_yanyi:'演艺',
yusa_yanyi_info:'出牌阶段限一次你可以指定至多X名与你距离不大于你的体力值的角色。这些角色选择一项①令你摸一张牌。②回复1点体力然后交给你一张牌。X为你的攻击范围且至少为1',
misa_yehuo:'业火',
misa_yehuo_info:'一名角色的摸牌阶段开始时若其在你的攻击范围内你可以弃置X张牌并选择一项①对其造成1点火属性伤害。②令其于此摸牌阶段放弃摸牌。X为你与其的的距离',
yusa_misa:'通灵',
yusa_misa_info:'当你发动的〖演艺〗结算完成之后,你可以将武将牌翻面。',
misa_yusa:'归魂',
misa_yusa_info:'当你发动的〖业火〗结算完成后,你可以将武将牌翻面。',
ns_zhangwei:'张葳',
nsqiyue:'骑钺',

View File

@ -2498,7 +2498,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
forced:true,
filter:function(event,player){
return player.hasMark('drlt_jieying_mark')&&game.hasPlayer(function(current){
return !event.numFixed&&player.hasMark('drlt_jieying_mark')&&game.hasPlayer(function(current){
return current.hasSkill('drlt_jieying');
});
},

View File

@ -246,7 +246,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.draw();
}
else{
var next=player.chooseUseTarget({name:trigger.card.name,nature:trigger.card.nature},false);
var next=player.chooseUseTarget({name:trigger.card.name,nature:trigger.card.nature},false,true);
_status.event.next.remove(next);
event.evt.after.push(next);
next.logSkill='zhiyi';
@ -1455,7 +1455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
relieren:{
audio:2,
audioname:['boss_lvbu3'],
trigger:{player:'useCardToTargeted'},
trigger:{player:'useCardToPlayered'},
filter:function(event,player){
return event.card.name=='sha'&&player.canCompare(event.target);
},

View File

@ -4,13 +4,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
name:'refresh',
characterSort:{
refresh:{
refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_gongsunzan","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"],
refresh_feng:['caoren','re_xiahouyuan','re_huangzhong','re_weiyan','re_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'],
refresh_standard:["re_caocao","re_simayi","re_guojia","re_lidian","re_zhangliao","re_xuzhu","re_xiahoudun","re_zhangfei","re_zhaoyun","re_guanyu","re_machao","re_xushu","re_zhouyu","re_lvmeng","re_ganning","re_luxun","re_daqiao","re_huanggai","re_lvbu","re_gongsunzan","re_huatuo","re_liubei","re_diaochan","re_huangyueying","re_sunquan","re_sunshangxiang","re_zhenji","re_zhugeliang","re_huaxiong"],
refresh_feng:['caoren','re_xiahouyuan','re_huangzhong','re_weiyan','re_xiaoqiao','zhoutai','re_zhangjiao','xin_yuji'],
refresh_huo:["re_sp_zhugeliang","re_xunyu","re_dianwei","re_yanwen","re_pangtong","ol_yuanshao","re_pangde"],
refresh_lin:['re_zhurong','re_menghuo','re_dongzhuo','re_sunjian','re_caopi','re_xuhuang'],
refresh_shan:['re_dengai','re_jiangwei','re_caiwenji','ol_liushan','re_zhangzhang','re_zuoci','re_sunce'],
refresh_yijiang:['re_xusheng','re_wuguotai','re_gaoshun'],
},
},
},
connect:true,
character:{
@ -1447,13 +1447,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('xinguidao'),'he',function(card){
if(get.color(card)!='black') return false;
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
if(get.color(card)!='black') return false;
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
}).set('ai',function(card){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
@ -1836,18 +1836,18 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"new_yajiao":{
audio:"reyajiao",
trigger:{
player:["respond","useCard"],
player:"loseEnd",
},
frequent:true,
filter:function (event,player){
return player!=_status.currentPhase&&get.itemtype(event.cards)=='cards';
return player!=_status.currentPhase&&event.hs&&event.hs.length>0&&['useCard','respond'].contains(event.getParent().name);
},
content:function (){
"step 0"
event.card=get.cards();
player.showCards(event.card);
event.same=false;
if(get.type(event.card[0],'trick')==get.type(trigger.card,'trick')) event.same=true;
if(get.type(event.card[0],'trick')==get.type(trigger.getParent().card,'trick')) event.same=true;
player.chooseTarget('选择获得此牌的角色',true).set('ai',function(target){
var att=get.attitude(_status.event.player,target);
if(_status.event.du){
@ -2238,7 +2238,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
event.finish();
}
else{
player.gain(event.card2,target,'give');
player.gain(event.card2,target,'give','bySelf');
if(target.hp<target.maxHp){
player.chooseBool('是否让目标回复一点体力?').ai=function(event,player){
return get.recoverEffect(target,player,player)>0;
@ -3032,7 +3032,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'useCard'},
frequent:true,
filter:function(event){
return (get.type(event.card,'trick')=='trick'&&event.card.isCard);
return (get.type(event.card)=='trick'&&event.card.isCard);
},
init:function(player){
player.storage.rejizhi=0;
@ -3354,12 +3354,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('reguicai'),'he',function(card){
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
}).set('ai',function(card){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
@ -4487,15 +4487,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
player.chooseTarget(get.prompt('fenwei'),
[1,trigger.targets.length],function(card,player,target){
var evt=_status.event.getTrigger().getParent();
return evt.targets.contains(target)&&!evt.excluded.contains(target);
return _status.event.contains(target);
}).set('ai',function(target){
var trigger=_status.event.getTrigger();
if(game.phaseNumber>game.players.length*2&&trigger.targets.length>=game.players.length-1){
if(game.phaseNumber>game.players.length*2&&trigger.targets.length>=game.players.length-1&&!trigger.excluded.contains(target)){
return -get.effect(target,trigger.card,trigger.player,_status.event.player);
}
return -1;
});
}).set('targets',trigger.targets);
"step 1"
if(result.bool){
player.awakenSkill('fenwei');

View File

@ -5120,7 +5120,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 1"
if(result.bool){
if(game.hasPlayer(function(player){
return player!=target&&target.inRange(player)<=1;
return player!=target&&target.inRange(player);
})){
player.chooseTarget(function(card,player,target){
var source=_status.event.source;
@ -6500,13 +6500,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('guidao'),'he',function(card){
if(get.color(card)!='black') return false;
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
if(get.color(card)!='black') return false;
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
}).set('ai',function(card){
var trigger=_status.event.getTrigger();
var player=_status.event.player;

View File

@ -15,6 +15,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_shengun:["puyuan","guanlu","gexuan","xushao"],
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'],
sp_guozhan:["shamoke","ganfuren","yuejin","hetaihou","dingfeng","panfeng","jianggan"],
sp_guozhan2:["mifuren","mateng","tianfeng","chendong","sp_dongzhuo","jiangfei","jiangqing","kongrong","bianfuren","liqueguosi","lvfan","cuimao","jiling","zangba","zhangren","zoushi"],
sp_single:["hejin","hansui","niujin"],
@ -22,6 +23,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
sp_gongsunzan:['male','qun',4,['spyicong','sptuji']],
sp_simazhao:['male','wei',3,['spzhaoxin','splanggu']],
sp_wangyuanji:['male','wei',3,['spfuluan','spshude']],
sp_xinxianying:['male','wei',3,['spmingjian','spyinzhi']],
sp_liuxie:['male','qun',3,['sphuangen','sphantong']],
huangfusong:['male','qun',4,['xinfenyue']],
yuantanyuanshang:['male','qun',4,['neifa']],
huaman:['female','shu',3,['hmmanyi','mansi','souying','zhanyuan']],
@ -654,6 +661,406 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
skill:{
//桌游志贴纸
spyinzhi:{
trigger:{player:'damageEnd'},
frequent:true,
content:function(){
'step 0'
event.count=trigger.num;
'step 1'
event.count--;
var cards=game.cardsGotoOrdering(get.cards(2)).cards;
player.showCards(cards);
event.count2=0;
for(var i=0;i<cards.length;i++){
if(get.suit(cards[i])=='spade'){
event.count2++;
cards.splice(i--,1);
}
}
event.cards=cards;
if(!event.count2||!trigger.source) event.goto(4);
'step 2'
event.count2--;
if(trigger.source.countCards('h')>0){
player.chooseTarget('令一名角色获得'+get.translation(trigger.source)+'的一张手牌',function(card,player,target){
var source=_status.event.source;
return target!=source&&source.countGainableCards(target,'h')>0;
}).set('source',trigger.source);
}
else event.goto(4);
'step 3'
if(result.bool){
var target=result.targets[0];
player.line([trigger.source,target],'green');
target.gainPlayerCard(trigger.source,'h',true);
if(event.count2) event.goto(2)
}
'step 4'
if(cards.length) player.gain(cards,'gain2','log');
'step 5'
if(event.count>0){
player.chooseBool(get.prompt2('spyinzhi')).set('frequentSkill','spyinzhi');
}
else event.finish();
'step 6'
if(result.bool){
player.logSkill('spyinzhi');
event.goto(1);
};
},
},
spmingjian:{
trigger:{global:'phaseBegin'},
direct:true,
filter:function(event,player){
return player.countCards('he')>0;
},
content:function(){
'step 0'
var next=player.chooseCard(get.prompt2('spmingjian',trigger.player),'he');
next.set('ai',function(card){
var target=_status.event.getTrigger().player;
var player=_status.event.player;
if(get.attitude(player,target)>0&&target.countCards('j')>0) return 5-get.value(card);
return -1;
});
next.set('filterCard',function(card,player){
if(get.position(card)=='e') return lib.filter.cardDiscardable.apply(this,arguments);
return true;
});
next.set('logSkill',['spmingjian',trigger.player]);
'step 1'
if(result.bool){
var card=result.cards[0];
event.card=card;
if(get.position(card)=='e') event._result={index:0};
else if(!lib.filter.cardDiscardable(card,player,event)) event._result={index:1};
else{
var name=get.translation(trigger.player);
player.chooseControl().set('choiceList',[
'令'+name+'跳过本回合的判定阶段',
'令'+name+'于本回合的判定中不触发「判定结果生效前」的时机',
]).set('ai',function(){return 0});
}
}
else event.finish();
'step 2'
if(result.index==0){
player.discard(card);
trigger.player.skip('phaseJudge');
}
else{
player.lose(card,ui.special,'toStorage');
trigger.player.addSkill('spmingjian_charlotte');
trigger.player.storage.spmingjian_charlotte.add(card);
trigger.player.markSkill('spmingjian_charlotte');
}
},
},
spmingjian_charlotte:{
trigger:{player:['judgeBefore','phaseAfter']},
forced:true,
firstDo:true,
silent:true,
popup:false,
charlotte:true,
content:function(){
if(trigger.name=='phase') player.removeSkill(event.name);
else trigger.noJudgeTrigger=true;
},
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]=[];
},
marktext:'鉴',
intro:{
name:'明鉴',
content:'cards',
onunmark:'throw',
},
},
spshude:{
trigger:{player:'phaseJieshuBegin'},
frequent:true,
filter:function(event,player){
return player.countCards('h')<player.maxHp;
},
content:function(){
player.drawTo(player.maxHp);
},
},
spfuluan:{
enable:'phaseUse',
usable:1,
filterTarget:function(card,player,target){
return player.inRange(target);
},
selectCard:3,
position:'he',
check:function(card){
return 5-get.value(card);
},
complexCard:true,
filterCard:function(card,player){
if(!ui.selected.cards.length) return player.countCards('he',{suit:get.suit(card)})>2;
return get.suit(card)==get.suit(ui.selected.cards[0]);
},
content:function(){
target.turnOver();
},
ai:{
order:1,
result:{
target:function(player,target){
if(target.isTurnedOver()) return 2;
return -1;
},
},
},
},
spfuluan2:{
mod:{
cardEnabled:function(card){
if(card.name=='sha') return false;
},
},
},
spzhaoxin:{
trigger:{player:'phaseDrawEnd'},
check:function(event,player){
return player.getUseValue({name:'sha',isCard:true})>0;
},
filter:function(event,player){
return player.countCards('h')>0;
},
content:function(){
'step 0'
player.showHandcards();
'step 1'
player.chooseUseTarget('sha',false);
},
},
splanggu:{
trigger:{player:'damageEnd'},
filter:function(event,player){
return get.itemtype(event.source)=='player';
},
logTarget:'source',
content:function(){
'step 0'
player.judge();
'step 1'
if(trigger.source.countCards('h')>0){
var next=player.discardPlayerCard(trigger.source,'h',[1,Infinity]);
next.set('suit',result.suit);
next.set('filterButton',function(button){
return get.suit(button.link)==_status.event.suit;
});
next.set('visible',true);
}
},
group:'splanggu_rewrite',
},
splanggu_rewrite:{
trigger:{player:'judge'},
filter:function (event,player){
return player.countCards('h')>0&&event.getParent().name=='splanggu';
},
direct:true,
content:function (){
"step 0"
player.chooseCard('狼顾的判定结果为'+
get.translation(trigger.player.judging[0])+',是否打出一张手牌进行代替?','h',function(card){
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
}).set('ai',function(card){
return -1;
});
"step 1"
if(result.bool){
player.respond(result.cards,'highlight','splanggu','noOrdering');
}
else{
event.finish();
}
"step 2"
if(result.bool){
if(trigger.player.judging[0].clone){
trigger.player.judging[0].clone.classList.remove('thrownhighlight');
game.broadcast(function(card){
if(card.clone){
card.clone.classList.remove('thrownhighlight');
}
},trigger.player.judging[0]);
game.addVideo('deletenode',player,get.cardsInfo([trigger.player.judging[0].clone]));
}
game.cardsDiscard(trigger.player.judging[0]);
trigger.player.judging[0]=result.cards[0];
trigger.orderingCards.addArray(result.cards);
game.log(trigger.player,'的判定牌改为',result.cards[0]);
game.delay(2);
}
},
},
sphantong:{
trigger:{player:'loseEnd'},
frequent:true,
filter:function(event,player){
return event.type=='discard'&&event.getParent(3).name=='phaseDiscard'&&event.cards.filterInD('d').length>0;
},
content:function(){
if(!player.storage.hantong) player.storage.sphantong=[];
var cards=trigger.cards.filterInD('d');
player.storage.sphantong.addArray(cards);
player.$gain2(cards);
game.log(player,'将',cards,'置于武将牌上');
player.markSkill('sphantong');
},
group:['sphantong_gain'],
derivation:['hujia','jijiang','jiuyuan','xueyi'],
marktext:'诏',
intro:{
content:'cards',
onunmark:'throw',
},
},
sphantong_gain:{
trigger:{global:'phaseBegin'},
direct:true,
filter:function(event,player){
return player.storage.sphantong&&player.storage.sphantong.length>0;
},
content:function(){
'step 0'
player.chooseButton([get.prompt('sphantong'),player.storage.sphantong],function(button){return -1});
'step 1'
if(result.bool){
player.logSkill('sphantong');
var card=result.links[0];
player.$throw(card);
game.log(player,'将',card,'置入了弃牌堆');
player.storage.sphantong.remove(card);
player[player.storage.sphantong.length>0?'markSkill':'unmarkSkill']('sphantong');
game.cardsDiscard(card);
var list=['hujia','jijiang','jiuyuan','xueyi'];
for(var i=0;i<list.length;i++){
if(player.hasZhuSkill(list[i])) list.splice(i--,1);
}
if(list.length>0) player.chooseControl(list).set('prompt','选择获得以下技能中的一个');
else event.finish();
}
else event.finish();
'step 2'
var skill=result.control;
player.addTempSkill(skill);
if(!player.storage.zhuSkill_sphantong) player.storage.zhuSkill_sphantong=[];
player.storage.zhuSkill_sphantong.add(skill);
player.popup(skill,'wood');
game.log(player,'获得了技能','#g【'+get.translation(skill)+'】');
var next=game.createEvent('sphantong_clear',false);
event.next.remove(next);
trigger.after.push(next);
next.player=player;
next.skill=skill;
next.setContent(function(){
if(player.storage.zhuSkill_sphantong) player.storage.zhuSkill_sphantong.remove(event.skill);
})
},
},
sphuangen:{
trigger:{global:'useCardToPlayered'},
filter:function(event,player){
if(!event.isFirstTarget) return false;
if(get.type(event.card)!='trick') return false;
if(get.info(event.card).multitarget) return false;
if(event.targets.length<2) return false;
return player.hp>0;
},
direct:true,
content:function(){
"step 0"
player.chooseTarget(get.prompt('sphuangen'),
[1,Math.min(player.hp,trigger.targets.length)],function(card,player,target){
return _status.event.targets.contains(target);
}).set('ai',function(target){
return -get.effect(target,trigger.card,trigger.player,_status.event.player);
}).set('targets',trigger.targets);
"step 1"
if(result.bool){
player.logSkill('sphuangen',result.targets);
trigger.excluded.addArray(result.targets);
player.draw();
}
},
},
spyicong:{
trigger:{player:'phaseDiscardEnd'},
direct:true,
filter:function(event,player){
return player.countCards('he')>0;
},
content:function(){
'step 0'
player.chooseCard('he',[1,player.countCards('he')],get.prompt2('spyicong')).set('ai',function(card){
if(card.name=='du') return 10;
if(ui.selected.cards.length) return -1;
return 4-get.value(card);
});
'step 1'
if(result.bool){
player.logSkill('spyicong');
if(!player.storage.spyicong) player.storage.spyicong=[];
player.storage.spyicong.addArray(result.cards);
player.$giveAuto(result.cards.length,player,false);
game.log(player,'扣置了'+get.cnNumber(player.lose(result.cards,'toStorage',ui.special).cards.length)+'张【扈】');
player.markSkill('spyicong');
}
},
mod:{
globalTo:function(from,to,num){
if(to.storage.spyicong&&to.storage.spyicong.length) return num+to.storage.spyicong.length;
},
},
marktext:'扈',
intro:{
name:'义从',
content:'cardCount',
onunmark:'throw',
},
},
sptuji:{
trigger:{player:'phaseZhunbeiBegin'},
forced:true,
filter:function(event,player){
return player.storage.spyicong&&player.storage.spyicong.length>0;
},
content:function(){
var num=player.storage.spyicong.length;
player.addMark('sptuji2',num,false);
player.addTempSkill('sptuji2');
player.unmarkSkill('spyicong');
if(num<=1) player.draw();
},
},
sptuji2:{
onremove:true,
charlotte:true,
mod:{
globalFrom:function(from,to,num){
return num-from.countMark('sptuji2');
},
},
marktext:'突',
intro:{
name:'突骑',
content:'至其他角色的距离-#',
},
},
//二袁
neifa:{
audio:2,
@ -2905,12 +3312,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('huanshi_three'),'he',function(card){
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
}).set('ai',function(card){
var trigger=_status.event.getTrigger();
var player=_status.event.player;
@ -3377,7 +3784,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
locked:false,
mod:{
aiValue:function(player,card,num){
if((player.storage.xinshanjia||0)<3&&get.position(card)=='e') return num/1.5;
if((player.storage.xinshanjia||0)<3&&get.type(card)=='equip'&&!get.cardtag(card,'gifts')){
if(get.position(card)=='e') return num/player.hp;
return num*player.hp;
}
},
},
subSkill:{
@ -3422,7 +3832,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
lib.skill.xinshanjia.sync(player);
var num=3-player.storage.xinshanjia;
if(num>0){
player.chooseToDiscard('he',true,num);
player.chooseToDiscard('he',true,num).ai=get.disvalue;
}
'step 2'
var bool=true;
@ -4215,14 +4625,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(_status.currentPhase!=player){
var he=player.getCards('he');
var bool=false;
player.getHistory('gain',function(evt){
if(!bool&&evt&&evt.cards){
for(var i=0;i<evt.cards.length;i++){
if(he.contains(evt.cards[i])) bool=true;break;
}
}
});
return bool;
player.getHistory('gain',function(evt){
if(!bool&&evt&&evt.cards){
for(var i=0;i<evt.cards.length;i++){
if(he.contains(evt.cards[i])) bool=true;break;
}
}
});
return bool;
}
return false;
},
@ -6233,9 +6643,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
},
fuman2:{
mod:{
aiOrder:function(player,card,num){
if(card==player.storage.fuman3&&player.storage.fuman2.isIn()) return num+get.sgn(get.attitude(player,player.storage.fuman2));
},
},
trigger:{player:'useCard'},
forced:true,
popup:false,
filter:function(event,player){
return event.cards.contains(player.storage.fuman3)&&player.storage.fuman2.isIn();
},
@ -6249,22 +6663,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
'step 1'
player.line(player.storage.fuman2,'green');
player.storage.fuman2.draw();
player.storage.fuman2.logSkill('fuman');
},
onremove:function(player){
delete player.storage.fuman2;
delete player.storage.fuman3;
},
ai:{
effect:{
player:function(card,player,target,current){
if(card.name=='sha'&&card!=player.storage.fuman3&&
player.storage.fuman2.isIn()&&get.attitude(player,player.storage.fuman2)>0){
return 'zeroplayertarget';
}
}
}
}
},
qizhou:{
trigger:{player:['phaseBefore','equipEnd','loseEnd']},
@ -6521,6 +6924,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
_status.characterlist.add('zhaoxiang');
_status.characterlist.remove(result.links[0]);
}
'step 2'
if(player.isMinHp()) player.recover();
}
},
fanghun:{
@ -8581,7 +8986,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var type=get.type(card);
if(type=='trick'||type=='delay') return true;
},
canBeDiscarded:function (card,player){
canBeDiscarded:function (card,source,player){
if(player.getEquip(5)) return;
if(get.position(card)=='e'&&['equip2','equip5'].contains(get.subtype(card))) return false;
},
@ -10640,13 +11045,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var attitude=get.attitude(player,trigger.player);
return result*attitude;
}).set('judging',trigger.player.judging[0]).set('filterButton',function(button){
var player=_status.event.player;
var card=button.link;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
var player=_status.event.player;
var card=button.link;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
});
"step 1"
if(result.bool){
@ -12196,6 +12601,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
qiangwu3:{
mod:{
aiOrder:function(player,card,num){
if(card.name=='sha'&&card.number>player.storage.qiangwu) return num+2;
},
targetInRange:function(card,player){
if(_status.currentPhase==player&&card.name=='sha'&&card.number<player.storage.qiangwu) return true;
},
@ -13135,7 +13543,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.cardsDiscard(discardcards);
}
for(var i=0;i<2;i++){
cards.push(ui.cardPile.childNodes[i]);
if(ui.cardPile.childNodes.length>i) cards.push(ui.cardPile.childNodes[i]);
}
player.chooseCardButton('傲才:选择一张卡牌打出',cards).set('filterButton',function(button){
return get.type(button.link)=='basic'&&_status.event.getTrigger().filterCard(button.link);
@ -13172,7 +13580,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
game.cardsDiscard(discardcards);
}
for(var i=0;i<2;i++){
cards.push(ui.cardPile.childNodes[i]);
if(ui.cardPile.childNodes.length>i) cards.push(ui.cardPile.childNodes[i]);
}
event.set('aocaicards',cards);
}
@ -13315,13 +13723,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return get.color(card)=='black'?0:-10+result;
}
}).set('filterButton',function(button){
var player=_status.event.target;
var card=button.link;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
var player=_status.event.target;
var card=button.link;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
}).set('judge',judge).set('attitude',attitude);
"step 1"
if(result.bool){
@ -15032,9 +15440,35 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yongsi_info:'锁定技摸牌阶段你多摸X张牌。弃牌阶段开始时你弃置X张牌。X为场上势力数',
yicong_info:'锁定技当你的体力值大于2时你计算与其他角色的距离时-1当你的体力值不大于2时其他角色计算与你的距离时+1。',
baobian_info:'锁定技若你的体力值为3或更少你视为拥有技能〖挑衅〗若你的体力值为2或更少你视为拥有技能〖咆哮〗若你的体力值为1你视为拥有技能〖神速〗。',
bingzhao:'秉诏',
bingzhao_info:'主公技,游戏开始时,你选择一个其他势力。当你对该势力的角色发动〖骨疽〗时,其可令你额外摸一张牌。',
sp_gongsunzan:'SP公孙瓒',
sp_simazhao:'SP司马昭',
sp_wangyuanji:'SP王元姬',
sp_xinxianying:'SP辛宪英',
sp_liuxie:'SP刘协',
spyicong_info:'弃牌阶段结束时,你可以将任意张牌置于你的武将牌上,称为「扈」。每有一张「扈」,其他角色与你计算距离时便+1。',
spyicong:'义从',
sptuji:'突骑',
sptuji_info:'准备开始时,你将所有「扈」置于弃牌堆,然后你本回合内计算与其他角色的距离时-X。若X不大于1你摸一张牌。X为以此法进入弃牌堆的「扈」的数量',
sphuangen:'皇恩',
sphuangen_info:'一名角色使用锦囊牌指定目标时若此牌的目标数大于1则你可以令此牌对其中的至多X个目标无效然后摸一张牌。X为你的体力值',
sphantong:'汉统',
sphantong_gain:'汉统',
sphantong_info:'当你的牌因弃牌阶段的游戏规则要求而进入弃牌堆后,你可以将这些牌置于你的武将牌上,称为「诏」。一名角色的回合开始时,你可以弃置一张「诏」并获得〖护驾〗/〖激将〗/〖救援〗/〖血裔〗中的一个技能直至当前回合结束。',
spzhaoxin:'昭心',
spzhaoxin_info:'摸牌阶段结束时,你可以展示所有手牌,然后视为使用一张【杀】。',
splanggu:'狼顾',
splanggu_rewrite:'狼顾',
splanggu_info:'当你受到有来源的伤害后,你可以进行判定(此判定结果生效前,你可以打出一张手牌替换判定牌)。然后你可以观看伤害来源的手牌并弃置其中的任意张与判定结果花色相同的牌。',
spfuluan:'扶乱',
spfuluan_info:'出牌阶段限一次,你可以弃置三张花色相同的牌并选择攻击范围内的一名角色。若如此做,该角色翻面且你不能使用【杀】直到回合结束',
spshude:'淑德',
spshude_info:'结束阶段开始时,你可以将手牌补至体力上限。',
spmingjian:'明鉴',
spmingjian_info:'一名角色的回合开始时,你可以选择一项:①弃置一张牌,然后其跳过本回合的判定阶段。②将一张手牌置于其武将牌上,然后其本回合内进行判定时不触发「判定结果生效前」的时机,且其回合结束时将此牌置入弃牌堆。',
spyinzhi:'隐智',
spyinzhi_info:'当你受到1点伤害后你可以展示牌堆顶的两张牌。若其中有黑桃牌则你可以进行至多X次「令一名角色获得伤害来源的一张手牌」的步骤然后获得其余的牌。X为其中黑桃牌的数量',
sp_default:"常规",
sp_whlw:"文和乱武",
@ -15044,12 +15478,13 @@ game.import('character',function(lib,game,ui,get,ai,_status){
sp_sbfm:'上兵伐谋',
sp_shengun:'三国奇人传',
sp_zhongdan:"忠胆英杰",
sp_star:"☆SP系列",
sp_star:"桌游志·SP",
sp_guozhan:"国战",
sp_guozhan2:"国战移植",
sp_others:"其他",
sp_single:'新1v1',
sp_guansuo:'花关索传',
sp_sticker:'桌游志·贴纸',
},
};
});

View File

@ -211,12 +211,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"step 0"
player.chooseCard(get.translation(trigger.player)+'的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+''+get.prompt('guicai'),get.mode()=='guozhan'?'he':'h',function(card){
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
var player=_status.event.player;
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,'unchanged','cardRespondable',player);
if(mod!='unchanged') return mod;
return true;
}).set('ai',function(card){
var trigger=_status.event.getTrigger();
var player=_status.event.player;

View File

@ -4580,7 +4580,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
usable:1,
filterTarget:function(card,player,target){
if(player==target) return false;
return target.countCards('h')>0;
if(!ui.selected.targets.length) return target.countCards('h')>0;
return ui.selected.targets[0].canCompare(target);
},
selectTarget:2,
multitarget:true,
@ -4596,7 +4597,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
"step 0"
if(targets[0].countCards('h')&&targets[1].countCards('h')){
if(targets[0].canCompare(targets[1])){
targets[0].chooseToCompare(targets[1]);
}
else{
@ -4608,7 +4609,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
targets[0].$gain2(cards);
targets[1].damage(targets[0]);
}
else{
else if(!result.tie){
targets[1].gain(cards,'log');
targets[1].$gain2(cards);
targets[0].damage(targets[1]);
@ -8750,6 +8751,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
backup:[],
source:player,
});
next.forceDie=true;
for(var i=0;i<game.players.length;i++){
if(game.players[i]!=player&&game.players[i]!=target){
game.players[i].out('duijue');
@ -9840,7 +9842,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
gtiandao:'天道',
gtiandao_info:'任意一名角色的判定生效前,你可以打出一张牌替换之',
nlianji:'连计',
nlianji_info:'出牌阶段限一次,你可以选择一张手牌并指定两名角色进行拼点,拼点赢的角色获得此牌,并对没赢的角色造成一点伤害',
nlianji_info:'出牌阶段限一次,你可以选择一张手牌并指定两名角色进行拼点。若拼点结果不为平局,拼点赢的角色获得此牌,并对没赢的角色造成一点伤害',
fengze:'风泽',
fengze_info:'出牌阶段限一次,你可以将一张黑色牌当作桃园结义使用',
lingyue:'凌月',
@ -10006,7 +10008,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shejie_info:'每当你受到一次伤害,可以令伤害来源不能使用或打出其手牌,直到其下一回合开始',
shejie2_info:'不能使用或打出手牌,直到下一回合开始',
yinyue:'引月',
yinyue_info:'每当有一名角色回复一次体力,你可以令其摸一张牌,若你的手牌数不大于该角色,你也摸一张牌',
yinyue_info:'每当有一名角色回复一次体力,你可以令其摸一张牌,若该角色不是你且你的手牌数不大于该角色,你也摸一张牌',
yinyue_info_alter:'每当有一名角色回复一次体力,你可以令其摸一张牌',
mohua2:'魔化',
mohua2_info:'锁定技,当你进入濒死状态时,你立即变身为撒旦,将体力回复至2,然后摸两张牌',

View File

@ -2424,7 +2424,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var nofour=!player.hasFriend();
if(player.storage.bizhuan.length==4){
var suits=['club','spade','heart','diamond'];
var list=player.getCards('h').concat(player.storage.bizhuan);
var list=player.getCards('he').concat(player.storage.bizhuan);
for(var i=0;i<list.length;i++){
suits.remove(get.suit(list[i]));
if(suits.length==0){
@ -2440,7 +2440,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
suits2.remove(get.suit(player.storage.bizhuan[i]));
}
}
player.chooseCard('选择任意张牌与“书”交换',[1,Math.min(player.countCards('h'),player.storage.bizhuan.length)]).set('ai',function(card){
player.chooseCard('选择任意张牌与“书”交换',[1,Math.min(player.countCards('he'),player.storage.bizhuan.length)],'he').set('ai',function(card){
var val=get.value(card);
if(_status.event.four&&!_status.event.nofour){
var suits=_status.event.suits2.slice(0);
@ -3374,7 +3374,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
if(event.preserve) return false;
if(player==event.player){
if(event.card1.number>event.card2.number){
if(event.num1>event.num2){
return !get.owner(event.card2);
}
else{
@ -3382,7 +3382,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
else{
if(event.card1.number<event.card2.number){
if(event.num1<event.num1){
return !get.owner(event.card1);
}
else{
@ -3392,7 +3392,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
check:function(event,player){
if(player==event.player){
if(event.card1.number>event.card2.number){
if(event.num1>event.num2){
return event.card2.name!='du';
}
else{
@ -3400,7 +3400,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
}
else{
if(event.card1.number<event.card2.number){
if(event.num1<event.num2){
return event.card1.name!='du';
}
else{
@ -3410,19 +3410,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
if(player==trigger.player){
if(trigger.card1.number>trigger.card2.number){
player.gain(trigger.card2,'gain2');
if(trigger.num1>trigger.num2){
player.gain(trigger.card2,'gain2','log');
}
else{
player.gain(trigger.card1,'gain2');
player.gain(trigger.card1,'gain2','log');
}
}
else{
if(trigger.card1.number<trigger.card2.number){
player.gain(trigger.card1,'gain2');
if(trigger.num1<trigger.num2){
player.gain(trigger.card1,'gain2','log');
}
else{
player.gain(trigger.card2,'gain2');
player.gain(trigger.card2,'gain2','log');
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'1.9.98.3.2',
'1.9.98.4',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -2845,6 +2845,13 @@ window.noname_asset_list=[
'image/character/re_xusheng.jpg',
'image/character/zhangyì.jpg',
'image/character/xin_xiahoudun.jpg',
'image/character/key_yusa.jpg',
'image/character/sp_gongsunzan.jpg',
'image/character/sp_liuxie.jpg',
'image/character/sp_simazhao.jpg',
'image/character/sp_wangyuanji.jpg',
'image/character/sp_xinxianying.jpg',
'image/character/key_misa.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -9806,7 +9806,10 @@
}
}
else event.targets2=[];
if(!event.forced){
if(event.forced){
event._result={bool:true};
}
else{
var next=player.chooseBool();
next.set('prompt',event.prompt||('是否'+(event.targets2.length?'对':'')+get.translation(event.targets2)+'使用'+get.translation(card)+'?'));
if(event.prompt2) next.set('prompt2',event.prompt2);
@ -9818,7 +9821,6 @@
return eff>0;
};
}
else event._result={bool:true};
}
else{
var next=player.chooseTarget();
@ -13338,16 +13340,22 @@
next.set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target);
var sgnatt=get.sgn(att);
if(ui.selected.targets.length==0){
if(att>0){
if(!_status.event.nojudge&&target.countCards('j')) return 10;
if(target.countCards('e',function(card){
return get.value(card)<0&&game.hasPlayer(function(current){
return get.attitude(player,current)<0&&current.isEmpty(get.subtype(card))
});
})>0) return 9;
}
else if(att<0){
if(game.hasPlayer(function(current){
if(get.attitude(player,current)>0){
var es=target.getCards('e');
for(var i=0;i<es.length;i++){
if(current.isEmpty(get.subtype(es[i]))) return true;
if(get.value(es[i])>0&&current.isEmpty(get.subtype(es[i]))) return true;
}
}
})){
@ -13356,18 +13364,17 @@
}
return 0;
}
if(att>0){
var es=ui.selected.targets[0].getCards('e');
var i;
for(i=0;i<es.length;i++){
if(target.isEmpty(get.subtype(es[i]))){
break;
}
}
if(i==es.length){
return 0;
var es=ui.selected.targets[0].getCards('e');
var i;
var att2=get.attitude(player,ui.selected.targets[0]);
for(i=0;i<es.length;i++){
if(sgnatt!=0&&att2!=0&get.sgn(get.value(es[i]))==sgnatt*att&&target.isEmpty(get.subtype(es[i]))){
break;
}
}
if(i==es.length){
return 0;
}
return -att*get.attitude(player,ui.selected.targets[0]);
});
next.set('multitarget',true);
@ -13392,7 +13399,7 @@
var targets0=_status.event.targets0;
var targets1=_status.event.targets1;
if(get.attitude(player,targets0)>get.attitude(player,targets1)){
return get.position(button.link)=='j'?10:0;
return (get.position(button.link)=='j'||get.value(button.link)<0)?10:0;
}
else{
if(get.position(button.link)=='j') return -10;
@ -15230,7 +15237,7 @@
game.log(player,'进行'+event.judgestr+'判定,亮出的判定牌为',player.judging[0]);
game.delay(2);
event.trigger('judge');
if(!event.noJudgeTrigger) event.trigger('judge');
"step 1"
event.result={
card:player.judging[0],
@ -17916,14 +17923,15 @@
canMoveCard:function(withatt){
var player=this;
return game.hasPlayer(function(current){
var att=get.attitude(player,current);
if(!withatt||att<=0){
var att=get.sgn(get.attitude(player,current));
if(!withatt||att!=0){
var es=current.getCards('e');
for(var i=0;i<es.length;i++){
if(game.hasPlayer(function(current2){
if(withatt){
var att2=get.attitude(player,current2);
if(att2<=0) return false;
if(get.sgn(get.value(es[i]))!=-att) return false;
var att2=get.sgn(get.attitude(player,current2));
if(att2!=-att) return false;
}
return current!=current2&&!current2.isMin()&&current2.isEmpty(get.subtype(es[i]));
})){
@ -20207,7 +20215,9 @@
var range=0;
if(raw) range=game.checkMod(player,player,range,'globalFrom',player);
range=game.checkMod(player,player,range,'attackFrom',player);
var equips=player.getCards('e');
var equips=player.getCards('e',function(card){
return !ui.selected.cards||!ui.selected.cards.contains(card);
});
for(var i=0;i<equips.length;i++){
var info=get.info(equips[i]).distance;
if(!info) continue;
@ -20224,7 +20234,9 @@
var player=this;
var range=0;
range=game.checkMod(player,player,range,'globalFrom',player);
var equips=player.getCards('e');
var equips=player.getCards('e',function(card){
return !ui.selected.cards||!ui.selected.cards.contains(card);
});
for(var i=0;i<equips.length;i++){
var info=get.info(equips[i]).distance;
if(!info) continue;
@ -20238,7 +20250,9 @@
var player=this;
var range=0;
range=game.checkMod(player,player,range,'globalTo',player);
var equips=player.getCards('e');
var equips=player.getCards('e',function(card){
return !ui.selected.cards||!ui.selected.cards.contains(card);
});
for(var i=0;i<equips.length;i++){
var info=get.info(equips[i]).distance;
if(!info) continue;
@ -27127,6 +27141,13 @@
game.loop();
},
videoContent:{
arrangeLib:function(content){
for(var i in content){
for(var j in content[i]){
lib[i][j]=content[i][j];
}
}
},
jiuNode:function(player,bool){
//Powered by 升麻
if(bool){
@ -49050,7 +49071,30 @@
uiintro.add('<div style="opacity:0.5"><div class="skill">【'+translation+'】</div><div>'+get.skillInfoTranslation(skills[i])+'</div></div>');
}
else if(lib.skill[skills[i]].temp||!node.skills.contains(skills[i])||lib.skill[skills[i]].thundertext){
uiintro.add('<div><div class="skill thundertext thunderauto">【'+translation+'】</div><div class="thundertext thunderauto">'+get.skillInfoTranslation(skills[i])+'</div></div>');
if(lib.skill[skills[i]].frequent||lib.skill[skills[i]].subfrequent){
uiintro.add('<div><div class="skill thundertext thunderauto">【'+translation+'】</div><div class="thundertext thunderauto">'+get.skillInfoTranslation(skills[i])+'<br><div class="underlinenode on gray" style="position:relative;padding-left:0;padding-top:7px">自动发动</div></div></div>');
var underlinenode=uiintro.content.lastChild.querySelector('.underlinenode');
if(lib.skill[skills[i]].frequent){
if(lib.config.autoskilllist.contains(skills[i])){
underlinenode.classList.remove('on');
}
}
if(lib.skill[skills[i]].subfrequent){
for(var j=0;j<lib.skill[skills[i]].subfrequent.length;j++){
if(lib.config.autoskilllist.contains(skills[i]+'_'+lib.skill[skills[i]].subfrequent[j])){
underlinenode.classList.remove('on');
}
}
}
if(lib.config.autoskilllist.contains(skills[i])){
underlinenode.classList.remove('on');
}
underlinenode.link=skills[i];
underlinenode.listen(ui.click.autoskill2);
}
else{
uiintro.add('<div><div class="skill thundertext thunderauto">【'+translation+'】</div><div class="thundertext thunderauto">'+get.skillInfoTranslation(skills[i])+'</div></div>');
}
}
else if(lib.skill[skills[i]].frequent||lib.skill[skills[i]].subfrequent){
uiintro.add('<div><div class="skill">【'+translation+'】</div><div>'+get.skillInfoTranslation(skills[i])+'<br><div class="underlinenode on gray" style="position:relative;padding-left:0;padding-top:7px">自动发动</div></div></div>');

View File

@ -1,41 +1,42 @@
window.noname_update={
version:'1.9.98.3.2',
update:'1.9.98.3.1',
version:'1.9.98.4',
update:'1.9.98.3.2',
changeLog:[
'SP贴纸',
'bug修复',
],
files:[
//'card/extra.js',
//'card/huanlekapai.js',
//'card/sp.js',
//'card/standard.js',
'card/standard.js',
//'card/swd.js',
//'card/mtg.js',
//'card/guozhan.js',
//'card/gwent.js',
//'card/zhenfa.js',
//'card/zhulu.js',
//'character/diy.js',
//'character/extra.js',
'character/diy.js',
'character/extra.js',
//'character/hearth.js',
'character/gujian.js',
//'character/gujian.js',
//'character/gwent.js',
//'character/hearth.js',
'character/mobile.js',
//'character/mtg.js',
//'character/old.js',
'character/refresh.js',
//'character/shenhua.js',
'character/shenhua.js',
'character/sp.js',
//'character/tw.js',
//'character/standard.js',
//'character/swd.js',
'character/swd.js',
//'character/xianjian.js',
//'character/xinghuoliaoyuan.js',
//'character/yijiang.js',
//'character/yxs.js',
'character/yijiang.js',
'character/yxs.js',
//'extension/boss/extension.js',
'layout/default/layout.css',
//'layout/default/layout.css',
//'layout/nova/layout.css',
//'mode/identity.js',
//'mode/doudizhu.js',
@ -44,7 +45,7 @@ window.noname_update={
//'mode/tafang.js',
//'mode/single.js',
//'mode/stone.js',
//'mode/brawl.js',
'mode/brawl.js',
//'mode/versus.js',
//'mode/boss.js',
'game/game.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 299 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 173 KiB

View File

@ -1057,18 +1057,50 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
setTimeout(function(){
ui.arena.classList.remove('choose-character');
},500);
_status.videoInited=true;
game.addVideo('arrangeLib',null,{
card:{
hhzz_toulianghuanzhu:{
cardimage:"toulianghuanzhu",
},
hhzz_fudichouxin:{
cardimage:"fudichouxin",
},
},
character:{
hhzz_shiona:['female','key',1,['hhzz_huilei']],
hhzz_kanade:['female','key',2,['hhzz_youlian']],
hhzz_takaramono1:['male','qun',5,['hhzz_jubao','hhzz_huizhen']],
hhzz_takaramono2:['male','qun',3,['hhzz_jubao','hhzz_zhencang']],
},
translate:{
nei:' ',
nei2:' ',
hhzz_shiona:'汐奈',
hhzz_kanade:'立华奏',
hhzz_takaramono1:'坚实宝箱',
hhzz_takaramono2:'普通宝箱',
hhzz_toulianghuanzhu:'偷梁换柱',
hhzz_fudichouxin:'釜底抽薪',
hhzz_toulianghuanzhu_info:'出牌阶段,对一名角色使用,随机更换其一个技能。可重铸。',
hhzz_fudichouxin_info:'出牌阶段,对一名角色使用,随机弃置其一个技能。',
},
});
});
},
},
};
for(var i in pack.pack){
for(var j in pack.pack[i]) lib[i][j]=pack.pack[i][j];
var func=function(pack){
for(var i in pack.pack){
for(var j in pack.pack[i]) lib[i][j]=pack.pack[i][j];
}
for(var i in pack.eltc) lib.element.content[i]=pack.eltc[i];
for(var i in pack.eltp) lib.element.player[i]=pack.eltp[i];
for(var i in pack.game) game[i]=pack.game[i];
for(var i in pack.get) get[i]=pack.get[i];
lib.huanhuazhizhan=pack;
}
for(var i in pack.eltc) lib.element.content[i]=pack.eltc[i];
for(var i in pack.eltp) lib.element.player[i]=pack.eltp[i];
for(var i in pack.game) game[i]=pack.game[i];
for(var i in pack.get) get[i]=pack.get[i];
lib.huanhuazhizhan=pack;
func(pack);
},
},
},

View File

@ -18,7 +18,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
for(var i in lib.character){
if(lib.character[i][1]=='shen'){
if(lib.character[i][4]&&lib.group.contains(lib.character[i][4][0])){
if(lib.character[i][4]&&(lib.group.contains(lib.character[i][4][0])||lib.character[i][4][0]=='key')){
lib.character[i][1]=lib.character[i][4][0];
}
else{