Update Enemy Detail
This commit is contained in:
parent
9ecccf35de
commit
f2bfa7cd84
@ -109,27 +109,39 @@ enemys.prototype.getSpecialText = function (enemyId) {
|
||||
|
||||
////// 获得每个属性的文字提示 //////
|
||||
enemys.prototype.getSpecialHint = function (enemy, special) {
|
||||
if (!core.isset(special)) {
|
||||
var hints = [];
|
||||
for (var i=1;i<100;i++) {
|
||||
if (this.hasSpecial(enemy.special, i)) {
|
||||
var hint=this.getSpecialHint(enemy, i);
|
||||
if (hint!='')
|
||||
hints.push(hint);
|
||||
}
|
||||
}
|
||||
return hints;
|
||||
}
|
||||
|
||||
switch (special) {
|
||||
case 1: return "怪物首先攻击";
|
||||
case 2: return "怪物无视勇士的魔防";
|
||||
case 3: return "勇士每回合最多只能对怪物造成1点伤害";
|
||||
case 4: return "怪物每回合攻击2次";
|
||||
case 5: return "怪物每回合攻击3次";
|
||||
case 6: return "怪物每回合攻击"+(enemy.n||4)+"次";
|
||||
case 7: return "战斗前,怪物附加角色防御的"+parseInt(100*core.values.breakArmor)+"%作为伤害";
|
||||
case 8: return "战斗时,怪物每回合附加角色攻击的"+parseInt(100*core.values.counterAttack)+"%作为伤害,无视角色防御";
|
||||
case 9: return "战斗前,怪物附加勇士魔防的"+core.values.purify+"倍作为伤害";
|
||||
case 10: return "怪物的攻防和勇士攻防相等";
|
||||
case 11: return "战斗前,怪物首先吸取角色的"+parseInt(100*enemy.value)+"%生命作为伤害";
|
||||
case 12: return "战斗后,勇士陷入中毒状态,每一步损失生命"+core.values.poisonDamage+"点";
|
||||
case 13: return "战斗后,勇士陷入衰弱状态,攻防暂时下降"+core.values.weakValue+"点";
|
||||
case 14: return "战斗后,勇士陷入诅咒状态,战斗无法获得金币和经验";
|
||||
case 15: return "经过怪物周围"+(enemy.range||1)+"格时自动减生命"+enemy.damage+"点";
|
||||
case 16: return "经过两只相同的怪物中间,勇士生命值变成一半";
|
||||
case 17: return "战斗前,怪物附加之前积累的仇恨值作为伤害;战斗后,释放一半的仇恨值。(每杀死一个怪物获得"+core.values.hatred+"点仇恨值)";
|
||||
case 18: return "经过怪物的十字领域时自动减生命"+enemy.value+"点,同时怪物后退一格";
|
||||
case 19: return "战斗后勇士的生命值变成1";
|
||||
case 20: return "勇士无法打败怪物,除非拥有十字架";
|
||||
case 1: return "先攻:怪物首先攻击";
|
||||
case 2: return "魔攻:怪物无视勇士的魔防";
|
||||
case 3: return "坚固:勇士每回合最多只能对怪物造成1点伤害";
|
||||
case 4: return "2连击:怪物每回合攻击2次";
|
||||
case 5: return "3连击:怪物每回合攻击3次";
|
||||
case 6: return (enemy.n||4)+"连击: 怪物每回合攻击"+(enemy.n||4)+"次";
|
||||
case 7: return "破甲:战斗前,怪物附加角色防御的"+parseInt(100*core.values.breakArmor)+"%作为伤害";
|
||||
case 8: return "反击:战斗时,怪物每回合附加角色攻击的"+parseInt(100*core.values.counterAttack)+"%作为伤害,无视角色防御";
|
||||
case 9: return "净化:战斗前,怪物附加勇士魔防的"+core.values.purify+"倍作为伤害";
|
||||
case 10: return "模仿:怪物的攻防和勇士攻防相等";
|
||||
case 11: return "吸血:战斗前,怪物首先吸取角色的"+parseInt(100*enemy.value)+"%生命作为伤害";
|
||||
case 12: return "中毒:战斗后,勇士陷入中毒状态,每一步损失生命"+core.values.poisonDamage+"点";
|
||||
case 13: return "衰弱:战斗后,勇士陷入衰弱状态,攻防暂时下降"+core.values.weakValue+"点";
|
||||
case 14: return "诅咒:战斗后,勇士陷入诅咒状态,战斗无法获得金币和经验";
|
||||
case 15: return "领域:经过怪物周围"+(enemy.range||1)+"格时自动减生命"+enemy.damage+"点";
|
||||
case 16: return "夹击:经过两只相同的怪物中间,勇士生命值变成一半";
|
||||
case 17: return "仇恨:战斗前,怪物附加之前积累的仇恨值作为伤害;战斗后,释放一半的仇恨值。(每杀死一个怪物获得"+core.values.hatred+"点仇恨值)";
|
||||
case 18: return "阻击:经过怪物的十字领域时自动减生命"+enemy.value+"点,同时怪物后退一格";
|
||||
case 19: return "自爆:战斗后勇士的生命值变成1";
|
||||
case 20: return "无敌:勇士无法打败怪物,除非拥有十字架";
|
||||
default: break;
|
||||
}
|
||||
return ""
|
||||
|
||||
@ -806,21 +806,37 @@ events.prototype.clickBook = function(x,y) {
|
||||
// 上一页
|
||||
if ((x == 3 || x == 4) && y == 12) {
|
||||
core.ui.drawEnemyBook(core.status.event.data - 6);
|
||||
return;
|
||||
}
|
||||
// 下一页
|
||||
if ((x == 8 || x == 9) && y == 12) {
|
||||
core.ui.drawEnemyBook(core.status.event.data + 6);
|
||||
return;
|
||||
}
|
||||
// 返回
|
||||
if (x>=10 && x<=12 && y==12) {
|
||||
core.ui.closePanel(true);
|
||||
return;
|
||||
}
|
||||
// 怪物信息
|
||||
// var index = parseInt(y/2);
|
||||
var data = core.status.event.data;
|
||||
if (core.isset(data) && y<12) {
|
||||
var page=parseInt(data/6);
|
||||
var index=6*page+parseInt(y/2);
|
||||
core.ui.drawEnemyBook(index);
|
||||
core.ui.drawEnemyDetail(index);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
events.prototype.keyDownBook = function (keycode) {
|
||||
if (keycode==37 || keycode==38) core.ui.drawEnemyBook(core.status.event.data - 1);
|
||||
else if (keycode==39 || keycode==40) core.ui.drawEnemyBook(core.status.event.data + 1);
|
||||
if (keycode==37) core.ui.drawEnemyBook(core.status.event.data-6);
|
||||
if (keycode==38) core.ui.drawEnemyBook(core.status.event.data-1);
|
||||
if (keycode==39) core.ui.drawEnemyBook(core.status.event.data+6);
|
||||
if (keycode==40) core.ui.drawEnemyBook(core.status.event.data+1);
|
||||
if (keycode==33) core.ui.drawEnemyBook(core.status.event.data-6);
|
||||
if (keycode==34) core.ui.drawEnemyBook(core.status.event.data+6);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -829,6 +845,13 @@ events.prototype.keyUpBook = function (keycode) {
|
||||
core.ui.closePanel(true);
|
||||
return;
|
||||
}
|
||||
if (keycode==13 || keycode==32 || keycode==67) {
|
||||
var data=core.status.event.data;
|
||||
if (core.isset(data)) {
|
||||
this.clickBook(6, 2*(data%6));
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
events.prototype.clickFly = function(x,y) {
|
||||
|
||||
66
libs/ui.js
66
libs/ui.js
@ -835,11 +835,77 @@ ui.prototype.drawEnemyBook = function (index) {
|
||||
core.fillText('ui', '1防', 335, 62 * i + 68, '#DDDDDD', '13px Verdana');
|
||||
core.fillText('ui', enemy.defDamage, 365, 62 * i + 68, '#DDDDDD', 'bold 13px Verdana');
|
||||
|
||||
if (index == start+i) {
|
||||
core.strokeRect('ui', 10, 62 * i + 13, 416-10*2, 62, '#FFD700');
|
||||
}
|
||||
|
||||
}
|
||||
core.setBoxAnimate();
|
||||
this.drawPagination(page, totalPage);
|
||||
}
|
||||
|
||||
ui.prototype.drawEnemyDetail = function (index) {
|
||||
var enemys = core.enemys.getCurrentEnemys();
|
||||
if (enemys.length==0) return;
|
||||
if (index<0) index=0;
|
||||
if (index>=enemys.length) index=enemys.length-1;
|
||||
|
||||
var enemy = enemys[index];
|
||||
var enemyId=enemy.id;
|
||||
var hints=core.enemys.getSpecialHint(core.enemys.getEnemys(enemyId));
|
||||
|
||||
if (hints.length==0) {
|
||||
core.drawTip("该怪物无特殊属性!");
|
||||
return;
|
||||
}
|
||||
var content=hints.join("\n");
|
||||
|
||||
core.status.event.id = 'book-detail';
|
||||
clearInterval(core.interval.tipAnimate);
|
||||
|
||||
core.clearMap('data', 0, 0, 416, 416);
|
||||
core.setOpacity('data', 1);
|
||||
|
||||
var left=10, right=416-2*left;
|
||||
var content_left = left + 25;
|
||||
|
||||
var validWidth = right-(content_left-left)-13;
|
||||
var contents = core.splitLines("data", content, validWidth, '16px Verdana');
|
||||
|
||||
var height = 416 - 10 - Math.min(416-24*(contents.length+1)-65, 250);
|
||||
var top = (416-height)/2, bottom = height;
|
||||
|
||||
// var left = 97, top = 64, right = 416 - 2 * left, bottom = 416 - 2 * top;
|
||||
core.setAlpha('data', 0.9);
|
||||
core.fillRect('data', left, top, right, bottom, '#000000');
|
||||
core.setAlpha('data', 1);
|
||||
core.strokeRect('data', left - 1, top - 1, right + 1, bottom + 1, '#FFFFFF', 2);
|
||||
|
||||
// 名称
|
||||
core.canvas.data.textAlign = "left";
|
||||
|
||||
core.fillText('data', enemy.name, content_left, top + 30, '#FFD700', 'bold 22px Verdana');
|
||||
var content_top = top + 57;
|
||||
|
||||
for (var i=0;i<contents.length;i++) {
|
||||
// core.fillText('data', contents[i], content_left, content_top, '#FFFFFF', '16px Verdana');
|
||||
var text=contents[i];
|
||||
var index=text.indexOf(":");
|
||||
if (index>=0) {
|
||||
var x1 = text.substring(0, index+1);
|
||||
core.fillText('data', x1, content_left, content_top, '#FF6A6A', 'bold 16px Verdana');
|
||||
var len=core.canvas.data.measureText(x1).width;
|
||||
core.fillText('data', text.substring(index+1), content_left+len, content_top, '#FFFFFF', '16px Verdana');
|
||||
}
|
||||
else {
|
||||
core.fillText('data', contents[i], content_left, content_top, '#FFFFFF', '16px Verdana');
|
||||
}
|
||||
content_top+=24;
|
||||
}
|
||||
|
||||
core.fillText('data', '<点击任意位置继续>', 270, top+height-13, '#CCCCCC', '13px Verdana');
|
||||
}
|
||||
|
||||
/**
|
||||
* 绘制楼传器
|
||||
* @param page
|
||||
|
||||
Loading…
Reference in New Issue
Block a user