rehuashen:{
audio:2,
unique:true,
direct:true,
content:function(){
"step 0"
_status.noclearcountdown=true;
event.videoId=lib.status.videoId++;
var cards=player.storage.rehuashen.character.slice(0);
var skills=[];
var sto=player.storage.rehuashen;
for(var i in player.storage.rehuashen.map){
skills.addArray(player.storage.rehuashen.map[i]);
}
var cond='out';
if(event.triggername=='phaseBegin'){
cond='in';
}
skills.randomSort();
skills.sort(function(a,b){
return get.skillRank(b,cond)-get.skillRank(a,cond);
});
event.aiChoice=skills[0];
var choice='更换技能';
if(event.aiChoice==player.storage.rehuashen.current2||get.skillRank(event.aiChoice,cond)<1) choice='弃置化身';
if(player.isOnline2()){
player.send(function(cards,id){
var dialog=ui.create.dialog('是否发动【化身】?',[cards,'character']);
dialog.videoId=id;
},cards,event.videoId);
}
event.dialog=ui.create.dialog(get.prompt('rehuashen'),[cards,'character']);
event.dialog.videoId=event.videoId;
if(!event.isMine()){
event.dialog.style.display='none';
}
if(event.triggername=='rehuashen') event._result={control:'更换技能'};
else player.chooseControl('弃置化身','更换技能','cancel2').set('ai',function(){
return _status.event.choice;
}).set('choice',choice);
"step 1"
event.control=result.control;
if(event.control=='cancel2'){
if(player.isOnline2()){
player.send('closeDialog',event.videoId);
}
delete _status.noclearcountdown;
if(!_status.noclearcountdown){
game.stopCountChoose();
}
event.dialog.close();
event.finish();return;
}
if(!event.logged){player.logSkill('rehuashen');event.logged=true}
var next=player.chooseButton(true).set('dialog',event.videoId);
if(event.control=='弃置化身'){
next.set('selectButton',[1,2]);
next.set('filterButton',function(button){
return button.link!=_status.event.current;
});
next.set('current',player.storage.rehuashen.current);
}
else{
next.set('ai',function(button){
return player.storage.rehuashen.map[button.link].contains(_status.event.choice)?2.5:1+Math.random();
});
next.set('choice',event.aiChoice);
}
var prompt=event.control=='弃置化身'?'选择制衡至多两张化身':'选择要切换的化身';
var func=function(id,prompt){
var dialog=get.idDialog(id);
if(dialog){
dialog.content.childNodes[0].innerHTML=prompt;
}
}
if(player.isOnline2()){
player.send(func,event.videoId,prompt);
}
else if(event.isMine()){
func(event.videoId,prompt);
}
"step 2"
if(result.bool&&event.control!='弃置化身'){
event.card=result.links[0];
var func=function(card,id){
var dialog=get.idDialog(id);
if(dialog){
for(var i=0;i<dialog.buttons.length;i++){
if(dialog.buttons[i].link==card){
dialog.buttons[i].classList.add('selectedx');
}
else{
dialog.buttons[i].classList.add('unselectable');
}
}
}
}
if(player.isOnline2()){
player.send(func,event.card,event.videoId);
}
else if(event.isMine()){
func(event.card,event.videoId);
}
var list=player.storage.rehuashen.map[event.card].slice(0);
list.push('返回');
player.chooseControl(list).set('choice',event.aiChoice).set('ai',function(){
return _status.event.choice;
});
}
else{
lib.skill.rehuashen.removeHuashen(player,result.links.slice(0));
lib.skill.rehuashen.addHuashens(player,result.links.length);
}
"step 3"
if(result.control=='返回'){
var func=function(id){
var dialog=get.idDialog(id);
if(dialog){
for(var i=0;i<dialog.buttons.length;i++){
dialog.buttons[i].classList.remove('selectedx');
dialog.buttons[i].classList.remove('unselectable');
}
}
}
if(player.isOnline2()){
player.send(func,event.videoId);
}
else if(event.isMine()){
func(event.videoId);
}
event._result={control:'更换技能'};
event.goto(1);
return;
}
if(player.isOnline2()){
player.send('closeDialog',event.videoId);
}
event.dialog.close();
delete _status.noclearcountdown;
if(!_status.noclearcountdown){
game.stopCountChoose();
}
if(event.control=='弃置化身') return;
if(player.storage.rehuashen.current!=event.card){
player.storage.rehuashen.current=event.card;
game.broadcastAll(function(player,sex){
player.sex=sex;
},player,lib.character[event.card][0]);
game.log(player,'将性别变为了','#y'+get.translation(lib.character[event.card][0])+'性');
player.changeGroup(lib.character[event.card][1]);
}
var link=result.control;
player.storage.rehuashen.current2=link;
if(!player.additionalSkills.rehuashen||!player.additionalSkills.rehuashen.contains(link)){
player.addAdditionalSkill('rehuashen',link);
player.flashAvatar('rehuashen',event.card);
game.log(player,'获得了技能','#g【'+get.translation(link)+'】');
player.popup(link);
player.syncStorage('rehuashen');
player.updateMarks('rehuashen');
}
},
init:function(player,skill){
if(!player.storage[skill]) player.storage[skill]={
character:[],
map:{},
}
},
group:'rehuashen_init',
trigger:{
player:['phaseBegin','phaseEnd','rehuashen'],
},
filter:function(event,player,name){
return player.storage.rehuashen&&player.storage.rehuashen.character.length>0;
},
banned:['lisu','sp_xiahoudun','xushao','zhoutai','old_zhoutai','shixie'],
addHuashen:function(player){
if(!player.storage.rehuashen) return;
if(!_status.characterlist){
lib.skill.pingjian.initList();
}
_status.characterlist.randomSort();
var bool=false;
for(var i=0;i<_status.characterlist.length;i++){
var name=_status.characterlist[i];
if(name.indexOf('zuoci')!=-1||name.indexOf('key')==0||lib.skill.rehuashen.banned.contains(name)||player.storage.rehuashen.character.contains(name)) continue;
var skills=lib.character[name][3];
for(var j=0;j<skills.length;j++){
var info=lib.skill[skills[j]];
if(info.charlotte||(info.unique&&!info.gainable)||info.juexingji||info.limited||info.zhuSkill||info.hiddenSkill||info.dutySkill) skills.splice(j--,1);
}
if(skills.length){
player.storage.rehuashen.character.push(name);
player.storage.rehuashen.map[name]=skills;
_status.characterlist.remove(name);
return name;
}
}
},
addHuashens:function(player,num){
var list=[];
for(var i=0;i<num;i++){
var name=lib.skill.rehuashen.addHuashen(player);
if(name) list.push(name);
}
if(list.length){
game.log(player,'获得了',get.cnNumber(list.length)+'张','#g化身')
lib.skill.rehuashen.drawCharacter(player,list);
}
},
removeHuashen:function(player,links){
player.storage.rehuashen.character.removeArray(links);
_status.characterlist.addArray(links);
game.log(player,'移去了',get.cnNumber(links.length)+'张','#g化身')
},
drawCharacter:function(player,list){
game.broadcastAll(function(player,list){
if(player.isUnderControl(true)){
var cards=[];
for(var i=0;i<list.length;i++){
var cardname='huashen_card_'+list[i];
lib.card[cardname]={
fullimage:true,
image:'character:'+list[i]
}
lib.translate[cardname]=get.rawName2(list[i]);
cards.push(game.createCard(cardname,'',''));
}
player.$draw(cards,'nobroadcast');
}
},player,list);
},
mark:true,
intro:{
onunmark:function(storage,player){
_status.characterlist.addArray(storage.character);
storage.character=[];
},
mark:function(dialog,storage,player){
if(storage&&storage.current) dialog.addSmall([[storage.current],'character']);
if(storage&&storage.current2) dialog.add('<div><div>【'+get.translation(lib.translate[storage.current2+'_ab']||get.translation(storage.current2).slice(0,2))+'】</div><div>'+get.skillInfoTranslation(storage.current2,player)+'</div></div>');
if(storage&&storage.character.length){
if(player.isUnderControl(true)){
dialog.addSmall([storage.character,'character']);
}
else{
dialog.addText('共有'+get.cnNumber(storage.character.length)+'张“化身”');
}
}
else{
return '没有化身';
}
},
content:function(storage,player){
return '共有'+get.cnNumber(storage.character.length)+'张“化身”'
},
markcount:function(storage,player){
if(storage&&storage.character) return storage.character.length;
return 0;
},
},
},
rehuashen_init:{
trigger:{
global:'phaseBefore',
player:'enterGame',
},
forced:true,
popup:false,
filter:function(event,player){
return (event.name!='phase'||game.phaseNumber==0);
},
content:function(){
lib.skill.rehuashen.addHuashens(player,3);
player.syncStorage('rehuashen');
player.markSkill('rehuashen');
var next=game.createEvent('rehuashen');
next.player=player;
next._trigger=trigger;
next.triggername='rehuashen';
next.setContent(lib.skill.rehuashen.content);
},
},