1 line
7.9 KiB
JavaScript
1 line
7.9 KiB
JavaScript
function enemys(){this.init()}enemys.prototype.init=function(){this.enemys=enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80};enemys.prototype.getEnemys=function(a){if(!core.isset(a)){return this.enemys}return this.enemys[a]};enemys.prototype.hasSpecial=function(a,b){if(a instanceof Array){return a.indexOf(b)>=0}if(typeof a=="number"){return a!=0&&(a%100==b||this.hasSpecial(parseInt(a/100),b))}return false};enemys.prototype.getSpecialText=function(b){var a=core.material.enemys[b];if(!core.isset(a)){return[]}var c=a.special;var d=[];if(this.hasSpecial(c,1)){d.push("先攻")}if(this.hasSpecial(c,2)){d.push("魔攻")}if(this.hasSpecial(c,3)){d.push("坚固")}if(this.hasSpecial(c,4)){d.push("2连击")}if(this.hasSpecial(c,5)){d.push("3连击")}if(this.hasSpecial(c,6)){d.push((a.n||4)+"连击")}if(this.hasSpecial(c,7)){d.push("破甲")}if(this.hasSpecial(c,8)){d.push("反击")}if(this.hasSpecial(c,9)){d.push("净化")}if(this.hasSpecial(c,10)){d.push("模仿")}if(this.hasSpecial(c,11)){d.push("吸血")}if(this.hasSpecial(c,12)){d.push("中毒")}if(this.hasSpecial(c,13)){d.push("衰弱")}if(this.hasSpecial(c,14)){d.push("诅咒")}if(this.hasSpecial(c,15)){d.push("领域")}if(this.hasSpecial(c,16)){d.push("夹击")}if(this.hasSpecial(c,17)){d.push("仇恨")}if(this.hasSpecial(c,18)){d.push("阻击")}if(this.hasSpecial(c,19)){d.push("自爆")}if(this.hasSpecial(c,20)){d.push("无敌")}if(this.hasSpecial(c,21)){d.push("退化")}if(this.hasSpecial(c,22)){d.push("固伤")}if(this.hasSpecial(c,23)){d.push("重生")}return d};enemys.prototype.getSpecialHint=function(a,e){if(!core.isset(e)){var c=[];for(var d=1;d<100;d++){if(this.hasSpecial(a.special,d)){var b=this.getSpecialHint(a,d);if(b!=""){c.push(b)}}}return c}switch(e){case 1:return"先攻:怪物首先攻击";case 2:return"魔攻:怪物无视勇士的防御";case 3:return"坚固:勇士每回合最多只能对怪物造成1点伤害";case 4:return"2连击:怪物每回合攻击2次";case 5:return"3连击:怪物每回合攻击3次";case 6:return(a.n||4)+"连击: 怪物每回合攻击"+(a.n||4)+"次";case 7:return"破甲:战斗前,怪物附加角色防御的"+Math.floor(100*core.values.breakArmor||0)+"%作为伤害";case 8:return"反击:战斗时,怪物每回合附加角色攻击的"+Math.floor(100*core.values.counterAttack||0)+"%作为伤害,无视角色防御";case 9:return"净化:战斗前,怪物附加勇士魔防的"+core.values.purify+"倍作为伤害";case 10:return"模仿:怪物的攻防和勇士攻防相等";case 11:return"吸血:战斗前,怪物首先吸取角色的"+Math.floor(100*a.value||0)+"%生命作为伤害"+(a.add?",并把伤害数值加到自身生命上":"");case 12:return"中毒:战斗后,勇士陷入中毒状态,每一步损失生命"+core.values.poisonDamage+"点";case 13:return"衰弱:战斗后,勇士陷入衰弱状态,攻防暂时下降"+core.values.weakValue+"点";case 14:return"诅咒:战斗后,勇士陷入诅咒状态,战斗无法获得金币和经验";case 15:return"领域:经过怪物周围"+(a.range||1)+"格时自动减生命"+(a.value||0)+"点";case 16:return"夹击:经过两只相同的怪物中间,勇士生命值变成一半";case 17:return"仇恨:战斗前,怪物附加之前积累的仇恨值作为伤害"+(core.flags.hatredDecrease?";战斗后,释放一半的仇恨值":"")+"。(每杀死一个怪物获得"+(core.values.hatred||0)+"点仇恨值)";case 18:return"阻击:经过怪物的十字领域时自动减生命"+(a.value||0)+"点,同时怪物后退一格";case 19:return"自爆:战斗后勇士的生命值变成1";case 20:return"无敌:勇士无法打败怪物,除非拥有十字架";case 21:return"退化:战斗后勇士永久下降"+(a.atkValue||0)+"点攻击和"+(a.defValue||0)+"点防御";case 22:return"固伤:战斗前,怪物对勇士造成"+(a.damage||0)+"点固定伤害,无视勇士魔防。";case 23:return"重生:怪物被击败后,角色转换楼层则怪物将再次出现";default:break}return""};enemys.prototype.canBattle=function(b){var a=this.getDamage(b);return a!=null&&a<core.status.hero.hp};enemys.prototype.getDamage=function(c){var b=core.material.enemys[c];var a=this.calDamage(b,core.status.hero.hp,core.status.hero.atk,core.status.hero.def,core.status.hero.mdef);if(a==null){return null}return a+this.getExtraDamage(b)};enemys.prototype.getExtraDamage=function(b){var a=0;if(this.hasSpecial(b.special,17)){a+=core.getFlag("hatred",0)}if(this.hasSpecial(b.special,22)){a+=b.damage||0}return a};enemys.prototype.nextCriticals=function(h,k){var o=true;k=k||1;var g=core.material.enemys[h];if(this.hasSpecial(g.special,3)||this.hasSpecial(g.special,10)){return[]}var c=this.getDamageInfo(g,core.status.hero.hp,core.status.hero.atk,core.status.hero.def,core.status.hero.mdef);if(c==null){if(core.status.hero.atk<=g.def){return[[g.def+1-core.status.hero.atk,"?"]]}return[]}var d=[],l=null;var f=c.mon_hp,b=core.status.hero.atk,e=g.def,n=c.turn;if(o){for(var m=n-1;m>=1;m--){var i=Math.ceil(f/m)+e;if(i<=b){break}if(i!=l){var j=this.getDamageInfo(g,core.status.hero.hp,i,core.status.hero.def,core.status.hero.mdef);if(j==null){break}d.push([i-b,c.damage-j.damage]);l=i}if(d.length>=k){break}}}else{l=c.damage;for(var a=b+1;a<=f+e;a++){var j=this.getDamageInfo(g,core.status.hero.hp,a,core.status.hero.def,core.status.hero.mdef);if(j==null){break}if(l>j.damage){l=j.damage;d.push([a-b,c.damage-j.damage]);if(d.length>=k){break}}}}if(d.length==0){d.push([0,0])}return d};enemys.prototype.getDefDamage=function(c,a){a=a||1;var b=core.material.enemys[c];var e=this.calDamage(b,core.status.hero.hp,core.status.hero.atk,core.status.hero.def,core.status.hero.mdef);var d=this.calDamage(b,core.status.hero.hp,core.status.hero.atk,core.status.hero.def+a,core.status.hero.mdef);if(e==null||d==null){return"???"}return e-d};enemys.prototype.getDamageInfo=function(l,e,c,d,f){if(typeof l=="string"){l=core.material.enemys[l]}var j=l.hp,h=l.atk,i=l.def,k=l.special;e=Math.max(0,e);c=Math.max(0,c);d=Math.max(0,d);f=Math.max(0,f);if(this.hasSpecial(k,20)&&!core.hasItem("cross")){return null}var g=0;if(this.hasSpecial(k,11)){var o=e*l.value;o=Math.floor(o)||0;if(l.add){j+=o}g+=o}if(this.hasSpecial(k,10)){h=c;i=d}if(this.hasSpecial(k,2)){d=0}if(this.hasSpecial(k,3)&&i<c-1){i=c-1}if(c<=i){return null}var m=h-d;if(m<0){m=0}if(this.hasSpecial(k,4)){m*=2}if(this.hasSpecial(k,5)){m*=3}if(this.hasSpecial(k,6)){m*=(l.n||4)}var b=0;if(this.hasSpecial(k,8)){b+=Math.floor(core.values.counterAttack*c)}if(this.hasSpecial(k,1)){g+=m}if(this.hasSpecial(k,7)){g+=Math.floor(core.values.breakArmor*d)}if(this.hasSpecial(k,9)){g+=Math.floor(core.values.purify*f)}var n=Math.ceil(j/(c-i));var a=g+(n-1)*m+n*b;a-=f;if(!core.flags.enableNegativeDamage){a=Math.max(0,a)}return{hero_atk:c,hero_def:d,hero_mdef:f,mon_hp:j,mon_atk:h,mon_def:i,per_damage:m,initDamage:g,turn:n,damage:a}};enemys.prototype.calDamage=function(f,c,a,b,d){if(typeof f=="string"){f=core.material.enemys[monsterId]}var e=this.getDamageInfo(f,c,a,b,d);if(e==null){return null}return e.damage};enemys.prototype.getCurrentEnemys=function(e){e=e||core.status.floorId;var d=[];var m={};var f=core.status.maps[e].blocks;for(var a=0;a<f.length;a++){if(core.isset(f[a].event)&&!(core.isset(f[a].enable)&&!f[a].enable)&&f[a].event.cls.indexOf("enemy")==0){var k=f[a].event.id;if(core.isset(m[k])){continue}var j=core.material.enemys[k];var i=j.hp,g=j.atk,h=j.def;if(this.hasSpecial(j.special,10)){g=core.status.hero.atk;h=core.status.hero.def}if(this.hasSpecial(j.special,3)&&h<core.status.hero.atk-1){h=core.status.hero.atk-1}var l=core.enemys.getSpecialText(k);if(l.length>=3){l="多属性..."}else{l=l.join(" ")}var c=this.nextCriticals(k);if(c.length>0){c=c[0]}d.push({id:k,name:j.name,hp:i,atk:g,def:h,money:j.money,experience:j.experience,point:j.point||0,special:l,damage:this.getDamage(k),critical:c[0],criticalDamage:c[1],defDamage:this.getDefDamage(k)});m[k]=true}}d.sort(function(n,o){if(n.damage==o.damage){return n.money-o.money}if(n.damage==null){return 1}if(o.damage==null){return -1}return n.damage-o.damage});return d}; |