Sunflower

This commit is contained in:
Spmario233 2020-10-09 11:37:02 +08:00
parent 3092b87111
commit 34d1c820e3
16 changed files with 667 additions and 464 deletions

View File

@ -1735,11 +1735,9 @@ game.import('card',function(lib,game,ui,get,ai,_status){
});
next.logSkill='guanshi_skill';
next.set('ai',function(card){
var evt=_status.event.getParent();
if(get.attitude(evt.player,evt._trigger.target)<0){
if(evt.player.hasSkill('jiu')||
evt.player.hasSkill('tianxianjiu')||
evt._trigger.target.hp==1){
var evt=_status.event.getTrigger();
if(get.attitude(evt.player,evt.target)<0){
if(evt.baseDamage+evt.extraDamage>=Math.min(2,evt.target.hp)){
return 8-get.value(card)
}
return 5-get.value(card)

View File

@ -57,6 +57,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_kaori:['female','key','3/4',['kaori_siyuan']],
key_akiko:['female','key',3,['akiko_dongcha']],
key_abyusa:['female','key',3,['abyusa_jueqing','abyusa_dunying']],
key_godan:['male','key',6,['godan_yuanyi','godan_feiqu','godan_xiaoyuan']],
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
@ -151,7 +152,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
"ns_huangchengyan","ns_sunchensunjun","ns_yuanxi","ns_caoshuang"],
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_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa"],
diy_key:["key_lucia","key_kyousuke","key_yuri","key_haruko","key_umi","key_rei","key_komari","key_yukine","key_yusa","key_misa","key_masato","key_iwasawa","key_kengo","key_yoshino","key_yui","key_tsumugi","key_saya","key_harukakanata","key_inari","key_shiina","key_sunohara","key_rin","key_sasami","key_akane","key_doruji","key_yuiko","key_riki","key_hisako","key_hinata","key_noda","key_tomoya","key_nagisa","key_ayato","key_ao","key_yuzuru","sp_key_kanade","key_mio","key_midori","key_kyoko","key_shizuru","key_shiorimiyuki","key_miki","key_shiori","key_kaori","sp_key_yuri","key_akiko","key_abyusa","key_godan"],
diy_yongjian:["ns_chendao","yj_caoang"],
},
},
@ -167,6 +168,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
key_godan:'#rAngel Beats!',
key_abyusa:'#rAngel Beats!',
key_akiko:'#bKanon',
key_kaori:'#bKanon',
@ -319,6 +321,38 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'],
},
skill:{
godan_yuanyi:{
trigger:{player:'phaseBegin'},
forced:true,
content:function(){
'step 0'
var num=game.roundNumber;
if(num&&typeof num=='number') player.draw(Math.min(3,num));
'step 1'
var next=player.phaseUse();
event.next.remove(next);
trigger.next.push(next);
},
},
godan_feiqu:{
inherit:'doruji_feiqu',
},
godan_xiaoyuan:{
trigger:{player:'changeHp'},
forced:true,
juexingji:true,
skillAnimation:true,
animationColor:'soil',
filter:function(event,player){
return event.num<0&&player.hp<4;
},
content:function(){
player.awakenSkill('godan_xiaoyuan');
player.loseMaxHp(3);
player.draw(3);
player.removeSkill('godan_feiqu');
},
},
abyusa_jueqing:{
audio:'jueqing',
trigger:{source:'damageBegin2'},
@ -4291,7 +4325,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
ai:{
effect:{
player:function(card,player,target){
if(get.attitude(player,target)>0&&get.tag(card,'damage')) return 'zeroplayertarget';
if(target&&get.attitude(player,target)>0&&get.tag(card,'damage')) return 'zeroplayertarget';
},
},
},
@ -10325,6 +10359,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_kaori:'美坂香里',
key_akiko:'水濑秋子',
key_abyusa:'游佐',
key_godan:'松下护騨',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -10567,6 +10602,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
abyusa_jueqing_rewrite_info:'锁定技,你即将造成的伤害均视为失去体力。',
abyusa_dunying:'遁影',
abyusa_dunying_info:'锁定技,其他角色计算与你的距离时+X。准备阶段和结束阶段你摸X张牌X为你已损失的体力值。',
godan_yuanyi:'远忆',
godan_yuanyi_info:'锁定技回合开始时你摸X张牌并进行一个额外的出牌阶段。X为游戏轮数且至多为3',
godan_feiqu:'肥躯',
godan_feiqu_info:'锁定技,当你使用【杀】时,或你成为【杀】的目标后,你令此【杀】不可被响应。',
godan_xiaoyuan:'消元',
godan_xiaoyuan_info:'觉醒技当你扣减体力时若你的体力值小于4则你减3点体力上限并摸三张牌失去【肥躯】。',
key_kud:'库特莉亚芙卡',
kud_qiaoshou:'巧手',

View File

@ -5615,7 +5615,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shixin:'释衅',
shixin_info:'锁定技,当你受到火属性伤害时,你防止此伤害。',
zhaohuo:'招祸',
zhaohuo_info:'锁定技当其他角色进入濒死状态时你将体力上限调整为1点。若你的体力上限因此减少则你摸张牌。X为你以此法减少的体力上限',
zhaohuo_info:'锁定技当其他角色进入濒死状态时你将体力上限调整为1点。若你的体力上限因此减少则你摸X张牌。X为你以此法减少的体力上限',
yixiang:'义襄',
yixiang_info:'每名角色的回合限一次,当你成为一名角色使用牌的目标后,若该角色的体力值大于你的体力值,你可以随机获得牌堆里的一张你没有的基本牌。',
yirang:'揖让',

View File

@ -2407,7 +2407,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
mod:{
judge:function(player,result){
if(_status.event.card&&_status.event.card.name=='lebu'&&player.countMark('sishu2')%2==1){
if(_status.event.cardname=='lebu'&&player.countMark('sishu2')%2==1){
if(result.bool==false){
result.bool=true;
}
@ -4249,11 +4249,19 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
"new_repaoxiao":{
audio:"paoxiao",
inherit:"paoxiao",
mod:{
targetInRange:function (card,player){
if(card.name=='sha'&&get.cardCount({name:'sha'},player)>0) return true;
firstDo:true,
audioname2:{old_guanzhang:'old_fuhun'},
audioname:['re_zhangfei','guanzhang','xiahouba'],
trigger:{player:'useCard1'},
forced:true,
filter:function(event,player){
return (!event.audioed||!player.hasSkill('new_repaoxiao2'))&&event.card.name=='sha';
},
content:function(){
trigger.audioed=true;
player.addTempSkill('new_repaoxiao2');
},
mod:{
cardUsable:function (card,player,num){
if(card.name=='sha') return Infinity;
},
@ -4267,6 +4275,14 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
},
new_repaoxiao2:{
charlotte:true,
mod:{
targetInRange:function (card,player){
if(card.name=='sha') return true;
},
},
},
"new_tishen":{
trigger:{
player:"phaseUseEnd",
@ -6975,9 +6991,41 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return true;
},
prompt:'将一张黑桃手牌当酒使用',
check:function(card){
check:function(cardx){
if(_status.event.type=='dying') return 1;
return 4-get.value(card);
var player=_status.event.player;
var shas=player.getCards('h','sha');
if(shas.length>1&&(player.getCardUsable('sha')>1||player.countCards('h','zhuge'))){
return 0;
}
shas.sort(function(a,b){
return get.order(b)-get.order(a);
});
var card;
if(shas.length){
for(var i=0;i<shas.length;i++){
if(shas[i]!=cardx&&lib.filter.filterCard(shas[i],player)){
card=shas[i];break;
}
}
}
if(card){
if(game.hasPlayer(function(current){
return (get.attitude(player,current)<0&&
!current.hasShan()
&&current.hp+current.countCards('h',{name:['tao','jiu']})>1+(player.storage.jiu||0)
&&player.canUse(card,current,true,true)&&
!current.hasSkillTag('filterDamage',null,{
player:player,
card:card,
jiu:true,
})&&
get.effect(current,card,player)>0);
})){
return 4-get.value(cardx);
}
}
return 0;
},
ai:{
skillTagFilter:function(player){

View File

@ -15,7 +15,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
},
character:{
old_zhoutai:['male','wu',4,['gzbuqu']],
old_zhoutai:['male','wu',4,['buqu','new_fenji']],
old_caoren:['male','wei',4,['moon_jushou','jiewei']],
xuhuang:['male','wei',4,['gzduanliang']],
re_pangde:['male','qun',4,['mashu','jianchu']],
@ -816,11 +816,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
forced:true,
filter:function(event,player){
var num=player.getStat('damage');
var num=0;
player.getHistory('sourceDamage',function(evt){
if(evt.getParent('phaseUse')==event) num+=evt.num;
});
return !num||num>1;
},
content:function(){
var numx=player.getStat('damage');
var numx=0;
player.getHistory('sourceDamage',function(evt){
if(evt.getParent('phaseUse')==trigger) numx+=evt.num;
});
if(!numx){
var num=player.hp-player.countCards('h');
if(num>0) player.draw(num);
@ -2719,8 +2725,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
shaRelated:true,
mod:{
targetInRange:function(card,player,target){
if(card.name=='sha'&&card.number){
if(get.distance(player,target)<=card.number) return true;
if(card.name=='sha'&&typeof get.number(card)=='number'){
if(get.distance(player,target)<=get.number(card)) return true;
}
}
},
@ -6502,6 +6508,24 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger[trigger.name=='gain'?'source':'player'].draw(2);
},
},
new_fenji:{
audio:"fenji",
trigger:{
global:"phaseJieshuBegin",
},
filter:function (event,player){
if(event.player.countCards('h')==0&&event.player.isAlive()) return true;
return false;
},
check:function (event,player){
return get.attitude(player,event.player)>2;
},
content:function (){
player.line(trigger.player,'green');
trigger.player.draw(2);
player.loseHp();
},
},
leiji:{
audio:2,
trigger:{player:['useCard','respond']},
@ -7530,6 +7554,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
guhuo_info:'每名角色的回合限一次你可以扣置一张手牌当一张基本牌或普通锦囊牌使用或打出。其他角色依次选择是否质疑。一旦有其他角色质疑则翻开此牌若为假则此牌作废若为真则质疑角色获得技能“缠怨”锁定技你不能质疑于吉只要你的体力值为1你失去你的武将技能',
fenji_info:'当一名角色的手牌被其他角色弃置或获得后你可以失去1点体力然后令该角色摸两张牌。',
new_fenji:"奋激",
new_fenji_info:"一名角色的结束阶段开始时若其没有手牌你可以令其摸两张牌然后你失去1点体力。",
gzduanliang:'断粮',
gzduanliang_info:'你可以将一张黑色基本牌或黑色装备牌当【兵粮寸断】使用你可以对距离为2的角色使用【兵粮寸断】',
"xinfu_guhuo":"蛊惑",

View File

@ -879,15 +879,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xinjingong:{
audio:'jingong',
enable:'phaseUse',
usable:1,
filter:function(event,player){
return player.countCards('he',function(card){
return event.xinjingong_list&&player.countCards('he',function(card){
return card.name=='sha'||get.type(card)=='equip';
});
},
delay:false,
usable:1,
content:function(){
'step 0'
onChooseToUse:function(event){
if(!game.online){
var evt=event.getParent();
if(evt.name!='phaseUse') return;
if(!evt.xinjingong_list){
var list=get.inpile('trick').randomGets(2);
if(Math.random()<0.5){
list.push('wy_meirenji');
@ -895,46 +897,39 @@ game.import('character',function(lib,game,ui,get,ai,_status){
else{
list.push('wy_xiaolicangdao');
}
for(var i=0;i<list.length;i++){
list[i]=['锦囊','',list[i]];
evt.xinjingong_list=list;
}
player.chooseButton(['矜功',[list,'vcard']]).set('filterButton',function(button,player){
return game.hasPlayer(function(current){
return player.canUse(button.link[2],current,true,false);
});
}).set('ai',function(button){
var player=_status.event.player;
return player.getUseValue(button.link[2]);
});
'step 1'
if(result.bool){
var name=result.links[0][2];
event.fakecard={name:name};
player.chooseCardTarget({
if(!event.xinjingong_list) event.set('xinjingong_list',evt.xinjingong_list);
}
},
chooseButton:{
dialog:function(event,player){
var list=[];
for(var i of event.xinjingong_list) list.push(['锦囊','',i]);
return ui.create.dialog('矜功',[list,'vcard']);
},
filter:function(button,player){
return lib.filter.filterCard({name:button.link[2]},player,_status.event.getParent());
},
check:function(button){
return _status.event.player.getUseValue({name:button.link[2]});
},
backup:function(links,player){
return {
audio:'xinjingong',
filterCard:true,
position:'he',
viewAs:{name:links[0][2]},
check:function(card){
return 6-get.value(card);
},
filterCard:function(card){
return card.name=='sha'||get.type(card)=='equip';
},
position:'he',
filterTarget:lib.filter.filterTarget,
selectTarget:lib.filter.selectTarget,
ai1:function(card){
return 7-get.value(card);
};
},
ai2:function(target){
var card=_status.event.fakecard;
var player=_status.event.player;
return get.effect(target,card,player,player);
},
_get_card:event.fakecard,
prompt:'将一张装备牌或【杀】当作'+get.translation(name)+'使用'
}).set('fakecard',event.fakecard);
}
else{
event.finish();
}
'step 2'
if(result.bool){
player.useCard(event.fakecard,result.cards,result.targets);
prompt:function(links,player){
return '将一张【杀】或装备牌当做'+get.translation(links[0][2])+'使用';
}
},
ai:{
@ -5236,6 +5231,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
info.audioname2.old_yuanshu='weidi';
}
},map.skills);
'step 3'
if(player.isMinHp()) player.recover();
},
},
refanghun:{
@ -9779,8 +9776,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
filter:function(event,player){
if(player.countCards('he')==0) return false;
if(event.card.name=='sha') return true;
var type=get.type(event.card,'trick');
return type=='trick';
return get.type(event.card)=='trick';
},
autodelay:true,
content:function(){
@ -10328,8 +10324,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
check:function(card){return 6-get.value(card)},
content:function(){
'step 0'
var list=lib.group.slice(0);
list.remove('shen');
var list=lib.group.filter(function(group){
return ['wei','shu','wu','qun'].contains(group)||game.hasPlayer(function(current){
return current.group==group;
})
});
if(player.storage.xiemu2) list.removeArray(player.storage.xiemu2);
var list2=list.slice(0);
list2.sort(function(a,b){
@ -11143,19 +11142,19 @@ 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;
if(card.name=='sha'&&get.number(card)>player.storage.qiangwu) return num+2;
},
targetInRange:function(card,player){
if(_status.currentPhase==player&&card.name=='sha'&&card.number<player.storage.qiangwu) return true;
if(_status.currentPhase==player&&card.name=='sha'&&get.number(card)<player.storage.qiangwu) return true;
},
cardUsable:function(card,player){
if(_status.currentPhase==player&&card.name=='sha'&&card.number>player.storage.qiangwu) return Infinity;
if(_status.currentPhase==player&&card.name=='sha'&&get.number(card)>player.storage.qiangwu) return Infinity;
}
},
trigger:{player:'useCard1'},
filter:function(event,player){
if(_status.currentPhase==player&&event.card.name=='sha'&&
event.card.number>player.storage.qiangwu&&event.addCount!==false) return true;
get.number(event.card)>player.storage.qiangwu&&event.addCount!==false) return true;
return false;
},
forced:true,
@ -15194,7 +15193,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
canshi_info:'摸牌阶段开始时你可以改为摸X张牌X为已受伤的角色数若如此做当你于此回合内使用基本牌或锦囊牌时你弃置一张牌。',
recanshi:'残蚀',
recanshi2:'残蚀',
recanshi_info:'摸牌阶段开始时你可以多摸X张牌X为已受伤的角色数若如此做当你于此回合内使用【杀】或锦囊牌时,你弃置一张牌。',
recanshi_info:'摸牌阶段开始时你可以多摸X张牌X为已受伤的角色数若如此做当你于此回合内使用【杀】或普通锦囊牌时,你弃置一张牌。',
zhuiji_info:'锁定技你与体力值不大于你的角色的距离视为1。',
kunfen:'困奋',
kunfen_info:'锁定技结束阶段开始时你失去1点体力然后摸两张牌。',
@ -15317,6 +15316,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xinmoucheng:'谋逞',
xinmoucheng_info:'觉醒技准备阶段若你已经发动了3次以上的〖连计〗则你失去〖连计〗并获得〖矜功〗。',
xinjingong:'矜功',
xinjingong_backup:'矜功',
xinjingong_info:'出牌阶段限一次,你可以将一张【杀】或装备牌当做三张随机锦囊牌中的一张使用。',
caiyang:'蔡阳',
yinka:'印卡',

View File

@ -3139,14 +3139,17 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
pingjian_temp:{
onremove:true,
trigger:{player:'useSkillAfter'},
trigger:{player:['useSkillBegin','useCard1']},
silent:true,
firstDo:true,
filter:function(event,player){
return event.skill==player.storage.pingjian_temp;
if(!lib.skill[event.skill]) return false;
if(event.skill==player.storage.pingjian_temp) return true;
if(lib.skill[event.skill].sourceSkill==player.storage.pingjian_temp) return true;
return false;
},
content:function(){
player.removeSkill(trigger.skill);
player.removeSkill(player.storage.pingjian_temp);
player.removeSkill('pingjian_temp');
},
},
@ -3999,14 +4002,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
},
content:function(){
'step 0'
var list=[];
for(var i=0;i<lib.group.length;i++){
if(lib.group[i]=='shen') continue;
if(lib.group[i]=='western'&&!game.hasPlayer(function(current){
return current.group=='western'
})) continue;
list.push(lib.group[i]);
}
var list=lib.group.filter(function(group){
return ['wei','shu','wu','qun'].contains(group)||game.hasPlayer(function(current){
return current.group==group;
})
});
player.chooseControl(list).set('prompt','秉诏:请选择一个势力').set('ai',function(){
var listx=list.slice(0);
list.sort(function(a,b){

View File

@ -7851,7 +7851,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
trigger:{player:'phaseUseEnd'},
direct:true,
filter:function(event,player){
return player.getStat().skill.yanyu>=2;
return player.getHistory('lose',function(evt){
var evt2=evt.getParent();
return evt2.name=='useSkill'&&evt2.skill=='yanyu'&&evt.getParent(3)==event;
}).length>=2;
},
content:function(){
'step 0'
@ -12452,7 +12455,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
zhiyu:'智愚',
qice:'奇策',
qice_backup:'奇策',
jiangchi:'将',
jiangchi:'将',
jiangchi_less:'少摸一张',
jiangchi_more:'多摸一张',
zishou:'自守',

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.104.1',
'v1.9.105.1',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -3379,6 +3379,7 @@ window.noname_asset_list=[
'image/character/xin_caozhang.jpg',
'image/character/xin_gongsunzan.jpg',
'image/character/xin_liaohua.jpg',
'image/character/key_godan.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -126,10 +126,10 @@ window.config={
right_click:'pause',
sort:'type_sort',
cards:['standard','ex','extra','sp','classic','basic','zhulu'],
cards:['standard','ex','extra','sp','classic','basic'],
characters:['standard','shenhua','sp','sp2','yijiang','refresh','xinghuoliaoyuan','mobile','extra'],
connect_characters:[],
connect_cards:[],
connect_characters:['diy'],
connect_cards:['huanlekapai','guozhan','sp','zhulu'],
plays:[],
extensions:[],
banned:[],

View File

@ -10142,7 +10142,8 @@
cardsGotoOrdering:function(){
game.getGlobalHistory().cardMove.push(event);
for(var i=0;i<cards.length;i++){
cards[i].goto(ui.ordering);
cards[i].fix();
ui.ordering.appendChild(cards[i]);
}
var evt=event.relatedEvent||event.getParent();
if(!evt.orderingCards) evt.orderingCards=[];
@ -19206,6 +19207,7 @@
}
if(next.judge==undefined) next.judge=function(){return 0};
if(next.position==undefined) next.position=ui.discardPile;
if(next.card) next.cardname=next.card.viewAs||next.card.name;
var str='';
if(next.card) str=get.translation(next.card.viewAs||next.card.name);
@ -27321,13 +27323,53 @@
game.importedPack=obj;
}
},
createDir:function(dir,success,error){
var nullFC=function(){};
success=success||nullFC;
error=error||nullFC;
dir=dir.split("/");
if(window.resolveLocalFileSystemURL){
window.resolveLocalFileSystemURL(lib.assetURL,function(entry){
(function redo(entry){
var i=dir.shift();
entry.getDirectory(i,{create:true},function(dirEntry){
if(dir.length) redo(dirEntry);
else success();
});
})(entry);
},error);
}
else{
var fs=require("fs");
var str=__dirname;
(function redo(){
str+="/";
str+=dir.shift();
fs.exists(str,function(exists){
if(exists){
//已存在此目录
if(dir.length) redo();
else success();
}
else{
fs.mkdir(str, function(){
if(dir.length) redo();
else success();
});
}
});
})();
}
},
importExtension:function(data,finishLoad,exportext,pkg){
//by 来瓶可乐加冰
if(!window.JSZip){
lib.init.js(lib.assetURL+'game','jszip',function(){
game.importExtension(data,finishLoad,exportext,pkg);
});
}
else if(get.objtype(data)=='object'){
//导出
var zip=new JSZip();
var filelist=[];
var filelist2=[];
@ -27420,17 +27462,23 @@
}
}
else{
//导入
function UHP(){
alert("导入失败");
};
var zip=new JSZip();
try{
zip.load(data);
// alert(zip.file('文件夹/加扩展.js').asText())
var str=zip.file('extension.js').asText();
if(str===""||undefined) throw('你导入的不是扩展!请选择正确的文件');
_status.importingExtension=true;
eval(str);
_status.importingExtension=false;
if(!game.importedPack) throw('err');
var extname=game.importedPack.name;
if(lib.config.all.plays.contains('extname')){
throw('err');
if(lib.config.all.plays.contains(extname)){
throw('禁止安装游戏原生扩展');
}
if(lib.config.extensions.contains(extname)){
game.removeExtension(extname,true);
@ -27446,16 +27494,36 @@
if(game.download){
var filelist=[];
for(var i in zip.files){
if(i[0]!='.'&&i[0]!='_'){
//alert(zip.files[i].dir+i)
if(!zip.files[i].dir&&i[0]!='.'&&i[0]!='_'){
filelist.push(i);
}
}
//alert(filelist)
if(lib.node&&lib.node.fs){
//电脑端
//具备nodeJS环境
game.ensureDirectory('extension/'+extname,function(){
var writeFile=function(){
var writeFile=function(e){
if(e){
finishLoad();
UHP();
return;
}
if(filelist.length){
var filename=filelist.shift();
lib.node.fs.writeFile(__dirname+'/extension/'+extname+'/'+filename,zip.files[filename].asNodeBuffer(),null,writeFile);
//filename 数组 ...dir+/+file
var zipdir=filename;
filename=filename.split("/");
var name=filename.pop();
if(filename.length) game.createDir('extension/'+extname+"/"+filename.join("/"),function(){
//这里需要个创文件夹的函数
Letgo(filename.join("/")+"/"+name);
},UHP);
else Letgo(name);
function Letgo(name){
lib.node.fs.writeFile(__dirname+'/extension/'+extname+"/"+name,zip.file(zipdir).asNodeBuffer(),null,writeFile);
}
}
else{
finishLoad();
@ -27467,21 +27535,33 @@
else{
window.resolveLocalFileSystemURL(lib.assetURL,function(entry){
entry.getDirectory('extension/'+extname,{create:true},function(dirEntry){
var writeFile=function(){
//扩展文件夹
writeFile();
function writeFile(){
if(filelist.length){
var filename=filelist.shift();
dirEntry.getFile(filename,{create:true},function(fileEntry){
//filename 数组 ...dir+/+file
var zipdir=filename;
filename=filename.split("/");
var name=filename.pop();
if(filename.length) game.createDir('extension/'+extname+"/"+filename.join("/"),function(){
Letgo(filename.join("/")+"/"+name);
},UHP);
else Letgo(name);
function Letgo(name){
dirEntry.getFile(name,{create:true},function(fileEntry){
fileEntry.createWriter(function(fileWriter){
fileWriter.onwriteend=writeFile;
fileWriter.write(zip.files[filename].asArrayBuffer());
});
fileWriter.write(zip.file(zipdir).asArrayBuffer());
});
},UHP);
}
}
else{
finishLoad();
}
};
writeFile();
});
});
}
@ -27527,7 +27607,7 @@
alert('导入失败');
return false;
}
}
};
},
export:function(textToWrite,name){
var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
@ -48809,7 +48889,9 @@
},
number:function(card,player){
//啥时候狗卡出相关技能我再完善
return card.number;
if(typeof card.number=='number') return card.number;
else if(card.cards&&card.cards.length==1) return get.number(card.cards[0]);
return null;
},
nature:function(card,player){
if(get.itemtype(player)=='player'||player!==false){

View File

@ -1,3 +1,3 @@
window.bannedKeyWords=[
'ghs','直肠','性交','做爱','http','吃奶','骚逼','哈巴狗','美眉','癌','屁眼','艹','傻逼','操你','做鸡','奸','姦','华为','屄','狗子','屎',
'ghs','直肠','性交','做爱','http','吃奶','骚逼','哈巴狗','美眉','癌','屁眼','艹','傻逼','操你','做鸡','奸','姦','华为','屄','狗子','屎','同性恋','肖战','鸡巴','精液','粪水','挂月亮中','贱骨头',
];

View File

@ -1,8 +1,8 @@
window.noname_update={
version:'1.9.105',
update:'1.9.104.1',
version:'1.9.105.1',
update:'1.9.105',
changeLog:[
'动态技能描述(dynamicTranslate)',
'松下护騨',
'bug修复',
],
@ -11,16 +11,16 @@ window.noname_update={
//'card/huanlekapai.js',
//'card/sp.js',
'card/standard.js',
'card/swd.js',
//'card/swd.js',
//'card/mtg.js',
//'card/gujian.js',
//'card/guozhan.js',
'card/gwent.js',
//'card/gwent.js',
//'card/yunchou.js',
//'card/zhenfa.js',
'card/zhulu.js',
//'card/zhulu.js',
'character/diy.js',
'character/extra.js',
//'character/extra.js',
//'character/hearth.js',
//'character/gujian.js',
//'character/gwent.js',
@ -33,17 +33,17 @@ window.noname_update={
'character/sp.js',
'character/sp2.js',
//'character/tw.js',
'character/standard.js',
//'character/standard.js',
//'character/swd.js',
//'character/xianjian.js',
'character/xinghuoliaoyuan.js',
//'character/xinghuoliaoyuan.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',
//'mode/doudizhu.js',
'mode/guozhan.js',
//'mode/chess.js',
//'mode/tafang.js',
@ -51,11 +51,11 @@ window.noname_update={
//'mode/stone.js',
//'mode/brawl.js',
//'mode/versus.js',
//'mode/boss.js',
'mode/boss.js',
'game/game.js',
'game/keyWords.js',
//'game/NoSleep.js',
//'game/config.js',
'game/config.js',
//'game/package.js',
//'game/asset.js',
//'game/source.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View File

@ -2797,7 +2797,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
logTarget:'source',
content:function(){
trigger.source.damage().nature=lib.linked.randomGet();
trigger.source.damage().nature=['fire','thunder'].randomGet();
},
},
boss_pingdeng:{

View File

@ -211,6 +211,9 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
vanish:true,
derivation:'guozhan',
},
zhulian_card:{
cardimage:'wuzhong',
},
},
aozhanRank:{
'8':[],
@ -1167,7 +1170,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else{
if(get.attitude(player,trigger.source)>=0) check=false;
}
player.chooseCard(get.prompt('gzfudi'),'交给其一张手牌然后对其势力中体力值最大且不小于你的一名角色造成1点伤害').set('aicheck',check).set('ai',function(card){
player.chooseCard(get.prompt('gzfudi',trigger.source),'交给其一张手牌然后对其势力中体力值最大且不小于你的一名角色造成1点伤害').set('aicheck',check).set('ai',function(card){
if(!_status.event.aicheck) return 0;
return 9-get.value(card);
});
@ -2227,24 +2230,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
expose:0.1,
},
},
"new_fenji":{
audio:"fenji",
trigger:{
global:"phaseAfter",
},
filter:function (event,player){
if(event.player.countCards('h')==0&&event.player.isAlive()) return true;
return false;
},
check:function (event,player){
return get.attitude(player,event.player)>2;
},
content:function (){
player.line(trigger.player,'green');
trigger.player.draw(2);
player.loseHp();
},
},
"new_luanji":{
audio:"luanji",
enable:"phaseUse",
@ -3532,12 +3517,12 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
game.countPlayer(function(current){current.addSkill('aozhan')});
},
},
"xianqu_skill":{
"_xianqu_skill":{
ruleSkill:true,
enable:"phaseUse",
//filter:function (event,player){
//return player.countCards('h')<4;
//},
filter:function (event,player){
return player.hasMark('_xianqu_skill');
},
usable:1,
mark:true,
intro:{
@ -3545,9 +3530,14 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
content:function (){
"step 0"
player.removeMark('_xianqu_skill',1);
game.log(player,'移去了','#g先驱','标记');
var num=4-player.countCards('h');
if(num) player.draw(num);
player.chooseTarget('是否观看一名其他角色的一张暗置武将牌?',function(card,player,target){
"step 1"
if(game.hasPlayer(function(current){
return current!=player&&current.isUnseen(2);
})) player.chooseTarget('是否观看一名其他角色的一张暗置武将牌?',function(card,player,target){
return target!=player&&target.isUnseen(2);
}).set('ai',function(target){
if(target.isUnseen()){
@ -3557,7 +3547,8 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
}
return -get.attitude(_status.event.player,target);
});
"step 1"
else event.finish();
"step 2"
if(result.bool){
event.target=result.targets[0];
player.line(event.target,'green');
@ -3570,10 +3561,10 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
if(controls.length==0) event.finish();
}
else{
player.removeSkill('xianqu_skill');
player.removeSkill('_xianqu_skill');
event.finish();
}
"step 2"
"step 3"
if(result.control){
if(result.control=='主将'){
player.viewCharacter(event.target,0);
@ -3588,7 +3579,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
else{
player.viewCharacter(event.target,1);
}
player.removeSkill('xianqu_skill');
},
ai:{
order:1,
@ -3602,78 +3592,93 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
"zhulianbihe_skill":{
ruleSkill:true,
group:["zhulianbihe_skill_draw","zhulianbihe_skill_tao"],
mark:true,
intro:{
content:"◇出牌阶段,你可以弃置此标记 然后摸两张牌。<br>◇你可以将此标记当做【桃】使用。",
},
},
"yinyang_skill":{
ruleSkill:true,
group:["yinyang_skill_draw","yinyang_skill_add"],
mark:true,
intro:{
content:"◇出牌阶段,你可以弃置此标记,然后摸一张牌。<br>◇弃牌阶段,你可以弃置此标记,然后本回合手牌上限+2。",
},
},
"zhulianbihe_skill_draw":{
"_zhulianbihe_skill_draw":{
ruleSkill:true,
enable:"phaseUse",
usable:1,
filter:function(event,player){
return player.hasMark('zhulianbihe_skill');
},
chooseButton:{
dialog:function(event,player){
return ui.create.dialog('珠联璧合',[[
['摸牌','','zhulian_card'],
['基本','','tao']
],'vcard'],'hidden');
},
filter:function(button,player){
if(button.link[2]!='tao') return true;
return lib.filter.filterCard({name:'tao',isCard:true},player,_status.event.getParent());
},
check:function(button){
var player=_status.event.player;
if(button.link[2]=='tao') return get.effect_use(player,{name:'tao'},player)>0?2:0;
if(player.getHandcardLimit()-player.countCards('h')>1&&!game.hasPlayer(function(current){
return current!=player&&current.isFriendOf(player)&&current.hp+current.countCards('h','shan')<=2;
})) return 1;
return 0;
},
backup:function(links,player){
if(links[0][2]=='tao') return get.copy(lib.skill._zhulianbihe_skill_tao);
return {
content:function(){
player.draw(2);
player.removeSkill('zhulianbihe_skill');
player.removeMark('zhulianbihe_skill',1);
},
};
},
},
ai:{
order:function(item,player){
var cards=player.getCards('h');
if(player.hp>=3){
if(cards.length>=3){
for(var i=0;i<cards.length;i++){
if(get.tag(cards[i],'recover')>=1) return 7.2;
}
return 1;
}
else return 7.2;
}
if(player.hp=2){
if(cards.length<2){
for(var i=0;i<cards.length;i++){
if(get.tag(cards[i],'recover')>=1) return 7.2;
}
return 1;
}
}
return 1;
if(get.effect_use(player,{name:'tao'},player)>0) return get.order({name:'tao'},player)-0.1;
return 7.2;
},
result:{
player:2,
player:1,
},
},
},
"zhulianbihe_skill_tao":{
"_zhulianbihe_skill_tao":{
ruleSkill:true,
enable:"chooseToUse",
filter:function(event,player){
return event.type!='phase'&&player.hasMark('zhulianbihe_skill');
},
viewAs:{
name:"tao",
isCard:true,
},
filterCard:function(){return false},
selectCard:-1,
precontent:function(){
player.removeSkill('zhulianbihe_skill');
player.removeMark('zhulianbihe_skill',1);
},
ai:{
save:true,
respondTao:true,
skillTagFilter:function(player){
if(!player.hasMark('zhulianbihe_skill')) return false;
},
},
"yinyang_skill_draw":{
},
"_yinyang_skill_draw":{
ruleSkill:true,
enable:"phaseUse",
usable:1,
filter:function(event,player){
return player.hasMark('yinyang_skill');
},
content:function(){
player.draw();
player.removeSkill('yinyang_skill');
player.removeMark('yinyang_skill',1);
},
ai:{
order:function (item,player){
@ -3690,18 +3695,18 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
},
},
"yinyang_skill_add":{
"_yinyang_skill_add":{
ruleSkill:true,
trigger:{
player:"phaseDiscardBefore",
player:"phaseDiscardBegin",
},
filter:function (event,player){
return player.needsToDiscard();
return player.hasMark('yinyang_skill')&&player.needsToDiscard();
},
prompt:"是否弃置【阴阳鱼】标记,使本回合的手牌上限+2",
prompt:"是否弃置一枚【阴阳鱼】标记,使本回合的手牌上限+2",
content:function (){
player.addTempSkill('yinyang_add','phaseAfter');
player.removeSkill('yinyang_skill');
player.removeMark('yinyang_skill',1);
},
},
"yinyang_add":{
@ -7436,20 +7441,24 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
jihun_info:"当你受到伤害后,或与你势力不同的角色脱离濒死状态后,你可以将剩余武将牌堆的一张牌当做“魂”扣置于游戏外。",
"xianqu_skill":"先驱",
"xianqu_skill_info":"",
"_xianqu_skill":"先驱",
"_xianqu_skill_info":"",
"zhulianbihe_skill":"珠联璧合",
"zhulianbihe_skill_info":"",
_zhulianbihe_skill_draw_backup:'珠联',
zhulian_card:'摸两张牌',
zhulian_card_info:'弃置【珠联璧合】标记并摸两张牌',
zhulian_card_bg:'摸',
"yinyang_skill":"阴阳鱼",
"yinyang_skill_info":"",
"zhulianbihe_skill_draw":"珠联•摸牌",
"zhulianbihe_skill_draw_info":"",
"zhulianbihe_skill_tao":"珠联•桃",
"zhulianbihe_skill_tao_info":"",
"yinyang_skill_draw":"阴阳鱼",
"yinyang_skill_draw_info":"",
"yinyang_skill_add":"阴阳鱼",
"yinyang_skill_add_info":"",
"_zhulianbihe_skill_draw":"珠联",
"_zhulianbihe_skill_draw_info":"",
"_zhulianbihe_skill_tao":"珠联",
"_zhulianbihe_skill_tao_info":"",
"_yinyang_skill_draw":"阴阳鱼",
"_yinyang_skill_draw_info":"",
"_yinyang_skill_add":"阴阳鱼",
"_yinyang_skill_add_info":"",
"yinyang_add":"阴阳鱼",
"yinyang_add_info":"",
@ -7459,8 +7468,6 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
"new_duanliang_info":"出牌阶段你可以将一张黑色基本牌或黑色装备牌当做【兵粮寸断】使用。你使用【兵粮寸断】没有距离限制。若你对距离超过2的角色发动了〖断粮〗则本回合不能再发动〖断粮〗。",
"new_shushen":"淑慎",
"new_shushen_info":"当你回复1点体力后你可令一名其他角色摸一张牌。",
"new_fenji":"奋激",
"new_fenji_info":"一名角色的结束阶段开始时若其没有手牌你可以令其摸两张牌然后你失去1点体力。",
"new_luanji":"乱击",
"new_luanji_info":"你可以将两张与你本回合以此法转化的花色均不相同的手牌当【万箭齐发】使用。当一名与你势力相同的角色因响应此牌而打出【闪】时,该角色摸一张牌。",
"new_qingcheng":"倾城",
@ -7950,8 +7957,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
player.$removeCharacter(event.num);
},
doubleDraw:function(){
game.log(player,'获得了','#g【阴阳鱼】','标记');
player.addSkill('yinyang_skill');
if(!player.hasMark('yinyang_skill')) player.addMark('yinyang_skill',1);
},
changeViceOnline:function(){
'step 0'
@ -8028,8 +8034,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
},
zhulian:function(){
player.popup('珠联璧合');
game.log(player,'获得了','#g【珠联璧合】','标记');
player.addSkill('zhulianbihe_skill');
if(!player.hasMark('zhulianbihe_skill')) player.addMark('zhulianbihe_skill',1);
},
},
player:{
@ -8430,8 +8435,7 @@ game.import('mode',function(lib,game,ui,get,ai,_status){
this.draw(2).log=false;
}
else{
this.addSkill('xianqu_skill');
game.log(this,'获得了','#g【先驱】','标记');
this.addMark('_xianqu_skill',1);
}
_status.initshown=true;
}