the 1000th summer and the crow

This commit is contained in:
Spmario233 2021-04-13 22:06:17 +08:00
parent ab0b7aeb8f
commit e5b3e3382c
10 changed files with 877 additions and 155 deletions

View File

@ -65,6 +65,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_youta:['male','key',4,[]],
key_rumi:['female','key','3/4',['rumi_shuwu']],
key_chihaya:['female','key',3,['chihaya_liewu','chihaya_youfeng']],
key_yukito:['male','key',4,['yukito_kongwu','yukito_yaxiang']],
key_crow:['male','key',4,[],['unseen']],
key_kud:['female','key',3,['kud_qiaoshou','kud_buhui']],
key_misuzu:['female','key',3,['misuzu_hengzhou','misuzu_nongyin','misuzu_zhongxing']],
@ -176,7 +178,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tieba:["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_luyusheng"],
diy_fakenews:["diy_wenyang","ns_zhangwei","ns_caimao"],
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","key_godan","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya","key_youta","key_rumi","key_chihaya"],
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","key_yuu","key_ryoichi","key_kotori","key_jojiro","key_shiroha","key_shizuku","key_hiroto","key_sakuya","key_youta","key_rumi","key_chihaya","key_yukito"],
diy_trashbin:['old_jiakui','ol_guohuai','junk_zhangrang','junk_simayi'],
},
},
@ -192,6 +194,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
diy_tianyu:'字国让,渔阳雍奴(今天津市武清区东北)人。三国时期曹魏将领。初从刘备,因母亲年老回乡,后跟随公孙瓒,公孙瓒败亡,劝说鲜于辅加入曹操。曹操攻略河北时,田豫正式得到曹操任用,历任颖阴、郎陵令、弋阳太守等。',
},
characterTitle:{
key_yukito:'#bAIR',
key_chihaya:'#bRewrite',
key_rumi:'#rONE ~輝く季節へ~',
key_youta:'#b神様になった日',
@ -358,6 +361,566 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_lucia:['key_shizuru'],
},
skill:{
yukito_kongwu:{
enable:'phaseUse',
usable:1,
content:function(){
"step 0"
if(_status.connectMode) event.time=lib.configOL.choose_timeout;
event.videoId=lib.status.videoId++;
if(player.isUnderControl()){
game.swapPlayerAuto(player);
}
var switchToAuto=function(){
game.pause();
game.countChoose();
setTimeout(function(){
_status.imchoosing=false;
event._result={
bool:true,
score:get.rand(1,5),
};
if(event.dialog) event.dialog.close();
if(event.control) event.control.close();
game.resume();
},5000);
};
var createDialog=function(player,id){
if(_status.connectMode) lib.configOL.choose_timeout='30';
if(player==game.me) return;
var str=get.translation(player)+'正在表演《小空飞天》...<br>';
ui.create.dialog(str).videoId=id;
};
var chooseButton=function(){
var roundmenu=false;
if(ui.roundmenu&&ui.roundmenu.display!='none'){
roundmenu=true;
ui.roundmenu.style.display='none';
}
var event=_status.event;
event.settleed=false;
event.score=0;
event.dialog=ui.create.dialog('forcebutton','hidden');
event.dialog.textPrompt=event.dialog.add('<div class="text center">准备好了吗?准备好了的话就点击屏幕开始吧!</div>');
event.dialog.textPrompt.style["z-index"]=10;
event.switchToAuto=function(){
event._result={
bool:true,
score:event.score,
};
event.dialog.close();
game.resume();
_status.imchoosing=false;
if(roundmenu) ui.roundmenu.style.display='';
};
event.dialog.classList.add('fixed');
event.dialog.classList.add('scroll1');
event.dialog.classList.add('scroll2');
event.dialog.classList.add('fullwidth');
event.dialog.classList.add('fullheight');
event.dialog.classList.add('noupdate');
event.dialog.style.overflow='hidden';
event.dialog.open();
var height=event.dialog.offsetHeight;
var width=event.dialog.offsetWidth;
var top=50;
var speed=0;
var start=false;
var bird=ui.create.div('');
bird.style["background-image"]='linear-gradient(rgba(6, 3, 55, 1), rgba(6, 3, 35, 1))';
bird.style["border-radius"]='3px';
var pipes=[];
bird.style.position='absolute';
bird.style.height='40px';
bird.style.width='40px';
bird.style.left=Math.ceil(width/3)+'px';
bird.style.top=(top/100*height)+'px';
bird.updatePosition=function(){
bird.style.transform='translateY('+(top/100*height-bird.offsetTop)+'px)';
};
event.dialog.appendChild(bird);
var isDead=function(){
if(top>100||top<0) return true;
var btop=top;
var bleft=100/3;
var bdown=btop+5;
var bright=bleft+5;
for(var i of pipes){
var left2=i.left;
var right2=left2+10;
var bottom2=i.height1;
var top2=i.height2;
if(left2>bright||right2<bleft) continue;
if(btop<bottom2) return true;
if(bdown>top2) return true;
return false;
}
return false;
};
var fly=function(){
if(!start){
start=true;
event.dialog.textPrompt.innerHTML='<div class="text center">当前分数:'+event.score+'</div>';
speed=-4;
event.fly=setInterval(function(){
top+=speed;
if(top<0) top=0;
bird.updatePosition();
for(var i of pipes){
i.left-=0.5;
i.updateLeft();
}
speed+=0.5;
if(speed>2.5) speed=2.5;
if(isDead()==true){
event.settle();
}
},35);
var addPipe=function(){
var num=get.rand(5,55);
var pipe1=ui.create.div('');
pipe1.style["background-image"]='linear-gradient(rgba(57, 133, 4, 1), rgba(60, 135, 6, 1))';
pipe1.style["border-radius"]='3px';
pipe1.style.position='absolute';
pipe1.height1=num;
pipe1.height2=num+50;
pipe1.left=110;
pipe1.num=1;
pipe1.style.height=Math.ceil(height*num/100)+'px';
pipe1.style.width=(width/10)+'px';
pipe1.style.left=(pipe1.left*width/100)+'px';
pipe1.style.top='0px';
var pipe2=ui.create.div('');
pipe2.style["background-image"]='linear-gradient(rgba(57, 133, 4, 1), rgba(60, 135, 6, 1))';
pipe2.style["border-radius"]='3px';
pipe1.pipe2=pipe2;
pipe2.style.position='absolute';
pipe2.style.height=Math.ceil((100-pipe1.height2)*height/100)+'px';
pipe2.style.width=(width/10)+'px';
pipe2.style.left=(pipe1.left*width/100)+'px';
pipe2.style.top=Math.ceil(pipe1.height2*height/100)+'px';
pipes.add(pipe1);
event.dialog.appendChild(pipe1);
event.dialog.appendChild(pipe2);
pipe1.updateLeft=function(){
this.style.transform='translateX('+((this.left/100*width)-this.offsetLeft)+'px)';
this.pipe2.style.transform='translateX('+((this.left/100*width)-this.pipe2.offsetLeft)+'px)';
if(this.left<25&&!this.score){
this.score=true;
event.score++;
event.dialog.textPrompt.innerHTML='<div class="text center">当前分数:'+event.score+'</div>';
if(event.score>=5) event.settle();
}
if(this.left<-15){
this.remove();
this.pipe2.remove();
pipes.remove(this);
}
}
};
event.addPipe=setInterval(addPipe,2500);
}
else if(speed>0){
speed=-4;
}
};
document.addEventListener(lib.config.touchscreen?'touchend':'click',fly);
event.settle=function(){
clearInterval(event.fly);
clearInterval(event.addPipe);
document.removeEventListener(lib.config.touchscreen?'touchend':'click',fly);
setTimeout(function(){
event.switchToAuto()
},1000);
};
game.pause();
game.countChoose();
};
//event.switchToAuto=switchToAuto;
game.broadcastAll(createDialog,player,event.videoId);
if(event.isMine()){
chooseButton();
}
else if(event.isOnline()){
event.player.send(chooseButton);
event.player.wait();
game.pause();
}
else{
switchToAuto();
}
"step 1"
game.broadcastAll(function(id,time){
if(_status.connectMode) lib.configOL.choose_timeout=time;
var dialog=get.idDialog(id);
if(dialog){
dialog.close();
}
},event.videoId,event.time);
var result=event.result||result;
game.log(player,'获得了','#g'+result.score+'分');
if(!result.score){
player.chooseToDiscard(2,true,'he');
event.finish();
return;
}
var list=[];
var list2=[];
for(var i=0;i<5;i++){
if(lib.skill.yukito_kongwu.moves[i].filter(player,true)) list.push(i);
else list2.push(i);
}
if(list.length>=result.score) list=list.randomGets(result.score);
else list.addArray(list2.randomGets(result.score-list.length));
list.sort();
event.videoId=lib.status.videoId++;
var func=function(id,list){
var choiceList=ui.create.dialog('控物:请选择一项','forcebutton');
choiceList.videoId=id;
for(var ii=0;ii<list.length;ii++){
var i=list[ii];
var str='<div class="popup text" style="width:calc(100% - 10px);display:inline-block">';
var bool=lib.skill.yukito_kongwu.moves[i].filter(player);
if(!bool) str+='<div style="opacity:0.5">';
str+=lib.skill.yukito_kongwu.moves[i].prompt;
if(!bool) str+='</div>';
str+='</div>';
var next=choiceList.add(str);
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[j];
}
choiceList.buttons.add(next.firstChild);
}
return choiceList;
};
if(player.isOnline2()){
player.send(func,event.videoId,list);
}
event.dialog=func(event.videoId,list);
if(player!=game.me||_status.auto){
event.dialog.style.display='none';
}
var next=player.chooseButton();
next.set('dialog',event.videoId);
next.set('forced',true);
next.set('filterButton',function(button){
return lib.skill.yukito_kongwu.moves[button.link].filter(_status.event.player);
});
next.set('ai',function(button){
if(lib.skill.yukito_kongwu.moves[button.link].filter(_status.event.player,true)) return 1+Math.random();
return Math.random();
});
"step 2"
if(player.isOnline2()){
player.send('closeDialog',event.videoId);
}
event.dialog.close();
var num=result.links[0];
switch(num){
case 0:event.goto(3);break;
case 1:event.goto(5);break;
case 2:event.goto(7);break;
case 3:event.goto(9);break;
case 4:player.moveCard(true);event.finish();break;
}
"step 3"
player.chooseTarget(true,'令一名角色摸两张牌').set('ai',function(target){
var player=_status.event.player;
var att=get.attitude(player,target)/Math.sqrt(1+target.countCards('h'));
if(target.hasSkillTag('nogain')) att/=10;
return att;
});
"step 4"
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
target.draw(2);
}
event.finish();
"step 5"
player.chooseTarget(true,'对一名角色造成1点伤害').set('ai',function(target){
var player=_status.event.player;
return get.damageEffect(target,player,player);
});
"step 6"
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
target.damage();
}
event.finish();
"step 7"
player.chooseTarget(true,'令一名已受伤的角色回复1点体力',function(card,player,target){
return target.isDamaged();
}).set('ai',function(target){
var player=_status.event.player;
return get.recoverEffect(target,player,player);
});
"step 8"
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
target.recover();
}
event.finish();
"step 9"
player.chooseTarget(true,'弃置一名角色区域内的两张牌',function(card,player,target){
return target.countDiscardableCards(player,'hej')>0;
}).set('ai',function(target){
return -get.attitude(_status.event.player,target);
});
"step 10"
if(result.bool){
var target=result.targets[0];
player.line(target,'green');
player.discardPlayerCard(target,'hej',true,2);
}
event.finish();
},
moves:[
{
prompt:'令一名角色摸两张牌',
filter:()=>true,
},
{
prompt:'对一名角色造成1点伤害',
filter:function(player,ai){
if(!ai) return true;
return game.hasPlayer(function(current){
return get.damageEffect(current,player,player)>0;
});
},
},
{
prompt:'令一名已受伤的角色回复1点体力',
filter:function(player,ai){
return game.hasPlayer(function(current){
if(current.isDamaged()) return !ai||get.recoverEffect(current,player,player)>0;
});
}
},
{
prompt:'弃置一名角色区域内的两张牌',
filter:function(player,ai){
return game.hasPlayer(function(current){
return current.countDiscardableCards(player,'hej',function(card){
if(!ai) return true;
return get.buttonValue({link:card})*get.attitude(player,current)>0;
})>=(ai?1:Math.min(2,current.countDiscardableCards(player,'hej')));
});
},
},
{
prompt:'移动场上的一张牌',
filter:function(player,ai){
return player.canMoveCard(ai);
},
},
],
ai:{
order:10,
result:{player:1},
threaten:3.2,
}
},
yukito_yaxiang:{
enable:'chooseToUse',
limited:true,
filter:function(event,player){
return event.type=='dying'&&(player.name1=='key_yukito'||player.name2=='key_yukito');
},
filterTarget:function(card,player,target){
return target==_status.event.dying;
},
selectTarget:-1,
skillAnimation:true,
animationColor:'key',
content:function(){
'step 0'
player.awakenSkill('yukito_yaxiang');
player.reinit('key_yukito','key_crow');
'step 1'
if(target.hp<3) target.recover(3-target.hp);
'step 2'
var cards=target.getCards('j');
if(cards.length) target.discard(cards);
'step 3'
target.addSkill('misuzu_zhongyuan');
},
derivation:'misuzu_zhongyuan',
ai:{
save:true,
order:4,
result:{
target:function(player,target){
if(get.attitude(player,target)<4) return false;
if(player.countCards('h',function(card){
var mod2=game.checkMod(card,player,'unchanged','cardEnabled2',player);
if(mod2!='unchanged') return mod2;
var mod=game.checkMod(card,player,target,'unchanged','cardSavable',player);
if(mod!='unchanged') return mod;
var savable=get.info(card).savable;
if(typeof savable=='function') savable=savable(card,player,target);
return savable;
})>=1-target.hp) return false;
if(target==player||target==get.zhu(player)) return true;
return !player.hasUnknown();
},
},
},
},
misuzu_zhongyuan:{
trigger:{player:'judge'},
skillAnimation:true,
animationColor:'key',
direct:true,
content:function(){
'step 0'
var str='你的'+(trigger.judgestr||'')+'判定为'+
get.translation(trigger.player.judging[0])+',是否发动【终愿】修改判定结果?';
if(player.isUnderControl()){
game.swapPlayerAuto(player);
}
var switchToAuto=function(){
_status.imchoosing=false;
event._result={
bool:false,
};
if(event.dialog) event.dialog.close();
if(event.control) event.control.close();
};
var chooseButton=function(player,str){
var event=_status.event;
player=player||event.player;
if(!event._result) event._result={};
var dialog=ui.create.dialog(str,'forcebutton','hidden');
event.dialog=dialog;
dialog.addText('花色');
var table=document.createElement('div');
table.classList.add('add-setting');
table.style.margin='0';
table.style.width='100%';
table.style.position='relative';
var listi=['spade','heart','club','diamond'];
for(var i=0;i<listi.length;i++){
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
td.link=listi[i];
table.appendChild(td);
td.innerHTML='<span>'+get.translation(listi[i])+'</span>';
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
if(_status.dragged) return;
if(_status.justdragged) return;
_status.tempNoButton=true;
setTimeout(function(){
_status.tempNoButton=false;
},500);
var link=this.link;
var current=this.parentNode.querySelector('.bluebg');
if(current){
current.classList.remove('bluebg');
}
this.classList.add('bluebg');
event._result.suit=link;
});
}
dialog.content.appendChild(table);
dialog.addText('点数');
var table2=document.createElement('div');
table2.classList.add('add-setting');
table2.style.margin='0';
table2.style.width='100%';
table2.style.position='relative';
for(var i=1;i<14;i++){
var td=ui.create.div('.shadowed.reduce_radius.pointerdiv.tdnode');
td.link=i;
table2.appendChild(td);
var num=i;
td.innerHTML='<span>'+get.strNumber(num)+'</span>';
td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){
if(_status.dragged) return;
if(_status.justdragged) return;
_status.tempNoButton=true;
setTimeout(function(){
_status.tempNoButton=false;
},500);
var link=this.link;
var current=this.parentNode.querySelector('.bluebg');
if(current){
current.classList.remove('bluebg');
}
this.classList.add('bluebg');
event._result.number=link;
});
}
dialog.content.appendChild(table2);
dialog.add('  ');
event.dialog.open();
event.switchToAuto=function(){
event._result={
bool:false,
};
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
};
event.control=ui.create.control('ok','cancel2',function(link){
var result=event._result;
if(link=='cancel2') result.bool=false;
else{
if(!result.number||!result.suit) return;
result.bool=true;
}
event.dialog.close();
event.control.close();
game.resume();
_status.imchoosing=false;
});
for(var i=0;i<event.dialog.buttons.length;i++){
event.dialog.buttons[i].classList.add('selectable');
}
game.pause();
game.countChoose();
};
if(event.isMine()){
chooseButton(player,str);
}
else if(event.isOnline()){
event.player.send(chooseButton,event.player,str);
event.player.wait();
game.pause();
}
else{
switchToAuto();
}
'step 1'
var map=event.result||result;
if(map.bool){
player.awakenSkill('misuzu_zhongyuan');
player.logSkill('misuzu_zhongyuan',player);
game.log(player,'将判定结果修改为了','#g'+get.translation(result.suit+2)+get.strNumber(result.number));
trigger.fixedResult={
suit:result.suit,
color:get.color({suit:result.suit}),
number:result.number,
};
player.popup(get.translation(result.suit+2)+get.strNumber(result.number),'thunder');
event.getParent('arrangeTrigger').finish();
}
},
},
chihaya_liewu:{
derivation:'chihaya_huairou',
mod:{
@ -12423,6 +12986,8 @@ game.import('character',function(lib,game,ui,get,ai,_status){
key_youta:'成神阳太',
key_rumi:'七濑留美',
key_chihaya:'凤千早',
key_yukito:'国崎往人',
key_crow:'小空',
lucia_duqu:'毒躯',
lucia_duqu_info:'锁定技,①当你对其他角色造成伤害或受到其他角色的伤害时,你和对方各获得一张花色点数随机的【毒】。<br>②当你因【毒】失去体力时,你改为回复等量的体力。<br>③当你处于濒死状态时,你可以使用一张【毒】(每回合限一次)。',
lucia_zhenren:'振刃',
@ -12742,6 +13307,12 @@ game.import('character',function(lib,game,ui,get,ai,_status){
chihaya_youfeng_info:'转换技每轮限一次你可以加1点体力上限视为使用一张普通锦囊牌每轮限一次你可以废除你的一个装备栏视为使用一张基本牌。',
chihaya_huairou:'怀柔',
chihaya_huairou_info:'出牌阶段,你可以重铸装备牌。',
yukito_kongwu:'控物',
yukito_kongwu_info:'出牌阶段限一次你可以表演《小空飞天》。若如此做你从以下项目中随机选择X项并执行其中的一项①令一名角色摸两张牌。②对一名角色造成1点伤害。③令一名已受伤的角色回复1点体力。④弃置一名角色区域内的两张牌。⑤移动场上的一张牌。若X=0则你弃置两张牌。X为你的得分',
yukito_yaxiang:'鸦翔',
yukito_yaxiang_info:'限定技当有角色进入濒死状态时你可移去此武将牌然后令该角色将体力值回复至3点弃置判定区的所有牌并获得技能〖终愿〗。',
misuzu_zhongyuan:'终愿',
misuzu_zhongyuan_info:'限定技。当你的判定结果生效时,你可将判定结果改为任意花色和点数并结束此时机。',
key_kud:'库特莉亚芙卡',
kud_qiaoshou:'巧手',

View File

@ -7623,7 +7623,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yanghuiyu:'羊徽瑜',
hongyi:'弘仪',
hongyi2:'弘仪',
hongyi_info:'出牌阶段限一次,你可以选择一名其他角色X为场上已阵亡的角色数且至多为2。你的下回合开始前,该角色造成伤害时进行判定,若结果为:黑色,此伤害-1。红色受到伤害的角色摸一张牌。',
hongyi_info:'出牌阶段限一次,你可以选择一名其他角色。你的下回合开始前,该角色造成伤害时进行判定,若结果为:黑色,此伤害-1。红色受到伤害的角色摸一张牌。',
requanfeng:'劝封',
requanfeng_gain:'劝封',
requanfeng_info:'限定技。①其他角色死亡时你可失去〖弘仪〗然后获得其武将牌上的所有非主公技非隐匿技和非Charlotte技加1点体力上限并回复1点体力。②当你处于濒死状态时你可以加2点体力上限然后回复4点体力。',

View File

@ -25,9 +25,9 @@ window.noname_character_rank={
'chunyuqiong',
'yangbiao',
'zhaoxiang',
'guozhao',
'sp_xiahoushi',
'ns_zhangwei',
'wanglang',
'key_mio',
'key_midori',
'key_yuri',
@ -85,9 +85,9 @@ window.noname_character_rank={
'shen_guanyu',
'shen_caocao',
'shen_caopi',
'liubian',
'majun',
'jiakui',
'guozhao',
'ol_yuanshao',
'caoying',
'simahui',
@ -99,6 +99,7 @@ window.noname_character_rank={
'key_inari',
'key_shiina',
'key_kud',
'key_yukito',
],
a:[
'diy_zaozhirenjun',
@ -240,13 +241,13 @@ window.noname_character_rank={
're_zuoci',
'sunhao',
'shixie',
'wanglang',
'ol_zhangchangpu',
'shamoke',
'diy_wenyang',
'xin_lingtong',
'wolongfengchu',
'yanghuiyu',
'liubian',
'key_misuzu',
'key_sunohara',
'key_umi',
@ -1312,6 +1313,7 @@ window.noname_character_rank={
'key_hiroto',
'key_rumi',
'key_chihaya',
'key_yukito',
'kaisa',
],
rare:[

View File

@ -103,7 +103,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
yanbaihu:['male','qun',4,['zhidao','jili']],
chengyu:['male','wei',3,['shefu','benyu']],
wanglang:['male','wei',3,['gushe','jici']],
wanglang:['male','wei',3,['regushe','rejici']],
sp_pangde:['male','wei',4,['mashu','juesi']],
sp_jiaxu:['male','wei',3,['zhenlue','jianshu','yongdi']],
@ -894,7 +894,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
td.link=i;
td.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
for(var j in lib.element.button){
td[j]=lib.element.button[i];
td[j]=lib.element.button[j];
}
table.appendChild(td);
dialog.buttons.add(td);
@ -1091,7 +1091,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[i];
next[j]=lib.element.button[j];
}
choiceList.buttons.add(next.firstChild);
}
@ -7287,6 +7287,133 @@ game.import('character',function(lib,game,ui,get,ai,_status){
expose:0.2
}
},
regushe:{
audio:'gushe',
enable:'phaseUse',
filterTarget:function(card,player,target){
return player.canCompare(target);
},
selectTarget:[1,3],
filter:function(event,player){
return (player.countMark('regushe')+player.countMark('regushe2')<7)&&player.countCards('h')>0;
},
multitarget:true,
multiline:true,
content:function(){
player.addTempSkill('regushe2');
player.chooseToCompare(targets).callback=lib.skill.regushe.callback;
},
intro:{
name:'饶舌',
content:'mark'
},
callback:function(){
'step 0'
if(event.num1<=event.num2){
target.chat(lib.skill.gushe.chat[player.countMark('regushe')]);
game.delay();
player.addMark('regushe',1);
if(player.countMark('regushe')>=7){
player.die();
}
}
else player.addMark('regushe2',1,false);
'step 1'
if(event.num1>=event.num2){
target.chooseToDiscard('he','弃置一张牌,或令'+get.translation(player)+'摸一张牌').set('ai',function(card){
if(_status.event.goon) return 6-get.value(card);
return 0;
}).set('goon',get.attitude(target,player)<0);
}
else event.goto(3);
'step 2'
if(!result.bool){
player.draw();
}
'step 3'
if(event.num1<=event.num2){
player.chooseToDiscard('he','弃置一张牌,或摸一张牌').set('ai',function(){return -1;});
}
else event.finish();
'step 4'
if(!result.bool) player.draw();
},
ai:{
order:7,
result:{
target:function(player,target){
var num=ui.selected.targets.length+1;
if(num+player.countMark('regushe')<=6) return -1;
var hs=player.getCards('h');
for(var i=0;i<hs.length;i++){
if(get.value(hs[i])<=6){
switch(hs[i].number){
case 13:return -1;
case 12:if(player.countMark('regushe')+num<=8) return -1;break;
case 11:if(player.countMark('regushe')+num<=7) return -1;break;
default:if(hs[i].number>5&&player.countMark('regushe')+num<=6) return -1;
}
}
}
return 0;
},
}
},
marktext:'饶',
},
regushe2:{
charlotte:true,
onremove:true,
},
rejici:{
audio:'jici',
trigger:{
player:'compare',
target:'compare',
},
forced:true,
filter:function(event,player){
if(player!=event.target&&event.iwhile) return false;
return (player==event.player?event.num1:event.num2)<=player.countMark('regushe');
},
content:function(){
trigger[player==trigger.player?'num1':'num2']+=player.countMark('regushe');
game.log(player,'的拼点牌点数+'+player.countMark('regushe'));
game.delayx();
var cards=[trigger.card1];
if(trigger.cardlist) cards.addArray(trigger.cardlist);
else cards.push(trigger.card2);
cards.sort(function(a,b){
return get.number(b)-get.number(a);
});
var num=get.number(cards[0]);
for(var i=1;i<cards.length;i++){
if(get.number(cards[i])<num){
cards.splice(i);
break;
}
}
cards=cards.filterInD();
if(cards.length) player.gain(cards,'gain2');
},
group:'rejici2',
},
rejici2:{
trigger:{player:'die'},
forced:true,
forceDie:true,
skillAnimation:true,
animationColor:'water',
filter:function(event,player){
return event.source&&event.source.isIn();
},
logTarget:'source',
content:function(){
var num=7-player.countMark('regushe');
if(num>0) trigger.source.chooseToDiscard(num,true,'he');
trigger.source.loseHp();
},
},
gushe:{
audio:2,
enable:'phaseUse',
@ -7433,7 +7560,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(!player.storage.shefu2) player.storage.shefu2=[];
},
filter:function(event,player){
return player.countCards('h')>0;
return player.countCards('he')>0;
},
intro:{
content:'cards',
@ -7500,7 +7627,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
if(result.bool){
player.storage.shefu2.push(result.links[0][2]);
player.logSkill('shefu');
player.chooseCard('h','选择一张牌作为“伏兵”',true);
player.chooseCard('he','选择一张牌作为“伏兵”',true);
if(player.isOnline2()){
player.send(function(storage){
game.me.storage.shefu2=storage;
@ -7528,7 +7655,9 @@ game.import('character',function(lib,game,ui,get,ai,_status){
audio:'shefu',
filter:function(event,player){
if(_status.currentPhase==player) return false;
return player.storage.shefu2&&player.storage.shefu2.contains(event.card.name);
return player.storage.shefu2&&player.storage.shefu2.contains(event.card.name)&&event.player.getHistory('lose',function(evt){
return evt.getParent()==event&&evt.hs&&evt.hs.length==event.cards.length;
}).length;
},
direct:true,
content:function(){
@ -7571,7 +7700,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
next.set('effect',effect);
"step 1"
if(result.bool){
player.logSkill('shefu');
player.logSkill('shefu',trigger.player);
var index=player.storage.shefu2.indexOf(trigger.card.name);
if(index!=-1){
var card=player.storage.shefu[index];
@ -7594,6 +7723,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
}
trigger.targets.length=0;
trigger.all_excluded=true;
if(trigger.player==_status.currentPhase) trigger.player.addTempSkill('baiban');
}
},
ai:{
@ -10361,7 +10491,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[i];
next[j]=lib.element.button[j];
}
choiceList.buttons.add(next.firstChild);
}
@ -15941,6 +16071,11 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jianshu_info:'限定技,出牌阶段,你可以将一张黑色手牌交给一名其他角色,并选择另一名其他角色,然后令这两名角色拼点。赢的角色弃置两张牌,没赢的角色失去一点体力。',
yongdi:'拥嫡',
yongdi_info:'限定技准备阶段开始时你可令一名其他男性角色增加一点体力上限并回复1点体力然后若该角色的武将牌上有主公技且其不为主公其获得此主公技。',
regushe:'鼓舌',
regushe_info:'出牌阶段若X小于7则你可以用一张手牌与至多三名角色同时拼点然后依次结算拼点结果没赢的角色选择一项1.弃置一张牌2.令你摸一张牌。若你没赢你获得一个“饶舌”标记。当你获得第7个“饶舌”标记时你死亡。X为你的“饶舌”标记数与本回合因“鼓舌”拼点而胜利的次数之和',
rejici:'激词',
rejici2:'激词',
rejici_info:'锁定技当你展示拼点牌后若此牌的点数不大于X则你令此牌点数+X并获得此次拼点中原点数最大的拼点牌。',
gushe:'鼓舌',
gushe_bg:'舌',
gushe_info:'出牌阶段限一次你可以用一张手牌与至多三名角色同时拼点然后依次结算拼点结果没赢的角色选择一项1.弃置一张牌2.令你摸一张牌。若你没赢你获得一个“饶舌”标记。当你获得第7个“饶舌”标记时你死亡。',
@ -15948,7 +16083,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
jici_info:'当你因发动〖鼓舌〗而扣置的拼点牌亮出后若点数小于X你可令点数+X若点数等于X你可令你本回合发动〖鼓舌〗的次数上限+1。X为你“饶舌”标记的数量',
shefu:'设伏',
shefu_bg:'伏',
shefu_info:'结束阶段开始时,你可以将一张手牌移出游戏,称为「伏兵」。然后为「伏兵」记录一个基本牌或锦囊牌的名称(须与其他「伏兵」记录的名称均不同)。你的回合外,当有其他角色使用与你记录的「伏兵」牌名相同的牌时,你可以取消此牌的所有目标,然后移去该「伏兵」',
shefu_info:'结束阶段开始时,你可以将一张牌移出游戏,称为「伏兵」。并为「伏兵」记录一个基本牌或锦囊牌的名称(须与其他「伏兵」记录的名称均不同)。你的回合外,当有其他角色使用与你记录的「伏兵」牌名相同的牌时,你可以取消此牌的所有目标,然后移去该「伏兵」。若此时处于使用者的回合内则你令使用者当前的所有非Charlotte技失效直至回合结束。',
benyu:'贲育',
benyu2:'贲育',
benyu_info:'当你受到伤害后若你的手牌数不大于伤害来源的手牌数你可以将手牌摸至与伤害来源手牌数相同至多摸至5张否则你可以弃置大于伤害来源手牌数的手牌然后对其造成1点伤害。',

View File

@ -173,7 +173,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
var num=Math.min(player.countMark('recangchu'),game.countPlayer(function(current){
return get.attitude(player,current)>0;
}));
if(num) return get.cnNumber(num);
if(num>0) return get.cnNumber(num,true);
return 'cancel2';
});
'step 1'
@ -200,11 +200,15 @@ game.import('character',function(lib,game,ui,get,ai,_status){
complexSelect:true,
position:'he',
ai1:function(card){
if(game.countPlayer(function(current){
return target!=_status.event.player&&get.attitude(_status.event.player,target)>0;
})<=ui.selected.cards.length) return 0;
if(card.name=='shan') return 1;
return Math.random();
},
ai2:function(target){
return get.attitude(_status.event.player,target)+(5-Math.max(4,target.countCards('h')));
if(!target) return 1;
return Math.sqrt(5-Math.max(4,target.countCards('h')))*get.attitude(_status.event.player,target);
},
forced:true,
});
@ -665,7 +669,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
next.firstChild.link=i;
next.firstChild._filterButton=bool;
for(var j in lib.element.button){
next[j]=lib.element.button[i];
next[j]=lib.element.button[j];
}
choiceList.buttons.add(next.firstChild);
}
@ -1379,7 +1383,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
cards.remove(card2);
player.$gain2(cards);
player.gain(cards,'log').gaintag.add('yanxi');
player.gain(card,target,'bySelf','giveAuto').gaintag.add('yanxi');
player.gain(card,target,'bySelf','give').gaintag.add('yanxi');
}
else{
player.popup('杯具');
@ -1445,6 +1449,10 @@ game.import('character',function(lib,game,ui,get,ai,_status){
player.getStat('skill').sanchen--;
}
}
else{
target.draw();
player.getStat('skill').sanchen--;
}
},
ai:{
order:9,
@ -1459,6 +1467,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
intro:{
content:'已发动过#次技能',
},
marktext:'陈',
},
zhaotao:{
trigger:{player:'phaseZhunbeiBegin'},
@ -5841,7 +5850,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
return Math.random();
},
ai2:function(target){
return Math.sqrt(5-Math.max(4,target.countCards('h')))*get.attitude(player,target);
return Math.sqrt(5-Math.max(4,target.countCards('h')))*get.attitude(_status.event.player,target);
},
});
}
@ -6245,7 +6254,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[i];
next[j]=lib.element.button[j];
}
choiceList.buttons.add(next.firstChild);
}
@ -9329,7 +9338,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
xijue_xiaoguo:'骁果',
duyu:'杜预',
sanchen:'三陈',
sanchen_info:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其以此法弃置的牌的类别均不相同,则其摸一张牌。否则你本阶段内不能再发动〖三陈〗。',
sanchen_info:'出牌阶段,你可选择一名本回合内未选择过的角色。其摸三张牌,然后弃置三张牌。若其未以此法弃置牌或以此法弃置的牌的类别均不相同,则其摸一张牌。否则你本阶段内不能再发动〖三陈〗。',
zhaotao:'诏讨',
zhaotao_info:'觉醒技准备阶段若你本局游戏内发动〖三陈〗的次数大于2则你减1点体力上限并获得〖破竹〗。',
pozhu:'破竹',

View File

@ -575,7 +575,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[i];
next[j]=lib.element.button[j];
}
choiceList.buttons.add(next.firstChild);
}
@ -8352,7 +8352,7 @@ game.import('character',function(lib,game,ui,get,ai,_status){
next.firstChild.addEventListener(lib.config.touchscreen?'touchend':'click',ui.click.button);
next.firstChild.link=i;
for(var j in lib.element.button){
next[j]=lib.element.button[i];
next[j]=lib.element.button[j];
}
choiceList.buttons.add(next.firstChild);
}

View File

@ -1,5 +1,5 @@
window.noname_asset_list=[
'v1.9.109.3',
'v1.9.109.3.1',
'audio/background/aozhan_chaoming.mp3',
'audio/background/aozhan_online.mp3',
'audio/background/aozhan_rewrite.mp3',
@ -3811,6 +3811,7 @@ window.noname_asset_list=[
'image/character/mengda.jpg',
'image/character/mifangfushiren.jpg',
'image/character/tangzi.jpg',
'image/character/key_yukito.jpg',
'image/character/baiwuchang.jpg',
'image/character/baosanniang.jpg',

View File

@ -25948,7 +25948,7 @@
init:function(player,skill){
var skills=player.getSkills(true,false);
for(var i=0;i<skills.length;i++){
if(get.skills[i]||lib.skill[skills[i]].charlotte){
if(lib.skill[skills[i]].charlotte){
skills.splice(i--,1);
}
}
@ -31830,6 +31830,9 @@
game.saveConfig('pagecfg'+window.isNonameServer,[lib.configOL,game.roomId,_status.onlinenickname,_status.onlineavatar]);
game.reload();
}
else if(_status.connectMode&&!game.online){
setTimeout(game.reload,15000)
}
},
loop:function(){
var event=_status.event;

View File

@ -1,14 +1,15 @@
window.noname_update={
version:'1.9.109.3',
update:'1.9.109.2',
version:'1.9.109.3.1',
update:'1.9.109.3',
changeLog:[
'国战《不臣篇·上》',
'国崎往人',
'王朗、程昱',
'bug修复',
],
files:[
'card/extra.js',
//'card/extra.js',
//'card/gujian.js',
'card/guozhan.js',
//'card/guozhan.js',
//'card/gwent.js',
//'card/huanlekapai.js',
//'card/mtg.js',
@ -16,7 +17,7 @@ window.noname_update={
//'card/standard.js',
//'card/swd.js',
//'card/yunchou.js',
'card/yingbian.js',
//'card/yingbian.js',
//'card/zhenfa.js',
//'card/zhulu.js',
'character/diy.js',
@ -29,8 +30,8 @@ window.noname_update={
//'character/mtg.js',
//'character/old.js',
//'character/ow.js',
//'character/rank.js',
'character/refresh.js',
'character/rank.js',
//'character/refresh.js',
//'character/shenhua.js',
'character/sp.js',
'character/sp2.js',
@ -49,7 +50,7 @@ window.noname_update={
//'mode/brawl.js',
//'mode/chess.js',
//'mode/doudizhu.js',
'mode/guozhan.js',
//'mode/guozhan.js',
//'mode/identity.js',
//'mode/single.js',
//'mode/stone.js',

Binary file not shown.

After

Width:  |  Height:  |  Size: 288 KiB