'use strict'; mode.identity={ game:{ getIdentityList:function(player){ if(player.identityShown) return; if(player==game.me) return; if(get.config('identity_mode')=='zhong'){ if(game.zhu&&game.zhu.isZhu){ return { fan:'反', zhong:'忠', nei:'内', cai:'猜', } } else{ return { fan:'反', zhong:'忠', nei:'内', zhu:'主', cai:'猜', } } } else{ return { fan:'反', zhong:'忠', nei:'内', cai:'猜', } } }, 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){ game.saveConfig('version',lib.version); 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.touchscreen){ clear(); ui.create.dialog('触屏模式中,下划可以显示菜单,上划可以切换托管,双指单击可以暂停'); ui.dialog.add('
你可以在选项-通用-中更改手势设置'); ui.create.control('继续',step4); // 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(); } else{ game.showChangeLog(); } "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 'sp_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('反贼胜利'); } } game.showIdentity(); if(game.me.identity=='zhu'||game.me.identity=='zhong'){ if(game.zhu.classList.contains('dead')){ game.over(false); } else{ game.over(true); } } else if(game.me.identity=='nei'){ if(get.population('fan')+get.population('zhu')+get.population('zhong')==0){ game.over(true); } else{ game.over(false); } } else{ if(get.population('fan')+get.population('zhong')>0&&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'] }