diff --git a/_docs/api.md b/_docs/api.md
index ca17b40f..17b30fb2 100644
--- a/_docs/api.md
+++ b/_docs/api.md
@@ -355,6 +355,11 @@ getMappedName: fn(name: string) -> string
getNakedStatus: fn(name: string)
获得勇士原始属性(无装备和衰弱影响)
+getNextLvUpNeed: fn() -> number
+获得下次升级需要的经验值。
+升级扣除模式下会返回经验差值;非扣除模式下会返回总共需要的经验值。
+如果无法进行下次升级,返回null。
+
getRealStatus: fn(name: string)
计算主角的某个属性,包括百分比修正
例如:core.getRealStatus('atk'); // 计算主角的攻击力,包括百分比修正。战斗使用的就是这个值
@@ -1835,12 +1840,13 @@ fillArc: fn(name: string|CanvasRenderingContext2D, x: number, y: number, r: numb
在某个canvas上绘制一个扇形
参考资料:https://www.w3school.com.cn/tags/canvas_arc.asp
-fillBoldText: fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string)
+fillBoldText: fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string, maxWidth?: number)
在某个画布上绘制一个描边文字
text: 要绘制的文本
style: 绘制的样式
strokeStyle: 要绘制的描边颜色
font: 绘制的字体
+maxWidth: 最大宽度,超过此宽度会自动放缩
fillCircle: fn(name: string|CanvasRenderingContext2D, x: number, y: number, r: number, style?: string)
在某个canvas上绘制一个圆
@@ -1868,7 +1874,7 @@ fillText: fn(name: string|CanvasRenderingContext2D, text: string, x: number, y:
text: 要绘制的文本
style: 绘制的样式
font: 绘制的字体
-最大宽度,超过此宽度会自动放缩
+maxWidth: 最大宽度,超过此宽度会自动放缩
参考资料:https://www.w3school.com.cn/tags/canvas_filltext.asp
getContextByName: fn(canvas: string|CanvasRenderingContext2D) -> CanvasRenderingContext2D
diff --git a/_server/CodeMirror/defs.js b/_server/CodeMirror/defs.js
index 0f44780c..3e18762e 100644
--- a/_server/CodeMirror/defs.js
+++ b/_server/CodeMirror/defs.js
@@ -2252,6 +2252,10 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [
"!doc": "根据级别的数字获取对应的名称,后者定义在全塔属性
例如:core.getLvName(); // 获取主角当前级别的名称,如“下级佣兵”
lv: 级别的数字,不填则视为主角当前的级别
返回值:级别的名称,如果不存在就还是返回数字",
"!type": "fn(lv?: number) -> string|number"
},
+ "getNextLvUpNeed": {
+ "!doc": "获得下次升级需要的经验值。
升级扣除模式下会返回经验差值;非扣除模式下会返回总共需要的经验值。
如果无法进行下次升级,返回null。",
+ "!type": "fn() -> number"
+ },
"addStatus": {
"!doc": "增减主角的某个属性,等价于core.setStatus(name, core.getStatus(name) + value)
例如:core.addStatus('atk', 100'); // 给主角攻击力加100
name: 属性的英文名
value: 属性的增量",
"!type": "fn(name: string, value: number)"
@@ -3574,8 +3578,8 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [
"!type": "fn(name: string|CanvasRenderingContext2D, x: number, y: number, width: number, height: number, radius: number, style?: string, angle?: number)"
},
"fillBoldText": {
- "!doc": "在某个画布上绘制一个描边文字
text: 要绘制的文本
style: 绘制的样式
strokeStyle: 要绘制的描边颜色
font: 绘制的字体",
- "!type": "fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string)"
+ "!doc": "在某个画布上绘制一个描边文字
text: 要绘制的文本
style: 绘制的样式
strokeStyle: 要绘制的描边颜色
font: 绘制的字体
maxWidth: 最大宽度,超过此宽度会自动放缩",
+ "!type": "fn(name: string|CanvasRenderingContext2D, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string, maxWidth?: number)"
},
"saveCanvas": {
"!doc": "保存某个canvas状态",
diff --git a/_server/table/comment.js b/_server/table/comment.js
index d0fe2767..5dbfdbea 100644
--- a/_server/table/comment.js
+++ b/_server/table/comment.js
@@ -102,7 +102,7 @@ var comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
}
}
},
- "items_template": { 'cls': 'items', 'name': '新物品' },
+ "items_template": { 'cls': 'items', 'name': '新物品', 'canUseItemEffect': 'true' },
// --------------------------- 【怪物】相关的表格配置 --------------------------- //
diff --git a/libs/control.js b/libs/control.js
index 92c75826..92d3eb87 100644
--- a/libs/control.js
+++ b/libs/control.js
@@ -2293,6 +2293,16 @@ control.prototype.getLvName = function (lv) {
return ((core.firstData.levelUp||[])[lv-1]||{}).title || lv;
}
+////// 获得下个等级所需经验;如果不存在下个等级,返回null。 //////
+control.prototype.getNextLvUpNeed = function () {
+ if (!core.status.hero) return null;
+ if (core.status.hero.lv >= core.firstData.levelUp.length) return null;
+ var need = core.calValue(core.firstData.levelUp[core.status.hero.lv].need);
+ if (core.flags.statusBarItems.indexOf('levelUpLeftMode') >= 0)
+ return Math.max(need - core.getStatus('exp'), 0);
+ else return need;
+}
+
////// 设置某个自定义变量或flag //////
control.prototype.setFlag = function(name, value) {
if (value == null) return this.removeFlag(name);
diff --git a/libs/ui.js b/libs/ui.js
index ce1afc8a..33445e29 100644
--- a/libs/ui.js
+++ b/libs/ui.js
@@ -130,7 +130,7 @@ ui.prototype.setFontForMaxWidth = function (name, text, maxWidth, font) {
}
////// 在某个canvas上绘制粗体 //////
-ui.prototype.fillBoldText = function (name, text, x, y, style, strokeStyle, font) {
+ui.prototype.fillBoldText = function (name, text, x, y, style, strokeStyle, font, maxWidth) {
var ctx = this.getContextByName(name);
if (!ctx) return;
if (font) ctx.font = font;
@@ -138,6 +138,9 @@ ui.prototype.fillBoldText = function (name, text, x, y, style, strokeStyle, font
style = core.arrayToRGBA(style);
if (!strokeStyle) strokeStyle = '#000000';
strokeStyle = core.arrayToRGBA(strokeStyle);
+ if (maxWidth != null) {
+ this.setFontForMaxWidth(ctx, text, maxWidth);
+ }
ctx.strokeStyle = strokeStyle;
ctx.lineWidth = 2;
ctx.strokeText(text, x, y);
diff --git a/project/functions.js b/project/functions.js
index 89c5e00d..ae468e3c 100644
--- a/project/functions.js
+++ b/project/functions.js
@@ -1128,12 +1128,8 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
// 如果是自定义添加的状态栏,也需要在这里进行设置显示的数值
// 进阶
- if (core.flags.statusBarItems.indexOf('enableLevelUp') >= 0 && core.status.hero.lv < core.firstData.levelUp.length) {
- var need = core.calValue(core.firstData.levelUp[core.status.hero.lv].need);
- if (core.flags.statusBarItems.indexOf('levelUpLeftMode') >= 0)
- core.setStatusBarInnerHTML('up', core.formatBigNumber(need - core.getStatus('exp')) || "");
- else
- core.setStatusBarInnerHTML('up', core.formatBigNumber(need) || "");
+ if (core.flags.statusBarItems.indexOf('enableLevelUp') >= 0) {
+ core.setStatusBarInnerHTML('up', core.formatBigNumber(core.getNextLvUpNeed()) || "");
} else core.setStatusBarInnerHTML('up', "");
// 钥匙
diff --git a/runtime.d.ts b/runtime.d.ts
index 8b8cc5fa..5e23a11b 100644
--- a/runtime.d.ts
+++ b/runtime.d.ts
@@ -510,6 +510,13 @@ declare class control {
*/
getLvName(lv?: number): string | number
+ /**
+ * 获得下次升级需要的经验值。
+ * 升级扣除模式下会返回经验差值;非扣除模式下会返回总共需要的经验值。
+ * 如果无法进行下次升级,返回null。
+ */
+ getNextLvUpNeed() : number
+
/**
* 设置一个flag变量
* @example core.setFlag('poison', true); // 令主角中毒
@@ -2021,7 +2028,7 @@ declare class ui {
* @param style 绘制的样式
* @param font 绘制的字体
*/
- fillText(name: CtxRefer, text: string, x: number, y: number, style: string, font: string): void
+ fillText(name: CtxRefer, text: string, x: number, y: number, style?: string, font?: string, maxWidth?: number): void
/**
* 在某个画布上绘制一个描黑边的文字
@@ -2030,7 +2037,7 @@ declare class ui {
* @param strokeStyle 绘制的描边颜色
* @param font 绘制的字体
*/
- fillBoldText(name: CtxRefer, text: string, x: number, y: number, style: string, strokeStyle: string, font: string): void
+ fillBoldText(name: CtxRefer, text: string, x: number, y: number, style?: string, strokeStyle?: string, font?: string, maxWidth?: number): void
/**
* 绘制一个矩形。style可选为绘制样式