'use strict'; mode.identity={ start:function(){ "step 0" if(!lib.config.new_tutorial){ ui.arena.classList.add('only_dialog'); } _status.mode=get.config('identity_mode'); "step 1" var playback=localStorage.getItem(lib.configprefix+'playback'); if(playback){ 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(_status.mode=='zhong'){ game.prepareArena(8); } else{ game.prepareArena(); } if(!lib.config.new_tutorial){ game.delay(); } } "step 2" 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('<div class="text center">跳过后,你可以在选项-其它中重置新手向导'); 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('<div class="text center">你可以在选项-外观-布局中更改此设置'); 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('<div class="text center">你可以在选项-通用-中更改手势设置'); ui.create.control('继续',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 3" if(lib.storage.test){ lib.config.game_speed='vfast'; _status.auto=true; ui.auto.classList.add('glow'); } game.chooseCharacter(); "step 4" if(ui.coin){ _status.coinCoeff=get.coinCoeff([game.me.name]); } if(game.players.length==2){ game.showIdentity(true); } else{ for(var i=0;i<game.players.length;i++){ game.players[i].ai.shown=0; } } game.zhu.ai.shown=1; if(game.zhu2){ game.zhong=game.zhu; game.zhu=game.zhu2; delete game.zhu2; } if(_status.mode!='zhong'&&get.config('enhance_zhu')&&get.population('fan')>=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){ if(typeof lib.storage.test=='string'){ if(Math.random()<0.5) game.me.next.init(lib.storage.test); else game.me.init(lib.storage.test); } var str=''; for(var i=0;i<game.players.length;i++){ str+=get.translation(game.players[i]); if(game.players[i]==game.zhu) str+='(主)'; str+=' '; } console.log(str); game.showIdentity(); } event.trigger('gameStart'); var players=get.players(lib.sort.position); var info=[]; for(var i=0;i<players.length;i++){ info.push({ name:players[i].name, name2:players[i].name2, identity:players[i].identity }); } _status.videoInited=true, game.addVideo('init',null,info); game.gameDraw(game.zhong||game.zhu); game.phaseLoop(game.zhong||game.zhu); }, game:{ getIdentityList:function(player){ if(player.identityShown) return; if(player==game.me) return; if(_status.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; }, addRecord:function(bool){ if(typeof bool=='boolean'){ var data=lib.config.gameRecord.identity.data; var identity=game.me.identity; if(identity=='mingzhong'){ identity='zhong'; } if(!data[identity]){ data[identity]=[0,0]; } if(bool){ data[identity][0]++; } else{ data[identity][1]++; } var list=['zhu','zhong','nei','fan']; var str=''; for(var i=0;i<list.length;i++){ if(data[list[i]]){ str+=lib.translate[list[i]+'2']+':'+data[list[i]][0]+'胜'+' '+data[list[i]][1]+'负<br>'; } } lib.config.gameRecord.identity.str=str; game.saveConfig('gameRecord',lib.config.gameRecord); } }, showIdentity:function(me){ for(var i=0;i<game.players.length;i++){ // if(me===false&&game.players[i]==game.me) continue; game.players[i].identityShown=true; game.players[i].ai.shown=1; game.players[i].setIdentity(game.players[i].identity); if(game.players[i].identity=='zhu'){ game.players[i].isZhu=true; } } if(_status.clickingidentity){ for(var i=0;i<_status.clickingidentity[1].length;i++){ _status.clickingidentity[1][i].delete(); _status.clickingidentity[1][i].style.transform=''; } delete _status.clickingidentity; } }, checkResult:function(){ if(game.zhu.isAlive()&&get.population('fan')+get.population('nei')>0) 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(game.players.length==1){ game.over(true); } else{ game.over(false); } } else{ if((get.population('fan')+get.population('zhong')>0||get.population('nei')>1)&& 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;i<list.length;i++) list2.remove(list[i]); player.identity=list2[0]; player.setIdentity('cai'); }; next.removePlayer=function(){ return game.players.randomGet(game.me,game.zhu); }; next.ai=function(player,list,list2,back){ if(_status.event.zhongmode){ if(get.config('double_character')){ player.init(list[0],list[1]); } else{ player.init(list[0]); } if(player.identity=='mingzhong'){ player.hp++; player.maxHp++; player.update(); } } else if(player.identity=='zhu'){ list2.randomSort(); var choice,choice2; if(!_status.event.zhongmode&&Math.random()-0.8<0&&list2.length){ choice=list2[0]; choice2=list[0]; if(choice2==choice){ choice2=list[1]; } } else{ choice=list[0]; choice2=list[1]; } if(get.config('double_character')){ player.init(choice,choice2); } else{ player.init(choice); } if(game.players.length>4){ player.hp++; player.maxHp++; player.update(); } } else if(player.identity=='zhong'&&Math.random()<0.5){ var choice=0; for(var i=0;i<list.length;i++){ if(lib.character[list[i]][1]==game.zhu.group){ choice=i;break; } } if(get.config('double_character')){ player.init(list[choice],list[choice==0?choice+1:choice-1]); } else{ player.init(list[choice]); } } else{ if(get.config('double_character')){ player.init(list[0],list[1]); } else{ player.init(list[0]); } } if(back){ list.remove(player.name); list.remove(player.name2); for(var i=0;i<list.length;i++){ back.push(list[i]); } } } next.content=function(){ "step 0" var i; var list; var list2=[]; var list3=[]; var identityList; var chosen=lib.config.continue_name||[]; game.saveConfig('continue_name'); event.chosen=chosen; if(_status.mode=='zhong'){ event.zhongmode=true; identityList=['zhu','zhong','mingzhong','nei','fan','fan','fan','fan']; } else{ identityList=lib.config.mode_config.identity.identity[game.players.length-2].slice(0); if(get.config('double_nei')){ switch(get.config('player_number')){ case '8': identityList.remove('fan'); identityList.push('nei'); break; case '7': identityList.remove('zhong'); identityList.push('nei'); break; case '6': identityList.remove('fan'); identityList.push('nei'); break; case '5': identityList.remove('fan'); identityList.push('nei'); break; case '4': identityList.remove('zhong'); identityList.push('nei'); break; case '3': identityList.remove('fan'); identityList.push('nei'); break; } } } var addSetting=function(dialog){ dialog.add('选择身份'); var table=document.createElement('table'); table.style.margin='0 auto'; table.style.maxWidth='400px'; var tr=document.createElement('tr'); table.appendChild(tr); var list; if(event.zhongmode){ list=['random','zhu','mingzhong','zhong','nei','fan']; } else{ list=['random','zhu','zhong','nei','fan']; } for(var i=0;i<list.length;i++){ var td=document.createElement('td'); tr.appendChild(td); td.link=list[i]; td.style.fontSize='25px'; td.style.fontFamily='xinwei'; if(td.link===game.me.identity){ td.classList.add('thundertext'); } td.innerHTML=get.translation(list[i]+'2'); 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); if(game.zhu.name){ game.zhu.uninit(); delete game.zhu.isZhu; delete game.zhu.identityShown; } dialog.close(); _status.event=_status.event.parent; _status.event.step=0; if(this.link!='random'){ _status.event.identity=this.link; } else{ delete _status.event.identity; } game.resume(); }); } dialog.content.appendChild(table); dialog.add('选择座位'); var seats=document.createElement('table'); seats.style.margin='0 auto'; seats.style.maxWidth=(60*(parseInt(get.config('player_number'))-1))+'px'; var tr=document.createElement('tr'); seats.appendChild(tr); for(var i=2;i<=game.players.length;i++){ var td=document.createElement('td'); tr.appendChild(td); td.style.width='40px'; td.style.fontSize='25px'; td.style.fontFamily='xinwei'; td.innerHTML=get.cnNumber(i,true); td.link=i-1; if(get.distance(game.zhu,game.me,'absolute')===i-1){ td.classList.add('thundertext'); } td.addEventListener(lib.config.touchscreen?'touchend':'click',function(){ if(_status.dragged) return; if(_status.justdragged) return; if(get.distance(game.zhu,game.me,'absolute')==this.link) return; var current=this.parentNode.querySelector('.thundertext'); if(current){ current.classList.remove('thundertext'); } this.classList.add('thundertext'); for(var i=0;i<game.players.length;i++){ if(get.distance(game.players[i],game.me,'absolute')==this.link){ game.swapSeat(game.zhu,game.players[i],false);return; } } }); } dialog.content.appendChild(seats); if(game.me==game.zhu){ seats.previousSibling.style.display='none'; seats.style.display='none'; } dialog.add(ui.create.div('.placeholder')); dialog.add(ui.create.div('.placeholder')); dialog.add(ui.create.div('.placeholder')); }; var removeSetting=function(){ var dialog=_status.event.dialog; if(dialog.querySelector('table')&&!get.config('change_identity')){ dialog.querySelector('table').previousSibling.remove(); dialog.querySelector('table').nextSibling.remove(); dialog.querySelector('table').nextSibling.remove(); dialog.querySelector('table').nextSibling.remove(); dialog.querySelector('table').nextSibling.remove(); dialog.querySelector('table').nextSibling.remove(); dialog.querySelector('table').remove(); } }; event.addSetting=addSetting; event.removeSetting=removeSetting; event.list=[]; identityList.randomSort(); if(event.identity){ identityList.remove(event.identity); identityList.unshift(event.identity); delete event.identity; } for(i=0;i<game.players.length;i++){ game.players[i].identity=identityList[i]; game.players[i].setIdentity('cai'); if(event.zhongmode){ if(identityList[i]=='mingzhong'){ game.zhu=game.players[i]; } else if(identityList[i]=='zhu'){ game.zhu2=game.players[i]; } } else{ if(identityList[i]=='zhu'){ game.zhu=game.players[i]; } } game.players[i].identityShown=false; } game.zhu.setIdentity(); game.zhu.identityShown=true; game.zhu.isZhu=(game.zhu.identity=='zhu'); game.me.setIdentity(); for(i in lib.character){ if(chosen.contains(i)) continue; if(lib.character[i][4]&&lib.character[i][4].contains('forbidai')) continue; if(lib.config.forbidai.contains(i)) continue; if(lib.config.forbidall.contains(i)) continue; if(lib.config.banned.contains(i)) continue; if(!get.config('double_character')&&get.config('ban_weak')&& (lib.config.forbidsingle.contains(i)||lib.rank.c.contains(i)||lib.rank.d.contains(i))) continue; if(get.config('ban_strong')&&(lib.rank.s.contains(i)||lib.rank.ap.contains(i))) continue; if(get.config('double_character')&&lib.config.forbiddouble.contains(i)) continue; event.list.push(i); if(lib.character[i][4]&&lib.character[i][4].contains('zhu')){ list2.push(i); } else{ list3.push(i); } } event.list.randomSort(); list3.randomSort(); var num=get.config('choice_'+game.me.identity); if(event.zhongmode){ num=3; } if(game.zhu!=game.me){ event.ai(game.zhu,event.list,list2) event.list.remove(game.zhu.name); event.list.remove(game.zhu.name2); list=event.list.splice(0,num); } else{ if(event.zhongmode){ list=list3.slice(0,6); } else{ list=list2.concat(list3.slice(0,num)); } } var dialog=ui.create.dialog('选择角色','hidden',[list,'character']); if(get.config('change_identity')){ addSetting(dialog); } if(!event.chosen.length){ game.me.chooseButton(dialog,true).selectButton=function(){ return get.config('double_character')?2:1 }; } ui.create.cheat=function(){ _status.createControl=ui.cheat2; ui.cheat=ui.create.control('更换',function(){ if(ui.cheat2&&ui.cheat2.dialog==_status.event.dialog){ return; } if(game.changeCoin){ game.changeCoin(-3); } if(game.zhu!=game.me){ event.list=event.list.concat(list); event.list.randomSort(); list=event.list.splice(0,num); } else{ list3.randomSort(); list=list3.slice(0,num).concat(list2); } _status.event.dialog.close(); _status.event.dialog=ui.create.dialog('选择角色',[list,'character']); if(get.config('change_identity')){ addSetting(_status.event.dialog); } game.uncheck(); game.check(); }); delete _status.createControl; }; event.dialogxx=ui.create.characterDialog(); ui.create.cheat2=function(){ ui.cheat2=ui.create.control('自由选将',function(){ if(this.dialog==_status.event.dialog){ if(game.changeCoin){ game.changeCoin(50); } this.dialog.close(); _status.event.dialog=this.backup; this.backup.open(); delete this.backup; game.uncheck(); game.check(); if(ui.cheat){ ui.cheat.style.opacity=1; } if(ui.cheat2x){ ui.cheat2x.close(); delete ui.cheat2x; } } else{ if(game.changeCoin){ game.changeCoin(-10); } ui.cheat2x=ui.create.groupControl(_status.event.parent.dialogxx); this.backup=_status.event.dialog; _status.event.dialog.close(); _status.event.dialog=_status.event.parent.dialogxx; this.dialog=_status.event.dialog; this.dialog.open(); game.uncheck(); game.check(); if(ui.cheat){ ui.cheat.style.opacity=0.6; } } }); } if(!ui.cheat&&get.config('change_choice')) ui.create.cheat(); if(!ui.cheat2&&get.config('free_choose')) ui.create.cheat2(); "step 1" if(ui.cheat){ ui.cheat.close(); delete ui.cheat; } if(ui.cheat2){ ui.cheat2.close(); delete ui.cheat2; } if(ui.cheat2x){ ui.cheat2x.close(); delete ui.cheat2x; } if(event.chosen.length){ game.me.init(event.chosen[0],event.chosen[1]); } else if(result.buttons.length==2){ game.me.init(result.buttons[0].link,result.buttons[1].link) } else{ game.me.init(result.buttons[0].link) } event.list.remove(game.me.name); event.list.remove(game.me.name2); if(game.me==game.zhu&&game.players.length>4){ game.me.hp++; game.me.maxHp++; game.me.update(); } for(var i=0;i<game.players.length;i++){ if(game.players[i]!=game.zhu&&game.players[i]!=game.me){ event.ai(game.players[i],event.list.splice(0,get.config('choice_'+game.players[i].identity)),null,event.list) } } } }, }, translate:{ zhu:"主", zhong:"忠", mingzhong:"忠", nei:"内", fan:"反", cai:"猜", zhu2:"主公", zhong2:"忠臣", mingzhong2:"明忠", nei2:"内奸", fan2:"反贼", random2:"随机", ai_strategy_1:'均衡', ai_strategy_2:'偏反', ai_strategy_3:'偏主', ai_strategy_4:'酱油', ai_strategy_5:'天使', ai_strategy_6:'仇主', }, element:{ player:{ dieSpeak:function(){ // switch(this.identity){ // case 'zhu': this.popup('吾降矣',2000);break; // case 'zhong': this.popup('呃啊',2000);break; // case 'nei': this.popup('啊,被看穿了',2000);break; // case 'fan': this.popup('饶命啊',2000);break; // } }, dieAfter:function(source){ this.dieSpeak(); if(get.config('show_identity')&&!this.identityShown){ this.setIdentity(this.identity); this.identityShown=true; } game.checkResult(); if(game.zhu.isZhu){ if(get.population('zhong')+get.population('nei')==0|| get.population('zhong')+get.population('fan')==0){ game.showIdentity(); } } if(this.identity=='fan'&&source) source.draw(3); else if(this.identity=='zhong'&&source&&source.identity=='zhu'&&source.isZhu){ source.discard(source.get('he')); } if(game.zhu.storage.enhance_zhu&&get.population('fan')<3){ game.zhu.removeSkill(game.zhu.storage.enhance_zhu); delete game.zhu.storage.enhance_zhu; } if(this==game.zhong){ game.zhu.identityShown=true; game.zhu.ai.shown=1; game.zhu.setIdentity(); game.zhu.isZhu=true; delete game.zhong; if(lib.config.animation&&!lib.config.low_performance) game.zhu.$legend(); game.delay(2); game.zhu.playerfocus(1000); if(_status.clickingidentity&&_status.clickingidentity[0]==game.zhu){ for(var i=0;i<_status.clickingidentity[1].length;i++){ _status.clickingidentity[1][i].delete(); _status.clickingidentity[1][i].style.transform=''; } delete _status.clickingidentity; } } if(!this.node.dieidentity){ var node=ui.create.div('.damage.dieidentity',get.translation(this.identity+'2'),this); ui.refresh(node); node.style.opacity=1; this.node.dieidentity=node; } var trans=this.style.transform; if(trans){ if(trans.indexOf('rotateY')!=-1){ this.node.dieidentity.style.transform='rotateY(180deg)'; } else if(trans.indexOf('rotateX')!=-1){ this.node.dieidentity.style.transform='rotateX(180deg)'; } else{ this.node.dieidentity.style.transform=''; } } else{ this.node.dieidentity.style.transform=''; } }, logAi:function(targets,card){ if(this.ai.shown==1) return; if(typeof targets=='number'){ this.ai.shown+=targets; } else{ var effect=0,c,shown; var info=get.info(card); if(info.ai&&info.ai.expose){ this.ai.shown+=info.ai.expose; } if(targets.length>0){ for(var i=0;i<targets.length;i++){ shown=Math.abs(targets[i].ai.shown); if(shown<0.2||targets[i].identity=='nei') c=0; else if(shown<0.4) c=0.5; else if(shown<0.6) c=0.8; else c=1; var eff=ai.get.effect(targets[i],card,this); effect+=eff*c; if(eff==0&&shown==0&&this.identity=='zhong'&&targets[i]!=this){ effect+=0.1; } } } if(effect>0){ 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; } } 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; var marknow=(this!=game.me&&get.config('auto_mark_identity')&&this.ai.identity_mark!='finished'); if(true){ if(marknow&&_status.clickingidentity&&_status.clickingidentity[0]==this){ for(var i=0;i<_status.clickingidentity[1].length;i++){ _status.clickingidentity[1][i].delete(); _status.clickingidentity[1][i].style.transform=''; } delete _status.clickingidentity; } if(!Array.isArray(targets)){ targets=[]; } var effect=0,c,shown; var zhu=game.zhu; if(_status.mode=='zhong'&&!game.zhu.isZhu){ zhu=game.zhong; } if(targets.length==1&&targets[0]==this){ effect=0; } else if(this.identity!='nei'){ if(this.ai.shown>0){ if(this.identity=='fan'){ effect=-1; } else{ effect=1; } } } else if(targets.length>0){ for(var i=0;i<targets.length;i++){ shown=Math.abs(targets[i].ai.shown); if(shown<0.2||targets[i].identity=='nei') c=0; else if(shown<0.4) c=0.5; else if(shown<0.6) c=0.8; else c=1; effect+=ai.get.effect(targets[i],card,this,zhu)*c; } } if(this.identity=='nei'){ if(effect>0){ if(this.ai.identity_mark=='fan'){ if(marknow) this.setIdentity(); this.ai.identity_mark='finished'; } else{ if(marknow) this.setIdentity('zhong'); this.ai.identity_mark='zhong'; } } else if(effect<0&&get.population('fan')>0){ if(this.ai.identity_mark=='zhong'){ if(marknow) this.setIdentity(); this.ai.identity_mark='finished'; } else{ if(marknow) this.setIdentity('fan'); this.ai.identity_mark='fan'; } } } else if(marknow){ if(effect>0&&this.identity!='fan'){ this.setIdentity('zhong'); this.ai.identity_mark='finished'; } else if(effect<0&&this.identity=='fan'){ this.setIdentity('fan'); this.ai.identity_mark='finished'; } } } }, } }, 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(from==to||to.identityShown){ 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;i<game.players.length;i++){ if(game.players[i].ai.shown==0&&game.players[i].identity=='fan'){ return -0.1+difficulty*1.5; } } } var aishown=to.ai.shown; if(to.identity=='nei'&&to.ai.shown<1&&(to.ai.identity_mark=='fan'||to.ai.identity_mark=='zhong')){ aishown=0.5; } else if(aishown==0&&to.identity!='fan'&&to.identity!='zhu'){ var fanshown=true; for(var i=0;i<game.players.length;i++){ if(game.players[i].identity=='fan'&&game.players[i].ai.shown==0&&game.players[i]!=from){ fanshown=false;break; } } if(fanshown) aishown=0.3; } return ai.get.realAttitude(from,to)*aishown+difficulty*1.5; } }, realAttitude:function(from,to){ var situation=ai.get.situation(); var identity=from.identity; var identity2=to.identity; if(identity2=='zhu'&&!to.isZhu){ identity2='zhong'; if(from==to) return 10; } if(from!=to&&to.identity=='nei'&&to.ai.shown<1&&(to.ai.identity_mark=='fan'||to.ai.identity_mark=='zhong')){ identity2=to.ai.identity_mark; } if(from.identity!='nei'&&from!=to&&get.population('fan')==0&&identity2=='zhong'){ for(var i=0;i<game.players.length;i++){ if(game.players[i].identity=='nei'&& game.players[i].ai.identity_mark=='zhong'&& game.players[i].ai.shown<1){ identity2='nei';break; } } } var zhongmode=false; if(!game.zhu.isZhu){ zhongmode=true; } switch(identity){ case 'zhu': switch(identity2){ case 'zhu': return 10; case 'zhong':case 'mingzhong': return 6; case 'nei': if(game.players.length==2) return -10; if(to.identity=='zhong') return 0; if(get.population('fan')==0){ if(to.ai.identity_mark=='zhong'&&to.ai.shown<1) return 0; return -0.5; } if(zhongmode&&to.ai.sizhong&&to.ai.shown<1) return 6; if(get.population('fan')==1&&get.population('nei')==1&&game.players.length==3){ var fan; for(var i=0;i<game.players.length;i++){ if(game.players[i].identity=='fan'){ fan=game.players[i];break; } } if(fan){ if(to.hp>1&&to.hp>fan.hp&&to.num('he')>fan.num('he')){ return -3; } } return 0; } if(situation>1) return 0; return Math.min(3,get.population('fan')); case 'fan': if(get.population('fan')==1&&get.population('nei')==1&&game.players.length==3){ var nei; for(var i=0;i<game.players.length;i++){ if(game.players[i].identity=='nei'){ nei=game.players[i];break; } } if(nei){ if(nei.hp>1&&nei.hp>to.hp&&nei.num('he')>to.num('he')){ return 0; } } return -3; } 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; if(zhongmode&&to.ai.sizhong&&to.ai.shown<1) return 6; 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(get.population('fan')==1){ var fan; for(var i=0;i<game.players.length;i++){ if(game.players[i].identity=='fan'){ fan=game.players[i];break; } } if(fan){ if(to.hp>1&&to.hp>fan.hp&&to.num('he')>fan.num('he')){ return -3; } } return 0; } else{ if(situation>1||get.population('fan')==0) 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(zhongmode){ if(from.ai.sizhong==undefined){ from.ai.sizhong=(Math.random()<0.5); } if(from.ai.sizhong) return 6; } 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 -5; 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 -8; case 'zhong': if(!zhongmode&&game.zhu.hp>=3&&to.hp==1){ return -10; } return -7; case 'mingzhong':return -5; case 'nei': if(zhongmode&&to.ai.sizhong) return -7; if(get.population('fan')==1) return 0; 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;i<game.players.length;i++){ player=game.players[i]; var php=player.hp; if(player.skills.contains('benghuai')&&php>4){ php=4; } else if(php>6){ php=6; } 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); } } }, help:{ '身份模式':'<div style="margin:10px">选项</div><ul style="margin-top:0"><li>加强主公<br>反贼人数多于2时主公会额外增加一个技能(每个主公的额外技能固定,非常备主公增加天命)</ul>'+ '<div style="margin:10px">明忠</div><ul style="margin-top:0"><li>本模式需要8名玩家进行游戏,使用的身份牌为:1主公、2忠臣、4反贼和1内奸。游戏开始时,每名玩家随机获得一个身份,由系统随机选择一名忠臣身份的玩家亮出身份(将忠臣牌正面朝上放在面前),其他身份(包括主公)的玩家不亮出身份。<li>'+ '首先由亮出身份的忠臣玩家随机获得六张武将牌,挑选一名角色,并将选好的武将牌展示给其他玩家。之后其余每名玩家随机获得三张武将牌,各自从其中挑选一张同时亮出<li>'+ '亮出身份牌的忠臣增加1点体力上限。角色濒死和死亡的结算及胜利条件与普通身份局相同。', } }