kill bug & new function
This commit is contained in:
parent
4a801cbc85
commit
144ef9755e
@ -189,7 +189,6 @@
|
||||
</div>
|
||||
</div>
|
||||
<!-- injection -->
|
||||
<script src='libs/thirdparty/browser-polyfill.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/localforage.min.js'></script>
|
||||
|
||||
669
libs/control.js
669
libs/control.js
File diff suppressed because it is too large
Load Diff
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
707
libs/ui.js
707
libs/ui.js
File diff suppressed because it is too large
Load Diff
3428
project/functions.js
3428
project/functions.js
File diff suppressed because it is too large
Load Diff
170
runtime.d.ts
vendored
170
runtime.d.ts
vendored
@ -8,6 +8,8 @@ type move = 'forward' | direction
|
||||
type loc = { direction: direction, x: number, y: number }
|
||||
type rgbarray = [number, number, number, number]
|
||||
|
||||
type Events = MotaAction[] | string
|
||||
|
||||
type Block = {
|
||||
x: number,
|
||||
y: number,
|
||||
@ -45,7 +47,53 @@ type Floor = {
|
||||
}
|
||||
|
||||
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 = {
|
||||
@ -150,8 +198,42 @@ type gameStatus = {
|
||||
fgmaps: { [key: string]: number[][] }
|
||||
mapBlockObjs: { [key: string]: any }
|
||||
/** 显伤伤害 */
|
||||
checkBlock: {}
|
||||
damage: {}
|
||||
checkBlock: {
|
||||
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
|
||||
|
||||
@ -182,13 +264,13 @@ type gameStatus = {
|
||||
ctrlDown: boolean
|
||||
|
||||
// 路线&回放
|
||||
route: [],
|
||||
route: string[],
|
||||
replay: {
|
||||
replaying: boolean
|
||||
pausing: boolean
|
||||
/** 正在某段动画中 */animate: boolean
|
||||
toReplay: []
|
||||
totalList: []
|
||||
toReplay: string[]
|
||||
totalList: string[]
|
||||
speed: number
|
||||
steps: number
|
||||
save: []
|
||||
@ -197,13 +279,13 @@ type gameStatus = {
|
||||
// event事件
|
||||
shops: {}
|
||||
event: {
|
||||
id: null
|
||||
data: null
|
||||
selection: null
|
||||
ui: null
|
||||
interval: null
|
||||
id: string
|
||||
data: any
|
||||
selection: any
|
||||
ui: any
|
||||
interval: number
|
||||
}
|
||||
autoEvents: []
|
||||
autoEvents: Events
|
||||
textAttribute: {
|
||||
position: string
|
||||
offset: number
|
||||
@ -253,28 +335,6 @@ declare class control {
|
||||
*/
|
||||
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/变量 */
|
||||
removeFlag(name: string): void
|
||||
|
||||
@ -406,7 +466,7 @@ declare class control {
|
||||
nearHero(x: number, y: number, n?: number): boolean
|
||||
|
||||
/**
|
||||
* 重算并绘制地图显伤
|
||||
* 请不要直接使用该函数,请使用core.updateStatusBar()代替!重算并绘制地图显伤
|
||||
* @example core.updateDamage(); // 更新当前地图的显伤,绘制在显伤层(废话)
|
||||
* @param floorId 地图id,不填视为当前地图。预览地图时填写
|
||||
* @param ctx 绘制到的画布,如果填写了就会画在该画布而不是显伤层
|
||||
@ -445,10 +505,10 @@ declare class control {
|
||||
* @example core.getRealStatus('atk'); // 计算主角的攻击力,包括百分比修正。战斗使用的就是这个值
|
||||
* @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,
|
||||
@ -457,7 +517,7 @@ declare class control {
|
||||
* @param name 属性的英文名,请注意只能用于数值类属性哦,否则随后的乘法会得到NaN
|
||||
* @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)
|
||||
@ -465,21 +525,21 @@ declare class control {
|
||||
* @param name 属性的英文名,请注意只能用于数值类属性哦,否则随后的乘法会得到NaN
|
||||
* @param value 倍率的增量
|
||||
*/
|
||||
addBuff(name: string, value: number): void
|
||||
addBuff<K extends keyof HeroStatus>(name: K, value: HeroStatus[K]): void
|
||||
|
||||
/**
|
||||
* 读取主角某个属性的百分比修正倍率,初始值为1
|
||||
* @example core.getBuff('atk'); // 主角当前能发挥出多大比例的攻击力
|
||||
* @param name 属性的英文名
|
||||
*/
|
||||
getBuff(name: string): number
|
||||
getBuff<K extends keyof HeroStatus>(name: HeroStatus[K]): number
|
||||
|
||||
/**
|
||||
* 获得或移除毒衰咒效果
|
||||
* @param action 获得还是移除,'get'为获得,'remove'为移除
|
||||
* @param type 要获得或移除的毒衰咒效果
|
||||
*/
|
||||
triggerDebuff(action: string, type: string|string[]): void
|
||||
triggerDebuff(action: string, type: string | string[]): void
|
||||
|
||||
/**
|
||||
* 设置勇士位置
|
||||
@ -516,7 +576,7 @@ declare class control {
|
||||
* 升级扣除模式下会返回经验差值;非扣除模式下会返回总共需要的经验值。
|
||||
* 如果无法进行下次升级,返回null。
|
||||
*/
|
||||
getNextLvUpNeed() : number
|
||||
getNextLvUpNeed(): number
|
||||
|
||||
/**
|
||||
* 设置一个flag变量
|
||||
@ -556,13 +616,13 @@ declare class control {
|
||||
* @param type 新天气的类型,不填视为无天气
|
||||
* @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
|
||||
|
||||
/** 注销一个天气 */
|
||||
unregisterWeather(name: string) : void;
|
||||
unregisterWeather(name: string): void;
|
||||
|
||||
/**
|
||||
* 更改画面色调,不计入存档。如需长期生效请使用core.events._action_setCurtain()函数
|
||||
@ -581,7 +641,7 @@ declare class control {
|
||||
* @param times 闪烁的总次数,不填或填0都视为1
|
||||
* @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__
|
||||
@ -910,7 +970,7 @@ declare class events {
|
||||
* @param callback 新的回调函数,可选
|
||||
* @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
|
||||
|
||||
/** 初始化游戏 */
|
||||
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
|
||||
@ -1641,7 +1701,7 @@ declare class maps {
|
||||
* @param showDisable 隐藏点是否计入,true表示计入
|
||||
* @returns 一个详尽的数组,一般只用到其长度
|
||||
*/
|
||||
searchBlock(id: string, floorId?: string|Array<string>, showDisable?: boolean): Array<{ floorId: string, index: number, x: number, y: number, block: Block }>
|
||||
searchBlock(id: string, floorId?: string | Array<string>, showDisable?: boolean): Array<{ floorId: string, index: number, x: number, y: number, block: Block }>
|
||||
|
||||
/**
|
||||
* 根据给定的筛选函数搜索全部满足条件的图块
|
||||
@ -1651,7 +1711,7 @@ declare class maps {
|
||||
* @param showDisable 隐藏点是否计入,true表示计入
|
||||
* @returns 一个详尽的数组
|
||||
*/
|
||||
searchBlockWithFilter(blockFilter: (Block) => boolean, floorId?: string|Array<string>, showDisable?: boolean): Array<{ floorId: string, index: number, x: number, y: number, block: Block }>
|
||||
searchBlockWithFilter(blockFilter: (Block) => boolean, floorId?: string | Array<string>, showDisable?: boolean): Array<{ floorId: string, index: number, x: number, y: number, block: Block }>
|
||||
|
||||
/**
|
||||
* 显示(隐藏或显示的)图块,此函数将被“显示事件”指令和勾选了“不消失”的“移动/跳跃事件”指令(如阻击怪)的终点调用
|
||||
@ -1784,7 +1844,7 @@ declare class maps {
|
||||
stopAnimate(id?: number, doCallback?: boolean): void
|
||||
|
||||
/** 获得当前正在播放的所有(指定)动画的id列表 */
|
||||
getPlayingAnimates(name?: string) : Array<number>
|
||||
getPlayingAnimates(name?: string): Array<number>
|
||||
|
||||
/** 加载某个楼层(从剧本或存档中) */
|
||||
loadFloor(floorId?: string, map?: any): any
|
||||
@ -1910,7 +1970,7 @@ declare class maps {
|
||||
/** @file loader.js 主要负责资源的加载 */
|
||||
declare class loader {
|
||||
/** 加载一系列图片 */
|
||||
loadImages(dir: any, names: any, toSave: any, callback?: () => any) : any
|
||||
loadImages(dir: any, names: any, toSave: any, callback?: () => any): any
|
||||
|
||||
/** 加载某一张图片 */
|
||||
loadImage(dir: any, imgName?: any, callback?: () => any): any
|
||||
@ -2055,7 +2115,7 @@ declare class items {
|
||||
* @param beComparedEquipId 装备乙的id
|
||||
* @returns 两装备的各属性差,甲减乙,0省略
|
||||
*/
|
||||
compareEquipment(compareEquipId: string, beComparedEquipId: string): { [key: string]: number}
|
||||
compareEquipment(compareEquipId: string, beComparedEquipId: string): { [key: string]: number }
|
||||
|
||||
/**
|
||||
* 保存当前套装
|
||||
@ -2090,7 +2150,7 @@ declare class items {
|
||||
* @param operator 操作符,可选,如+=表示在原始值上增加
|
||||
* @param prefix 独立开关前缀,一般不需要
|
||||
*/
|
||||
setEquip(equipId: string, valueType: string, name: string, value: any, operator?: string, prefix?: string): void
|
||||
setEquip(equipId: string, valueType: string, name: string, value: any, operator?: string, prefix?: string): void
|
||||
}
|
||||
|
||||
/** @file ui.js 主要用来进行UI窗口的绘制,如对话框、怪物手册、楼传器、存读档界面等等。*/
|
||||
@ -2246,7 +2306,7 @@ declare class ui {
|
||||
drawUIEventSelector(code: number, background: string, x: number, y: number, w: number, h: number, z?: number): void
|
||||
|
||||
/** 清除一个或多个选择光标 */
|
||||
clearUIEventSelector(code: number|number[]): void
|
||||
clearUIEventSelector(code: number | number[]): void
|
||||
|
||||
/** 绘制一个确认框 */
|
||||
drawConfirmBox(text: string, yesCallback?: () => void, noCallback?: () => void): void
|
||||
@ -2412,7 +2472,7 @@ declare class utils {
|
||||
clone<T>(data?: T, filter?: (name: string, value: any) => boolean, recursion?: boolean): T
|
||||
|
||||
/** 深拷贝一个1D或2D的数组 */
|
||||
cloneArray(data?: Array<number>|Array<Array<number>>): Array<number>|Array<Array<number>>
|
||||
cloneArray(data?: Array<number> | Array<Array<number>>): Array<number> | Array<Array<number>>
|
||||
|
||||
/**
|
||||
* 等比例切分一张图片
|
||||
|
||||
Loading…
Reference in New Issue
Block a user