Update Enemy Detail

This commit is contained in:
ckcz123 2017-12-30 17:25:39 +08:00
parent 9ecccf35de
commit f2bfa7cd84
3 changed files with 123 additions and 22 deletions

View File

@ -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 ""

View File

@ -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) {

View File

@ -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