'use strict';
mode.identity={
game:{
getVideoName:function(){
var str=get.translation(game.me.name);
if(game.me.name2){
str+='/'+get.translation(game.me.name2);
}
var name=[
str,
get.cnNumber(parseInt(get.config('player_number')))+'人'+
get.translation(lib.config.mode)+' - '+lib.translate[game.me.identity+'2']
];
return name;
},
start:function(){
var next=game.createEvent('game',false);
next.content=function(){
"step 0"
var playback=localStorage.getItem(lib.configprefix+'playback');
if(playback){
ui.create.arena();
ui.create.me();
ui.arena.style.display='none';
ui.system.style.display='none';
_status.playback=playback;
localStorage.removeItem(lib.configprefix+'playback');
var store=lib.db.transaction(['video'],'readwrite').objectStore('video');
store.get(parseInt(playback)).onsuccess=function(e){
if(e.target.result){
game.playVideoContent(e.target.result.video);
}
else{
alert('播放失败:找不到录像');
game.reload();
}
}
event.finish();
}
else{
if(get.config('identity_mode')=='zhong'){
game.prepareArena(8);
}
else{
game.prepareArena();
}
if(!lib.config.new_tutorial){
game.delay();
}
}
"step 1"
if(!lib.config.new_tutorial){
var clear=function(){
ui.dialog.close();
while(ui.controls.length) ui.controls[0].close();
};
var clear2=function(){
ui.auto.show();
ui.arena.classList.remove('only_dialog');
};
var step1=function(){
ui.create.dialog('欢迎来到无名杀,是否进入新手向导?');
game.saveConfig('new_tutorial',true);
ui.dialog.add('
跳过后,你可以在选项-其它中重置新手向导');
ui.auto.hide();
ui.create.control('跳过向导',function(){
clear();
clear2();
game.resume();
});
ui.create.control('继续',step2);
}
var step2=function(){
if(lib.config.layout!='phone'){
clear();
ui.create.dialog('如果你在使用手机,可能会觉得按钮有点小'+
',将布局改成移动可以使按钮变大');
ui.dialog.add('
你可以在选项-外观-布局中更改此设置');
var lcontrol=ui.create.control('使用移动布局',function(){
if(lib.config.layout=='phone'){
ui.control.firstChild.firstChild.innerHTML='使用移动布局';
lib.init.layout('mobile');
}
else{
ui.control.firstChild.firstChild.innerHTML='使用默认布局';
lib.init.layout('phone');
}
});
ui.create.control('继续',step3);
}
else{
step3();
}
};
var step3=function(){
if(lib.config.layout=='phone'){
clear();
ui.create.dialog('在移动布局后,点击顶部的左半边或右半边可以显示按钮');
var node=ui.create.div('.tutorial_tap',ui.window);
var nodefunc=function(){
setTimeout(function(){
node.style.top='20px';
node.style.left='10%';
setTimeout(function(){
node.style.transition='all 0.2s';
node.style.opacity=0;
setTimeout(function(){
node.style.opacity='';
setTimeout(function(){
node.style.transition='';
},300);
},300);
},1200);
setTimeout(function(){
node.style.left='calc(90% - 30px)';
setTimeout(function(){
node.style.transition='all 0.2s';
node.style.opacity=0;
setTimeout(function(){
node.style.opacity='';
setTimeout(function(){
node.style.transition='';
},300);
},300);
},1200);
setTimeout(function(){
node.style.top='';
node.style.left='';
},2000);
},2000);
},1000);
};
nodefunc();
var interval=setInterval(nodefunc,7000);
var interval2,node2;
var double=true;
ui.create.control('继续',function(){
if(double){
node2=ui.create.div('.tutorial_tap',ui.window);
ui.refresh(node2);
node2.style.top='20px';
node2.style.left='calc(50% - 15px)';
interval2=setInterval(function(){
node2.style.transition='all 0.2s';
node2.style.opacity=0;
setTimeout(function(){
node2.style.opacity='';
setTimeout(function(){
node2.style.opacity=0;
setTimeout(function(){
node2.style.opacity='';
setTimeout(function(){
node2.style.transition='';
},300);
},300);
},300);
},300);
},3000);
clearInterval(interval);
node.delete();
double=false;
ui.dialog.close();
ui.create.dialog('双击顶部可令界面下移,方便进行标身份等操作');
}
else{
clearInterval(interval2);
node2.delete();
step4();
}
});
}
else{
step4();
}
};
var step4=function(){
clear();
ui.window.classList.add('noclick_important');
ui.click.configMenu();
ui.control.classList.add('noclick_click_important');
ui.control.style.top='calc(100% - 105px)';
ui.create.control('在菜单中,可以进行各项设置',function(){
ui.click.menuTab('选项');
ui.controls[0].replace('如果你感到游戏较卡,可以开启低性能模式',function(){
ui.controls[0].replace('在技能一栏中,可以设置自动发动或双将禁配的技能',function(){
ui.click.menuTab('武将');
ui.controls[0].replace('在武将或卡牌一栏中,单击武将/卡牌可以将其禁用',function(){
ui.click.menuTab('战局');
ui.controls[0].replace('在战局中可以输入游戏命令,或者管理录像',function(){
ui.click.configMenu();
ui.window.classList.remove('noclick_important');
ui.control.classList.remove('noclick_click_important');
ui.control.style.top='';
step5();
});
});
});
});
})
};
var step5=function(){
clear();
ui.create.dialog('如果还有其它问题,欢迎来到百度无名杀吧进行交流');
ui.create.control('完成',function(){
clear();
clear2();
game.resume();
})
};
game.pause();
step1();
}
"step 2"
if(lib.storage.test){
lib.config.game_speed='vfast';
_status.auto=true;
ui.auto.classList.add('glow');
}
game.chooseCharacter();
"step 3"
if(game.players.length==2){
game.showIdentity(true);
}
else{
for(var i=0;i=3){
var skill;
switch(game.zhu.name){
case 'liubei':skill='jizhen';break;
case 'dongzhuo':skill='hengzheng';break;
case 'sunquan':skill='batu';break;
case 'diy_zhangjiao':skill='tiangong';break;
case 'liushan':skill='shengxi';break;
case 'sunce':skill='ciqiu';break;
case 'yuanshao':skill='geju';break;
case 're_caocao':skill='dangping';break;
case 'caopi':skill='junxing';break;
case 'liuxie':skill='moukui';break;
default:skill='tianming';break;
}
game.zhu.addSkill(skill);
game.zhu.storage.enhance_zhu=skill;
}
if(lib.storage.test){
var str='';
for(var i=0;i0) return;
if(game.zhong){
game.zhong.identity='zhong';
}
if(lib.storage.test){
if(game.zhu.isAlive()){
console.log('主忠胜利');
}
else if(game.players[0].identity=='nei'&&game.players.length==1){
console.log('内奸胜利');
}
else{
console.log('反贼胜利');
}
}
for(var i=0;i0&&game.zhu.classList.contains('dead')){
game.over(true);
}
else{
game.over(false);
}
}
},
chooseCharacter:function(){
var next=game.createEvent('chooseCharacter',false);
next.showConfig=true;
next.addPlayer=function(player){
var list=lib.config.mode_config.identity.identity[game.players.length-3].slice(0);
var list2=lib.config.mode_config.identity.identity[game.players.length-2].slice(0);
for(var i=0;i4){
player.hp++;
player.maxHp++;
player.update();
}
}
else if(player.identity=='zhong'&&Math.random()<0.5){
var choice=0;
for(var i=0;i4){
game.me.hp++;
game.me.maxHp++;
game.me.update();
}
for(var i=0;i0){
for(var i=0;i0&&!this.spy){
if(effect<1) c=0.5;
else c=1;
if(targets.length==1&&targets[0]==this);
else if(targets.length==1) this.ai.shown+=0.2*c;
else this.ai.shown+=0.1*c;
}
else if(effect<0&&this==game.me&&game.me.identity!='nei'){
if(targets.length==1&&targets[0]==this);
else if(targets.length==1) this.ai.shown-=0.2;
else this.ai.shown-=0.1;
}
else if(this.spy){
if(this.ai.shown>0.5) this.ai.shown=0.5;
if(targets.length==1&&targets[0]!=this) this.ai.shown-=0.2;
else this.ai.shown-=0.1;
}
}
if(this!=game.me) this.ai.shown*=2;
if(this.ai.shown>0.95) this.ai.shown=0.95;
if(this.ai.shown<-0.5) this.ai.shown=-0.5;
},
}
},
ai:{
get:{
attitude:function(from,to){
var x=0,num=0,temp,i;
if(_status.ai.customAttitude){
for(i=0;i<_status.ai.customAttitude.length;i++){
temp=_status.ai.customAttitude[i](from,to);
if(temp!=undefined){
x+=temp;
num++;
}
}
}
if(num){
return x/num;
}
var difficulty=0;
if(to==game.me) difficulty=2-get.difficulty();
if(get.config('ai_identity')||from==to||!lib.config.ai_guess||(to.identityShown&&!to.spy)){
return ai.get.realAttitude(from,to)+difficulty*1.5;
}
else{
if(from.identity=='zhong'&&to.ai.shown==0&&from.ai.tempIgnore&&
!from.ai.tempIgnore.contains(to)){
for(var i=0;i1) return 0;
return Math.min(3,get.population('fan'));
case 'fan': return -4;
}
break;
case 'zhong':case 'mingzhong':
switch(identity2){
case 'zhu': return 10;
case 'zhong':case 'mingzhong': return 4;
case 'nei':
if(get.population('fan')==0) return -2;
return Math.min(3,-situation);
case 'fan': return -8;
}
break;
case 'nei':
if(identity2=='zhu'&&game.players.length==2) return -10;
var strategy=get.aiStrategy();
if(strategy==4){
if(from==to) return 10;
return 0;
}
var num;
switch(identity2){
case 'zhu':
if(strategy==6) return -1;
if(strategy==5) return 10;
if(to.hp<=0) return 10;
if(situation>1) num=0;
else num=get.population('fan')+Math.max(0,3-game.zhu.hp);
if(strategy==2) num--;
if(strategy==3) num++;
return num;
case 'zhong':
if(strategy==5) return Math.min(0,-situation);
if(strategy==6) return Math.max(-1,-situation);
if(get.population('fan')==0) num=-5;
else if(situation<=0) num=0;
else if(game.zhu&&game.zhu.hp<2) num=0;
else if(game.zhu&&game.zhu.hp==2) num=-1;
else if(game.zhu&&game.zhu.hp<=2&&situation>1) num=-1;
else num=-2;
if(zhongmode&&situation<2){
num=4;
}
if(strategy==2) num--;
if(strategy==3) num++;
return num;
case 'mingzhong':
if(strategy==5) return Math.min(0,-situation);
if(strategy==6) return Math.max(-1,-situation);
if(get.population('fan')==0) num=-5;
else if(situation<=0) num=0;
else num=-3;
if(strategy==2) num--;
if(strategy==3) num++;
return num;
case 'nei':
if(from==to) return 10;
if(from.ai.friend.contains(to)) return 5;
if(get.population('fan')+get.population('zhong')>0) return 0;
return -1;
case 'fan':
if(strategy==5) return Math.max(-1,situation);
if(strategy==6) return Math.min(0,situation);
if((game.zhu&&game.zhu.hp<=2&&situation<0)||situation<-1) num=-3;
else if(situation<0||get.population('zhong')+get.population('mingzhong')==0) num=-2;
else if((game.zhu&&game.zhu.hp>=4&&situation>0)||situation>1) num=1;
else num=0;
if(strategy==2) num++;
if(strategy==3) num--;
return num;
}
break;
case 'fan':
switch(identity2){
case 'zhu':
if(get.population('nei')>0){
if(situation==1) return -6;
if(situation>1) return -5;
}
return -10;
case 'zhong': return -7;
case 'mingzhong':return -5;
case 'nei':
if(get.population('zhong')+get.population('mingzhong')==0) return -7;
if(game.zhu&&game.zhu.hp<=2) return -1;
return Math.min(3,situation);
case 'fan': return 5;
}
}
},
situation:function(absolute){
var i,j,player;
var zhuzhong=0,total=0,zhu,fan=0;
for(i=0;i4){
php=4;
}
j=player.get('h').length+player.get('e').length*1.5+php*2;
if(player.identity=='zhu'){
zhuzhong+=j*1.2+5;
total+=j*1.2+5;
zhu=j;
}
else if(player.identity=='zhong'||player.identity=='mingzhong'){
zhuzhong+=j*0.8+3;
total+=j*0.8+3;
}
else if(player.identity=='fan'){
zhuzhong-=j+4;
total+=j+4;
fan+=j+4;
}
}
if(absolute) return zhuzhong;
var result=parseInt(10*Math.abs(zhuzhong/total));
if(zhuzhong<0) result=-result;
if(!game.zhong){
if(zhu<12&&fan>30) result--;
if(zhu<6&&fan>15) result--;
if(zhu<4) result--;
}
return result;
},
population:function(identity){
return get.population(identity);
}
}
},
ui:{
click:{
identity:function(){
if(_status.dragged) return;
_status.clicked=true;
if(this.parentNode.identityShown) return;
if(this.parentNode==game.me) return;
if(get.config('identity_mode')=='zhong'){
switch(this.firstChild.innerHTML){
case '猜':this.firstChild.innerHTML='反';this.dataset.color='fan';break;
case '反':this.firstChild.innerHTML='忠';this.dataset.color='zhong';break;
case '忠':this.firstChild.innerHTML='内';this.dataset.color='nei';break;
case '内':this.firstChild.innerHTML='主';this.dataset.color='zhu';break;
case '主':this.firstChild.innerHTML='猜';this.dataset.color='cai';break;
}
}
else{
switch(this.firstChild.innerHTML){
case '猜':this.firstChild.innerHTML='反';this.dataset.color='fan';break;
case '反':this.firstChild.innerHTML='忠';this.dataset.color='zhong';break;
case '忠':this.firstChild.innerHTML='内';this.dataset.color='nei';break;
case '内':this.firstChild.innerHTML='猜';this.dataset.color='cai';break;
}
}
}
}
},
config:['player_number','double_character','double_hp',
'ban_weak','enhance_zhu','free_choose','change_identity',
'change_choice','change_card','dierestart','swap','revive',
'auto_identity','ai_strategy','ai_identity','difficulty']
}