Remove 999999999 for damage
This commit is contained in:
parent
e38f131f53
commit
8936185276
7
.idea/codeStyles/Project.xml
Normal file
7
.idea/codeStyles/Project.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<MarkdownNavigatorCodeStyleSettings>
|
||||
<option name="RIGHT_MARGIN" value="72" />
|
||||
</MarkdownNavigatorCodeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
5
.idea/codeStyles/codeStyleConfig.xml
Normal file
5
.idea/codeStyles/codeStyleConfig.xml
Normal file
@ -0,0 +1,5 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
|
||||
</state>
|
||||
</component>
|
||||
@ -14,14 +14,26 @@
|
||||
|
||||
大多数宝物都有默认的效果,屠龙匕首暂未定义,如有自己的需求可参见[自定义道具效果](personalization#自定义道具效果)。
|
||||
|
||||
如需让剑盾变成装备,可以直接在`data.js`中设置`'equipment': true`即可。
|
||||
|
||||
拿到道具后将触发`afterGetItem`事件,有关事件的详细介绍请参见[事件](event)。
|
||||
|
||||
如需修改某个道具的效果,在不同区域宝石数据发生变化等问题,请参见[自定义道具效果](personalization#自定义道具效果)的说明。
|
||||
|
||||
**有关轻按,在data.js的系统变量中有定义。如果`enableGentleClick`为true,则鼠标(触摸屏)通过双击勇士,键盘通过空格可达到轻按效果,即不向前移动而获得前方物品。**
|
||||
|
||||
## 装备
|
||||
|
||||
如果需要让剑盾等变成装备,可以直接在`data.js`中设置`'equipment': true`即可。
|
||||
|
||||
值得注意的是,有时候会有一个装备加多种属性的需求,此时需要把剑盾的效果从数值改成一个对象:
|
||||
|
||||
``` js
|
||||
"sword1": {"atk": 10, "def": 0, "mdef": 5}, // 铁剑加10攻和5魔防
|
||||
"shield1": {"atk": 0, "def": 10, "mdef": 10}, // 铁盾加10防和10魔防
|
||||
```
|
||||
|
||||
将需要的项目按照如上方式修改即可。
|
||||
|
||||
|
||||
## 门
|
||||
|
||||
本塔支持6种门,黄蓝红绿铁花。前五种门需要有对应的钥匙打开,花门只能通过调用`openDoor`事件进行打开。
|
||||
|
||||
@ -286,7 +286,7 @@ control.prototype.checkBlock = function () {
|
||||
|
||||
你需自己指定一个special数字,修改getSpecialText函数(属性名)和getSpecialHint函数(属性提示文字)。
|
||||
|
||||
如果要修改伤害计算公式,请修改下面的calDamage函数。请注意,如果无法战斗,该函数必须返回`999999999`。
|
||||
如果要修改伤害计算公式,请修改下面的calDamage函数。请注意,如果无法战斗,该函数必须返回`null`。
|
||||
|
||||
对于毒衰弱怪物的战斗后结算在`functions.js`中的afterBattle函数中。
|
||||
|
||||
|
||||
@ -1039,21 +1039,31 @@ control.prototype.snipe = function (snipes) {
|
||||
snipe.blockIcon = core.material.icons[cls][block.event.id];
|
||||
snipe.blockImage = core.material.images[cls];
|
||||
snipe.height = height;
|
||||
var damage = core.enemys.getDamage(block.event.id);
|
||||
|
||||
var color = "#000000";
|
||||
var damage = core.enemys.getDamage(block.event.id);
|
||||
var color = '#000000';
|
||||
|
||||
if (damage == null) {
|
||||
damage = "???";
|
||||
color = '#FF0000';
|
||||
}
|
||||
else {
|
||||
if (damage <= 0) color = '#00FF00';
|
||||
else if (damage < core.status.hero.hp / 3) color = '#FFFFFF';
|
||||
else if (damage < core.status.hero.hp * 2 / 3) color = '#FFFF00';
|
||||
else if (damage < core.status.hero.hp) color = '#FF7F00';
|
||||
else if (damage < hero_hp / 3) color = '#FFFFFF';
|
||||
else if (damage < hero_hp * 2 / 3) color = '#FFFF00';
|
||||
else if (damage < hero_hp) color = '#FF7F00';
|
||||
else color = '#FF0000';
|
||||
|
||||
if (damage >= 999999999) damage = "???";
|
||||
else if (damage > 100000) damage = (damage / 10000).toFixed(1) + "w";
|
||||
if (damage>=1e17) damage = (damage / 1e16).toFixed(1) + "j";
|
||||
else if (damage>=1e13) damage = (damage / 1e12).toFixed(1) + "z";
|
||||
else if (damage>=1e9) damage = (damage / 1e8).toFixed(1) + "e";
|
||||
else if (damage>=1e5) damage = (damage / 1e4).toFixed(1) + "w";
|
||||
}
|
||||
|
||||
snipe.damage = damage;
|
||||
snipe.color = color;
|
||||
snipe.block = core.clone(block);
|
||||
|
||||
})
|
||||
|
||||
var finishSnipe = function () {
|
||||
@ -1265,15 +1275,24 @@ control.prototype.updateFg = function () {
|
||||
var id = mapBlocks[b].event.id;
|
||||
|
||||
var damage = core.enemys.getDamage(id);
|
||||
var color = "#000000";
|
||||
var color = '#000000';
|
||||
|
||||
if (damage == null) {
|
||||
damage = "???";
|
||||
color = '#FF0000';
|
||||
}
|
||||
else {
|
||||
if (damage <= 0) color = '#00FF00';
|
||||
else if (damage < hero_hp / 3) color = '#FFFFFF';
|
||||
else if (damage < hero_hp * 2 / 3) color = '#FFFF00';
|
||||
else if (damage < hero_hp) color = '#FF7F00';
|
||||
else color = '#FF0000';
|
||||
|
||||
if (damage >= 999999999) damage = "???";
|
||||
else if (damage > 100000) damage = (damage / 10000).toFixed(1) + "w";
|
||||
if (damage>=1e17) damage = (damage / 1e16).toFixed(1) + "j";
|
||||
else if (damage>=1e13) damage = (damage / 1e12).toFixed(1) + "z";
|
||||
else if (damage>=1e9) damage = (damage / 1e8).toFixed(1) + "e";
|
||||
else if (damage>=1e5) damage = (damage / 1e4).toFixed(1) + "w";
|
||||
}
|
||||
|
||||
core.setFillStyle('fg', '#000000');
|
||||
core.canvas.fg.fillText(damage, 32 * x + 2, 32 * (y + 1) - 2);
|
||||
|
||||
@ -84,17 +84,17 @@ enemys.prototype.getSpecialHint = function (enemy, special) {
|
||||
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 7: return "破甲:战斗前,怪物附加角色防御的"+parseInt(100*core.values.breakArmor||0)+"%作为伤害";
|
||||
case 8: return "反击:战斗时,怪物每回合附加角色攻击的"+parseInt(100*core.values.counterAttack||0)+"%作为伤害,无视角色防御";
|
||||
case 9: return "净化:战斗前,怪物附加勇士魔防的"+core.values.purify+"倍作为伤害";
|
||||
case 10: return "模仿:怪物的攻防和勇士攻防相等";
|
||||
case 11: return "吸血:战斗前,怪物首先吸取角色的"+parseInt(100*enemy.value)+"%生命作为伤害"+(enemy.add?",并把伤害数值加到自身生命上":"");
|
||||
case 11: return "吸血:战斗前,怪物首先吸取角色的"+parseInt(100*enemy.value||0)+"%生命作为伤害"+(enemy.add?",并把伤害数值加到自身生命上":"");
|
||||
case 12: return "中毒:战斗后,勇士陷入中毒状态,每一步损失生命"+core.values.poisonDamage+"点";
|
||||
case 13: return "衰弱:战斗后,勇士陷入衰弱状态,攻防暂时下降"+core.values.weakValue+"点";
|
||||
case 14: return "诅咒:战斗后,勇士陷入诅咒状态,战斗无法获得金币和经验";
|
||||
case 15: return "领域:经过怪物周围"+(enemy.range||1)+"格时自动减生命"+(enemy.value||0)+"点";
|
||||
case 16: return "夹击:经过两只相同的怪物中间,勇士生命值变成一半";
|
||||
case 17: return "仇恨:战斗前,怪物附加之前积累的仇恨值作为伤害"+(core.flags.hatredDecrease?";战斗后,释放一半的仇恨值":"")+"。(每杀死一个怪物获得"+core.values.hatred+"点仇恨值)";
|
||||
case 17: return "仇恨:战斗前,怪物附加之前积累的仇恨值作为伤害"+(core.flags.hatredDecrease?";战斗后,释放一半的仇恨值":"")+"。(每杀死一个怪物获得"+(core.values.hatred||0)+"点仇恨值)";
|
||||
case 18: return "阻击:经过怪物的十字领域时自动减生命"+(enemy.value||0)+"点,同时怪物后退一格";
|
||||
case 19: return "自爆:战斗后勇士的生命值变成1";
|
||||
case 20: return "无敌:勇士无法打败怪物,除非拥有十字架";
|
||||
@ -106,11 +106,17 @@ enemys.prototype.getSpecialHint = function (enemy, special) {
|
||||
return "";
|
||||
}
|
||||
|
||||
////// 能否获胜 //////
|
||||
enemys.prototype.canBattle = function (monsterId) {
|
||||
var damage = this.getDamage(monsterId);
|
||||
return damage != null && damage < core.status.hero.hp;
|
||||
}
|
||||
|
||||
////// 获得某个怪物的伤害 //////
|
||||
enemys.prototype.getDamage = function (monsterId) {
|
||||
var monster = core.material.enemys[monsterId];
|
||||
var damage = this.calDamage(monster, core.status.hero.hp, core.status.hero.atk, core.status.hero.def, core.status.hero.mdef);
|
||||
if (damage >= 999999999) return damage;
|
||||
if (damage == null) return null;
|
||||
return damage + this.getExtraDamage(monster);
|
||||
}
|
||||
|
||||
@ -134,10 +140,13 @@ enemys.prototype.getCritical = function (monsterId) {
|
||||
|
||||
var last = this.calDamage(monster, core.status.hero.hp, core.status.hero.atk, core.status.hero.def, core.status.hero.mdef);
|
||||
|
||||
if (last == null) return '???';
|
||||
|
||||
if (last <= 0) return 0;
|
||||
|
||||
for (var i = core.status.hero.atk + 1; i <= monster.hp + monster.def; i++) {
|
||||
var damage = this.calDamage(monster, core.status.hero.hp, i, core.status.hero.def, core.status.hero.mdef);
|
||||
if (damage == null) return '???';
|
||||
if (damage < last)
|
||||
return i - core.status.hero.atk;
|
||||
last = damage;
|
||||
@ -152,7 +161,7 @@ enemys.prototype.getCriticalDamage = function (monsterId) {
|
||||
if (c <= 0) return 0;
|
||||
var monster = core.material.enemys[monsterId];
|
||||
var last = this.calDamage(monster, core.status.hero.hp, core.status.hero.atk, core.status.hero.def, core.status.hero.mdef);
|
||||
if (last >= 999999999) return '???';
|
||||
if (last == null) return '???';
|
||||
|
||||
return last - this.calDamage(monster, core.status.hero.hp, core.status.hero.atk + c, core.status.hero.def, core.status.hero.mdef);
|
||||
}
|
||||
@ -162,7 +171,7 @@ enemys.prototype.getDefDamage = function (monsterId) {
|
||||
var monster = core.material.enemys[monsterId];
|
||||
var nowDamage = this.calDamage(monster, core.status.hero.hp, core.status.hero.atk, core.status.hero.def, core.status.hero.mdef);
|
||||
var nextDamage = this.calDamage(monster, core.status.hero.hp, core.status.hero.atk, core.status.hero.def + 1, core.status.hero.mdef);
|
||||
if (nowDamage >= 999999999 || nextDamage >= 999999999) return "???";
|
||||
if (nowDamage == null || nextDamage ==null) return "???";
|
||||
return nowDamage - nextDamage;
|
||||
}
|
||||
|
||||
@ -176,7 +185,7 @@ enemys.prototype.calDamage = function (monster, hero_hp, hero_atk, hero_def, her
|
||||
hero_mdef=Math.max(0, hero_mdef);
|
||||
|
||||
if (this.hasSpecial(mon_special, 20) && !core.hasItem("cross")) // 如果是无敌属性,且勇士未持有十字架
|
||||
return 999999999; // 返回无限大
|
||||
return null; // 返回不可战斗
|
||||
|
||||
var initDamage = 0; // 战前伤害
|
||||
|
||||
@ -186,7 +195,7 @@ enemys.prototype.calDamage = function (monster, hero_hp, hero_atk, hero_def, her
|
||||
|
||||
// 如果有神圣盾免疫吸血等可以在这里写
|
||||
|
||||
vampireDamage = parseInt(vampireDamage);
|
||||
vampireDamage = parseInt(vampireDamage) || 0;
|
||||
// 加到自身
|
||||
if (monster.add) // 如果加到自身
|
||||
mon_hp += vampireDamage;
|
||||
@ -203,7 +212,7 @@ enemys.prototype.calDamage = function (monster, hero_hp, hero_atk, hero_def, her
|
||||
if (this.hasSpecial(mon_special,2)) hero_def = 0;
|
||||
// 坚固
|
||||
if (this.hasSpecial(mon_special,3) && mon_def < hero_atk - 1) mon_def = hero_atk - 1;
|
||||
if (hero_atk <= mon_def) return 999999999; // 不可战斗时请直接返回999999999
|
||||
if (hero_atk <= mon_def) return null; // 不可战斗时请直接返回null
|
||||
|
||||
var per_damage = mon_atk - hero_def;
|
||||
if (per_damage < 0) per_damage = 0;
|
||||
|
||||
@ -732,9 +732,8 @@ events.prototype.battle = function (id, x, y, force, callback) {
|
||||
core.stopHero();
|
||||
core.stopAutomaticRoute();
|
||||
|
||||
var damage = core.enemys.getDamage(id);
|
||||
// 非强制战斗
|
||||
if (damage >= core.status.hero.hp && !force) {
|
||||
if (!core.enemys.canBattle(id) && !force) {
|
||||
core.drawTip("你打不过此怪物!");
|
||||
core.clearContinueAutomaticRoute();
|
||||
return;
|
||||
|
||||
21
libs/ui.js
21
libs/ui.js
@ -1292,10 +1292,22 @@ ui.prototype.drawBook = function (index) {
|
||||
|
||||
core.canvas.ui.textAlign = "center";
|
||||
var damage = enemy.damage;
|
||||
|
||||
var color = '#FFFF00';
|
||||
if (damage == null) {
|
||||
damage = '无法战斗';
|
||||
color = '#FF0000';
|
||||
}
|
||||
else {
|
||||
if (damage >= core.status.hero.hp) color = '#FF0000';
|
||||
if (damage<=0) color = '#00FF00';
|
||||
if (damage >= 999999999) damage = '无法战斗';
|
||||
|
||||
if (damage>=1e17) damage = (damage / 1e16).toFixed(2) + "j";
|
||||
else if (damage>=1e13) damage = (damage / 1e12).toFixed(2) + "z";
|
||||
else if (damage>=1e9) damage = (damage / 1e8).toFixed(2) + "e";
|
||||
else if (damage>=1e5) damage = (damage / 1e4).toFixed(2) + "w";
|
||||
|
||||
}
|
||||
core.fillText('ui', damage, damageOffset, 62 * i + 50, color, 'bold 13px Verdana');
|
||||
|
||||
core.canvas.ui.textAlign = "left";
|
||||
@ -1327,10 +1339,9 @@ ui.prototype.drawBookDetail = function (index) {
|
||||
var enemyId=enemy.id;
|
||||
var hints=core.enemys.getSpecialHint(core.material.enemys[enemyId]);
|
||||
|
||||
if (hints.length==0) {
|
||||
core.drawTip("该怪物无特殊属性!");
|
||||
return;
|
||||
}
|
||||
|
||||
if (hints.length==0)
|
||||
hints.push("该怪物无特殊属性。");
|
||||
var content=hints.join("\n");
|
||||
|
||||
core.status.event.id = 'book-detail';
|
||||
|
||||
@ -488,6 +488,12 @@ data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc =
|
||||
"_bool": "bool",
|
||||
"_data": "是否地图怪物显伤;用户可以手动在菜单栏中开关"
|
||||
},
|
||||
"displayCritical": {
|
||||
"_leaf": true,
|
||||
"_type": "checkbox",
|
||||
"_bool": "bool",
|
||||
"_data": "是否地图显示临界;用户可以手动在菜单栏中开关"
|
||||
},
|
||||
"displayExtraDamage": {
|
||||
"_leaf": true,
|
||||
"_type": "checkbox",
|
||||
|
||||
@ -142,13 +142,13 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
||||
"enableLevelUp": false,
|
||||
"enableDebuff": false,
|
||||
"flyNearStair": true,
|
||||
"pickaxeFourDirections": true,
|
||||
"bombFourDirections": true,
|
||||
"pickaxeFourDirections": false,
|
||||
"bombFourDirections": false,
|
||||
"bigKeyIsBox": false,
|
||||
"equipment": true,
|
||||
"equipment": false,
|
||||
"enableDeleteItem": true,
|
||||
"enableAddPoint": false,
|
||||
"enableNegativeDamage": true,
|
||||
"enableNegativeDamage": false,
|
||||
"hatredDecrease": true,
|
||||
"betweenAttackCeil": false,
|
||||
"startDirectly": false,
|
||||
@ -156,6 +156,7 @@ data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
|
||||
"showBattleAnimateConfirm": true,
|
||||
"battleAnimate": true,
|
||||
"displayEnemyDamage": true,
|
||||
"displayCritical": true,
|
||||
"displayExtraDamage": true,
|
||||
"enableGentleClick": true,
|
||||
"potionWhileRouting": false,
|
||||
|
||||
@ -116,8 +116,11 @@ functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
||||
|
||||
var enemy = core.material.enemys[enemyId];
|
||||
|
||||
var damage = core.enemys.getDamage(enemyId);
|
||||
if (damage == null) damage = core.status.hero.hp+1;
|
||||
|
||||
// 扣减体力值
|
||||
core.status.hero.hp -= core.enemys.getDamage(enemyId);
|
||||
core.status.hero.hp -= damage;
|
||||
if (core.status.hero.hp<=0) {
|
||||
core.status.hero.hp=0;
|
||||
core.updateStatusBar();
|
||||
|
||||
Loading…
Reference in New Issue
Block a user