kill bug & new function
This commit is contained in:
parent
4a801cbc85
commit
144ef9755e
@ -189,7 +189,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- injection -->
|
<!-- injection -->
|
||||||
<script src='libs/thirdparty/browser-polyfill.min.js'></script>
|
|
||||||
<script src='libs/thirdparty/lz-string.min.js'></script>
|
<script src='libs/thirdparty/lz-string.min.js'></script>
|
||||||
<script src='libs/thirdparty/priority-queue.min.js'></script>
|
<script src='libs/thirdparty/priority-queue.min.js'></script>
|
||||||
<script src='libs/thirdparty/localforage.min.js'></script>
|
<script src='libs/thirdparty/localforage.min.js'></script>
|
||||||
|
|||||||
@ -18,6 +18,8 @@ control.prototype._init = function () {
|
|||||||
this.replayActions = [];
|
this.replayActions = [];
|
||||||
this.weathers = {};
|
this.weathers = {};
|
||||||
this.resizes = [];
|
this.resizes = [];
|
||||||
|
this.needUpdate = false;
|
||||||
|
this.noAutoEvents = true;
|
||||||
// --- 注册系统的animationFrame
|
// --- 注册系统的animationFrame
|
||||||
this.registerAnimationFrame("totalTime", false, this._animationFrame_totalTime);
|
this.registerAnimationFrame("totalTime", false, this._animationFrame_totalTime);
|
||||||
this.registerAnimationFrame("autoSave", true, this._animationFrame_autoSave);
|
this.registerAnimationFrame("autoSave", true, this._animationFrame_autoSave);
|
||||||
@ -27,6 +29,7 @@ control.prototype._init = function () {
|
|||||||
this.registerAnimationFrame("weather", true, this._animationFrame_weather);
|
this.registerAnimationFrame("weather", true, this._animationFrame_weather);
|
||||||
this.registerAnimationFrame("tip", true, this._animateFrame_tip);
|
this.registerAnimationFrame("tip", true, this._animateFrame_tip);
|
||||||
this.registerAnimationFrame("parallelDo", false, this._animationFrame_parallelDo);
|
this.registerAnimationFrame("parallelDo", false, this._animationFrame_parallelDo);
|
||||||
|
this.registerAnimationFrame("updateStatusBar", true, this.updateStatusBar_update);
|
||||||
// --- 注册系统的天气
|
// --- 注册系统的天气
|
||||||
this.registerWeather("rain", this._weather_rain, this._animationFrame_weather_rain);
|
this.registerWeather("rain", this._weather_rain, this._animationFrame_weather_rain);
|
||||||
this.registerWeather("snow", this._weather_snow, this._animationFrame_weather_snow);
|
this.registerWeather("snow", this._weather_snow, this._animationFrame_weather_snow);
|
||||||
@ -1174,9 +1177,11 @@ control.prototype._checkBlock_ambush = function (ambush) {
|
|||||||
actions.push({ "type": "waitAsync" });
|
actions.push({ "type": "waitAsync" });
|
||||||
// 强制战斗
|
// 强制战斗
|
||||||
ambush.forEach(function (t) {
|
ambush.forEach(function (t) {
|
||||||
actions.push({"type": "function", "function": "function() { "+
|
actions.push({
|
||||||
|
"type": "function", "function": "function() { " +
|
||||||
"core.battle('" + t[2] + "', " + t[0] + "," + t[1] + ", true, core.doAction); " +
|
"core.battle('" + t[2] + "', " + t[0] + "," + t[1] + ", true, core.doAction); " +
|
||||||
"}", "async": true});
|
"}", "async": true
|
||||||
|
});
|
||||||
});
|
});
|
||||||
core.insertAction(actions);
|
core.insertAction(actions);
|
||||||
}
|
}
|
||||||
@ -1653,11 +1658,13 @@ control.prototype._replay_save = function () {
|
|||||||
if (core.status.replay.steps % 40 == 1) {
|
if (core.status.replay.steps % 40 == 1) {
|
||||||
if (core.status.replay.save.length == 30)
|
if (core.status.replay.save.length == 30)
|
||||||
core.status.replay.save.shift();
|
core.status.replay.save.shift();
|
||||||
core.status.replay.save.push({"data": core.saveData(), "replay": {
|
core.status.replay.save.push({
|
||||||
|
"data": core.saveData(), "replay": {
|
||||||
"totalList": core.cloneArray(core.status.replay.totalList),
|
"totalList": core.cloneArray(core.status.replay.totalList),
|
||||||
"toReplay": core.cloneArray(core.status.replay.toReplay),
|
"toReplay": core.cloneArray(core.status.replay.toReplay),
|
||||||
"steps": core.status.replay.steps
|
"steps": core.status.replay.steps
|
||||||
}});
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3041,11 +3048,19 @@ control.prototype.clearStatusBar = function() {
|
|||||||
|
|
||||||
////// 更新状态栏 //////
|
////// 更新状态栏 //////
|
||||||
control.prototype.updateStatusBar = function (doNotCheckAutoEvents) {
|
control.prototype.updateStatusBar = function (doNotCheckAutoEvents) {
|
||||||
|
this.needUpdate = true;
|
||||||
|
if (!doNotCheckAutoEvents) this.noAutoEvents = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
control.prototype.updateStatusBar_update = function () {
|
||||||
|
if (!core.control.needUpdate) return;
|
||||||
if (!core.isPlaying() || core.hasFlag('__statistics__')) return;
|
if (!core.isPlaying() || core.hasFlag('__statistics__')) return;
|
||||||
this.controldata.updateStatusBar();
|
core.control.updateStatusBar();
|
||||||
if (!doNotCheckAutoEvents) core.checkAutoEvents();
|
if (!core.control.noAutoEvents) core.checkAutoEvents();
|
||||||
this._updateStatusBar_setToolboxIcon();
|
core.control._updateStatusBar_setToolboxIcon();
|
||||||
core.clearRouteFolding();
|
core.clearRouteFolding();
|
||||||
|
core.control.needUpdate = false;
|
||||||
|
core.control.noAutoEvents = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
control.prototype._updateStatusBar_setToolboxIcon = function () {
|
control.prototype._updateStatusBar_setToolboxIcon = function () {
|
||||||
|
|||||||
2
libs/thirdparty/browser-polyfill.min.js
vendored
2
libs/thirdparty/browser-polyfill.min.js
vendored
File diff suppressed because one or more lines are too long
31
libs/ui.js
31
libs/ui.js
@ -26,6 +26,7 @@ ui.prototype._init = function () {
|
|||||||
////////////////// 地图设置
|
////////////////// 地图设置
|
||||||
|
|
||||||
ui.prototype.getContextByName = function (name) {
|
ui.prototype.getContextByName = function (name) {
|
||||||
|
if (name instanceof HTMLCanvasElement) return name.getContext('2d');
|
||||||
var canvas = name;
|
var canvas = name;
|
||||||
if (typeof name == 'string') {
|
if (typeof name == 'string') {
|
||||||
if (core.canvas[name])
|
if (core.canvas[name])
|
||||||
@ -1255,9 +1256,11 @@ ui.prototype._drawTextContent_drawChar = function (tempCtx, content, config, ch)
|
|||||||
// 输出
|
// 输出
|
||||||
var left = config.offsetX, top = config.offsetY + config.topMargin;
|
var left = config.offsetX, top = config.offsetY + config.topMargin;
|
||||||
core.fillText(tempCtx, ch, left, top);
|
core.fillText(tempCtx, ch, left, top);
|
||||||
config.blocks.push({left: config.offsetX, top: config.offsetY,
|
config.blocks.push({
|
||||||
|
left: config.offsetX, top: config.offsetY,
|
||||||
width: charwidth, height: config.currfont + config.lineMargin,
|
width: charwidth, height: config.currfont + config.lineMargin,
|
||||||
line: config.line, marginLeft: 0});
|
line: config.line, marginLeft: 0
|
||||||
|
});
|
||||||
config.offsetX += charwidth;
|
config.offsetX += charwidth;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -1367,9 +1370,11 @@ ui.prototype._drawTextContent_drawIcon = function (tempCtx, content, config) {
|
|||||||
// 绘制到画布上
|
// 绘制到画布上
|
||||||
core.drawImage(tempCtx, image, 0, 32 * icon, 32, 32, left, top, width, width);
|
core.drawImage(tempCtx, image, 0, 32 * icon, 32, 32, left, top, width, width);
|
||||||
|
|
||||||
config.blocks.push({left: left, top: config.offsetY,
|
config.blocks.push({
|
||||||
|
left: left, top: config.offsetY,
|
||||||
width: width, height: width + config.lineMargin,
|
width: width, height: width + config.lineMargin,
|
||||||
line: config.line, marginLeft: 0});
|
line: config.line, marginLeft: 0
|
||||||
|
});
|
||||||
|
|
||||||
config.offsetX += width + 6;
|
config.offsetX += width + 6;
|
||||||
config.index = index2 + 1;
|
config.index = index2 + 1;
|
||||||
@ -2491,8 +2496,10 @@ ui.prototype._drawBookDetail_drawContent = function (enemy, content, pos) {
|
|||||||
core.fillText('data', enemy.name, pos.content_left, pos.top + 30, core.status.globalAttribute.selectColor, this._buildFont(22, true));
|
core.fillText('data', enemy.name, pos.content_left, pos.top + 30, core.status.globalAttribute.selectColor, this._buildFont(22, true));
|
||||||
var content_top = pos.top + 44;
|
var content_top = pos.top + 44;
|
||||||
|
|
||||||
this.drawTextContent('data', content, {left: pos.content_left, top: content_top, maxWidth: pos.validWidth,
|
this.drawTextContent('data', content, {
|
||||||
fontSize: 16, lineHeight: 24});
|
left: pos.content_left, top: content_top, maxWidth: pos.validWidth,
|
||||||
|
fontSize: 16, lineHeight: 24
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
////// 绘制楼层传送器 //////
|
////// 绘制楼层传送器 //////
|
||||||
@ -2638,8 +2645,10 @@ ui.prototype._drawViewMaps_buildData = function (index, x, y) {
|
|||||||
x = core.clamp(x, this.HSIZE, mw - this.HSIZE - 1);
|
x = core.clamp(x, this.HSIZE, mw - this.HSIZE - 1);
|
||||||
y = core.clamp(y, this.HSIZE, mh - this.HSIZE - 1);
|
y = core.clamp(y, this.HSIZE, mh - this.HSIZE - 1);
|
||||||
|
|
||||||
core.status.event.data = {index: index, x: x, y: y, floorId: floorId, mw: mw, mh: mh,
|
core.status.event.data = {
|
||||||
damage: damage, all: all };
|
index: index, x: x, y: y, floorId: floorId, mw: mw, mh: mh,
|
||||||
|
damage: damage, all: all
|
||||||
|
};
|
||||||
return core.status.event.data;
|
return core.status.event.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2833,8 +2842,10 @@ ui.prototype._drawEquipbox_getInfo = function (index) {
|
|||||||
}
|
}
|
||||||
core.status.event.selection = index;
|
core.status.event.selection = index;
|
||||||
core.status.event.data.selectId = selectId;
|
core.status.event.data.selectId = selectId;
|
||||||
return { index: index, selectId: selectId, page: page, totalPage: totalPage, allEquips: allEquips,
|
return {
|
||||||
equipLength: equipLength, equipEquipment: equipEquipment, ownEquipment: ownEquipment};
|
index: index, selectId: selectId, page: page, totalPage: totalPage, allEquips: allEquips,
|
||||||
|
equipLength: equipLength, equipEquipment: equipEquipment, ownEquipment: ownEquipment
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
ui.prototype._drawEquipbox_description = function (info, max_height) {
|
ui.prototype._drawEquipbox_description = function (info, max_height) {
|
||||||
|
|||||||
@ -565,7 +565,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
// 已经计算过的光环怪ID列表,用于判定叠加
|
// 已经计算过的光环怪ID列表,用于判定叠加
|
||||||
var usedEnemyIds = {};
|
var usedEnemyIds = {};
|
||||||
// 检查光环和支援的缓存
|
// 检查光环和支援的缓存
|
||||||
var index = x != null && y != null ? (x + "," + y) : "floor";
|
var index = x != null && y != null ? (x + "," + y) : floorId;
|
||||||
if (!core.status.checkBlock.cache) core.status.checkBlock.cache = {};
|
if (!core.status.checkBlock.cache) core.status.checkBlock.cache = {};
|
||||||
var cache = core.status.checkBlock.cache[index];
|
var cache = core.status.checkBlock.cache[index];
|
||||||
if (!cache) {
|
if (!cache) {
|
||||||
@ -1037,7 +1037,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a =
|
|||||||
'floorId': core.status.floorId,
|
'floorId': core.status.floorId,
|
||||||
'hero': core.clone(core.status.hero),
|
'hero': core.clone(core.status.hero),
|
||||||
'hard': core.status.hard,
|
'hard': core.status.hard,
|
||||||
'maps': core.maps.saveMap(),
|
'maps': core.clone(core.maps.saveMap()),
|
||||||
'route': core.encodeRoute(core.status.route),
|
'route': core.encodeRoute(core.status.route),
|
||||||
'values': values,
|
'values': values,
|
||||||
'version': core.firstData.version,
|
'version': core.firstData.version,
|
||||||
|
|||||||
148
runtime.d.ts
vendored
148
runtime.d.ts
vendored
@ -8,6 +8,8 @@ type move = 'forward' | direction
|
|||||||
type loc = { direction: direction, x: number, y: number }
|
type loc = { direction: direction, x: number, y: number }
|
||||||
type rgbarray = [number, number, number, number]
|
type rgbarray = [number, number, number, number]
|
||||||
|
|
||||||
|
type Events = MotaAction[] | string
|
||||||
|
|
||||||
type Block = {
|
type Block = {
|
||||||
x: number,
|
x: number,
|
||||||
y: number,
|
y: number,
|
||||||
@ -45,7 +47,53 @@ type Floor = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type ResolvedMap = {
|
type ResolvedMap = {
|
||||||
|
floorId: string
|
||||||
|
afterBattle: { [x: string]: Events }
|
||||||
|
afterOpenDoor: { [x: string]: Events }
|
||||||
|
afterGetItem: { [x: string]: Events }
|
||||||
|
autoEvent: Event
|
||||||
|
beforeBattle: { [x: string]: Events }
|
||||||
|
canFlyFrom: boolean
|
||||||
|
canFltTo: boolean
|
||||||
|
canUseQuickShop: boolean
|
||||||
|
cannotMove: Object
|
||||||
|
cannotMoveIn: Object
|
||||||
|
cannotViewMap: boolean
|
||||||
|
changeFloor: {
|
||||||
|
[x: string]: {
|
||||||
|
floorId: ':before' | ':after' | ':now' | string
|
||||||
|
loc?: [number, number]
|
||||||
|
stair?: 'upFloor' | 'downFloor' | ':symmetry' | ':symmetry_x' | ':symmetry_y' | 'flyPoint'
|
||||||
|
direction?: 'left' | 'right' | 'up' | 'down' | ':left' | ':right' | ':back' | ':hero' | ':backhero'
|
||||||
|
time?: number
|
||||||
|
ignoreChangeFloor?: boolean
|
||||||
|
}
|
||||||
|
}
|
||||||
|
defaultGround: string
|
||||||
|
bgm: string | Array<string>
|
||||||
|
bgmap: number[][]
|
||||||
|
/** 事件层 */
|
||||||
|
map: number[][]
|
||||||
|
fgmap: number[][]
|
||||||
|
width: number
|
||||||
|
height: number
|
||||||
|
images: Array<{
|
||||||
|
canvas: 'bg' | 'auto' | 'fg'
|
||||||
|
name: string
|
||||||
|
x: number
|
||||||
|
y: number
|
||||||
|
reverse?: ':x' | ':y' | ':o'
|
||||||
|
disable?: boolean
|
||||||
|
sx?: number
|
||||||
|
sy?: number
|
||||||
|
w?: number
|
||||||
|
h?: number
|
||||||
|
frame?: numer
|
||||||
|
}>
|
||||||
|
name: string
|
||||||
|
ratio: number
|
||||||
|
title: string
|
||||||
|
weather: [string, number]
|
||||||
}
|
}
|
||||||
|
|
||||||
type Enemy = {
|
type Enemy = {
|
||||||
@ -150,8 +198,42 @@ type gameStatus = {
|
|||||||
fgmaps: { [key: string]: number[][] }
|
fgmaps: { [key: string]: number[][] }
|
||||||
mapBlockObjs: { [key: string]: any }
|
mapBlockObjs: { [key: string]: any }
|
||||||
/** 显伤伤害 */
|
/** 显伤伤害 */
|
||||||
checkBlock: {}
|
checkBlock: {
|
||||||
damage: {}
|
ambush: { [x: string]: [number, number, string, direction] }
|
||||||
|
repulse: { [x: string]: [number, number, string, direction] }
|
||||||
|
damage: { [x: string]: number }
|
||||||
|
needCache: boolean
|
||||||
|
type: { [x: string]: { [x: string]: boolean } }
|
||||||
|
cache: {
|
||||||
|
[s: string]: {
|
||||||
|
hp_buff: number
|
||||||
|
atk_buff: number
|
||||||
|
def_buff: number
|
||||||
|
guards: [number, number, string]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
damage: {
|
||||||
|
posX: number
|
||||||
|
posY: number
|
||||||
|
data: Array<{
|
||||||
|
[x: string]: {
|
||||||
|
text: string
|
||||||
|
px: number
|
||||||
|
py: number
|
||||||
|
color: string | Array<number>
|
||||||
|
}
|
||||||
|
}>
|
||||||
|
extraData: Array<{
|
||||||
|
[x: string]: {
|
||||||
|
text: string
|
||||||
|
px: number
|
||||||
|
py: number
|
||||||
|
color: string | Array<number>
|
||||||
|
alpha: number
|
||||||
|
}
|
||||||
|
}>
|
||||||
|
}
|
||||||
|
|
||||||
lockControl: boolean
|
lockControl: boolean
|
||||||
|
|
||||||
@ -182,13 +264,13 @@ type gameStatus = {
|
|||||||
ctrlDown: boolean
|
ctrlDown: boolean
|
||||||
|
|
||||||
// 路线&回放
|
// 路线&回放
|
||||||
route: [],
|
route: string[],
|
||||||
replay: {
|
replay: {
|
||||||
replaying: boolean
|
replaying: boolean
|
||||||
pausing: boolean
|
pausing: boolean
|
||||||
/** 正在某段动画中 */animate: boolean
|
/** 正在某段动画中 */animate: boolean
|
||||||
toReplay: []
|
toReplay: string[]
|
||||||
totalList: []
|
totalList: string[]
|
||||||
speed: number
|
speed: number
|
||||||
steps: number
|
steps: number
|
||||||
save: []
|
save: []
|
||||||
@ -197,13 +279,13 @@ type gameStatus = {
|
|||||||
// event事件
|
// event事件
|
||||||
shops: {}
|
shops: {}
|
||||||
event: {
|
event: {
|
||||||
id: null
|
id: string
|
||||||
data: null
|
data: any
|
||||||
selection: null
|
selection: any
|
||||||
ui: null
|
ui: any
|
||||||
interval: null
|
interval: number
|
||||||
}
|
}
|
||||||
autoEvents: []
|
autoEvents: Events
|
||||||
textAttribute: {
|
textAttribute: {
|
||||||
position: string
|
position: string
|
||||||
offset: number
|
offset: number
|
||||||
@ -253,28 +335,6 @@ declare class control {
|
|||||||
*/
|
*/
|
||||||
updateStatusBar(doNotCheckAutoEvents?: boolean): void
|
updateStatusBar(doNotCheckAutoEvents?: boolean): void
|
||||||
|
|
||||||
/**
|
|
||||||
* 设置某个自定义变量或flag
|
|
||||||
* @example core.setFlag('xyz', 2) // 设置变量xyz为2
|
|
||||||
* @param name 变量名
|
|
||||||
* @param value 要设置的值
|
|
||||||
*/
|
|
||||||
setFlag(name: string, value: any): void
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取某个自定义变量或flag
|
|
||||||
* @example core.getFlag('point', 2) // 获得变量point的值;如果该变量从未定义过则返回2
|
|
||||||
* @param name 变量名
|
|
||||||
* @param defaultValue 该变量不存在时返回的值。
|
|
||||||
* @returns 变量的值
|
|
||||||
*/
|
|
||||||
getFlag(name: string, defaultValue: any): any
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 返回是否存在某个变量且不为0。等价于 core.getFlag('xyz', 0)!=0
|
|
||||||
*/
|
|
||||||
hasFlag(name: string): boolean
|
|
||||||
|
|
||||||
/** 删除某个flag/变量 */
|
/** 删除某个flag/变量 */
|
||||||
removeFlag(name: string): void
|
removeFlag(name: string): void
|
||||||
|
|
||||||
@ -406,7 +466,7 @@ declare class control {
|
|||||||
nearHero(x: number, y: number, n?: number): boolean
|
nearHero(x: number, y: number, n?: number): boolean
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重算并绘制地图显伤
|
* 请不要直接使用该函数,请使用core.updateStatusBar()代替!重算并绘制地图显伤
|
||||||
* @example core.updateDamage(); // 更新当前地图的显伤,绘制在显伤层(废话)
|
* @example core.updateDamage(); // 更新当前地图的显伤,绘制在显伤层(废话)
|
||||||
* @param floorId 地图id,不填视为当前地图。预览地图时填写
|
* @param floorId 地图id,不填视为当前地图。预览地图时填写
|
||||||
* @param ctx 绘制到的画布,如果填写了就会画在该画布而不是显伤层
|
* @param ctx 绘制到的画布,如果填写了就会画在该画布而不是显伤层
|
||||||
@ -445,10 +505,10 @@ declare class control {
|
|||||||
* @example core.getRealStatus('atk'); // 计算主角的攻击力,包括百分比修正。战斗使用的就是这个值
|
* @example core.getRealStatus('atk'); // 计算主角的攻击力,包括百分比修正。战斗使用的就是这个值
|
||||||
* @param name 属性的英文名,请注意只能用于数值类属性哦,否则乘法会得到NaN
|
* @param name 属性的英文名,请注意只能用于数值类属性哦,否则乘法会得到NaN
|
||||||
*/
|
*/
|
||||||
getRealStatus(name: string): any
|
getRealStatus<K extends keyof HeroStatus>(name: K): HeroStatus[K]
|
||||||
|
|
||||||
/** 获得某个状态的名字 */
|
/** 获得某个状态的名字 */
|
||||||
getStatusLabel(name: string): string
|
getStatusLabel<K extends keyof HeroStatus>(name: K): string
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置主角某个属性的百分比修正倍率,初始值为1,
|
* 设置主角某个属性的百分比修正倍率,初始值为1,
|
||||||
@ -457,7 +517,7 @@ declare class control {
|
|||||||
* @param name 属性的英文名,请注意只能用于数值类属性哦,否则随后的乘法会得到NaN
|
* @param name 属性的英文名,请注意只能用于数值类属性哦,否则随后的乘法会得到NaN
|
||||||
* @param value 新的百分比修正倍率,不填(效果上)视为1
|
* @param value 新的百分比修正倍率,不填(效果上)视为1
|
||||||
*/
|
*/
|
||||||
setBuff(name: string, value?: number): void
|
setBuff<K extends keyof HeroStatus>(name: K, value?: HeroStatus[K]): void
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 增减主角某个属性的百分比修正倍率,加减法叠加和抵消。等价于 core.setBuff(name, core.getBuff(name) + value)
|
* 增减主角某个属性的百分比修正倍率,加减法叠加和抵消。等价于 core.setBuff(name, core.getBuff(name) + value)
|
||||||
@ -465,14 +525,14 @@ declare class control {
|
|||||||
* @param name 属性的英文名,请注意只能用于数值类属性哦,否则随后的乘法会得到NaN
|
* @param name 属性的英文名,请注意只能用于数值类属性哦,否则随后的乘法会得到NaN
|
||||||
* @param value 倍率的增量
|
* @param value 倍率的增量
|
||||||
*/
|
*/
|
||||||
addBuff(name: string, value: number): void
|
addBuff<K extends keyof HeroStatus>(name: K, value: HeroStatus[K]): void
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 读取主角某个属性的百分比修正倍率,初始值为1
|
* 读取主角某个属性的百分比修正倍率,初始值为1
|
||||||
* @example core.getBuff('atk'); // 主角当前能发挥出多大比例的攻击力
|
* @example core.getBuff('atk'); // 主角当前能发挥出多大比例的攻击力
|
||||||
* @param name 属性的英文名
|
* @param name 属性的英文名
|
||||||
*/
|
*/
|
||||||
getBuff(name: string): number
|
getBuff<K extends keyof HeroStatus>(name: HeroStatus[K]): number
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获得或移除毒衰咒效果
|
* 获得或移除毒衰咒效果
|
||||||
@ -556,7 +616,7 @@ declare class control {
|
|||||||
* @param type 新天气的类型,不填视为无天气
|
* @param type 新天气的类型,不填视为无天气
|
||||||
* @param level 新天气(晴天除外)的级别,必须为不大于10的正整数,不填视为5
|
* @param level 新天气(晴天除外)的级别,必须为不大于10的正整数,不填视为5
|
||||||
*/
|
*/
|
||||||
setWeather(type?: 'rain' | 'snow' | 'sun' | 'fog' | 'cloud', level?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10): void
|
setWeather(type?: 'rain' | 'snow' | 'sun' | 'fog' | 'cloud' | string, level?: 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10): void
|
||||||
|
|
||||||
/** 注册一个天气 */
|
/** 注册一个天气 */
|
||||||
registerWeather(name: string, initFunc: (level: number) => void, frameFunc?: (timestamp: number, level: number) => void): void
|
registerWeather(name: string, initFunc: (level: number) => void, frameFunc?: (timestamp: number, level: number) => void): void
|
||||||
@ -581,7 +641,7 @@ declare class control {
|
|||||||
* @param times 闪烁的总次数,不填或填0都视为1
|
* @param times 闪烁的总次数,不填或填0都视为1
|
||||||
* @param callback 闪烁全部完毕后的回调函数,可选
|
* @param callback 闪烁全部完毕后的回调函数,可选
|
||||||
*/
|
*/
|
||||||
screenFlash(color: [number, number, number, number], time: number, times?: number, moveMode?: string, callback?: () => void): void
|
screenFlash(color: [number, number, number, number?], time: number, times?: number, moveMode?: string, callback?: () => void): void
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 播放背景音乐,中途开播但不计入存档且只会持续到下次场景切换。如需长期生效请将背景音乐的文件名赋值给flags.__bgm__
|
* 播放背景音乐,中途开播但不计入存档且只会持续到下次场景切换。如需长期生效请将背景音乐的文件名赋值给flags.__bgm__
|
||||||
@ -910,7 +970,7 @@ declare class events {
|
|||||||
* @param callback 新的回调函数,可选
|
* @param callback 新的回调函数,可选
|
||||||
* @param addToLast 插入的位置,true表示插入到末尾,否则插入到开头
|
* @param addToLast 插入的位置,true表示插入到末尾,否则插入到开头
|
||||||
*/
|
*/
|
||||||
insertAction(action: string | MotaAction | MotaAction[], x?: number, y?: number, callback?: () => void, addToLast?: boolean): void
|
insertAction(action: Events, x?: number, y?: number, callback?: () => void, addToLast?: boolean): void
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置一项敌人属性并计入存档
|
* 设置一项敌人属性并计入存档
|
||||||
@ -1072,7 +1132,7 @@ declare class events {
|
|||||||
tryUseItem(itemId: string): void
|
tryUseItem(itemId: string): void
|
||||||
|
|
||||||
/** 初始化游戏 */
|
/** 初始化游戏 */
|
||||||
resetGame(hero?: any, hard?: any, floorId?: string, maps?: any, values?: any): void
|
resetGame(hero?: HeroStatus, hard?: any, floorId?: string, maps?: any, values?: any): void
|
||||||
|
|
||||||
/** 游戏获胜事件 */
|
/** 游戏获胜事件 */
|
||||||
win(reason?: string, norank?: boolean, noexit?: boolean): void
|
win(reason?: string, norank?: boolean, noexit?: boolean): void
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user