diff --git a/packages-user/client-modules/src/action/hotkey.ts b/packages-user/client-modules/src/action/hotkey.ts index a52844d..f7e2517 100644 --- a/packages-user/client-modules/src/action/hotkey.ts +++ b/packages-user/client-modules/src/action/hotkey.ts @@ -1,6 +1,6 @@ import { KeyCode } from '@motajs/client-base'; import { gameKey, HotkeyJSON } from '@motajs/system-action'; -import { hovered, mainUi, tip, openDanmakuPoster } from '@motajs/legacy-ui'; +import { hovered, mainUi, openDanmakuPoster } from '@motajs/legacy-ui'; import { GameStorage } from '@motajs/legacy-system'; export const mainScope = Symbol.for('@key_main'); @@ -220,23 +220,6 @@ gameKey defaults: KeyCode.Digit0, alt: true }) - //#region 技能按键 - .group('skill', '技能按键') - .register({ - id: 'skill1', - name: '断灭之刃', - defaults: KeyCode.Digit1 - }) - .register({ - id: 'skill2', - name: '跳跃', - defaults: KeyCode.Digit2 - }) - .register({ - id: 'skill3', - name: '铸剑为盾', - defaults: KeyCode.Digit3 - }) //#region 系统按键 .group('system', '系统按键') .register({ @@ -590,45 +573,6 @@ gameKey .realize('comment', () => { core.actions._clickGameInfo_openComments(); }) - .realize('skill1', () => { - const HeroSkill = Mota.require('@user/data-state').HeroSkill; - if (!HeroSkill.learnedSkill(HeroSkill.Blade)) return; - if (HeroSkill.getAutoSkill()) { - tip('error', '已开启自动切换技能!'); - return; - } - core.playSound('光标移动'); - HeroSkill.toggleSkill(HeroSkill.Blade); - core.status.route.push('useSkill:Blade'); - core.updateStatusBar(); - }) - .realize('skill2', () => { - const HeroSkill = Mota.require('@user/data-state').HeroSkill; - if ( - !flags.onChase && - !core.status.floorId.startsWith('tower') && - HeroSkill.learnedSkill(HeroSkill.Jump) - ) { - Mota.require('@user/legacy-plugin-data').jumpSkill(); - core.status.route.push('useSkill:Jump'); - } else { - if (core.hasItem('pickaxe')) { - core.useItem('pickaxe'); - } - } - }) - .realize('skill3', () => { - const HeroSkill = Mota.require('@user/data-state').HeroSkill; - if (!HeroSkill.learnedSkill(HeroSkill.Shield)) return; - if (HeroSkill.getAutoSkill()) { - tip('error', '已开启自动切换技能!'); - return; - } - core.playSound('光标移动'); - HeroSkill.toggleSkill(HeroSkill.Shield); - core.status.route.push('useSkill:Shield'); - core.updateStatusBar(); - }) .realize('debug', () => { core.debug(); }); diff --git a/packages-user/client-modules/src/render/index.tsx b/packages-user/client-modules/src/render/index.tsx index 86153ff..da307a3 100644 --- a/packages-user/client-modules/src/render/index.tsx +++ b/packages-user/client-modules/src/render/index.tsx @@ -2,12 +2,10 @@ import { createApp, Font } from '@motajs/render'; import { defineComponent } from 'vue'; import { DEFAULT_FONT, MAIN_HEIGHT, MAIN_WIDTH } from './shared'; import { hook, loading } from '@user/data-base'; -import { createLoopMap } from './loopMap'; import { createElements } from './elements'; import { mainRenderer } from './renderer'; import { createUI } from './ui'; import { createAction } from './action'; -import { createLegacy } from './legacy'; import { sceneController } from './scene'; import { GameTitleUI } from './ui/title'; import { createWeather } from './weather'; @@ -29,10 +27,8 @@ export function createGameRenderer() { export function createRender() { createElements(); - createLegacy(); createUI(); createAction(); - createLoopMap(); createWeather(); loading.on('loaded', () => { @@ -51,7 +47,6 @@ export function createRender() { export * from './components'; export * from './elements'; export * from './fx'; -export * from './legacy'; export * from './ui'; export * from './utils'; export * from './weather'; diff --git a/packages-user/client-modules/src/render/legacy/gameCanvas.ts b/packages-user/client-modules/src/render/legacy/gameCanvas.ts deleted file mode 100644 index 6fdb840..0000000 --- a/packages-user/client-modules/src/render/legacy/gameCanvas.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { logger } from '@motajs/common'; -import { loading } from '@user/data-base'; -import { - ILayerGroupRenderExtends, - LayerGroup, - LayerGroupFloorBinder -} from '../elements'; - -const filterMap: [FloorIds[], string][] = []; - -function getCanvasFilterByFloorId(floorId: FloorIds = core.status.floorId) { - return filterMap.find(v => v[0].includes(floorId))?.[1] ?? ''; -} - -export function createGameCanvas() { - loading.once('coreInit', () => { - filterMap.push( - [['MT50', 'MT60', 'MT61'], 'contrast(120%)'], // 童心佬的滤镜( - [ - core.floorIds - .slice(61, 70) - .concat(core.floorIds.slice(72, 107)), - 'contrast(120%)' - ] // 童心佬的滤镜( - ); - }); -} - -export class LayerGroupFilter implements ILayerGroupRenderExtends { - id: string = 'filter'; - - group!: LayerGroup; - binder!: LayerGroupFloorBinder; - - setFilter(floorId: FloorIds) { - const filter = getCanvasFilterByFloorId(floorId); - this.group.setFilter(filter); - // console.log(filter); - } - - private onFloorChange = (floor: FloorIds) => { - this.setFilter(floor); - }; - - private listen() { - this.binder.on('floorChange', this.onFloorChange); - } - - awake(group: LayerGroup): void { - this.group = group; - const ex = group.getExtends('floor-binder'); - if (ex instanceof LayerGroupFloorBinder) { - this.binder = ex; - this.listen(); - } else { - logger.error(1201); - group.removeExtends('floor-damage'); - } - } - - onDestroy(_group: LayerGroup): void { - this.binder?.off('floorChange', this.onFloorChange); - } -} diff --git a/packages-user/client-modules/src/render/legacy/index.ts b/packages-user/client-modules/src/render/legacy/index.ts deleted file mode 100644 index 768c449..0000000 --- a/packages-user/client-modules/src/render/legacy/index.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { createGameCanvas } from './gameCanvas'; -import { createShadow } from './shadow'; - -export function createLegacy() { - createGameCanvas(); - createShadow(); -} - -export * from './shadow'; diff --git a/packages-user/client-modules/src/render/legacy/pop.ts b/packages-user/client-modules/src/render/legacy/pop.ts deleted file mode 100644 index e1ca2ee..0000000 --- a/packages-user/client-modules/src/render/legacy/pop.ts +++ /dev/null @@ -1,103 +0,0 @@ -import { - wrapInstancedComponent, - RenderItem, - RenderItemPosition, - Transform, - MotaOffscreenCanvas2D -} from '@motajs/render'; - -import { TimingFn } from 'mutate-animate'; - -interface PopData { - cx: number; - cy: number; - path: TimingFn<2>; - text: string; - time: number; - start: number; - color: CanvasStyle; -} - -function parabola(input: number): [number, number] { - const x = input * 100; - return [x, x ** 2 / 20 - 3 * x]; -} - -export class Pop extends RenderItem { - private popList: Set = new Set(); - - private delegation: number = 0; - - constructor(type: RenderItemPosition) { - super(type, false); - this.delegation = this.delegateTicker(() => { - if (this.popList.size > 0) this.update(); - }); - } - - /** - * 添加一个弹出文字 - * @param text 要显示的文字 - * @param time 持续时长 - * @param cx 中心点,也就是从哪弹出的 - * @param cy 中心点,也就是从哪弹出的 - * @param path 自定义路径,不填表示默认的抛物线路径 - */ - addPop( - text: string, - time: number, - cx: number, - cy: number, - color: CanvasStyle, - path?: TimingFn<2> - ) { - this.popList.add({ - text, - time, - cx, - cy, - color, - path: path ?? parabola, - start: Date.now() - }); - this.update(); - } - - protected render( - canvas: MotaOffscreenCanvas2D, - _transform: Transform - ): void { - const ctx = canvas.ctx; - const toDelete = new Set(); - const now = Date.now(); - ctx.strokeStyle = '#000'; - ctx.font = '22px Verdana'; - ctx.lineWidth = 3; - this.popList.forEach(v => { - const { cx, cy, path, text, color, time, start } = v; - const dt = now - start; - const progress = dt / time; - if (progress >= 1) { - toDelete.add(v); - return; - } - const [x, y] = path(progress); - const dx = cx + x; - const dy = cy + y; - ctx.globalAlpha = Math.min(1, 2 - progress * 2); - ctx.fillStyle = color; - ctx.strokeText(text, dx, dy); - ctx.fillText(text, dx, dy); - }); - toDelete.forEach(v => { - this.popList.delete(v); - }); - } - - destroy(): void { - super.destroy(); - this.removeTicker(this.delegation); - } -} - -export const PopText = wrapInstancedComponent(() => new Pop('static')); diff --git a/packages-user/client-modules/src/render/legacy/portal.ts b/packages-user/client-modules/src/render/legacy/portal.ts deleted file mode 100644 index af9133d..0000000 --- a/packages-user/client-modules/src/render/legacy/portal.ts +++ /dev/null @@ -1,296 +0,0 @@ -import { logger } from '@motajs/common'; -import { MotaOffscreenCanvas2D } from '@motajs/render'; -import { mainSetting, MotaSettingItem } from '@motajs/legacy-ui'; -import { Sprite } from '@motajs/render'; -import { BluePalace } from '@user/data-state'; -import { - ILayerGroupRenderExtends, - LayerGroup, - LayerGroupFloorBinder -} from '../elements'; - -/** 最大粒子数 */ -const MAX_PARTICLES = 10; -/** 粒子持续时长 */ -const PARTICLE_LAST = 2000; -/** 粒子产生间隔 */ -const PARTICLE_INTERVAL = PARTICLE_LAST / MAX_PARTICLES; - -export class LayerGroupPortal implements ILayerGroupRenderExtends { - id: string = 'portal'; - - group!: LayerGroup; - binder!: LayerGroupFloorBinder; - portal!: Portal; - - private onFloorChange = (floor: FloorIds) => { - const data = BluePalace.portals; - this.portal.cellSize = this.group.cellSize; - this.portal.setData(data[floor] ?? []); - }; - - private listen() { - this.binder.on('floorChange', this.onFloorChange); - } - - awake(group: LayerGroup): void { - this.group = group; - const ex = group.getExtends('floor-binder'); - if (ex instanceof LayerGroupFloorBinder) { - this.binder = ex; - this.portal = new Portal(); - this.portal.setHD(true); - this.portal.size(group.width, group.height); - group.appendChild(this.portal); - this.listen(); - } else { - logger.error(1301); - group.removeExtends('portal'); - } - } - - onDestroy(_group: LayerGroup): void { - this.binder.off('floorChange', this.onFloorChange); - } -} - -interface DrawingPortal { - color: string; - x: number; - y: number; - particles: Set; - /** v表示竖向,h表示横向 */ - type: 'v' | 'h'; - /** 上一次新增粒子的时间 */ - lastParticle: number; -} - -interface PortalParticle { - fx: number; - fy: number; - totalTime: number; - time: number; - tx: number; - ty: number; - r: number; -} - -export class Portal extends Sprite { - static colors: string[] = ['#0f0', '#ff0', '#0ff', '#fff', '#f0f']; - - cellSize: number = 32; - /** 当前的渲染数据 */ - private renderData: BluePalace.Portal[] = []; - /** 渲染内容 */ - private renderable: Set = new Set(); - - /** 粒子开关设置 */ - private particleSetting: MotaSettingItem; - /** 上一帧时刻 */ - private lastTime: number = 0; - - private delegation: number; - - constructor() { - super('static', false, true); - - this.particleSetting = mainSetting.getSetting('fx.portalParticle')!; - - this.delegation = this.delegateTicker(() => { - if (this.particleSetting.value && this.renderable.size > 0) { - this.update(this); - } - }); - - this.setZIndex(35); - - this.setRenderFn((canvas, _transform) => { - this.renderPortal(canvas); - }); - } - - /** - * 设置渲染内容 - */ - setData(data: BluePalace.Portal[]) { - this.renderData = data; - this.generateRenderable(); - this.update(this); - } - - private generateRenderable() { - this.renderable.clear(); - if (this.renderData.length === 0) return; - const colorLength = Portal.colors.length; - const cell = this.cellSize; - this.renderData.forEach((v, i) => { - const c = Portal.colors[i % colorLength]; - const { fx, fy, tx, ty, dir, toDir } = v; - - let x1 = fx * cell; - let y1 = fy * cell; - let x2 = tx * cell; - let y2 = ty * cell; - - if (dir === 'down') y1 += cell; - else if (dir === 'right') x1 += cell; - - if (toDir === 'down') y2 += cell; - else if (toDir === 'right') x2 += cell; - - this.renderable.add({ - x: x1, - y: y1, - type: dir === 'left' || dir === 'right' ? 'v' : 'h', - color: c, - particles: new Set(), - lastParticle: Date.now() - }); - - this.renderable.add({ - x: x2, - y: y2, - type: toDir === 'left' || toDir === 'right' ? 'v' : 'h', - color: c, - particles: new Set(), - lastParticle: Date.now() - }); - }); - } - - private renderPortal(canvas: MotaOffscreenCanvas2D) { - if (this.renderable.size === 0) return; - const { ctx } = canvas; - - const p = this.particleSetting.value; - ctx.lineCap = 'round'; - ctx.lineWidth = 3; - ctx.shadowOffsetX = 0; - ctx.shadowOffsetY = 0; - if (p) { - ctx.shadowBlur = 8; - } else { - ctx.shadowBlur = 0; - } - - const time = Date.now(); - const dt = time - this.lastTime; - this.lastTime = time; - this.renderable.forEach(v => { - const { color, x, y, type, lastParticle, particles } = v; - - ctx.strokeStyle = color; - ctx.fillStyle = color; - ctx.globalAlpha = 1; - ctx.shadowColor = color; - if (type === 'v') { - ctx.beginPath(); - ctx.moveTo(x, y - 14); - ctx.lineTo(x, y + 30); - ctx.stroke(); - } else { - ctx.beginPath(); - ctx.moveTo(x + 2, y); - ctx.lineTo(x + 30, y); - ctx.stroke(); - } - - if (!p) return; - - const needDelete = new Set(); - particles.forEach(v => { - const { fx, fy, tx, ty, time: t, totalTime, r } = v; - const progress = t / totalTime; - const nx = (tx - fx) * progress + fx; - const ny = (ty - fy) * progress + fy; - v.time += dt; - - if (progress > 1) { - needDelete.add(v); - return; - } else if (progress > 0.75) { - ctx.globalAlpha = (1 - progress) * 4; - } else if (progress < 0.25) { - ctx.globalAlpha = progress * 4; - } else { - ctx.globalAlpha = 1; - } - - ctx.beginPath(); - ctx.arc(nx, ny, r, 0, Math.PI * 2); - ctx.closePath(); - ctx.fill(); - }); - needDelete.forEach(v => { - particles.delete(v); - }); - if ( - time - lastParticle >= PARTICLE_INTERVAL && - particles.size < MAX_PARTICLES - ) { - // 添加新粒子 - const direction = Math.random(); - const k = Math.random() / 2 - 0.3; - const verticle = Math.floor(Math.random() * 8 + 8); - const r = Math.random() * 2; - v.lastParticle = time; - if (direction > 0.5) { - // 左边 | 上边 - if (type === 'h') { - const fx = Math.floor(Math.random() * 24 + x + 4); - particles.add({ - fx: fx, - fy: y - 1, - tx: verticle * k + fx + 4, - ty: -verticle + y - 1, - r: r, - time: 0, - totalTime: PARTICLE_LAST - }); - } else { - const fy = Math.floor(Math.random() * 44 + y - 14); - particles.add({ - fy: fy, - fx: x - 1, - ty: verticle * k + fy + 4, - tx: -verticle + x - 1, - r: r, - time: 0, - totalTime: PARTICLE_LAST - }); - } - } else { - // 右边 | 下边 - if (type === 'h') { - const fx = Math.floor(Math.random() * 24 + x + 4); - particles.add({ - fx: fx, - fy: y + 1, - tx: verticle * k + fx + 4, - ty: verticle + y - 1, - r: r, - time: 0, - totalTime: PARTICLE_LAST - }); - } else { - const fy = Math.floor(Math.random() * 44 + y - 14); - particles.add({ - fy: fy, - fx: x + 1, - ty: verticle * k + fy + 4, - tx: verticle + x + 1, - r: r, - time: 0, - totalTime: PARTICLE_LAST - }); - } - } - } - }); - } - - destroy(): void { - super.destroy(); - this.removeTicker(this.delegation); - } -} diff --git a/packages-user/client-modules/src/render/legacy/shadow.ts b/packages-user/client-modules/src/render/legacy/shadow.ts deleted file mode 100644 index 512f7f5..0000000 --- a/packages-user/client-modules/src/render/legacy/shadow.ts +++ /dev/null @@ -1,1433 +0,0 @@ -import { mat4 } from 'gl-matrix'; -import { logger } from '@motajs/common'; -import { - WebGLColorArray, - createProgram, - isWebGL2Supported -} from '@motajs/legacy-ui'; -import { Sprite } from '@motajs/render'; -import { ILayerRenderExtends, Layer, HeroRenderer } from '../elements'; - -/** - * 最大光源数量,必须设置,且光源数不能超过这个值,这个值决定了会预留多少的缓冲区,因此最好尽可能小,同时游戏过程中不可修改 - * 这个值越大,对显卡尤其是显存的要求会越大,不过考虑到各种设备的性能差异,不建议超过10 - */ -const MAX_LIGHT_NUM = 5; -// 我也不知道这个数怎么来的,试出来是这个,别动就行 -const FOVY = Math.PI / 2; -const ignore: Set = new Set([660, 661]); - -interface LightConfig { - decay: number; - r: number; - color: WebGLColorArray; - noShelter?: boolean; -} - -interface ShadowConfig { - background?: WebGLColorArray; - immerse?: number; - blur?: number; -} - -function addLightFromBlock( - floors: FloorIds[], - block: number, - config: LightConfig, - sc?: ShadowConfig, - hero?: LightConfig -) { - floors.forEach(v => { - const shadow = new Shadow(v); - shadow.background = [0, 0, 0, 0.2]; - if (sc) { - if (sc.background) shadow.background = sc.background; - if (sc.blur) shadow.blur = sc.blur; - if (sc.immerse) shadow.immerse = sc.immerse; - } - if (hero) { - shadow.addLight({ - id: `${v}_hero`, - x: 0, - y: 0, - decay: hero.decay, - r: hero.r, - color: hero.color, - followHero: true, - noShelter: hero.noShelter - }); - } - core.floors[v].map.forEach((arr, y) => { - arr.forEach((num, x) => { - if (num === block) { - shadow.addLight({ - id: `${v}_${x}_${y}`, - x: x * 32 + 16, - y: y * 32 + 16, - decay: config.decay, - r: config.r, - color: config.color, - noShelter: config.noShelter - }); - } - }); - }); - }); -} - -export function createShadow() { - const { hook } = Mota.require('@user/data-base'); - - hook.once('reset', () => { - Shadow.init(); - addLightFromBlock( - core.floorIds - .slice(61, 70) - .concat(core.floorIds.slice(72, 81)) - .concat(core.floorIds.slice(85, 107)), - 103, - { decay: 50, r: 300, color: [0.9333, 0.6, 0.333, 0.3] }, - { background: [0, 0, 0, 0.2] }, - { decay: 50, r: 250, color: [0, 0, 0, 0] } - ); - addLightFromBlock( - ['MT50', 'MT60', 'MT61', 'MT72', 'MT73', 'MT74', 'MT75'], - 103, - { - decay: 20, - r: 150, - color: [0.9333, 0.6, 0.333, 0.3], - noShelter: true - }, - { background: [0, 0, 0, 0.3] } - ); - hook.on('loadData', () => { - Shadow.update(true); - LayerShadowExtends.shadowList.forEach(v => v.update()); - }); - }); - hook.on('reset', () => { - Shadow.update(true); - LayerShadowExtends.shadowList.forEach(v => v.update()); - }); - hook.on('setBlock', () => { - Shadow.update(true); - LayerShadowExtends.shadowList.forEach(v => v.update()); - }); - hook.on('changingFloor', () => { - Shadow.clearBuffer(); - Shadow.update(true); - // setCanvasFilterByFloorId(floorId); - LayerShadowExtends.shadowList.forEach(v => v.update()); - }); -} - -// 深度测试着色器 - -const depthVertex = /* glsl */ ` -precision mediump float; - -attribute vec4 a_position; - -uniform mat4 u_projection; -uniform mat4 u_view; - -void main() { - gl_Position = u_projection * u_view * a_position; -} -`; -const depthFragment = /* glsl */ ` -void main() { - // 深度测试中不需要片元着色器 - gl_FragColor = vec4(0.7, 0.7, 0.7, 1.0); -} -`; - -// 渲染着色器 -const colorVertex = /* glsl */ `#version 300 es -precision mediump float; - -in vec2 a_position; -in vec2 a_texcoord; - -out vec2 v_texcoord; - -void main() { - gl_Position = vec4(a_position, 0.0, 1.0); - v_texcoord = a_texcoord; -} -`; -const colorFragment = /* glsl */ `#version 300 es -precision mediump float; -precision mediump sampler2DArray; - -in vec2 v_texcoord; - -uniform sampler2DArray u_depthTexture; // 深度检测结果 -uniform vec4 u_background; // 背景色 -uniform int u_lightCount; -uniform vec2 u_screen; // 画布大小信息 - -layout (std140) uniform LightInfo { - vec2 pos[${MAX_LIGHT_NUM}]; // 光源坐标 - vec4 color[${MAX_LIGHT_NUM}]; // 光源颜色 - vec3 decay[${MAX_LIGHT_NUM}]; // 光源半径、开始衰减半径、是否会被遮挡 -}; - -out vec4 outColor; - -vec4 blend(vec4 color1, vec4 color2) { - vec3 co = color2.rgb * color2.a + color1.rgb * color1.a * (1.0 - color2.a); - float ao = color2.a + color1.a * (1.0 - color2.a); - return vec4(co, ao); -} - -void main() { - vec4 lightColor = vec4(0.0, 0.0, 0.0, 0.0); - float strengthTotal = 0.0; - - for (int i = 0; i < u_lightCount; i++) { - vec2 p = pos[i]; - vec4 c = color[i]; - vec3 d = decay[i]; - vec2 loc = vec2((gl_FragCoord.x - p.x) / u_screen.x / 2.0 + 0.5, (gl_FragCoord.y - p.y) / u_screen.y / 2.0 + 0.5); - float sheltered = texture(u_depthTexture, vec3(loc, i)).a; - - float dis = distance(gl_FragCoord.xy, p); // 计算距离 - float strength = clamp((dis - d.r) / (d.g - d.r), 0.0, 1.0); // 限制强度范围 - - if (sheltered > 0.5 && d.z < 0.5) strength = 0.0; // 遮挡逻辑 - - strengthTotal += strength; // 累计强度 - lightColor = mix(lightColor, vec4(c.rgb, c.a), strength); // 混合光源颜色 - } - if (strengthTotal > 1.0) strengthTotal = 1.0; - - outColor = blend(vec4(u_background.rgb, u_background.a * (1.0 - strengthTotal)), lightColor); -} -`; - -// 高斯模糊着色器,顶点着色器依然可以使用colorVertex -const blur1Fragment = /* glsl */ `#version 300 es -precision mediump float; - -uniform sampler2D u_texture; // 输入纹理 -uniform float u_blurRadius; // 模糊半径 -uniform vec2 u_textureSize; // 纹理的大小 - -in vec2 v_texcoord; // 接受顶点着色器传递的纹理坐标 -out vec4 fragColor; // 输出颜色 - -// 计算高斯权重 -float gaussian(float x, float sigma) { - return exp(-(x * x) / (2.0 * sigma * sigma)) / (sqrt(2.0 * 3.141592653589793) * sigma); -} - -void main() { - float sigma = u_blurRadius / 3.0; // 标准差 - int kernelSize = int(u_blurRadius) * 2 + 1; // 高斯核的大小 - float sum = 0.0; // 权重总和 - vec4 color = vec4(0.0); // 初始颜色 - - for (int i = -int(u_blurRadius); i <= int(u_blurRadius); i++) { - float weight = gaussian(float(i), sigma); // 计算权重 - sum += weight; // 权重累积 - vec2 offset = vec2(i, 0) / u_textureSize; // 水平方向偏移 - float x = v_texcoord.x + offset.x; - float y = v_texcoord.y + offset.y; - if (x < 0.0 || y < 0.0 || x > 1.0 || y > 1.0) continue; - color += texture(u_texture, vec2(x, y)) * weight; // 采样并加权 - } - - fragColor = color / sum; // 归一化结果 -} -`; -const blur2Fragment = /* glsl */ `#version 300 es -precision mediump float; - -uniform sampler2D u_texture; // 输入纹理 -uniform float u_blurRadius; // 模糊半径 -uniform vec2 u_textureSize; // 纹理的大小 - -in vec2 v_texcoord; // 接受顶点着色器传递的纹理坐标 -out vec4 fragColor; // 输出颜色 - -// 计算高斯权重 -float gaussian(float x, float sigma) { - return exp(-(x * x) / (2.0 * sigma * sigma)) / (sqrt(2.0 * 3.141592653589793) * sigma); -} - -void main() { - float sigma = u_blurRadius / 3.0; // 标准差 - int kernelSize = int(u_blurRadius) * 2 + 1; // 高斯核的大小 - float sum = 0.0; // 权重总和 - vec4 color = vec4(0.0); // 初始颜色 - - for (int i = -int(u_blurRadius); i <= int(u_blurRadius); i++) { - float weight = gaussian(float(i), sigma); // 计算权重 - sum += weight; // 权重累积 - vec2 offset = vec2(0, i) / u_textureSize; // 垂直方向偏移 - color += texture(u_texture, v_texcoord + offset) * weight; // 采样并加权 - } - - fragColor = color / sum; // 归一化结果 -} -`; - -interface ShadowProgram { - depth: WebGLProgram; - color: WebGLProgram; - blur1: WebGLProgram; - blur2: WebGLProgram; -} - -interface ShadowCache { - position: Float32Array; -} - -interface LightInfo { - id: string; - x: number; - y: number; - r: number; - decay: number; - color: WebGLColorArray; - noShelter?: boolean; - followHero?: boolean; -} - -interface ShadowLocations { - depth: { - a_position: number; - u_projection: WebGLUniformLocation; - u_view: WebGLUniformLocation; - }; - color: { - a_position: number; - a_texcoord: number; - u_background: WebGLUniformLocation; - u_lightCount: WebGLUniformLocation; - u_screen: WebGLUniformLocation; - u_depthTexture: WebGLUniformLocation; - LightInfo: number; - }; - blur1: { - a_position: number; - a_texcoord: number; - u_texture: WebGLUniformLocation; - u_textureSize: WebGLUniformLocation; - u_blurRadius: WebGLUniformLocation; - }; - blur2: { - a_position: number; - a_texcoord: number; - u_texture: WebGLUniformLocation; - u_textureSize: WebGLUniformLocation; - u_blurRadius: WebGLUniformLocation; - }; -} - -interface ShadowMatrix { - projection: mat4; -} - -interface ShadowBuffer { - depth: { - position: WebGLBuffer; - framebuffer: WebGLFramebuffer[]; - }; - color: { - position: WebGLBuffer; - texcoord: WebGLBuffer; - indices: WebGLBuffer; - lights: WebGLBuffer; - framebuffer: WebGLFramebuffer; - }; - blur1: { - position: WebGLBuffer; - texcoord: WebGLBuffer; - indices: WebGLBuffer; - framebuffer: WebGLFramebuffer; - }; - blur2: { - position: WebGLBuffer; - texcoord: WebGLBuffer; - indices: WebGLBuffer; - }; -} - -interface ShadowTexture { - depth: WebGLTexture; - color: WebGLTexture; - blur: WebGLTexture; -} - -export class Shadow { - static canvas: HTMLCanvasElement; - static gl: WebGL2RenderingContext; - static program: ShadowProgram; - - static map: Partial> = {}; - - private static locations: ShadowLocations; - private static martix: ShadowMatrix; - private static buffer: ShadowBuffer; - private static texture: ShadowTexture; - private static cached: Set = new Set(); - - floorId: FloorIds; - lights: LightInfo[] = []; - immerse: number = 4; - blur: number = 4; - background: WebGLColorArray = [0, 0, 0, 0]; - originLightInfo: Record = {}; - followHero: Set = new Set(); - - private cache?: ShadowCache; - - private needRefresh: boolean = false; - private refreshNoCache: boolean = false; - - constructor(floor: FloorIds) { - this.floorId = floor; - Shadow.map[floor] = this; - } - - /** - * 计算墙壁的立体信息,用于深度测试 - * @param nocache 是否不使用缓存 - */ - calShadowInfo(nocache: boolean = false) { - if (!nocache && this.cache && Shadow.cached.has(this.floorId)) - return this.cache; - Shadow.cached.add(this.floorId); - Shadow.clearBuffer(); - - const polygons = calMapPolygons(this.floorId, this.immerse, nocache); - - const res: number[] = []; - const ratio = devicePixelRatio * core.domStyle.scale; - const m = core._PX_ * ratio * 2; - - polygons.forEach(v => { - v.forEach(([x, y, w, h]) => { - const l = x * ratio; - const b = (core._PY_ - y) * ratio; - const r = (x + w) * ratio; - const t = (core._PY_ - (y + h)) * ratio; - res.push( - // 上边缘 - l, - t, - 0, - l, - t, - m, - r, - t, - m, - r, - t, - 0, - r, - t, - m, - l, - t, - 0, - // 右 - r, - t, - 0, - r, - t, - m, - r, - b, - m, - r, - b, - 0, - r, - b, - m, - r, - t, - 0, - // 下 - r, - b, - 0, - r, - b, - m, - l, - b, - m, - l, - b, - 0, - l, - b, - m, - r, - b, - 0, - // 左 - l, - b, - 0, - l, - b, - m, - l, - t, - m, - l, - t, - 0, - l, - t, - m, - l, - b, - 0 - ); - }); - }); - - return (this.cache = { position: new Float32Array(res) }); - } - - /** - * 添加一个光源 - */ - addLight(info: LightInfo) { - if (this.originLightInfo[info.id]) { - logger.warn(19, info.id); - return; - } - this.originLightInfo[info.id] = info; - this.lights.push({ - ...info, - y: core._PY_ - info.y - }); - if (info.followHero) { - this.followHero.add(info.id); - } - this.requestRefresh(); - } - - /** - * 移除一个光源 - * @param id 要移除的光源id - */ - removeLight(id: string) { - const index = this.lights.findIndex(v => v.id === id); - this.lights.splice(index, 1); - delete this.originLightInfo[id]; - this.followHero.delete(id); - this.requestRefresh(); - } - - /** - * 修改光源信息,注意不能直接对光源操作,如果需要操作务必使用本函数 - * @param id 要修改的光源id - * @param light 修改的信息,例如想修改x就填 { x: 100 } - */ - modifyLight(id: string, light: Partial) { - const origin = this.originLightInfo[id]; - const l = this.lights.find(v => v.id === id); - if (!origin || !l) return; - for (const [key, value] of Object.entries(light)) { - const k = key as keyof LightInfo; - // @ts-ignore - origin[k] = value; - if (k === 'y') { - l.y = core._PY_ - (value as number); - } else { - // @ts-ignore - l[k] = value; - } - } - } - - /** - * 刷新阴影信息,并重新渲染 - * @param nocahce 是否不使用缓存 - */ - requestRefresh(nocahce: boolean = false) { - if (core.status.floorId !== this.floorId) return; - if (nocahce) this.refreshNoCache = true; - if (this.needRefresh) return; - - requestAnimationFrame(() => { - this.refresh(this.refreshNoCache); - this.refreshNoCache = false; - }); - } - - /** - * 渲染阴影 - * @param nocache 是否不使用缓存 - * @param resize 是否resize canvas - */ - private refresh(nocache: boolean = false, resize: boolean = false) { - this.calShadowInfo(nocache); - if (resize) { - Shadow.resizeCanvas(); - } - - // clear - const canvas = Shadow.canvas; - const gl = Shadow.gl; - const ratio = core.domStyle.scale * devicePixelRatio; - gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); - gl.clearColor(0.0, 0.0, 0.0, 0.0); - gl.viewport(0, 0, canvas.width, canvas.height); - gl.enable(gl.BLEND); - gl.blendFunc(gl.ONE, gl.ZERO); - - // depth test - gl.useProgram(Shadow.program.depth); - const lightProjection = Shadow.martix.projection; - - // 使用 3D 纹理存储深度信息 - const texture = Shadow.texture.depth; - const info = this.calShadowInfo(nocache).position; - const length = info.length; - const positionBuffer = Shadow.buffer.depth.position; - const position = Shadow.locations.depth.a_position; - gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer); - gl.bufferData(gl.ARRAY_BUFFER, info, gl.STATIC_DRAW); - gl.enableVertexAttribArray(position); - gl.vertexAttribPointer(position, 3, gl.FLOAT, false, 0, 0); - const proj = Shadow.locations.depth.u_projection; - const view = Shadow.locations.depth.u_view; - - gl.enable(gl.DEPTH_TEST); - gl.depthFunc(gl.LESS); - this.lights.forEach((light, i) => { - this.depthTest( - lightProjection, - light, - i, - texture, - length, - proj, - view - ); - }); - - gl.disableVertexAttribArray(position); - gl.bufferData( - gl.ARRAY_BUFFER, - new Float32Array(info.length), - gl.STATIC_DRAW - ); - gl.vertexAttribPointer(position, 3, gl.FLOAT, false, 0, 0); - gl.bindTexture(gl.TEXTURE_2D, null); - - // render - gl.useProgram(Shadow.program.color); - gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - - // Buffers - const posColor = Shadow.locations.color.a_position; - const texColor = Shadow.locations.color.a_texcoord; - const posColorBuffer = Shadow.buffer.color.position; - gl.bindBuffer(gl.ARRAY_BUFFER, posColorBuffer); - gl.enableVertexAttribArray(posColor); - gl.vertexAttribPointer(posColor, 2, gl.FLOAT, false, 0, 0); - const texColorBuffer = Shadow.buffer.color.texcoord; - gl.bindBuffer(gl.ARRAY_BUFFER, texColorBuffer); - gl.enableVertexAttribArray(texColor); - gl.vertexAttribPointer(texColor, 2, gl.FLOAT, false, 0, 0); - const buffer = Shadow.buffer.color.indices; - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer); - - // Background & lightCount - const backgroundPos = Shadow.locations.color.u_background; - gl.uniform4f(backgroundPos, ...this.background); - const lightCountPos = Shadow.locations.color.u_lightCount; - gl.uniform1i(lightCountPos, this.lights.length); - const screenPos = Shadow.locations.color.u_screen; - gl.uniform2f(screenPos, canvas.width, canvas.height); - - // Texture - const textureLoc = Shadow.locations.color.u_depthTexture; - gl.uniform1i(textureLoc, 0); - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D_ARRAY, texture); - - // UBO - const data = []; - for (let i = 0; i < MAX_LIGHT_NUM; i++) { - if (this.lights[i]) { - const v = this.lights[i]; - data.push( - // 坐标 - v.x * ratio, - v.y * ratio, - 0, - 0 // 填充到 4 个分量以确保对齐 - ); - } else { - // 如果没有光源,添加填充以确保统一缓冲区大小保持一致 - data.push(0, 0, 0, 0); - } - } - for (let i = 0; i < MAX_LIGHT_NUM; i++) { - if (this.lights[i]) { - const v = this.lights[i]; - data.push( - // 颜色 - v.color[0], - v.color[1], - v.color[2], - v.color[3] // 4 个分量的颜色 - ); - } else { - // 如果没有光源,添加填充以确保统一缓冲区大小保持一致 - data.push(0, 0, 0, 0); - } - } - for (let i = 0; i < MAX_LIGHT_NUM; i++) { - if (this.lights[i]) { - const v = this.lights[i]; - data.push( - // 半径、衰减半径、遮挡 - v.r * ratio, - v.decay * ratio, - v.noShelter ? 1 : 0, - 0 // 填充到 4 个分量 - ); - } else { - // 如果没有光源,添加填充以确保统一缓冲区大小保持一致 - data.push(0, 0, 0, 0); - } - } - - const blockIndex = Shadow.locations.color.LightInfo; - - const lightsBuffer = Shadow.buffer.color.lights; - gl.bindBuffer(gl.UNIFORM_BUFFER, lightsBuffer); - gl.bufferData( - gl.UNIFORM_BUFFER, - new Float32Array(data), - gl.DYNAMIC_DRAW - ); - gl.uniformBlockBinding(Shadow.program.color, blockIndex, 0); - gl.bindBufferBase(gl.UNIFORM_BUFFER, 0, lightsBuffer); - - // Render to framebuffer - const colorTexture = Shadow.texture.color; - const colorFramebuffer = Shadow.buffer.color.framebuffer; - gl.enable(gl.DEPTH_TEST); - gl.bindFramebuffer(gl.FRAMEBUFFER, colorFramebuffer); - gl.framebufferTexture2D( - gl.FRAMEBUFFER, - gl.COLOR_ATTACHMENT0, - gl.TEXTURE_2D, - colorTexture, - 0 - ); - gl.bindTexture(gl.TEXTURE_2D, colorTexture); - gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT); - gl.viewport(0, 0, canvas.width, canvas.height); - gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0); - - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - gl.bindTexture(gl.TEXTURE_2D, null); - gl.disableVertexAttribArray(posColor); - gl.disableVertexAttribArray(texColor); - - // Apply blur - gl.useProgram(Shadow.program.blur1); - - // Buffer - const posBlur1 = Shadow.locations.blur1.a_position; - const texBlur1 = Shadow.locations.blur1.a_texcoord; - const posBlur1Buffer = Shadow.buffer.blur1.position; - gl.bindBuffer(gl.ARRAY_BUFFER, posBlur1Buffer); - gl.enableVertexAttribArray(posBlur1); - gl.vertexAttribPointer(posBlur1, 2, gl.FLOAT, false, 0, 0); - const texBlur1Buffer = Shadow.buffer.blur1.texcoord; - gl.bindBuffer(gl.ARRAY_BUFFER, texBlur1Buffer); - gl.enableVertexAttribArray(texBlur1); - gl.vertexAttribPointer(texBlur1, 2, gl.FLOAT, false, 0, 0); - const blur1IndicesBuffer = Shadow.buffer.blur1.indices; - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, blur1IndicesBuffer); - const blur1Indices = new Uint16Array([0, 1, 2, 2, 3, 1]); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, blur1Indices, gl.STATIC_DRAW); - - // Texture - const blur1TextureLoc = Shadow.locations.blur1.u_texture; - const blur1TextureSizeLoc = Shadow.locations.blur1.u_textureSize; - const blur1BlurRadiusLoc = Shadow.locations.blur1.u_blurRadius; - gl.uniform1i(blur1TextureLoc, 0); - gl.uniform1f(blur1BlurRadiusLoc, this.blur * ratio); - gl.uniform2f(blur1TextureSizeLoc, canvas.width, canvas.height); - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D, colorTexture); - gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT); - - // Render blur - const blurTexture = Shadow.texture.blur; - const blurFramebuffer = Shadow.buffer.blur1.framebuffer; - gl.bindTexture(gl.TEXTURE_2D, colorTexture); - gl.bindFramebuffer(gl.FRAMEBUFFER, blurFramebuffer); - gl.framebufferTexture2D( - gl.FRAMEBUFFER, - gl.COLOR_ATTACHMENT0, - gl.TEXTURE_2D, - blurTexture, - 0 - ); - gl.viewport(0, 0, canvas.width, canvas.height); - gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0); - - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - gl.disableVertexAttribArray(posBlur1); - gl.disableVertexAttribArray(texBlur1); - - // Applay blur 2 - gl.useProgram(Shadow.program.blur2); - - // Buffer - const posBlur2 = Shadow.locations.blur2.a_position; - const texBlur2 = Shadow.locations.blur2.a_texcoord; - const posBlur2Buffer = Shadow.buffer.blur2.position; - gl.bindBuffer(gl.ARRAY_BUFFER, posBlur2Buffer); - gl.enableVertexAttribArray(posBlur1); - gl.vertexAttribPointer(posBlur2, 2, gl.FLOAT, false, 0, 0); - const textBlur2Buffer = Shadow.buffer.blur2.texcoord; - gl.bindBuffer(gl.ARRAY_BUFFER, textBlur2Buffer); - gl.enableVertexAttribArray(texBlur2); - gl.vertexAttribPointer(texBlur2, 2, gl.FLOAT, false, 0, 0); - const blur2IndicesBuffer = Shadow.buffer.blur2.indices; - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, blur2IndicesBuffer); - - // Texture - const blur2TextureLoc = Shadow.locations.blur2.u_texture; - const blur2TextureSizeLoc = Shadow.locations.blur2.u_textureSize; - const blur2BlurRadiusLoc = Shadow.locations.blur2.u_blurRadius; - gl.uniform1i(blur2TextureLoc, 0); - gl.uniform1f(blur2BlurRadiusLoc, this.blur * ratio); - gl.uniform2f(blur2TextureSizeLoc, canvas.width, canvas.height); - gl.activeTexture(gl.TEXTURE0); - gl.bindTexture(gl.TEXTURE_2D, blurTexture); - - // Render to target - gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT); - gl.viewport(0, 0, canvas.width, canvas.height); - gl.drawElements(gl.TRIANGLES, 6, gl.UNSIGNED_SHORT, 0); - - gl.bindTexture(gl.TEXTURE_2D, null); - gl.disableVertexAttribArray(posBlur2); - gl.disableVertexAttribArray(texBlur2); - } - - private depthTest( - lightProjection: mat4, - light: LightInfo, - index: number, - texture: WebGLTexture, - length: number, - proj: WebGLUniformLocation, - view: WebGLUniformLocation - ) { - const gl = Shadow.gl; - const ratio = core.domStyle.scale * devicePixelRatio; - const cameraMatrix = mat4.create(); - mat4.lookAt( - cameraMatrix, - [light.x * ratio, light.y * ratio, core._PX_ * 2 * ratio], - [light.x * ratio, light.y * ratio, 0], - [0, 1, 0] - ); - - const size = core._PX_ * ratio * 2; - gl.viewport(0, 0, size, size); - const framebuffer = Shadow.buffer.depth.framebuffer[index]; - gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer); - gl.framebufferTextureLayer( - gl.FRAMEBUFFER, - gl.COLOR_ATTACHMENT0, - texture, - 0, - index - ); - gl.clear(gl.DEPTH_BUFFER_BIT | gl.COLOR_BUFFER_BIT); - - gl.uniformMatrix4fv(proj, false, lightProjection); - gl.uniformMatrix4fv(view, false, cameraMatrix); - - gl.drawArrays(gl.TRIANGLES, 0, length); - - gl.bindFramebuffer(gl.FRAMEBUFFER, null); - - return framebuffer; - } - - private static create3DTexture(size: number, depth: number) { - const gl = Shadow.gl; - const texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D_ARRAY, texture); - gl.texImage3D( - gl.TEXTURE_2D_ARRAY, - 0, - gl.RGBA, - size * 2, - size * 2, - depth, // 层数 - 0, - gl.RGBA, - gl.UNSIGNED_BYTE, - null - ); - gl.texParameteri( - gl.TEXTURE_2D_ARRAY, - gl.TEXTURE_MIN_FILTER, - gl.NEAREST - ); - gl.texParameteri( - gl.TEXTURE_2D_ARRAY, - gl.TEXTURE_MAG_FILTER, - gl.NEAREST - ); - return texture!; - } - - private static create2DTexture(size: number) { - const gl = Shadow.gl; - const texture = gl.createTexture(); - gl.bindTexture(gl.TEXTURE_2D, texture); - gl.texImage2D( - gl.TEXTURE_2D, - 0, - gl.RGBA, - size, - size, - 0, - gl.RGBA, - gl.UNSIGNED_BYTE, - null - ); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - gl.bindTexture(gl.TEXTURE_2D, null); - - return texture!; - } - - private static initBuffer(pos: Float32Array) { - const gl = this.gl; - const posBuffer = gl.createBuffer()!; - gl.bindBuffer(gl.ARRAY_BUFFER, posBuffer); - gl.bufferData(gl.ARRAY_BUFFER, pos, gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - - return posBuffer; - } - - private static initIndicesBuffer() { - const gl = this.gl; - const buffer = gl.createBuffer()!; - gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, buffer); - const indices = new Uint16Array([0, 1, 2, 2, 3, 1]); - gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - - return buffer; - } - - static resizeCanvas() { - const canvas = this.canvas; - const scale = core.domStyle.scale; - const ratio = scale * devicePixelRatio; - - canvas.width = core._PX_ * ratio; - canvas.height = core._PY_ * ratio; - canvas.style.left = `0px`; - canvas.style.top = `0px`; - canvas.style.width = `${scale * core._PX_}px`; - canvas.style.height = `${scale * core._PY_}px`; - - // Texture - const gl = this.gl; - gl.deleteTexture(this.texture.blur); - gl.deleteTexture(this.texture.color); - gl.deleteTexture(this.texture.depth); - - this.texture.blur = this.create2DTexture(canvas.width); - this.texture.color = this.create2DTexture(canvas.width); - this.texture.depth = this.create3DTexture(canvas.width, MAX_LIGHT_NUM); - - Shadow.cached.clear(); - - this.now()?.requestRefresh(); - } - - /** - * 初始化阴影绘制 - */ - static init() { - const gl = this.gl; - if (!isWebGL2Supported()) return; - gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, true); - const ratio = core.domStyle.scale * devicePixelRatio; - - // program - const depth = createProgram(gl, depthVertex, depthFragment); - const color = createProgram(gl, colorVertex, colorFragment); - const blur1 = createProgram(gl, colorVertex, blur1Fragment); - const blur2 = createProgram(gl, colorVertex, blur2Fragment); - - this.program = { depth, color, blur1, blur2 }; - - // canvas - const canvas = this.canvas; - - // Locations - this.locations = { - depth: { - a_position: gl.getAttribLocation(depth, 'a_position')!, - u_projection: gl.getUniformLocation(depth, 'u_projection')!, - u_view: gl.getUniformLocation(depth, 'u_view')! - }, - color: { - a_position: gl.getAttribLocation(color, 'a_position')!, - a_texcoord: gl.getAttribLocation(color, 'a_texcoord')!, - u_background: gl.getUniformLocation(color, 'u_background')!, - u_depthTexture: gl.getUniformLocation(color, 'u_depthTexture')!, - u_lightCount: gl.getUniformLocation(color, 'u_lightCount')!, - u_screen: gl.getUniformLocation(color, 'u_screen')!, - LightInfo: gl.getUniformBlockIndex(color, 'LightInfo') - }, - blur1: { - a_position: gl.getAttribLocation(blur1, 'a_position')!, - a_texcoord: gl.getAttribLocation(blur1, 'a_texcoord')!, - u_blurRadius: gl.getUniformLocation(blur1, 'u_blurRadius')!, - u_texture: gl.getUniformLocation(blur1, 'u_texture')!, - u_textureSize: gl.getUniformLocation(blur1, 'u_textureSize')! - }, - blur2: { - a_position: gl.getAttribLocation(blur2, 'a_position')!, - a_texcoord: gl.getAttribLocation(blur2, 'a_texcoord')!, - u_blurRadius: gl.getUniformLocation(blur2, 'u_blurRadius')!, - u_texture: gl.getUniformLocation(blur2, 'u_texture')!, - u_textureSize: gl.getUniformLocation(blur2, 'u_textureSize')! - } - }; - - // Matrix - const lightProjection = mat4.create(); - mat4.perspective(lightProjection, FOVY, 1, 1, core._PX_ * ratio); - this.martix = { - projection: lightProjection - }; - - // Buffer - const depthFramebuffers = Array(MAX_LIGHT_NUM) - .fill(1) - .map(v => gl.createFramebuffer()!); - this.buffer = { - depth: { - position: gl.createBuffer()!, - framebuffer: depthFramebuffers - }, - color: { - position: this.initBuffer( - new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]) - ), - texcoord: this.initBuffer( - new Float32Array([1, 1, 0, 1, 1, 0, 0, 0]) - ), - indices: this.initIndicesBuffer(), - framebuffer: gl.createFramebuffer()!, - lights: gl.createBuffer()! - }, - blur1: { - position: this.initBuffer( - new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]) - ), - texcoord: this.initBuffer( - new Float32Array([1, 1, 0, 1, 1, 0, 0, 0]) - ), - indices: this.initIndicesBuffer(), - framebuffer: gl.createFramebuffer()! - }, - blur2: { - position: this.initBuffer( - new Float32Array([1, 1, -1, 1, 1, -1, -1, -1]) - ), - texcoord: this.initBuffer( - new Float32Array([1, 1, 0, 1, 1, 0, 0, 0]) - ), - indices: this.initIndicesBuffer() - } - }; - - // Texture - this.texture = { - depth: this.create3DTexture(core._PX_, MAX_LIGHT_NUM), - color: this.create2DTexture(core._PX_), - blur: this.create2DTexture(core._PX_) - }; - this.resizeCanvas(); - } - - static resize() { - if (this.martix) { - const ratio = core.domStyle.scale * devicePixelRatio; - const lightProjection = mat4.create(); - mat4.perspective(lightProjection, FOVY, 1, 1, core._PX_ * ratio); - this.martix = { - projection: lightProjection - }; - } - } - - /** - * 清除一些关键缓冲区的内容,当且仅当图块变化或者切换地图时调用 - */ - static clearBuffer() { - const gl = this.gl; - - gl.bindBuffer(gl.ARRAY_BUFFER, this.buffer.depth.position); - gl.bufferData(gl.ARRAY_BUFFER, 0, gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, null); - - gl.bindBuffer(gl.UNIFORM_BUFFER, this.buffer.color.lights); - gl.bufferData(gl.UNIFORM_BUFFER, 0, gl.STATIC_DRAW); - gl.bindBuffer(gl.UNIFORM_BUFFER, null); - } - - static mount() { - // core.dom.gameDraw.appendChild(this.canvas); - } - - /** - * 更新当前的阴影绘制 - * @param nocache 是否不使用缓存 - */ - static update(nocache: boolean = false) { - const floor = core.status.floorId; - this.map[floor]?.requestRefresh(nocache); - } - - static now() { - return this.map[core.status.floorId]; - } -} - -Shadow.canvas = document.createElement('canvas'); -Shadow.gl = Shadow.canvas.getContext('webgl2')!; - -const wallCache: Partial> = {}; -const polygonCache: Partial< - Record -> = {}; -const requiredCls = ['terrains', 'autotile', 'tileset', 'animates']; - -interface PolygonStack { - x: number; - y: number; - dir: Dir; -} - -/** - * 计算一个地图的墙壁组成的多边形 - */ -export function calMapPolygons( - floor: FloorIds, - immerse: number = 4, - nocache: boolean = false -) { - if (!nocache && polygonCache[floor]) return polygonCache[floor]!; - - const wall = calMapWalls(floor, nocache); - const used: Set = new Set(); - const { width } = core.floors[floor]; - - const res: [number, number, number, number][][] = []; - - for (const nodes of wall) { - used.clear(); - - if (nodes.length === 1) { - const [x, y] = nodes[0]; - res.push([ - [ - x * 32 + immerse, - y * 32 + immerse, - 32 - immerse * 2, - 32 - immerse * 2 - ] - ]); - } - - const walls = new Set(nodes.map(([x, y]) => x + y * width)); - const arr: [number, number, number, number][] = []; - const [fx, fy] = nodes[0]; - - // 不那么标准的dfs,一条线走到黑,然后再看分支 - // 这么做的目的是尽量增大矩形的面积,减少节点数 - const stack: PolygonStack[] = []; - let f = false; - for (const [dir, { x: dx, y: dy }] of Object.entries(core.utils.scan)) { - const nx = fx + dx; - const ny = fy + dy; - if (walls.has(nx + ny * width)) { - stack.unshift({ - x: f ? nx : fx, - y: f ? ny : fy, - dir: dir as Dir - }); - f = true; - } - } - - while (stack.length > 0) { - const { x, y, dir } = stack.pop()!; - const { x: dx, y: dy } = core.utils.scan[dir]; - let nx = x; - let ny = y; - let hasForward = false; - - if (used.has(x + y * width)) continue; - - used.add(x + y * width); - - while (1) { - if (!walls.has(nx + ny * width)) { - break; - } - - let hasNext = false; - for (const [d, { x: ddx, y: ddy }] of Object.entries( - core.utils.scan - )) { - const nnx = ddx + nx; - const nny = ddy + ny; - if (nnx < 0 || nny < 0 || nnx >= width) continue; - const num = nnx + nny * width; - if (walls.has(num)) { - if (dir === d) { - hasNext = true; - if (used.has(num)) hasForward = true; - } else if (!used.has(num)) { - stack.push({ - x: nnx, - y: nny, - dir: d as Dir - }); - } - } - } - - if (!hasNext || hasForward) break; - nx += dx; - ny += dy; - used.add(nx + ny * width); - } - - const bx = x - dx; - const by = y - dy; - - let hasBack = - walls.has(bx + by * width) && used.has(bx + by * width); - - // 纯纯的数学计算,别动就行了 - switch (dir) { - case 'up': { - let sy = ny * 32 + immerse; - let sh = (y - ny + 1) * 32 - immerse * 2; - if (hasForward) { - sy -= immerse * 2; - sh += immerse * 2; - } - if (hasBack) sh += immerse * 2; - arr.push([nx * 32 + immerse, sy, 32 - immerse * 2, sh]); - break; - } - case 'right': { - let sx = x * 32 + immerse; - let sw = (nx - x + 1) * 32 - immerse * 2; - if (hasForward) sw += immerse * 2; - if (hasBack) { - sx -= immerse * 2; - sw += immerse * 2; - } - arr.push([sx, y * 32 + immerse, sw, 32 - immerse * 2]); - break; - } - case 'down': { - let sy = y * 32 + immerse; - let sh = (ny - y + 1) * 32 - immerse * 2; - if (hasForward) sh += immerse * 2; - if (hasBack) { - sy -= immerse * 2; - sh += immerse * 2; - } - arr.push([x * 32 + immerse, sy, 32 - immerse * 2, sh]); - break; - } - case 'left': { - let sx = nx * 32 + immerse; - let sw = (x - nx + 1) * 32 - immerse * 2; - if (hasForward) { - sx -= immerse * 2; - sw += immerse * 2; - } - if (hasBack) sw += immerse * 2; - arr.push([sx, ny * 32 + immerse, sw, 32 - immerse * 2]); - break; - } - } - } - res.push(arr); - } - - polygonCache[floor] = res; - - return res; -} - -/** - * 计算一个地图的墙壁连接情况 - */ -export function calMapWalls(floor: FloorIds, nocache: boolean = false) { - if (!nocache && wallCache[floor]) return wallCache[floor]!; - const used: Set = new Set(); - - const obj = core.getMapBlocksObj(floor); - const { width } = core.floors[floor]; - - const res: [number, number][][] = []; - - for (const block of Object.values(obj)) { - const { x, y } = block; - if ( - !used.has(x + y * width) && - requiredCls.includes(block.event.cls) && - block.event.noPass && - !ignore.has(block.id) - ) { - const queue: Block[] = [block]; - const arr: [number, number][] = []; - - // bfs - while (queue.length > 0) { - const block = queue.shift()!; - const { x, y } = block; - - arr.push([x, y]); - - for (const [, { x: dx, y: dy }] of Object.entries( - core.utils.scan - )) { - const nx = x + dx; - const ny = y + dy; - if (nx < 0 || ny < 0 || nx >= width) continue; - const loc: LocString = `${nx},${ny}`; - - const blk = obj[loc]; - - if (blk) { - if ( - requiredCls.includes(blk.event.cls) && - blk.event.noPass && - !used.has(blk.x + blk.y * width) && - !ignore.has(blk.id) - ) { - used.add(blk.x + blk.y * width); - queue.push(blk); - } - } - } - - used.add(x + y * width); - } - - res.push(arr); - } - } - - wallCache[floor] = res; - - return res; -} - -export class LayerShadowExtends implements ILayerRenderExtends { - static shadowList: Set = new Set(); - id: string = 'shadow'; - - layer!: Layer; - hero!: HeroRenderer; - sprite!: Sprite; - - update() { - this.sprite.update(this.sprite); - } - - private onMoveTick = (x: number, y: number) => { - const now = Shadow.now(); - if (!now) return; - if (now.followHero.size === 0) return; - now.followHero.forEach(v => { - now.modifyLight(v, { - x: x * 32 + 16, - y: y * 32 + 16 - }); - }); - now.requestRefresh(); - - this.layer.requestAfterFrame(() => { - this.sprite.update(this.sprite); - }); - }; - - private listen() { - this.hero.on('moveTick', this.onMoveTick); - } - - awake(layer: Layer): void { - const ex = layer.getExtends('floor-hero'); - if (!(ex instanceof HeroRenderer)) { - layer.removeExtends('shadow'); - logger.error(1101); - return; - } - this.hero = ex; - this.layer = layer; - this.listen(); - LayerShadowExtends.shadowList.add(this); - this.sprite = new Sprite('static', false); - this.sprite.setHD(true); - this.sprite.size(layer.width, layer.height); - this.sprite.setRenderFn((canvas, transform) => { - if (Shadow.map[core.status.floorId]) { - canvas.ctx.drawImage( - Shadow.canvas, - 0, - 0, - layer.width, - layer.height - ); - } - }); - - layer.appendChild(this.sprite); - } - - onDestroy(layer: Layer): void { - this.hero.off('moveTick', this.onMoveTick); - this.sprite.destroy(); - LayerShadowExtends.shadowList.delete(this); - } -} diff --git a/packages-user/client-modules/src/render/loopMap.ts b/packages-user/client-modules/src/render/loopMap.ts deleted file mode 100644 index ab25112..0000000 --- a/packages-user/client-modules/src/render/loopMap.ts +++ /dev/null @@ -1,108 +0,0 @@ -import { Container, MotaRenderer } from '@motajs/render'; -import { hook } from '@user/data-base'; -import { MiscData } from '@user/data-state'; -import { FloorDamageExtends } from './elements/damage'; -import { FloorItemDetail } from './elements/itemDetail'; -import { - LayerGroup, - FloorLayer, - LayerGroupFloorBinder, - FloorViewport -} from './elements'; -import { MAP_WIDTH } from './shared'; - -const loopMaps = MiscData.loopMaps; - -let loopLayer: LayerGroup; -let show: boolean = false; -/** 循环式地图中,更新视角的委托ticker */ -let delegation: number = -1; - -export function createLoopMap() { - hook.on('changingFloor', (floorId, _heroLoc) => { - enableLoopMapElement(floorId); - }); -} - -function createLayer() { - const group = new LayerGroup(); - ['bg', 'bg2', 'event', 'fg', 'fg2'].forEach(v => { - group.addLayer(v as FloorLayer); - }); - - const damage = new FloorDamageExtends(); - const detail = new FloorItemDetail(); - group.id = 'layer-loop'; - group.extends(damage); - group.extends(detail); - - loopLayer = group; - group.setZIndex(20); -} - -function enableLoopMapElement(floorId: FloorIds) { - if (!loopMaps.has(floorId)) { - disableLoopMapElement(); - return; - } - if (!loopLayer) createLayer(); - const render = MotaRenderer.get('render-main'); - const draw = render?.getElementById('map-draw') as Container; - const group = render?.getElementById('layer-main') as LayerGroup; - if (!draw || !group) return; - const ex = loopLayer.getExtends('floor-binder') as LayerGroupFloorBinder; - const viewport = group.getExtends('viewport') as FloorViewport; - if (!ex || !viewport) return; - ex.bindFloor(floorId); - - draw.appendChild(loopLayer); - show = true; - - const floor = core.status.maps[floorId]; - viewport.setAutoBound(false); - const transform = group.camera; - const width = floor.width; - const testPos = width * loopLayer.cellSize; - - loopLayer.removeTicker(delegation); - delegation = loopLayer.delegateTicker(() => { - const [x1] = transform.transformed(0, 0); - const camera = loopLayer.camera; - if (x1 > 0) { - // 这个是计算循环地图应该显示在哪 - const [, y2] = transform.transformed(x1 - testPos, 0); - camera.reset(); - camera.translate(MAP_WIDTH - testPos, y2); - loopLayer.pos(transform.x - MAP_WIDTH, 0); - loopLayer.show(); - loopLayer.update(loopLayer); - } else { - const [x2, y2] = transform.transformed(testPos, 0); - if (x2 < MAP_WIDTH) { - // 这个不用做其他运算,可以直接显示 - camera.reset(); - camera.translate(0, y2); - loopLayer.pos(x2, 0); - loopLayer.show(); - loopLayer.update(loopLayer); - } else { - loopLayer.hide(); - } - } - }); -} - -function disableLoopMapElement() { - if (!show) return; - show = false; - loopLayer.remove(); - - const render = MotaRenderer.get('render-main'); - const group = render?.getElementById('layer-main') as LayerGroup; - if (!group) return; - const viewport = group.getExtends('viewport') as FloorViewport; - if (!viewport) return; - - viewport.setAutoBound(true); - loopLayer.removeTicker(delegation); -} diff --git a/packages-user/client-modules/src/render/shared.ts b/packages-user/client-modules/src/render/shared.ts index 744c244..863452b 100644 --- a/packages-user/client-modules/src/render/shared.ts +++ b/packages-user/client-modules/src/render/shared.ts @@ -62,7 +62,7 @@ export const CENTER_LOC: ElementLocator = [ /** 弹框的宽度,使用在内置 UI 与组件中,包括确认框、选择框、等待框等 */ export const POP_BOX_WIDTH = MAP_WIDTH / 2; /** 默认字体 */ -export const DEFAULT_FONT = new Font('normal', 18); +export const DEFAULT_FONT = new Font('Verdana', 16); //#region 存档界面 diff --git a/packages-user/client-modules/src/render/ui/main.tsx b/packages-user/client-modules/src/render/ui/main.tsx index 50c4cf8..2973282 100644 --- a/packages-user/client-modules/src/render/ui/main.tsx +++ b/packages-user/client-modules/src/render/ui/main.tsx @@ -1,4 +1,3 @@ -import { LayerShadowExtends } from '../legacy/shadow'; import { Props, Font, @@ -39,11 +38,8 @@ import { ReplayingStatus } from './toolbar'; import { getHeroStatusOn } from '@user/data-state'; import { hook } from '@user/data-base'; import { FloorDamageExtends, FloorItemDetail } from '../elements'; -import { LayerGroupPortal } from '../legacy/portal'; -import { LayerGroupFilter } from '../legacy/gameCanvas'; import { LayerGroupHalo } from '../legacy/halo'; import { FloorChange } from '../legacy/fallback'; -import { PopText } from '../legacy/pop'; import { mainUIController } from './controller'; import { ILayerGroupRenderExtends, @@ -61,16 +57,13 @@ const MainScene = defineComponent(() => { const layerGroupExtends: ILayerGroupRenderExtends[] = [ new FloorDamageExtends(), new FloorItemDetail(), - new LayerGroupFilter(), - new LayerGroupPortal(), new LayerGroupHalo(), new LayerGroupAnimate(), new FloorViewport() ]; const eventExtends: ILayerRenderExtends[] = [ new HeroRenderer(), - new LayerDoorAnimate(), - new LayerShadowExtends() + new LayerDoorAnimate() ]; const mainTextboxProps: Props = { text: '', @@ -81,7 +74,7 @@ const MainScene = defineComponent(() => { titleFill: 'gold', font: new Font('normal'), titleFont: new Font('normal', 20, 'px', 700), - winskin: 'winskin2.png', + winskin: 'winskin.png', interval: 30, lineHeight: 4, width: MAP_WIDTH @@ -283,7 +276,6 @@ const MainScene = defineComponent(() => { - diff --git a/packages-user/client-modules/src/render/ui/save.tsx b/packages-user/client-modules/src/render/ui/save.tsx index e3f6468..11b9e36 100644 --- a/packages-user/client-modules/src/render/ui/save.tsx +++ b/packages-user/client-modules/src/render/ui/save.tsx @@ -69,8 +69,8 @@ const saveBtnProps = { } satisfies SetupComponentOptions; export const SaveItem = defineComponent(props => { - const font = Font.defaults({ size: 18 }); - const statusFont = Font.defaults({ size: 14 }); + const font = Font.defaults({ size: 16 }); + const statusFont = Font.defaults({ size: 12 }); const w = computed(() => props.loc[2] ?? 200); const h = computed(() => props.loc[3] ?? 200); @@ -267,7 +267,7 @@ export const Save = defineComponent( `确认要删除存档 ${index + 1}?`, [HALF_WIDTH, HALF_HEIGHT, void 0, void 0, 0.5, 0.5], POP_BOX_WIDTH, - { winskin: 'winskin2.png' } + { winskin: 'winskin.png' } ); if (confirm) { emit('delete', index, exist(posIndex)); diff --git a/packages-user/client-modules/src/render/ui/settings.tsx b/packages-user/client-modules/src/render/ui/settings.tsx index f455343..795c0a2 100644 --- a/packages-user/client-modules/src/render/ui/settings.tsx +++ b/packages-user/client-modules/src/render/ui/settings.tsx @@ -246,6 +246,7 @@ export const ReplaySettings = defineComponent(props => { onChoose={choose} interval={8} scope={scope} + maxHeight={MAIN_HEIGHT - 32} /> ); }, mainSettingsProps); diff --git a/packages-user/client-modules/src/render/ui/title.tsx b/packages-user/client-modules/src/render/ui/title.tsx index 9dcd0ed..e6b9da7 100644 --- a/packages-user/client-modules/src/render/ui/title.tsx +++ b/packages-user/client-modules/src/render/ui/title.tsx @@ -72,7 +72,7 @@ const gameTitleProps = { } satisfies SetupComponentOptions; export const GameTitle = defineComponent(props => { - const bg = core.material.images.images['bg.webp']; + const bg = core.material.images.images['bg.jpg']; //#region 计算背景图 const [width, height] = adjustCover( @@ -437,7 +437,6 @@ export const GameTitle = defineComponent(props => { image={bg} loc={[HALF_WIDTH, HALF_HEIGHT, width, height]} anc={[0.5, 0.5]} - filter="brightness(120%)contrast(110%)" zIndex={0} /> (props => { const layerGroupExtends: ILayerGroupRenderExtends[] = [ new FloorDamageExtends(), new FloorItemDetail(), - new LayerGroupPortal(), new LayerGroupHalo(), new LayerGroupAnimate() ]; diff --git a/packages-user/data-fallback/src/battle.ts b/packages-user/data-fallback/src/battle.ts index 15eceea..11d98ef 100644 --- a/packages-user/data-fallback/src/battle.ts +++ b/packages-user/data-fallback/src/battle.ts @@ -1,10 +1,4 @@ -import { - DamageEnemy, - ensureFloorDamage, - getEnemy, - HeroSkill, - NightSpecial -} from '@user/data-state'; +import { DamageEnemy, ensureFloorDamage, getEnemy } from '@user/data-state'; import { hook } from '@user/data-base'; import { Patch, PatchClass } from '@motajs/legacy-common'; import { isNil } from 'lodash-es'; @@ -150,9 +144,6 @@ export function patchBattle() { patch2.add( 'afterBattle', function (enemy: DamageEnemy, x?: number, y?: number) { - const floorId = core.status.floorId; - const special = enemy.info.special; - // 播放战斗动画 let animate: AnimationIds = 'hand'; // 检查当前装备是否存在攻击动画 @@ -180,30 +171,6 @@ export function patchBattle() { core.status.hero.statistics.battleDamage += damage; core.status.hero.statistics.battle++; - // 智慧之源 - if (special.has(14) && flags.hard === 2) { - core.addFlag( - 'inte_' + floorId, - Math.ceil((core.status.hero.mdef / 10) * 0.3) * 10 - ); - core.status.hero.mdef -= - Math.ceil((core.status.hero.mdef / 10) * 0.3) * 10; - } - - // 极昼永夜 - if (special.has(22)) { - NightSpecial.addNight(floorId, -enemy.info.night!); - } - if (special.has(23)) { - NightSpecial.addNight(floorId, enemy.info.day!); - } - - // 如果是融化怪,需要特殊标记一下 - if (special.has(25) && !isNil(x) && !isNil(y)) { - flags[`melt_${floorId}`] ??= {}; - flags[`melt_${floorId}`][`${x},${y}`] = enemy.info.melt; - } - // 获得金币 const money = enemy.info.money!; core.status.hero.money += money; @@ -223,8 +190,6 @@ export function patchBattle() { exp; core.drawTip(hint, enemy.id); - HeroSkill.disableSkill(); - // 事件的处理 const todo: MotaEvent = []; diff --git a/packages-user/data-state/src/enemy/damage.ts b/packages-user/data-state/src/enemy/damage.ts index 98252b3..e03a5d7 100644 --- a/packages-user/data-state/src/enemy/damage.ts +++ b/packages-user/data-state/src/enemy/damage.ts @@ -2,7 +2,6 @@ import { getHeroStatusOf, getHeroStatusOn } from '../state/hero'; import { Range, ensureArray, has, manhattan } from '@user/data-utils'; import EventEmitter from 'eventemitter3'; import { hook } from '@user/data-base'; -import { HeroSkill, NightSpecial } from '../mechanism'; import { EnemyInfo, DamageInfo, @@ -285,11 +284,6 @@ export class DamageEnemy implements IDamageEnemy { info.atk += flags[`inte_${floorId}`] ?? 0; } - // 极昼永夜 - const night = NightSpecial.getNight(floorId); - info.atk -= night; - info.def -= night; - // 融化,融化不属于怪物光环,因此不能用provide和inject计算,需要在这里计算 const melt = flags[`melt_${floorId}`]; if (!isNil(melt) && !isNil(this.x) && !isNil(this.y)) { @@ -720,27 +714,9 @@ export class DamageEnemy implements IDamageEnemy { private calEnemyDamageOf(hero: Partial, enemy: UserEnemyInfo) { const status = getHeroStatusOf(hero, realStatus, this.floorId); - let damage = calDamageWith(enemy, status) ?? Infinity; - let bestSkill = -1; + const damage = calDamageWith(enemy, status) ?? Infinity; - // 自动切换技能 - if (HeroSkill.getAutoSkill()) { - for (const skill of skills) { - if (!HeroSkill.learnedSkill(skill)) continue; - HeroSkill.enableSkill(skill); - const status = getHeroStatusOf(hero, realStatus); - - const d = calDamageWith(enemy, status) ?? Infinity; - - if (d < damage) { - damage = d; - bestSkill = skill; - } - HeroSkill.disableSkill(); - } - } - - return { damage, skill: bestSkill }; + return { damage }; } /** @@ -928,10 +904,6 @@ const realStatus: (keyof HeroStatus)[] = [ 'mana', 'magicDef' ]; -/** - * 主动技能列表 - */ -const skills: HeroSkill.Skill[] = [HeroSkill.Blade, HeroSkill.Shield]; /** * 计算怪物伤害 diff --git a/packages-user/data-state/src/index.ts b/packages-user/data-state/src/index.ts index 5f6dc7d..9b6d413 100644 --- a/packages-user/data-state/src/index.ts +++ b/packages-user/data-state/src/index.ts @@ -1,9 +1,2 @@ -import { createMechanism } from './mechanism'; - -export function create() { - createMechanism(); -} - export * from './enemy'; -export * from './mechanism'; export * from './state'; diff --git a/packages-user/data-state/src/mechanism/index.ts b/packages-user/data-state/src/mechanism/index.ts deleted file mode 100644 index ef1554b..0000000 --- a/packages-user/data-state/src/mechanism/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export function createMechanism() {} - -export * from './misc'; -export * from './skillTree'; diff --git a/packages-user/data-state/src/mechanism/misc.ts b/packages-user/data-state/src/mechanism/misc.ts deleted file mode 100644 index 9655ab0..0000000 --- a/packages-user/data-state/src/mechanism/misc.ts +++ /dev/null @@ -1,276 +0,0 @@ -import { backDir, has } from '@user/data-utils'; -import { loading } from '@user/data-base'; -import type { LayerDoorAnimate } from '@user/client-modules'; - -/** - * 一些零散机制的数据 - */ -export namespace MiscData { - /** 循环式地图 */ - export const loopMaps: Set = new Set(['tower6']); -} - -/** - * 永夜/极昼 - */ -export namespace NightSpecial { - const nightMap = new Map(); - - export function getNight(floor: FloorIds) { - return nightMap.get(floor) ?? 0; - } - - export function addNight(floor: FloorIds, value: number) { - const num = nightMap.get(floor) ?? 0; - nightMap.set(floor, num + value); - } - - export function clearNight(floors: Iterable) { - for (const floor of floors) { - nightMap.delete(floor); - } - } - - export function saveNight() { - return nightMap.entries(); - } - - export function loadNight(night: Iterable<[FloorIds, number]>) { - nightMap.clear(); - for (const [floor, num] of night) { - nightMap.set(floor, num); - } - } - - export function getAll() { - return nightMap; - } -} - -export namespace BluePalace { - type DoorConvertInfo = [id: AllIds, x: number, y: number]; - - // ---------- 黄蓝门转换 - - export function doorConvert( - x?: number, - y?: number, - floorId: FloorIds = core.status.floorId - ) { - core.autosave(); - core.extractBlocks(floorId); - const blocks = core.status.maps[floorId].blocks; - - const toConvert: DoorConvertInfo[] = []; - blocks.forEach(v => { - if (v.id === 492) { - core.setBlock(494, v.x, v.y, floorId); - toConvert.push(['A492', v.x, v.y]); - } else if (v.id === 494) { - core.setBlock(492, v.x, v.y, floorId); - toConvert.push(['A494', v.x, v.y]); - } - }); - - if (has(x) && has(y)) { - core.removeBlock(x, y, floorId); - } - - if (core.isReplaying() || core.status.floorId !== floorId) { - core.doAction(); - return; - } - - core.lockControl(); - core.playSound('door.opus'); - - const Adapter = Mota.require('@motajs/render').RenderAdapter; - const adapter = Adapter.get('door-animate'); - const texture = Mota.require('@user/client-modules').texture; - if (adapter) { - Promise.all( - toConvert.map(v => { - const block = core.initBlock( - v[1], - v[2], - texture.idNumberMap[v[0]] - ); - return adapter.all('openDoor', block); - }) - ).then(() => { - core.unlockControl(); - core.doAction(); - }); - } - } - - // ---------- 传送门部分 - - export interface Portal { - fx: number; - fy: number; - dir: Dir; - tx: number; - ty: number; - toDir: Dir; - } - - export interface PortalTo { - x: number; - y: number; - dir: Dir; - } - - type PortalMap = Map>>>; - - export const portalMap: PortalMap = new Map(); - - export const portals: Partial> = { - MT76: [ - { fx: 11, fy: 7, dir: 'right', tx: 4, ty: 6, toDir: 'down' }, - { fx: 6, fy: 5, dir: 'left', tx: 8, ty: 13, toDir: 'right' } - ], - MT77: [ - { fx: 2, fy: 9, dir: 'up', tx: 10, ty: 13, toDir: 'right' }, - { fx: 10, fy: 8, dir: 'right', tx: 3, ty: 0, toDir: 'down' }, - { fx: 1, fy: 0, dir: 'down', tx: 8, ty: 1, toDir: 'left' } - ], - MT78: [ - { fx: 8, fy: 4, dir: 'right', tx: 8, ty: 6, toDir: 'left' }, - { fx: 7, fy: 7, dir: 'up', tx: 1, ty: 0, toDir: 'down' } - ], - MT79: [ - { fx: 5, fy: 10, dir: 'right', tx: 9, ty: 7, toDir: 'left' }, - { fx: 2, fy: 2, dir: 'up', tx: 7, ty: 5, toDir: 'down' }, - { fx: 4, fy: 11, dir: 'up', tx: 5, ty: 7, toDir: 'right' }, - { fx: 7, fy: 11, dir: 'down', tx: 7, ty: 9, toDir: 'up' } - ], - MT80: [ - { fx: 2, fy: 10, dir: 'right', tx: 1, ty: 2, toDir: 'down' }, - { fx: 2, fy: 10, dir: 'left', tx: 13, ty: 5, toDir: 'up' } - ], - MT81: [ - { fx: 4, fy: 8, dir: 'right', tx: 1, ty: 11, toDir: 'down' }, - { fx: 7, fy: 13, dir: 'right', tx: 13, ty: 5, toDir: 'up' } - ], - MT82: [{ fx: 9, fy: 10, dir: 'left', tx: 6, ty: 5, toDir: 'left' }], - MT83: [ - { fx: 5, fy: 11, dir: 'left', tx: 9, ty: 11, toDir: 'right' }, - { fx: 5, fy: 3, dir: 'left', tx: 9, ty: 3, toDir: 'right' }, - { fx: 2, fy: 2, dir: 'up', tx: 2, ty: 12, toDir: 'down' }, - { fx: 12, fy: 2, dir: 'up', tx: 12, ty: 12, toDir: 'down' } - ], - MT84: [ - { fx: 2, fy: 3, dir: 'right', tx: 12, ty: 3, toDir: 'left' }, - { fx: 2, fy: 11, dir: 'right', tx: 12, ty: 11, toDir: 'left' } - ], - MT94: [{ fx: 12, fy: 11, dir: 'left', tx: 5, ty: 1, toDir: 'left' }], - MT95: [ - { fx: 13, fy: 14, dir: 'up', tx: 7, ty: 8, toDir: 'left' }, - { fx: 0, fy: 1, dir: 'right', tx: 14, ty: 1, toDir: 'left' }, - { fx: 6, fy: 13, dir: 'right', tx: 6, ty: 0, toDir: 'down' } - ], - MT96: [{ fx: 6, fy: 11, dir: 'down', tx: 4, ty: 14, toDir: 'up' }], - MT97: [{ fx: 0, fy: 1, dir: 'right', tx: 8, ty: 9, toDir: 'right' }] - }; - loading.once('coreInit', initPortals); - - function generatePortalMap() { - const delta: Record = { - // 方向:[正向, 逆向]<进出> - left: [ - [0, 0], - [-1, 0] - ], - down: [ - [0, 0], - [0, 1] - ], - right: [ - [0, 0], - [1, 0] - ], - up: [ - [0, 0], - [0, -1] - ] - }; - for (const [floor, p] of Object.entries(portals)) { - const width = core.floors[floor as FloorIds].width; - const map = new Map>>(); - portalMap.set(floor as FloorIds, map); - - // 正向映射 - p.forEach(v => { - const [[fdx, fdy], [tdx, tdy]] = delta[v.dir]; - const [[toFdx, toFdy], [toTdx, toTdy]] = - delta[backDir(v.toDir)]; - const fx = v.fx + fdx; - const fy = v.fy + fdy; - const tx = v.fx + tdx; - const ty = v.fy + tdy; - const index = fx + fy * width; - const backIndex = tx + ty * width; - if (index < 0 || backIndex < 0) return; - let data = map.get(index); - let backData = map.get(backIndex); - if (!data) { - data = {}; - map.set(index, data); - } - if (!backData) { - backData = {}; - map.set(backIndex, backData); - } - - data[v.dir] = { - x: v.tx + toFdx, - y: v.ty + toFdy, - dir: backDir(v.toDir) - }; - backData[backDir(v.dir)] = { - x: v.tx - toTdx, - y: v.ty - toTdy, - dir: v.toDir - }; - }); - // 逆向映射 - p.forEach(v => { - const [[fdx, fdy], [tdx, tdy]] = delta[backDir(v.toDir)]; - const [[toFdx, toFdy], [toTdx, toTdy]] = delta[v.dir]; - const fx = v.tx - fdx; - const fy = v.ty - fdy; - const tx = v.tx - tdx; - const ty = v.ty - tdy; - const index = fx + fy * width; - const backIndex = tx + ty * width; - - let data = map.get(index); - let backData = map.get(backIndex); - if (!data) { - data = {}; - map.set(index, data); - } - if (!backData) { - backData = {}; - map.set(backIndex, backData); - } - - data[v.toDir] = { - x: v.fx + toFdx, - y: v.fy + toFdy, - dir: backDir(v.dir) - }; - backData[backDir(v.toDir)] = { - x: v.fx + toTdx, - y: v.fy + toTdy, - dir: v.dir - }; - }); - } - } - - function initPortals() { - generatePortalMap(); - } -} diff --git a/packages-user/data-state/src/mechanism/skillTree.ts b/packages-user/data-state/src/mechanism/skillTree.ts deleted file mode 100644 index 4125ea2..0000000 --- a/packages-user/data-state/src/mechanism/skillTree.ts +++ /dev/null @@ -1,440 +0,0 @@ -let levels: number[] = []; - -export type Chapter = 'chapter1' | 'chapter2'; - -export interface Skill { - index: number; - title: string; - desc: string[]; - consume: (level: number) => number; - front: [skill: number, level: number][]; - loc: LocArr; - max: number; - effect: (level: number) => string[]; -} - -/** - * @type {Record} - */ -export const skills: Record = { - chapter1: [ - { - index: 0, - title: '力量', - desc: ['力量就是根本!可以通过智慧增加力量,每级增加2点攻击。'], - consume: level => 10 * level + 10, - front: [], - loc: [1, 2], - max: 10, - effect: level => [`攻击 + ${level * 2}`] - }, - { - index: 1, - title: '致命一击', - desc: ['爆发出全部力量攻击敌人,每级增加5点额外攻击。'], - consume: level => 30 * level + 30, - front: [[0, 5]], - loc: [2, 1], - max: 10, - effect: level => [`额外攻击 + ${level * 5}`] - }, - { - index: 2, - title: '断灭之刃', - desc: [ - '主动技能,快捷键1,', - '开启后会在战斗时会额外增加一定量的攻击,但同时减少一定量的防御。' - ], - consume: level => 200 * level + 400, - front: [[1, 5]], - loc: [4, 1], - max: 5, - effect: level => [`增加${level * 10}%攻击,减少${level * 10}%防御`] - }, - { - index: 3, - title: '坚韧', - desc: ['由智慧转化出坚韧!每级增加2点防御'], - consume: level => 10 * level + 10, - front: [], - loc: [1, 4], - max: 10, - effect: level => [`防御 + ${level * 2}`] - }, - { - index: 4, - title: '回春', - desc: ['让智慧化为治愈之泉水!每级增加1点生命回复'], - consume: level => 20 * level + 20, - front: [[3, 5]], - loc: [2, 5], - max: 25, - effect: level => [`生命回复 + ${level}`] - }, - { - index: 5, - title: '治愈之泉', - desc: [ - '让生命变得更多一些吧!每吃50瓶血瓶就增加当前生命回复10%的生命回复' - ], - consume: () => 1500, - front: [[4, 25]], - loc: [4, 5], - max: 1, - effect: () => [`50瓶血10%生命回复`] - }, - { - index: 6, - title: '坚固之盾', - desc: ['让护甲更加坚硬一些吧!每级增加10点防御'], - consume: level => 50 + level * 50, - front: [[3, 5]], - loc: [2, 3], - max: 10, - effect: level => [`防御 + ${level * 10}`] - }, - { - index: 7, - title: '无上之盾', - desc: [ - '第一章终极技能,战斗时智慧的 1/10 会充当等量护盾。' - ], - consume: () => 2500, - front: [ - [6, 10], - [5, 1], - [2, 2] - ], - loc: [5, 3], - max: 1, - effect: () => [`战斗时智慧会充当护盾`] - } - ], - chapter2: [ - { - index: 8, - title: '锋利', - desc: ['让剑变得更加锋利!每级使攻击增加1%(buff式增加)'], - consume: level => (level > 5 ? 50 * level ** 2 : 250 * level + 250), - front: [], - loc: [1, 2], - max: 15, - effect: level => [`攻击增加${level}%`] - }, - { - index: 9, - title: '坚硬', - desc: ['让盾牌变得更加坚固!每级使防御增加1%(buff式增加)'], - consume: level => (level > 5 ? 50 * level ** 2 : 250 * level + 250), - front: [], - loc: [1, 4], - max: 15, - effect: level => [`防御增加${level}%`] - }, - { - index: 10, - title: '铸剑为盾', - desc: [ - '主动技能,快捷键3,', - '减少一定的攻击,增加一定的防御' - ], - consume: level => 1000 * level ** 2 + 1000, - front: [[9, 5]], - loc: [2, 5], - max: 5, - effect: level => [ - `增加${level * 10}%的防御,减少${level * 10}%的攻击` - ] - }, - { - index: 11, - title: '魔法盾', - desc: ['为主角提供魔法防御,每级增加100点魔法防御'], - consume: level => 5000 * level + 5000, - front: [ - [8, 10], - [12, 10] - ], - loc: [4, 1], - max: 10, - effect: level => [`魔法防御 + ${level * 100}`] - }, - { - index: 12, - title: '聪慧', - desc: ['使主角变得更加聪明,每级使绿宝石增加的智慧点上升5%'], - consume: level => - level > 5 ? 100 * level ** 2 : 250 * level + 1250, - front: [ - [8, 10], - [9, 10] - ], - loc: [3, 3], - max: 20, - effect: level => [`增加${level * 5}%绿宝石效果`] - }, - { - index: 13, - title: '治愈', - desc: ['使主角能够更好地回复生命,每级使血瓶的加血量增加2%'], - consume: level => - level > 5 ? 100 * level ** 2 : 250 * level + 1250, - front: [[10, 3]], - loc: [4, 5], - max: 10, - effect: level => [`增加${level * 2}%的血瓶回血量`] - }, - { - index: 14, - title: '胜利之号', - desc: [ - '第二章终极技能,', - '勇士攻防增加10%(buff式增加)' - ], - consume: () => 25000, - front: [ - [13, 10], - [12, 10], - [11, 3] - ], - loc: [5, 3], - max: 1, - effect: () => [`攻防增加10%`] - } - ] -}; - -export function resetSkillLevel() { - levels = []; -} - -export function getSkillFromIndex(index: number) { - for (const [, skill] of Object.entries(skills)) { - const s = skill.find(v => v.index === index); - if (s) return s; - } -} - -/** - * 获取技能等级 - */ -export function getSkillLevel(skill: number) { - levels[skill] ??= 0; - return levels[skill]; -} - -export function getSkillConsume(skill: number) { - const s = getSkillFromIndex(skill); - if (!s) return 0; - return s.consume(getSkillLevel(skill)); -} - -export function openTree() { - if (main.replayChecking) return; - Mota.require('@motajs/legacy-ui').mainUi.open('skillTree'); -} - -/** - * 能否升级某个技能 - */ -export function canUpgrade(skill: number) { - const consume = getSkillConsume(skill); - if (consume > core.status.hero.mdef) return false; - const level = getSkillLevel(skill); - const s = getSkillFromIndex(skill); - if (!s) return false; - if (level >= s.max) return false; - const front = s.front; - for (const [skill, level] of front) { - if (getSkillLevel(skill) < level) return false; - } - return true; -} - -/** - * 实际升级效果 - * @param {number} skill - */ -export function upgradeSkill(skill: number) { - if (!canUpgrade(skill)) return false; - switch (skill) { - case 0: // 力量 +2攻击 - core.status.hero.atk += 2; - break; - case 1: // 致命一击 +5额外攻击 - core.status.hero.mana += 5; - break; - case 2: // 断灭之刃 - HeroSkill.learnSkill(HeroSkill.Blade); - break; - case 3: // 坚韧 +2防御 - core.status.hero.def += 2; - break; - case 4: // 回春 +1回复 - core.status.hero.hpmax += 1; - break; - case 5: // 治愈之泉 - core.setFlag('spring', true); - break; - case 6: // 坚固之盾 +10防御 - core.status.hero.def += 10; - break; - case 7: // 无上之盾 - core.setFlag('superSheild', true); - break; - case 8: // 锋利 +1%攻击 - core.addBuff('atk', 0.01); - break; - case 9: // 锋利 +1%防御 - core.addBuff('def', 0.01); - break; - case 10: // 铸剑为盾 - HeroSkill.learnSkill(HeroSkill.Shield); - break; - case 11: // 魔法盾 - core.status.hero.magicDef += 100; - break; - case 14: - core.addBuff('atk', 0.1); - core.addBuff('def', 0.1); - break; - } - const consume = getSkillConsume(skill); - core.status.hero.mdef -= consume; - levels[skill]++; - core.updateStatusBar(); - return true; -} - -export function saveSkillTree() { - return levels.slice(); -} - -export function loadSkillTree(data: number[]) { - levels = data ?? []; -} - -export namespace HeroSkill { - export const enum Skill { - None, - /** 断灭之刃 */ - Blade, - /** 铸剑为盾 */ - Shield, - /** 跳跃 */ - Jump - } - - export const Blade = Skill.Blade; - export const Shield = Skill.Shield; - export const Jump = Skill.Jump; - - const skillNameMap = new Map([ - [Skill.Blade, '断灭之刃'], - [Skill.Shield, '铸剑为盾'], - [Skill.Jump, '跳跃'] - ]); - - const skillDesc = new Map string>([ - [ - Skill.Blade, - level => `攻击上升 ${level * 10}%,防御下降 ${level * 10}%` - ], - [ - Skill.Shield, - level => `防御上升 ${level * 10}%,攻击下降 ${level * 10}%` - ], - [Skill.Jump, () => `跳过前方障碍,或踢走面前的怪物`] - ]); - - interface SkillSave { - autoSkill: boolean; - learned: Skill[]; - } - - const learned = new Set(); - let autoSkill = true; - let enabled: Skill = Skill.None; - - export function getLevel(skill: Skill = getEnabled()) { - switch (skill) { - case Blade: - return getSkillLevel(2); - case Jump: - return learned.has(Jump) ? 1 : 0; - case Shield: - return getSkillLevel(10); - } - return 0; - } - - export function getSkillName(skill: Skill = getEnabled()) { - return skillNameMap.get(skill) ?? '未开启技能'; - } - - export function getSkillDesc( - skill: Skill = getEnabled(), - level: number = getLevel() - ) { - return skillDesc.get(skill)?.(level) ?? ''; - } - - export function setAutoSkill(auto: boolean) { - autoSkill = auto; - } - - export function getAutoSkill() { - return autoSkill; - } - - export function learnedSkill(skill: Skill) { - return learned.has(skill); - } - - export function learnSkill(skill: Skill) { - learned.add(skill); - } - - export function forgetSkill(skill: Skill) { - learned.delete(skill); - } - - export function clearSkill() { - learned.clear(); - } - - export function saveSkill(): SkillSave { - return { autoSkill, learned: [...learned] }; - } - - export function loadSkill(skills: SkillSave) { - learned.clear(); - for (const skill of skills.learned) { - learned.add(skill); - } - autoSkill = skills.autoSkill; - } - - export function getAll() { - return learned; - } - - export function toggleSkill(skill: Skill) { - if (!learned.has(skill)) return; - if (enabled !== skill) enabled = skill; - else enabled = Skill.None; - } - - export function enableSkill(skill: Skill) { - if (!learned.has(skill)) return; - enabled = skill; - } - - export function disableSkill() { - enabled = Skill.None; - } - - export function getEnabled() { - return enabled; - } -} diff --git a/packages-user/data-state/src/state/hero.ts b/packages-user/data-state/src/state/hero.ts index 642947b..2fb91f6 100644 --- a/packages-user/data-state/src/state/hero.ts +++ b/packages-user/data-state/src/state/hero.ts @@ -1,7 +1,6 @@ import { logger } from '@motajs/common'; import { EventEmitter } from 'eventemitter3'; import { cloneDeep } from 'lodash-es'; -import { HeroSkill, NightSpecial } from '../mechanism'; /** * 获取勇士在某一点的属性 @@ -59,7 +58,6 @@ function getRealStatus( name: keyof HeroStatus | 'all' | (keyof HeroStatus)[], floorId: FloorIds = core.status.floorId ): any { - const { getSkillLevel } = Mota.require('@user/data-state'); if (name instanceof Array) { const res: any = {}; name.forEach(v => { @@ -94,29 +92,6 @@ function getRealStatus( if (typeof s !== 'number') return s; - // 永夜、极昼 - if (name === 'atk' || name === 'def') { - s += NightSpecial.getNight(floorId); - } - - const enabled = HeroSkill.getEnabled(); - // 技能 - if (enabled === HeroSkill.Blade) { - const level = getSkillLevel(2); - if (name === 'atk') { - s *= 1 + 0.1 * level; - } else if (name === 'def') { - s *= 1 - 0.1 * level; - } - } else if (enabled === HeroSkill.Shield) { - const level = getSkillLevel(10); - if (name === 'atk') { - s *= 1 - 0.1 * level; - } else if (name === 'def') { - s *= 1 + 0.1 * level; - } - } - // buff s *= core.status.hero.buff[name] ?? 1; s = Math.floor(s); diff --git a/packages-user/data-state/src/state/index.ts b/packages-user/data-state/src/state/index.ts index 3c86064..2f2826e 100644 --- a/packages-user/data-state/src/state/index.ts +++ b/packages-user/data-state/src/state/index.ts @@ -1,3 +1,5 @@ +export function create() {} + export * from './hero'; export * from './interface'; export * from './item'; diff --git a/packages-user/data-state/src/state/move.ts b/packages-user/data-state/src/state/move.ts index 1ec7765..a1ffe80 100644 --- a/packages-user/data-state/src/state/move.ts +++ b/packages-user/data-state/src/state/move.ts @@ -1,5 +1,5 @@ import EventEmitter from 'eventemitter3'; -import { backDir, checkCanMoveExtended, toDir } from './utils'; +import { backDir, toDir } from './utils'; import { loading } from '@user/data-base'; import type { RenderAdapter } from '@motajs/render'; import type { @@ -9,10 +9,8 @@ import type { HeroRenderer, Layer, LayerFloorBinder, - LayerGroup, LayerMovingRenderable } from '@user/client-modules'; -import { BluePalace, MiscData } from '../mechanism/misc'; import { sleep } from '@motajs/common'; // todo: 转身功能 @@ -414,26 +412,13 @@ interface CanMoveStatus { noPass: boolean; } -interface PortalStatus { - /** 下一步是否会步入传送门 */ - portal: boolean; - /** 传送门会传到哪 */ - data?: BluePalace.PortalTo; -} - const enum HeroMoveCode { Step, Stop, /** 不能移动,并撞击前面一格的图块,触发其触发器 */ Hit, /** 不能移动,同时当前格有CannotOut,或目标格有CannotIn,不会触发前面一格的触发器 */ - CannotMove, - /** 进入传送门 */ - Portal, - /** 循环式地图 */ - Loop, - /** 循环式地图撞击 */ - LoopHit + CannotMove } export class HeroMover extends ObjectMoverBase { @@ -454,9 +439,6 @@ export class HeroMover extends ObjectMoverBase { /** 本次移动开始时的移动速度 */ private beforeMoveSpeed: number = 100; - /** 这一步的传送门信息 */ - private portalData?: BluePalace.PortalTo; - override startMove( ignoreTerrain: boolean = false, noRoute: boolean = false, @@ -546,16 +528,6 @@ export class HeroMover extends ObjectMoverBase { this.moveDir = dir4Move; } - // 检查传送门 - if (!this.ignoreTerrain) { - const { portal, data } = this.checkPortal(x, y, dir4Move); - if (portal && data) { - this.portalData = data; - await this.renderHeroSwap(data); - return HeroMoveCode.Portal; - } - } - const dir = this.moveDir; if (!this.ignoreTerrain) { const { noPass, canMove } = this.checkCanMove(x, y, dir4Move); @@ -563,25 +535,6 @@ export class HeroMover extends ObjectMoverBase { if (!canMove) { return HeroMoveCode.CannotMove; } - // 循环式地图 - const floorId = core.status.floorId; - if (MiscData.loopMaps.has(core.status.floorId)) { - const floor = core.status.maps[floorId]; - const width = floor.width; - if ( - (x === 0 && dir === 'left') || - (x === width - 1 && dir === 'right') - ) { - if (noPass) { - return HeroMoveCode.LoopHit; - } - await Promise.all([ - this.renderHeroLoop(), - this.moveAnimate(nx, ny, showDir, dir) - ]); - return HeroMoveCode.Loop; - } - } // 不能移动 if (noPass) { return HeroMoveCode.Hit; @@ -632,25 +585,9 @@ export class HeroMover extends ObjectMoverBase { } // 本次移动正常完成 - if ( - code === HeroMoveCode.Step || - code === HeroMoveCode.Portal || - code === HeroMoveCode.Loop - ) { - if (code === HeroMoveCode.Portal) { - const data = this.portalData; - if (!data) return; - core.setHeroLoc('x', data.x); - core.setHeroLoc('y', data.y); - core.setHeroLoc('direction', data.dir); - } else if (code === HeroMoveCode.Loop) { - const map = core.status.thisMap; - if (x === 0) core.setHeroLoc('x', map.width - 1); - else core.setHeroLoc('x', 0); - } else { - core.setHeroLoc('x', nx, true); - core.setHeroLoc('y', ny, true); - } + if (code === HeroMoveCode.Step) { + core.setHeroLoc('x', nx, true); + core.setHeroLoc('y', ny, true); if (!this.ignoreTerrain) { const direction = core.getHeroLoc('direction'); @@ -713,7 +650,7 @@ export class HeroMover extends ObjectMoverBase { core.status.automaticRoute.moveStepBeforeStop = []; core.status.automaticRoute.lastDirection = dir; - if (core.status.automaticRoute.moveStepBeforeStop.length == 0) { + if (core.status.automaticRoute.moveStepBeforeStop.length === 0) { core.clearContinueAutomaticRoute(); core.stopAutomaticRoute(); } @@ -727,20 +664,6 @@ export class HeroMover extends ObjectMoverBase { */ private checkCanMove(x: number, y: number, dir: Dir): CanMoveStatus { // 如果是循环式地图 - const floorId = core.status.floorId; - if (MiscData.loopMaps.has(floorId)) { - const floor = core.status.maps[floorId]; - const width = floor.width; - if (x === 0 && dir === 'left') { - const noPass = core.noPass(width - 1, y); - const move = checkCanMoveExtended(0, y, width - 1, y, 'left'); - return { noPass, canMove: move }; - } else if (x === width - 1 && dir === 'right') { - const noPass = core.noPass(0, y); - const move = checkCanMoveExtended(width - 1, y, 0, y, 'right'); - return { noPass, canMove: move }; - } - } const { x: nx, y: ny } = this.nextLoc(x, y, dir); const noPass = core.noPass(nx, ny); const canMove = core.canMoveHero(x, y, dir); @@ -759,173 +682,6 @@ export class HeroMover extends ObjectMoverBase { const ny = y + dy; return { x: nx, y: ny }; } - - /** - * 检查前方一格是否会步入传送门 - * @param x 横坐标 - * @param y 纵坐标 - * @param dir 移动方向 - */ - private checkPortal(x: number, y: number, dir: Dir): PortalStatus { - const map = BluePalace.portalMap.get(core.status.floorId); - if (!map) { - return { portal: false }; - } - const width = core.status.thisMap.width; - const index = x + y * width; - const data = map?.get(index); - if (!data) { - return { portal: false }; - } - const to = data[dir]; - if (to) { - return { portal: true, data: to }; - } - return { portal: false }; - } - - private renderHeroSwap(data: BluePalace.PortalTo) { - const adapter = HeroMover.adapter; - if (!adapter) return; - const list = adapter.items; - const { x: tx, y: ty, dir: toDir } = data; - const { x, y, direction } = core.status.hero.loc; - const { x: dx } = core.utils.scan[direction]; - const { x: tdx } = core.utils.scan[toDir]; - - const promises = [...list].map(v => { - if (!v.renderable) return; - const renderable = { ...v.renderable }; - renderable.render = v.getRenderFromDir(toDir); - renderable.zIndex = ty; - const heroDir = v.moveDir; - - const width = v.renderable.render[0][2]; - const height = v.renderable.render[0][3]; - const cell = v.layer.cellSize; - const restHeight = height - cell; - if (!width || !height) return; - - const originFrom = structuredClone(v.renderable.render); - const originTo = structuredClone(renderable.render); - v.layer.moving.add(renderable); - v.layer.requestUpdateMoving(); - - const start = Date.now(); - return new Promise(res => { - const tick = () => { - const now = Date.now(); - const progress = (now - start) / this.moveSpeed; - const clipWidth = cell * progress; - const clipHeight = cell * progress; - const beforeWidth = width - clipWidth; - const beforeHeight = height - clipHeight; - - v.renderable!.x = x; - v.renderable!.y = y; - if (heroDir === 'left' || heroDir === 'right') { - v.renderable!.x = x + (clipWidth / 2 / cell) * dx; - v.renderable!.render.forEach((v, i) => { - v[2] = beforeWidth; - if (heroDir === 'left') { - v[0] = originFrom[i][0] + clipWidth; - } - }); - } else { - v.renderable!.render.forEach((v, i) => { - v[3] = beforeHeight; - if (heroDir === 'up') { - v[1] = - originFrom[i][1] + clipHeight + restHeight; - } - }); - } - - renderable.x = tx; - renderable.y = ty; - if (toDir === 'left' || toDir === 'right') { - renderable.x = tx + (clipWidth / 2 / cell - 0.5) * tdx; - renderable.render.forEach((v, i) => { - v[2] = clipWidth; - if (toDir === 'right') { - v[0] = originTo[i][0] + beforeWidth; - } - }); - } else { - if (toDir === 'down') renderable.y = ty - 1 + progress; - renderable.render.forEach((v, i) => { - v[3] = clipHeight + restHeight; - if (toDir === 'down') { - v[1] = originTo[i][1] + clipHeight + restHeight; - v[3] = clipHeight; - } - }); - } - }; - v.layer.delegateTicker(tick, this.moveSpeed, () => { - v.renderable!.render = originFrom; - v.setAnimateDir(data.dir); - v.layer.moving.delete(renderable); - v.layer.requestUpdateMoving(); - res(); - }); - }); - }); - - return Promise.all(promises); - } - - private renderHeroLoop() { - const adapter = HeroMover.adapter; - const viewport = HeroMover.viewport; - if (!adapter || !viewport) return; - const MotaRenderer = Mota.require('@motajs/render').MotaRenderer; - const render = MotaRenderer.get('render-main'); - const group = render?.getElementById('layer-loop') as LayerGroup; - const layer = group?.getLayer('event'); - const mainGroup = render?.getElementById('layer-main') as LayerGroup; - const mainLayer = mainGroup?.getLayer('event'); - const hero = mainLayer?.getExtends('floor-hero') as HeroRenderer; - const renderable = hero?.renderable; - if (!layer || !hero || !renderable) return; - const { x, y } = core.status.hero.loc; - const width = core.status.thisMap.width; - const loopHero = { ...renderable }; - layer.moving.add(loopHero); - - let target: number; - let from: number; - if (x === 0) { - from = width; - target = width - 1; - } else { - from = -1; - target = 0; - } - const delta = target - from; - loopHero.x = from; - - layer.requestUpdateMoving(); - - const startTime = Date.now(); - return new Promise(res => { - layer.delegateTicker( - () => { - const progress = (Date.now() - startTime) / this.moveSpeed; - const dx = delta * progress; - loopHero.x = dx + from; - layer.update(layer); - }, - this.moveSpeed, - () => { - layer.moving.delete(loopHero); - layer.requestUpdateMoving(); - viewport.all('setPosition', x === 0 ? width - 1 : 0, y); - res(); - } - ); - }); - } } interface HeroMoveCollection { diff --git a/packages-user/legacy-plugin-client/src/boss/barrage.ts b/packages-user/legacy-plugin-client/src/boss/barrage.ts deleted file mode 100644 index 7d5d31e..0000000 --- a/packages-user/legacy-plugin-client/src/boss/barrage.ts +++ /dev/null @@ -1,435 +0,0 @@ -import { - MotaOffscreenCanvas2D, - RenderItem, - RenderItemPosition, - Transform -} from '@motajs/render'; -import { IStateDamageable } from '@user/data-state'; -import EventEmitter from 'eventemitter3'; -import { Ticker } from 'mutate-animate'; - -interface BarrageBossEvent { - end: []; - start: []; -} - -export abstract class BarrageBoss extends EventEmitter { - ticker: Ticker = new Ticker(); - /** 这个boss的所有弹幕 */ - projectiles: Set = new Set(); - - /** 开始时刻 */ - private startTime: number = 0; - - /** 当前帧数 */ - frame: number = 0; - /** 上一帧的时刻 */ - lastTime: number = 0; - - /** 这个boss战的主渲染元素,所有弹幕都会在此之上渲染 */ - abstract readonly main: BossSprite; - /** 这个boss战中勇士的碰撞箱 */ - abstract readonly hitbox: Hitbox.HitboxType; - /** 勇士的状态 */ - abstract readonly state: IStateDamageable; - - /** - * boss的ai,战斗开始后,每帧执行一次 - * @param time 从战斗开始算起至现在经过了多长时间 - * @param frame 从战斗开始算起至现在经过了多少帧,即当前是第几帧 - * @param dt 本帧距上一帧多长时间,即上一帧持续了多长时间 - */ - abstract ai(time: number, frame: number, dt: number): void; - - private tick = () => { - const now = Date.now(); - const dt = now - this.lastTime; - this.ai(now - this.startTime, this.frame, dt); - this.frame++; - this.projectiles.forEach(v => { - const time = now - v.startTime; - v.time = time; - v.ai(this, time, v.frame, dt); - v.frame++; - if (time > 60_000) { - this.destroyProjectile(v); - } - if (v.isIntersect(this.hitbox)) { - v.doDamage(this.state); - } - }); - this.lastTime = now; - }; - - /** - * 开始这个弹幕战 - */ - start() { - if (this.ticker.funcs.has(this.tick)) { - this.ticker.remove(this.tick); - } - this.startTime = Date.now(); - this.frame = 0; - this.ticker.add(this.tick); - } - - /** - * 结束这个弹幕战 - */ - end() { - if (this.ticker.funcs.has(this.tick)) { - this.ticker.remove(this.tick); - } - } - - /** - * 摧毁传入的弹幕 - */ - destroyProjectile(projectile: Projectile) { - this.projectiles.delete(projectile); - } - - /** - * 用于创建一个弹幕的工厂函数 - * @param Proj 弹幕类 - * @param x 弹幕的横坐标 - * @param y 弹幕的纵坐标 - */ - createProjectile( - Proj: new (boss: this) => T, - x: number, - y: number - ): T { - const projectile = new Proj(this); - projectile.setPosition(x, y); - return projectile; - } -} - -export class BossSprite< - T extends BarrageBoss = BarrageBoss -> extends RenderItem { - /** 这个sprite所属的boss */ - readonly boss: T; - - constructor(type: RenderItemPosition, boss: T) { - super(type, false); - this.boss = boss; - } - - /** - * override 此方法来实现自定义渲染,默认会调用 {@link renderProjectiles} 方法。 - * 关于本方法,参考 {@link RenderItem.render} - * @param canvas 渲染至的目标画布 - * @param transform 当前画布相对于父元素的变换矩阵 - */ - protected render( - canvas: MotaOffscreenCanvas2D, - transform: Transform - ): void { - this.renderProjectiles(canvas, transform); - } - - /** - * 渲染所有弹幕 - * @param canvas 渲染至的画布 - * @param transform 渲染时的变换矩阵 - */ - protected renderProjectiles( - canvas: MotaOffscreenCanvas2D, - transform: Transform - ) { - this.boss.projectiles.forEach(v => { - v.render(canvas, transform); - }); - } -} - -export abstract class Projectile { - /** 这个弹幕从属的boss */ - boss: T; - /** 这个弹幕的伤害 */ - abstract damage: number; - - private _x: number = 0; - get x(): number { - return this._x; - } - set x(v: number) { - this._x = v; - this.updateHitbox(v, this._y); - } - - private _y: number = 0; - get y(): number { - return this._y; - } - set y(v: number) { - this._y = v; - this.updateHitbox(this._x, v); - } - - /** 弹幕的生成时刻 */ - startTime: number = Date.now(); - /** 弹幕当前帧数 */ - frame: number = 0; - /** 当前弹幕持续时长 */ - time: number = 0; - - /** 这个弹幕的碰撞箱 */ - abstract hitbox: Hitbox.HitboxType; - - constructor(boss: T) { - this.boss = boss; - boss.projectiles.add(this); - } - - /** - * 判断一个碰撞箱是否与本弹幕的碰撞箱有交叉。 - * 此判断应该具有对称性,如果用A检测B发生碰撞,那么用B检测A也应该发生碰撞。 - * @param hitbox 要检测的碰撞箱 - */ - abstract isIntersect(hitbox: Hitbox.HitboxType): boolean; - - /** - * 当弹幕的横纵坐标改变时,更新碰撞箱 - * @param x 弹幕的横坐标 - * @param y 弹幕的纵坐标 - */ - abstract updateHitbox(x: number, y: number): void; - - /** - * 对一个目标造成伤害 - * @param target 伤害目标 - * @returns 是否成功对目标造成伤害 - */ - abstract doDamage(target: IStateDamageable): boolean; - - /** - * 设置这个弹幕的位置 - */ - setPosition(x: number, y: number) { - this.x = x; - this.y = y; - this.updateHitbox(x, y); - } - - /** - * 这个弹幕的ai,每帧执行一次,直至被销毁,在1分钟后会强制被摧毁 - * @param boss 从属的boss - * @param time 从弹幕生成开始算起至现在经过了多长时间 - * @param frame 从弹幕生成开始算起至现在经过了多少帧,即当前是第几帧 - * @param dt 本帧距上一帧多长时间,即上一帧持续了多长时间 - */ - abstract ai(boss: T, time: number, frame: number, dt: number): void; - - /** - * 这个弹幕的渲染函数,原则上一个boss的弹幕应该全部画在同一层,而且渲染前画布不进行矩阵变换 - * @param canvas 渲染至的画布 - * @param transform 渲染时的变换矩阵 - */ - abstract render(canvas: MotaOffscreenCanvas2D, transform: Transform): void; - - /** - * 摧毁这个弹幕 - */ - destroy() { - this.boss.destroyProjectile(this); - } -} - -export namespace Hitbox { - export type HitboxType = Line | Rect | Circle; - - export class Line { - constructor( - public x1: number, - public y1: number, - public x2: number, - public y2: number - ) {} - - setPoint1(x: number, y: number) { - this.x1 = x; - this.y1 = y; - } - - setPoint2(x: number, y: number) { - this.x2 = x; - this.y2 = y; - } - } - - export class Circle { - constructor( - public x: number, - public y: number, - public radius: number - ) {} - - setRadius(radius: number) { - this.radius = radius; - } - - setCenter(x: number, y: number) { - this.x = x; - this.y = y; - } - } - - export class Rect { - constructor( - public x: number, - public y: number, - public w: number, - public h: number - ) {} - - setPosition(x: number, y: number) { - this.x = x; - this.y = y; - } - - setSize(w: number, h: number) { - this.w = w; - this.h = h; - } - } - - function cross( - x1: number, - y1: number, - x2: number, - y2: number, - x3: number, - y3: number - ): number { - const dx1 = x2 - x1; - const dy1 = y2 - y1; - const dx2 = x3 - x1; - const dy2 = y3 - y1; - return dx1 * dy2 - dx2 * dy1; - } - - /** - * 检查两条线段是否有交叉 - */ - export function checkLineLine(line1: Line, line2: Line) { - const { x1, y1, x2, y2 } = line1; - const { x1: x3, y1: y3, x2: x4, y2: y4 } = line2; - - if ( - Math.max(x1, x2) < Math.min(x3, x4) || - Math.min(x1, x2) > Math.max(x3, x4) || - Math.max(y1, y2) < Math.min(y3, y4) || - Math.min(y1, y2) > Math.max(y3, y4) - ) { - return false; - } - - const d1 = cross(x1, y1, x2, y2, x3, y3); - const d2 = cross(x1, y1, x2, y2, x4, y4); - const d3 = cross(x3, y3, x4, y4, x1, y1); - const d4 = cross(x3, y3, x4, y4, x2, y2); - - return d1 * d2 < 0 && d3 * d4 < 0; - } - - /** - * 检查线段和圆是否有交叉 - */ - export function checkLineCircle(line: Line, circle: Circle) { - const { x1, y1, x2, y2 } = line; - const { x: cx, y: cy, radius: r } = circle; - const minX = Math.min(x1, x2); - const maxX = Math.max(x1, x2); - const minY = Math.min(y1, y2); - const maxY = Math.max(y1, y2); - - // 检查圆心是否在扩展后的矩形范围之外 - if (cx + r < minX || cx - r > maxX || cy + r < minY || cy - r > maxY) { - return false; // 完全不相交 - } - - // 计算线段的方向向量 - const dx = x2 - x1; - const dy = y2 - y1; - - // A, B, C 对应二次方程的系数 - const a = dx * dx + dy * dy; - const b = 2 * (dx * (x1 - cx) + dy * (y1 - cy)); - const c = (x1 - cx) * (x1 - cx) + (y1 - cy) * (y1 - cy) - r * r; - - // 计算判别式 Δ - const discriminant = b ** 2 - 4 * a * c; - - // 如果判别式小于0,则没有交点 - if (discriminant < 0) { - return false; - } - - // 计算t的解(参数化线段的参数) - const sqrtDiscriminant = Math.sqrt(discriminant); - const t1 = (-b - sqrtDiscriminant) / (2 * a); - const t2 = (-b + sqrtDiscriminant) / (2 * a); - - // 检查 t1 和 t2 是否在 [0, 1] 之间 - if ((t1 >= 0 && t1 <= 1) || (t2 >= 0 && t2 <= 1)) { - return true; - } - - // 否则没有交点在线段上 - return false; - } - - /** - * 检查线段与矩形是否有交叉 - */ - export function checkLineRect(line: Line, rect: Rect) { - const { x, y, w, h } = rect; - return ( - checkLineLine(line, new Line(x, y, x + w, y + h)) || - checkLineLine(line, new Line(x + w, y, x, y + h)) - ); - } - - /** - * 检查两个圆是否有交叉 - */ - export function checkCircleCircle(circle1: Circle, circle2: Circle) { - const dx = circle1.x - circle2.x; - const dy = circle1.y - circle2.y; - const dis = dx ** 2 + dy ** 2; - return dis <= (circle1.radius + circle2.radius) ** 2; - } - - /** - * 检查圆与矩形是否有交叉 - */ - export function checkCircleRect(circle: Circle, rect: Rect) { - const { x: cx, y: cy, radius: r } = circle; - const { x, y, w, h } = rect; - - if (cx > x && cx < x + w && cy > y && cy < y + h) return true; - - // 找到圆心到矩形的最近点 - const closestX = Math.max(x, Math.min(cx, x + w)); - const closestY = Math.max(y, Math.min(cy, y + h)); - - return Math.hypot(closestX - cx, closestY - cy) <= r; - } - - /** - * 检查两个矩形是否有交叉 - */ - export function checkRectRect(rect1: Rect, rect2: Rect) { - const { x: x1, y: y1, w: w1, h: h1 } = rect1; - const { x: x3, y: y3, w: w2, h: h2 } = rect2; - const x2 = x1 + w1; - const y2 = y1 + h1; - const x4 = x3 + w2; - const y4 = y3 + h2; - - return x2 >= x3 && x4 >= x1 && y2 >= y3 && y4 >= y1; - } -} diff --git a/packages-user/legacy-plugin-client/src/boss/index.ts b/packages-user/legacy-plugin-client/src/boss/index.ts deleted file mode 100644 index 456a5fa..0000000 --- a/packages-user/legacy-plugin-client/src/boss/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { hook } from '@user/data-base'; -import { BarrageBoss } from './barrage'; -import { TowerBoss } from './towerBoss'; - -let boss: BarrageBoss | null; - -export function startTowerBoss() { - boss = new TowerBoss(); - boss.start(); - boss.once('end', () => { - boss = null; - }); -} - -export function getBoss(): T | null { - return boss as T; -} - -hook.on('reset', () => { - if (boss) { - boss.end(); - } -}); diff --git a/packages-user/legacy-plugin-client/src/boss/palaceBoss.ts b/packages-user/legacy-plugin-client/src/boss/palaceBoss.ts deleted file mode 100644 index 766355e..0000000 --- a/packages-user/legacy-plugin-client/src/boss/palaceBoss.ts +++ /dev/null @@ -1,132 +0,0 @@ -import { IStateDamageable } from '@user/data-state'; -import { BarrageBoss, BossSprite, Hitbox } from './barrage'; -import { - Container, - MotaRenderer, - RenderItem, - Shader, - Transform, - MotaOffscreenCanvas2D -} from '@motajs/render'; -import { Pop } from '../../../client-modules/src/render/legacy/pop'; -import { SplittableBall } from './palaceBossProjectile'; -import { PointEffect } from '../fx/pointShader'; -import { loading } from '@user/data-base'; -import { clip } from '@user/legacy-plugin-data'; -import { LayerGroup } from '@user/client-modules'; - -loading.once('coreInit', () => { - const shader = new Shader(); - shader.size(480, 480); - shader.setHD(true); - shader.setZIndex(120); - PalaceBoss.shader = shader; - PalaceBoss.effect.create(shader, 40); -}); - -const enum BossStage { - Prologue, - - Stage1, - Stage2, - Stage3, - Stage4, - - End -} - -export class PalaceBoss extends BarrageBoss { - static effect: PointEffect = new PointEffect(); - static shader: Shader; - - main: BossSprite; - hitbox: Hitbox.Circle; - state: IStateDamageable; - - private stage: BossStage = BossStage.Prologue; - - /** 用于展示傅里叶频谱的背景元素 */ - private back: SonicBack; - /** 楼层渲染元素 */ - private group: LayerGroup; - /** 楼层渲染容器 */ - private mapDraw: Container; - /** 伤害弹出 */ - pop: Pop; - - private heroHp: number = 0; - - constructor() { - super(); - - const render = MotaRenderer.get('render-main')!; - this.group = render.getElementById('layer-main') as LayerGroup; - this.mapDraw = render.getElementById('map-draw') as Container; - this.pop = render.getElementById('pop-main') as Pop; - - this.state = core.status.hero; - this.main = new BossEffect('static', this); - this.back = new SonicBack('static'); - const { x, y } = core.status.hero.loc; - const cell = 32; - this.hitbox = new Hitbox.Circle(x + cell / 2, y + cell / 2, cell / 3); - } - - override start(): void { - super.start(); - - PalaceBoss.shader.appendTo(this.mapDraw); - this.main.appendTo(this.group); - - // const event = this.group.getLayer('event'); - // const hero = event?.getExtends('floor-hero') as HeroRenderer; - // hero?.on('moveTick', this.moveTick); - - SplittableBall.init({}); - this.heroHp = core.status.hero.hp; - } - - override end(): void { - super.end(); - - PalaceBoss.shader.remove(); - this.main.remove(); - this.back.remove(); - this.main.destroy(); - this.back.destroy(); - - // const event = this.group.getLayer('event'); - // const hero = event?.getExtends('floor-hero') as HeroRenderer; - // hero?.off('moveTick', this.moveTick); - - SplittableBall.end(); - - PalaceBoss.effect.end(); - core.status.hero.hp = this.heroHp; - - clip('choices:0'); - } - - ai(time: number, frame: number): void {} -} - -class BossEffect extends BossSprite { - protected preDraw( - canvas: MotaOffscreenCanvas2D, - transform: Transform - ): boolean { - return true; - } - - protected postDraw( - canvas: MotaOffscreenCanvas2D, - transform: Transform - ): void {} -} - -class SonicBack extends RenderItem { - protected render( - canvas: MotaOffscreenCanvas2D, - transform: Transform - ): void {} -} diff --git a/packages-user/legacy-plugin-client/src/boss/palaceBossProjectile.ts b/packages-user/legacy-plugin-client/src/boss/palaceBossProjectile.ts deleted file mode 100644 index 0c9c3fe..0000000 --- a/packages-user/legacy-plugin-client/src/boss/palaceBossProjectile.ts +++ /dev/null @@ -1,270 +0,0 @@ -import { Transform, MotaOffscreenCanvas2D } from '@motajs/render'; -import { IStateDamageable } from '@user/data-state'; -import { Hitbox, Projectile } from './barrage'; -import type { PalaceBoss } from './palaceBoss'; -import { clamp } from '@motajs/legacy-ui'; -import { mainRenderer } from 'packages-user/client-modules/src/render/renderer'; - -function popDamage(damage: number, boss: PalaceBoss, color: string) { - const { x, y } = core.status.hero.loc; - boss.pop.addPop( - (-damage).toString(), - 1000, - x * 32 + 16, - y * 32 + 16, - color - ); -} - -export interface ISplitData { - split: boolean; - /** 分裂时刻,以弹幕被创建时刻为基准 */ - time: number; - /** 分裂起始角度,以该弹幕朝向方向为 0 */ - startAngle: number; - /** 分裂终止角度,以该弹幕朝向方向为 0 */ - endAngle: number; - /** 每秒加速度 */ - acc: number; - /** 初始速度 */ - startVel: number; - /** 终止速度 */ - endVel: number; - /** 持续时长 */ - lastTime: number; - /** 分裂数量 */ - count: number; - /** 这个弹幕分裂产生的弹幕的分裂信息,不填则表示产生的弹幕不会分裂 */ - data?: ISplitData; -} - -export class SplittableBall extends Projectile { - damage: number = 10000; - hitbox: Hitbox.Circle = new Hitbox.Circle(0, 0, 8); - - static ball: Map = new Map(); - - private damaged: boolean = false; - private splitData?: ISplitData; - private last: number = 60_000; - - /** 角度,水平向右为 0,顺时针旋转一圈为 Math.PI * 2 */ - private angle: number = 0; - /** 每秒加速度 */ - private acc: number = 0; - /** 初始速度,每秒多少像素 */ - private startVel: number = 0; - /** 终止速度 */ - private endVel: number = 0; - /** 弹幕颜色 */ - private color?: string; - - private startVelX: number = 0; - private startVelY: number = 0; - private endVelX: number = 0; - private endVelY: number = 0; - private vx: number = 0; - private vy: number = 0; - // 加速度 - private ax: number = 0; - private ay: number = 0; - - /** 是否已经分裂过 */ - private splitted: boolean = false; - - static init(colors: Record) { - this.ball.forEach(v => mainRenderer.deleteCanvas(v)); - this.ball.clear(); - for (const [key, color] of Object.entries(colors)) { - const canvas = mainRenderer.requireCanvas(); - canvas.size(32, 32); - canvas.setHD(true); - const ctx = canvas.ctx; - const gradient = ctx.createRadialGradient(16, 16, 8, 16, 16, 16); - const step = 1 / (color.length - 1); - for (let i = 0; i < color.length; i++) { - gradient.addColorStop(i * step, color[i]); - } - ctx.fillStyle = gradient; - ctx.arc(16, 16, 16, 0, Math.PI * 2); - ctx.fill(); - this.ball.set(key, canvas); - } - } - - static end() { - this.ball.forEach(v => { - v.clear(); - mainRenderer.deleteCanvas(v); - }); - this.ball.clear(); - } - - /** - * 设置持续时长 - * @param time 持续时长 - */ - setLastTime(time: number) { - this.last = time; - } - - /** - * 设置这个弹幕的分裂数据 - * @param data 分裂数据,不填表示该弹幕不会分裂 - */ - setSplitData(data?: ISplitData) { - this.splitData = data; - } - - /** - * 计算速度分量信息 - */ - private calVel() { - const sin = Math.sin(this.angle); - const cos = Math.cos(this.angle); - const vel = Math.hypot(this.vx, this.vy); - - this.startVelX = this.startVel * cos; - this.startVelY = this.startVel * sin; - this.endVelX = this.endVel * cos; - this.endVelY = this.endVel * sin; - this.ax = this.acc * cos; - this.ay = this.acc * sin; - this.vx = vel * cos; - this.vy = vel * sin; - } - - /** - * 设置弹幕速度朝向 - * @param angle 朝向 - */ - setAngle(angle: number) { - this.angle = angle; - this.calVel(); - } - - /** - * 设置速度 - * @param start 起始速度 - * @param end 终止速度 - */ - setVel(start: number, end: number) { - this.startVel = start; - this.endVel = end; - this.calVel(); - } - - /** - * 设置加速度 - * @param acc 加速度,每秒加速多少像素 - */ - setAcc(acc: number) { - this.acc = acc; - this.calVel(); - } - - /** - * 设置弹幕的颜色 - * @param color 颜色 - */ - setColor(color: string) { - this.color = color; - } - - isIntersect(hitbox: Hitbox.HitboxType): boolean { - if (hitbox instanceof Hitbox.Circle) { - return Hitbox.checkCircleCircle(hitbox, this.hitbox); - } else { - return false; - } - } - - updateHitbox(x: number, y: number): void { - this.hitbox.setCenter(x, y); - } - - doDamage(target: IStateDamageable): boolean { - if (this.damaged) return false; - target.hp -= this.damage; - this.damaged = true; - core.drawHeroAnimate('hand'); - popDamage(this.damage, this.boss, '#ff8180'); - return true; - } - - private split(boss: PalaceBoss) { - if (!this.splitData?.split) return; - if (this.splitted) return; - this.splitted = true; - const { - startAngle, - endAngle, - startVel, - endVel, - acc, - lastTime, - count, - data - } = this.splitData; - - const sa = this.angle + startAngle; - const ea = this.angle + endAngle; - const step = (ea - sa - 1) / count; - const { x, y } = this.hitbox; - - for (let i = 0; i < count; i++) { - const proj = boss.createProjectile(SplittableBall, x, y); - proj.setAngle(sa + step * i); - proj.setAcc(acc); - proj.setVel(startVel, endVel); - proj.setLastTime(lastTime); - proj.setSplitData(data); - } - } - - ai(boss: PalaceBoss, time: number, _frame: number, dt: number): void { - if (this.splitData?.split) { - if (time > this.splitData.time) { - this.split(boss); - } - } - if (time > this.last) { - this.destroy(); - return; - } - const p = dt / 1000; - this.vx += this.ax * p; - this.vy += this.ay * p; - - const sx = Math.sign(this.vx); - const sy = Math.sign(this.vy); - const cx = clamp( - Math.abs(this.vx), - Math.abs(this.startVelX), - Math.abs(this.endVelX) - ); - const cy = clamp( - Math.abs(this.vy), - Math.abs(this.startVelY), - Math.abs(this.endVelY) - ); - this.vx = cx * sx; - this.vy = cy * sy; - - const { x, y } = this.hitbox; - this.setPosition(x + this.vx * p, y + this.vy * p); - } - - render(canvas: MotaOffscreenCanvas2D, _transform: Transform): void { - if (!this.color) return; - const texture = SplittableBall.ball.get(this.color); - if (!texture) return; - const ctx = canvas.ctx; - ctx.drawImage(texture.canvas, this.x - 16, this.y - 16, 32, 32); - } - - destroy(): void { - this.split(this.boss); - super.destroy(); - } -} diff --git a/packages-user/legacy-plugin-client/src/boss/towerBoss.ts b/packages-user/legacy-plugin-client/src/boss/towerBoss.ts deleted file mode 100644 index b04b2ee..0000000 --- a/packages-user/legacy-plugin-client/src/boss/towerBoss.ts +++ /dev/null @@ -1,850 +0,0 @@ -import { - Shader, - MotaRenderer, - RenderItem, - MotaOffscreenCanvas2D, - Container -} from '@motajs/render'; -import { PointEffect } from '../fx/pointShader'; -import { BarrageBoss, BossSprite, Hitbox } from './barrage'; -import { Animation, hyper, power, sleep, Transition } from 'mutate-animate'; -import { - ArrowProjectile, - AttackProjectile, - BoomProjectile, - ChainProjectile, - IceProjectile, - PortalProjectile, - ProjectileDirection, - ThunderBallProjectile, - ThunderProjectile -} from './towerBossProjectile'; -import { IStateDamageable } from '@user/data-state'; -import { Pop } from '../../../client-modules/src/render/legacy/pop'; -import { loading } from '@user/data-base'; -import { clip } from '@user/legacy-plugin-data'; -import { - HeroRenderer, - LayerGroup, - WeatherController -} from '@user/client-modules'; - -loading.once('coreInit', () => { - const shader = new Shader(); - shader.size(480, 480); - shader.setHD(true); - shader.setZIndex(120); - TowerBoss.shader = shader; - TowerBoss.effect.create(shader, 40); -}); - -const enum TowerBossStage { - /** 开场白阶段 */ - Prologue, - - Stage1, - Dialogue1, - Stage2, - Dialogue2, - Stage3, - Stage4, - Stage5, - - End -} - -const enum HealthBarStatus { - Start, - Running, - End -} - -export class TowerBoss extends BarrageBoss { - static effect: PointEffect = new PointEffect(); - static shader: Shader; - - /** boss战阶段 */ - stage: TowerBossStage = TowerBossStage.Prologue; - /** 当前boss血量 */ - hp: number = 10000; - /** 当前时刻 */ - time: number = 0; - - readonly hitbox: Hitbox.Rect; - readonly state: IStateDamageable; - readonly main: BossSprite; - - /** 血条显示元素 */ - private healthBar: HealthBar; - /** 对话文字显示元素 */ - private word: Word; - /** 楼层渲染元素 */ - private group: LayerGroup; - /** 楼层渲染容器 */ - private mapDraw: Container; - /** 伤害弹出 */ - pop: Pop; - - /** 每个阶段的进度,具体定义参考 ai 函数开头 */ - private stageProgress: number = 0; - /** 当前阶段的开始时刻 */ - private stageStartTime: number = 0; - /** 每一阶段的攻击boss次数 */ - private attackTime: number = 0; - /** 攻击boss的红圈间隔时长 */ - private attackInterval: number = 7000; - - /** 使用技能1 智慧之矢 的次数 */ - private skill1Time: number = 0; - /** 使用技能2 随机传送 的次数 */ - private skill2Time: number = 0; - /** 使用技能3 冰锥 的次数 */ - private skill3Time: number = 0; - /** 技能1的释放间隔 */ - private skill1Interval: number = 10000; - /** 技能2的释放间隔 */ - private skill2Interval: number = 7000; - /** 技能3的释放间隔 */ - private skill3Interval: number = 13000; - - /** 使用技能4 随机闪电 的次数 */ - private skill4Time: number = 0; - /** 使用技能5 球形闪电 的次数 */ - private skill5Time: number = 0; - /** 技能4的释放间隔 */ - private skill4Interval: number = 4000; - /** 技能5的释放间隔 */ - private skill5Interval: number = 12000; - - /** 使用技能6 炸弹 的次数 */ - private skill6Time: number = 0; - /** 使用技能7 连锁闪电 的次数 */ - private skill7Time: number = 0; - /** 技能6的释放间隔 */ - private skill6Interval: number = 500; - /** 技能7的释放间隔 */ - private skill7Interval: number = 10000; - - private heroHp: number = 0; - - constructor() { - super(); - - this.healthBar = new HealthBar('absolute'); - this.word = new Word('absolute'); - this.main = new BossSprite('absolute', this); - const render = MotaRenderer.get('render-main')!; - this.group = render.getElementById('layer-main') as LayerGroup; - this.mapDraw = render.getElementById('map-draw') as Container; - this.pop = render.getElementById('pop-main') as Pop; - - this.healthBar.init(); - this.word.init(); - this.main.size(480, 480); - this.main.setHD(true); - this.main.setZIndex(80); - - TowerBoss.effect.setTransform(this.group.camera); - - const { x, y } = core.status.hero.loc; - const cell = 32; - this.hitbox = new Hitbox.Rect(x * cell + 2, y * cell + 2, 28, 28); - this.state = core.status.hero; - } - - private moveTick = (x: number, y: number) => { - this.hitbox.setPosition(x * 32 + 2, y * 32 + 2); - }; - - override start() { - super.start(); - - TowerBoss.shader.appendTo(this.mapDraw); - this.healthBar.appendTo(this.group); - this.word.appendTo(this.group); - this.main.appendTo(this.group); - - const event = this.group.getLayer('event'); - const hero = event?.getExtends('floor-hero') as HeroRenderer; - hero?.on('moveTick', this.moveTick); - - ArrowProjectile.init(); - PortalProjectile.init(); - ThunderProjectile.init(); - ThunderBallProjectile.init(); - AttackProjectile.init(); - - TowerBoss.effect.start(); - TowerBoss.effect.use(); - - this.heroHp = core.status.hero.hp; - } - - override end() { - super.end(); - TowerBoss.shader.remove(); - this.healthBar.remove(); - this.word.remove(); - this.main.remove(); - this.main.destroy(); - this.healthBar.destroy(); - - const event = this.group.getLayer('event'); - const hero = event?.getExtends('floor-hero') as HeroRenderer; - hero?.off('moveTick', this.moveTick); - - ArrowProjectile.end(); - PortalProjectile.end(); - ThunderProjectile.end(); - ThunderBallProjectile.end(); - AttackProjectile.end(); - - TowerBoss.effect.end(); - core.status.hero.hp = this.heroHp; - - clip('choices:0'); - } - - /** - * 用于全局检测,例如受伤、攻击boss等 - */ - check(_time: number) { - this.checkLose(); - } - - private checkLose() { - if (core.status.hero.hp < 0) { - core.lose(); - core.updateStatusBar(); - this.end(); - } - } - - /** - * 攻击boss - * @param damage 造成的伤害 - */ - attackBoss(damage: number) { - this.hp -= damage; - if (this.hp < 0) this.hp = 0; - this.healthBar.set(this.hp); - // 先用drawAnimate凑活一下,等下个版本提供更好的 api - if (this.stage === TowerBossStage.Stage3) { - core.drawAnimate('hand', 7, 2); - this.pop.addPop((-damage).toString(), 1000, 240, 80, '#dafc1d'); - } else if (this.stage === TowerBossStage.Stage4) { - core.drawAnimate('hand', 7, 3); - this.pop.addPop((-damage).toString(), 1000, 240, 112, '#dafc1d'); - } else if (this.stage === TowerBossStage.Stage5) { - core.drawAnimate('hand', 7, 4); - this.pop.addPop((-damage).toString(), 1000, 240, 144, '#dafc1d'); - } else { - core.drawAnimate('hand', 7, 1); - this.pop.addPop((-damage).toString(), 1000, 240, 172, '#dafc1d'); - } - } - - /** - * 添加攻击boss的圆圈 - * @param last 持续时长 - * @param damage 造成的伤害 - */ - addAttackCircle(_: number, n: number) { - const s = 13 - n * 2; - const nx = Math.floor(Math.random() * s + n + 1); - const ny = Math.floor(Math.random() * s + n + 1); - const proj = this.createProjectile(AttackProjectile, nx * 32, ny * 32); - proj.damage = 250 + Math.floor(Math.random() * 500); - } - - ai(time: number, frame: number): void { - this.time = time; - const fixedTime = time - this.stageStartTime; - this.main.update(); - this.check(time); - TowerBoss.effect.requestUpdate(); - switch (this.stage) { - case TowerBossStage.Prologue: - this.aiPrologue(fixedTime, frame); - break; - case TowerBossStage.Stage1: - this.aiStage1(fixedTime, frame); - break; - case TowerBossStage.Dialogue1: - this.aiDialogue1(fixedTime, frame); - break; - case TowerBossStage.Stage2: - this.aiStage2(fixedTime, frame); - break; - case TowerBossStage.Dialogue2: - this.aiDialogue2(fixedTime, frame); - break; - case TowerBossStage.Stage3: - this.aiStage3(fixedTime, frame); - break; - case TowerBossStage.Stage4: - this.aiStage4(fixedTime, frame); - break; - case TowerBossStage.Stage5: - this.aiStage5(fixedTime, frame); - break; - case TowerBossStage.End: - this.aiEnd(fixedTime, frame); - break; - } - } - - /** - * 切换boss阶段 - * @param stage 切换至的阶段 - * @param time 在当前阶段经过的时间 - */ - private changeStage(stage: TowerBossStage, time: number) { - this.stage = stage; - this.stageStartTime += time; - this.stageProgress = 0; - } - - private aiPrologue(time: number, _frame: number) { - // stageProgress: - // 0: 开始; 1: 开始血条动画 - - if (this.stageProgress === 0) { - this.healthBar.showStart(); - this.stageProgress = 1; - } - - if (time > 1500) { - this.changeStage(TowerBossStage.Stage1, time); - this.attackTime = 2; - this.skill1Time = 1; - this.skill2Time = 1; - this.skill3Time = 1; - core.playBgm('towerBoss.opus'); - } - } - - async releaseSkill1() { - const locs = new Set(); - const count = Math.ceil(Math.random() * 8) + 4; - let i = 0; - while (i < count) { - const dir = Math.floor(Math.random() * 2); - const pos = Math.floor(Math.random() * 13); - const loc = pos + dir * 13; - if (locs.has(loc)) continue; - i++; - locs.add(loc); - const proj = this.createProjectile(ArrowProjectile, 0, 0); - proj.setData(dir); - if (dir === ProjectileDirection.Horizontal) { - proj.setPosition(480 - 32, pos * 32 + 32); - } else { - proj.setPosition(pos * 32 + 32, 480 - 32); - } - await sleep(200); - } - } - - releaseSkill2() { - const x = Math.floor(Math.random() * 11 + 2); - const y = Math.floor(Math.random() * 11 + 2); - const proj = this.createProjectile(PortalProjectile, 0, 0); - proj.setTarget(x, y); - proj.createEffect(TowerBoss.effect); - } - - async releaseSkill3() { - const count = Math.floor(Math.random() * 100); - const used = new Set(); - for (let i = 0; i < count; i++) { - const x = Math.floor(Math.random() * 13 + 1); - const y = Math.floor(Math.random() * 13 + 1); - const index = x + y * 13; - if (used.has(index)) continue; - used.add(index); - const proj = this.createProjectile(IceProjectile, x * 32, y * 32); - proj.setPos(x, y); - await sleep(20); - } - } - - private aiStage1(time: number, _frame: number) { - // stageProgress: - // 0: 开始; 1,2,3,4: 对应对话 - - const skill1Release = this.skill1Time * this.skill1Interval; - const skill2Release = this.skill2Time * this.skill2Interval; - const skill3Release = this.skill3Time * this.skill3Interval; - const attack = this.attackTime * this.attackInterval; - - if (time > skill1Release) { - this.releaseSkill1(); - this.skill1Time++; - } - if (time > skill2Release) { - this.releaseSkill2(); - this.skill2Time++; - } - if (time > skill3Release) { - this.releaseSkill3(); - this.skill3Time++; - } - if (time > attack) { - this.addAttackCircle(500, 0); - this.attackTime++; - } - - if (this.hp <= 7000) { - this.changeStage(TowerBossStage.Dialogue1, time); - this.attackTime = 1; - } - } - - private aiDialogue1(time: number, _frame: number) { - this.changeStage(TowerBossStage.Stage2, time); - this.attackTime = 3; - this.skill4Time = 5; - this.skill5Time = 3; - core.playBgm('towerBoss2.opus'); - const weather = WeatherController.get('main'); - weather?.activate('rain', 6); - } - - releaseSkill4() { - const x = Math.floor(Math.random() * 11 + 2); - const y = Math.floor(Math.random() * 11 + 2); - const power = Math.floor(Math.random() * 6 + 1); - const proj = this.createProjectile(ThunderProjectile, 0, 0); - proj.setData(x, y, power); - proj.createEffect(TowerBoss.effect); - } - - async releaseSkill5() { - const count = Math.floor(Math.random() * 12 + 6); - const used = new Set(); - let i = 0; - while (i < count) { - const x = Math.floor(Math.random() * 13 + 1); - const y = Math.floor(Math.random() * 13 + 1); - const index = x + y * 13; - if (used.has(index)) continue; - i++; - used.add(index); - const px = x * 32 + 16; - const py = y * 32 + 16; - const proj1 = this.createProjectile(ThunderBallProjectile, 0, 0); - const proj2 = this.createProjectile(ThunderBallProjectile, 0, 0); - const proj3 = this.createProjectile(ThunderBallProjectile, 0, 0); - const proj4 = this.createProjectile(ThunderBallProjectile, 0, 0); - proj1.setData(ProjectileDirection.BottomToTop, x, y); - proj2.setData(ProjectileDirection.LeftToRight, x, y); - proj3.setData(ProjectileDirection.RightToLeft, x, y); - proj4.setData(ProjectileDirection.TopToBottom, x, y); - proj1.setPosition(px, py); - proj2.setPosition(px, py); - proj3.setPosition(px, py); - proj4.setPosition(px, py); - await sleep(200); - } - } - - private aiStage2(time: number, _frame: number) { - const skill4Release = this.skill4Time * this.skill4Interval; - const skill5Release = this.skill5Time * this.skill5Interval; - const attack = this.attackTime * this.attackInterval; - - if (time > skill4Release) { - this.releaseSkill4(); - this.skill4Time++; - } - if (time > skill5Release) { - this.releaseSkill5(); - this.skill5Time++; - } - if (time > attack) { - this.addAttackCircle(500, 0); - this.attackTime++; - } - - if (this.hp <= 3500) { - this.changeStage(TowerBossStage.Dialogue2, time); - this.attackTime = 1; - } - } - - /** - * 压缩地形,将地形向内压缩一格 - */ - terrainClose(n: number) { - for (let nx = n - 1; nx < 15 - n + 1; nx++) { - core.removeBlock(nx, n - 1); - core.removeBlock(nx, 15 - n); - core.setBgFgBlock('bg', 0, nx, n - 1); - core.setBgFgBlock('bg', 0, nx, 15 - n); - } - for (let ny = n; ny < 15 - n; ny++) { - core.removeBlock(n - 1, ny); - core.removeBlock(15 - n, ny); - core.setBgFgBlock('bg', 0, n - 1, ny); - core.setBgFgBlock('bg', 0, 15 - n, ny); - } - for (let nx = n; nx < 15 - n; nx++) { - core.setBlock(527, nx, n); - core.setBlock(527, nx, 15 - n - 1); - } - for (let ny = n + 1; ny < 15 - n - 1; ny++) { - core.setBlock(527, n, ny); - core.setBlock(527, 15 - n - 1, ny); - } - core.stopAutomaticRoute(); - core.setHeroLoc('x', 7); - core.setHeroLoc('y', 7); - core.setHeroLoc('direction', 'up'); - core.setBlock(557, 7, n + 1); - } - - private aiDialogue2(time: number, _frame: number) { - this.changeStage(TowerBossStage.Stage3, time); - this.attackTime = 3; - this.terrainClose(1); - this.skill6Time = 30; - this.skill7Time = 2; - core.playBgm('towerBoss3.opus'); - } - - releaseSkill6(n: number, last: number) { - const s = 15 - n * 2; - const x = Math.floor(Math.random() * s + n); - const y = Math.floor(Math.random() * s + n); - const proj = this.createProjectile(BoomProjectile, 0, 0); - proj.setData(x, y, last); - } - - async releaseSkill7(n: number) { - const count = Math.floor(Math.random() * 6 + 3); - const nodes: LocArr[] = []; - let lastX = -1; - let lastY = -1; - const s = 15 - n * 2; - const used = new Set(); - let i = 0; - while (i < count) { - const x = Math.floor(Math.random() * s + n); - const y = Math.floor(Math.random() * s + n); - const index = x + y * s; - if (used.has(index)) continue; - i++; - used.add(index); - nodes.push([x, y]); - if (lastX !== -1 && lastY !== -1) { - const proj = this.createProjectile(ChainProjectile, 0, 0); - proj.hitbox.setPoint1(lastX * 32 + 16, lastY * 32 + 16); - proj.hitbox.setPoint2(x * 32 + 16, y * 32 + 16); - } - lastX = x; - lastY = y; - } - } - - private aiStage3(time: number, _frame: number) { - const skill6Release = this.skill6Time * this.skill6Interval; - const skill7Release = this.skill7Time * this.skill7Interval; - const attack = this.attackTime * this.attackInterval; - - if (time > skill6Release) { - this.releaseSkill6(2, 500); - this.skill6Time++; - } - if (time > skill7Release) { - this.releaseSkill7(2); - this.skill7Time++; - } - if (time > attack) { - this.addAttackCircle(500, 1); - this.attackTime++; - } - - if (this.hp <= 2000) { - this.changeStage(TowerBossStage.Stage4, time); - this.terrainClose(2); - this.attackTime = 1; - this.skill6Time = 12; - this.skill6Interval = 400; - this.skill7Time = 1; - } - } - - private aiStage4(time: number, _frame: number) { - const skill6Release = this.skill6Time * this.skill6Interval; - const skill7Release = this.skill7Time * this.skill7Interval; - const attack = this.attackTime * this.attackInterval; - - if (time > skill6Release) { - this.releaseSkill6(3, 500); - this.skill6Time++; - } - if (time > skill7Release) { - this.releaseSkill7(3); - this.skill7Time++; - } - if (time > attack) { - this.addAttackCircle(500, 2); - this.attackTime++; - } - - if (this.hp <= 1000) { - this.changeStage(TowerBossStage.Stage5, time); - this.terrainClose(3); - this.attackTime = 1; - this.skill6Time = 17; - this.skill6Interval = 300; - this.skill7Time = 1; - } - } - - private aiStage5(time: number, _frame: number) { - const skill6Release = this.skill6Time * this.skill6Interval; - const skill7Release = this.skill7Time * this.skill7Interval; - const attack = this.attackTime * this.attackInterval; - - if (time > skill6Release) { - this.releaseSkill6(4, 500); - this.skill6Time++; - } - if (time > skill7Release) { - this.releaseSkill7(4); - this.skill7Time++; - } - if (time > attack) { - this.addAttackCircle(500, 3); - this.attackTime++; - } - - if (this.hp <= 0) { - this.changeStage(TowerBossStage.End, time); - } - } - - private aiEnd(_time: number, _frame: number) { - this.end(); - core.insertAction([ - { type: 'openDoor', loc: [13, 6], floorId: 'MT19' }, - { type: 'setValue', name: 'flag:boss1', value: 'true' }, - { type: 'changeFloor', floorId: 'MT20', loc: [7, 9] }, - { type: 'forbidSave' }, - { type: 'showStatusBar' } - ]); - } -} - -interface TextRenderable { - x: number; - y: number; - blur: number; - text: string; -} - -class Word extends RenderItem { - private ani: Animation = new Animation(); - - /** 当前正在显示的文字 */ - private showing: string = ''; - /** 文字显示时间间隔 */ - private showInterval: number = 100; - /** 文字显示的虚化时长 */ - private showBlurTime: number = 200; - /** 显示开始时刻 */ - private showStartTime: number = 0; - - /** 最大虚化程度 */ - private readonly MAX_BLUR = 5; - - /** - * 初始化 - */ - init() { - this.size(480, 24); - this.setHD(true); - this.setZIndex(95); - } - - /** - * 降下背景 - */ - curtainDown() { - this.delegateTicker(() => { - this.pos(this.ani.x, this.ani.y); - }, 700); - this.ani.time(600).mode(hyper('sin', 'out')).absolute().move(0, 24); - return sleep(700); - } - - /** - * 升起背景 - */ - curtainUp() { - this.delegateTicker(() => { - this.pos(this.ani.x, this.ani.y); - }, 700); - this.ani.time(600).mode(hyper('sin', 'out')).absolute().move(0, 0); - return sleep(700); - } - - /** - * 显示文字,会将之前的文字取消显示 - * @param text 要显示的文字 - */ - showText(text: string) { - this.showStartTime = Date.now(); - this.showing = text; - } - - /** - * 设置文字显示的参数 - * @param interval 文字显示时间间隔 - * @param blurTime 文字显示虚化时长 - */ - setParam(interval: number, blurTime: number) { - this.showInterval = interval; - this.showBlurTime = blurTime; - } - - private getTextRenerable() { - const dt = Date.now() - this.showStartTime; - const res: TextRenderable[] = []; - - [...this.showing].forEach((v, i) => { - const showStartTime = i * this.showInterval; - const blurRatio = (dt - showStartTime) / this.showBlurTime; - let blur = blurRatio * this.MAX_BLUR; - if (blur < 0) blur = 0; - else if (blur > this.MAX_BLUR) blur = this.MAX_BLUR; - - const obj: TextRenderable = { - blur, - x: i * 18, - y: 12, - text: v - }; - res.push(obj); - }); - return res; - } - - protected render(canvas: MotaOffscreenCanvas2D): void { - const data = this.getTextRenerable(); - const ctx = canvas.ctx; - ctx.font = '18px "normal"'; - ctx.textAlign = 'left'; - ctx.textBaseline = 'middle'; - - for (const { blur, x, y, text } of data) { - if (blur !== 0) { - ctx.filter = `blur(${blur}px)`; - } else { - ctx.filter = 'none'; - } - ctx.fillText(text, x, y); - } - } -} - -class HealthBar extends RenderItem { - private trans: Transition = new Transition(); - /** 当前血条状态 */ - private status: HealthBarStatus = HealthBarStatus.Start; - - /** - * 初始化 - */ - init() { - this.trans.time(2000).absolute().mode(power(3, 'out')); - this.trans.value.hp = 0; - this.trans.value.x = 0; - this.trans.value.y = -16; - - this.size(480, 16); - this.setHD(true); - this.setZIndex(100); - } - - /** - * 设置剩余血量 - */ - set(value: number) { - this.trans.time(2000).mode(power(3, 'out')).transition('hp', value); - this.delegateTicker(() => { - this.update(); - }, 2500); - } - - /** - * 展示开始动画 - */ - async showStart() { - if (this.status !== HealthBarStatus.Start) return; - this.delegateTicker(() => { - this.update(); - }, 2500); - this.trans - .time(600) - .mode(hyper('sin', 'out')) - .absolute() - .transition('y', 0); - this.trans.time(2000).mode(power(3, 'out')).transition('hp', 10000); - await sleep(1700); - this.status = HealthBarStatus.Running; - } - - /** - * 展示结束动画 - */ - async showEnd() { - if (this.status !== HealthBarStatus.Running) return; - this.delegateTicker(() => { - this.update(); - }, 2500); - this.trans - .time(600) - .mode(hyper('sin', 'in')) - .absolute() - .transition('y', -16); - await sleep(700); - this.status = HealthBarStatus.End; - } - - protected render(canvas: MotaOffscreenCanvas2D): void { - const ctx = canvas.ctx; - - const hp = this.trans.value.hp; - const ratio = hp / 10000; - const r = Math.min(255 * 2 - ratio * 2 * 255, 255); - const g = Math.min(ratio * 2 * 255, 255); - - ctx.save(); - ctx.translate(this.trans.value.x, this.trans.value.y); - ctx.fillStyle = '#bbb'; - ctx.fillRect(2, 2, 480 - 4, 16 - 4); - - const color = `rgb(${Math.floor(r)},${Math.floor(g)},0)`; - ctx.fillStyle = color; - ctx.fillRect(2, 2, (480 - 4) * ratio, 16 - 4); - - ctx.font = '12px "normal"'; - ctx.textBaseline = 'middle'; - ctx.textAlign = 'right'; - ctx.fillStyle = '#fff'; - ctx.strokeStyle = '#000'; - ctx.lineWidth = 2; - ctx.strokeText(`${Math.floor(hp)} / 10000`, 472, 8); - ctx.fillText(`${Math.floor(hp)} / 10000`, 472, 8); - - ctx.lineWidth = 4; - ctx.strokeStyle = '#fff'; - ctx.shadowBlur = 4; - ctx.shadowColor = '#000'; - ctx.strokeRect(0, 0, 480, 16); - ctx.restore(); - } -} diff --git a/packages-user/legacy-plugin-client/src/boss/towerBossProjectile.ts b/packages-user/legacy-plugin-client/src/boss/towerBossProjectile.ts deleted file mode 100644 index 0bb29ac..0000000 --- a/packages-user/legacy-plugin-client/src/boss/towerBossProjectile.ts +++ /dev/null @@ -1,986 +0,0 @@ -import { hyper, power, TimingFn } from 'mutate-animate'; -import { Hitbox, Projectile } from './barrage'; -import { MotaOffscreenCanvas2D, Transform } from '@motajs/render'; -import type { TowerBoss } from './towerBoss'; -import { IStateDamageable } from '@user/data-state'; -import { PointEffect, PointEffectType } from '../fx/pointShader'; -import { isNil } from 'lodash-es'; -import { mainRenderer } from '@user/client-modules'; - -export const enum ProjectileDirection { - Vertical, - Horizontal, - - LeftToRight, - RightToLeft, - TopToBottom, - BottomToTop -} - -function popDamage(damage: number, boss: TowerBoss, color: string) { - const { x, y } = core.status.hero.loc; - boss.pop.addPop( - (-damage).toString(), - 1000, - x * 32 + 16, - y * 32 + 16, - color - ); -} - -export class AttackProjectile extends Projectile { - static easeIn?: TimingFn; - static easeOut?: TimingFn; - - damage: number = 500; - hitbox: Hitbox.Rect = new Hitbox.Rect(0, 0, 32, 32); - - static init() { - this.easeIn = hyper('sin', 'out'); - this.easeOut = hyper('sin', 'in'); - } - - static end() { - this.easeIn = void 0; - this.easeOut = void 0; - } - - isIntersect(hitbox: Hitbox.HitboxType): boolean { - if (hitbox instanceof Hitbox.Rect) { - return Hitbox.checkRectRect(this.hitbox, hitbox); - } else { - return false; - } - } - - updateHitbox(x: number, y: number): void { - this.hitbox.setPosition(x, y); - } - - doDamage(target: IStateDamageable): boolean { - this.boss.attackBoss(this.damage); - this.destroy(); - return true; - } - - ai(boss: TowerBoss, time: number, frame: number): void { - if (time > 4000) { - this.destroy(); - } - } - - render(canvas: MotaOffscreenCanvas2D, transform: Transform): void { - const progress = this.time / 4000; - let alpha = 1; - let offset = 0; - if (progress < 0.1) { - alpha = progress * 10; - offset = 24 * AttackProjectile.easeIn!(10 * (0.1 - progress)); - } else if (progress > 0.9) { - alpha = 10 * (1 - progress); - offset = 24 * AttackProjectile.easeOut!(10 * (progress - 0.9)); - } else { - alpha = 1; - offset = 0; - } - const ctx = canvas.ctx; - ctx.save(); - ctx.strokeStyle = '#ffe229'; - ctx.fillStyle = '#ffe229'; - ctx.lineWidth = 2; - ctx.globalAlpha = alpha; - ctx.beginPath(); - const o = offset + 16; - const cx = this.x + 16; - const cy = this.y + 16; - ctx.arc(cx, cy, 2, 0, Math.PI * 2); - ctx.fill(); - ctx.beginPath(); - ctx.arc(cx, cy, o, 0, Math.PI * 2); - ctx.moveTo(cx + o, cy); - ctx.lineTo(cx + o + 16, cy); - ctx.moveTo(cx, cy + o); - ctx.lineTo(cx, cy + o + 16); - ctx.moveTo(cx - o, cy); - ctx.lineTo(cx - o - 16, cy); - ctx.moveTo(cx, cy - o); - ctx.lineTo(cx, cy - o - 16); - ctx.stroke(); - ctx.restore(); - } -} - -export class ArrowProjectile extends Projectile { - static easing?: TimingFn; - static dangerEasing?: TimingFn; - - static horizontal: MotaOffscreenCanvas2D | null = null; - static vertical: MotaOffscreenCanvas2D | null = null; - - hitbox: Hitbox.Rect = new Hitbox.Rect(0, 0, 102, 32); - damage: number = 1000; - - /** 弹幕的方向 */ - direction: ProjectileDirection = ProjectileDirection.Horizontal; - - private damaged: boolean = false; - private sounded: boolean = false; - - /** - * boss战开始时初始化 - */ - static init() { - this.easing = power(2, 'in'); - this.dangerEasing = power(3, 'out'); - this.horizontal = mainRenderer.requireCanvas(); - this.vertical = mainRenderer.requireCanvas(); - const hor = this.horizontal; - hor.size(480, 32); - hor.setHD(true); - const ctxHor = hor.ctx; - ctxHor.fillStyle = '#f00'; - ctxHor.globalAlpha = 0.6; - for (let i = 0; i < 15; i++) { - ctxHor.fillRect(i * 32 + 2, 2, 28, 28); - } - const ver = this.vertical; - ver.size(32, 480); - ver.setHD(true); - const ctxVer = ver.ctx; - ctxVer.fillStyle = '#f00'; - ctxVer.globalAlpha = 0.6; - for (let i = 0; i < 15; i++) { - ctxVer.fillRect(2, i * 32 + 2, 28, 28); - } - } - - /** - * boss战结束后清理 - */ - static end() { - this.easing = void 0; - this.dangerEasing = void 0; - this.horizontal?.clear(); - if (this.horizontal) mainRenderer.deleteCanvas(this.horizontal); - this.horizontal = null; - this.vertical?.clear(); - if (this.vertical) mainRenderer.deleteCanvas(this.vertical); - this.vertical = null; - } - - /** - * 设置弹幕的数据 - * @param direction 弹幕的方向 - */ - setData(direction: ProjectileDirection) { - this.direction = direction; - if (direction === ProjectileDirection.Horizontal) { - this.hitbox.setSize(102, 32); - } else { - this.hitbox.setSize(32, 102); - } - } - - isIntersect(hitbox: Hitbox.HitboxType): boolean { - if (hitbox instanceof Hitbox.Rect) { - return Hitbox.checkRectRect(hitbox, this.hitbox); - } else { - return false; - } - } - - updateHitbox(x: number, y: number): void { - this.hitbox.setPosition(x, y); - } - - doDamage(target: IStateDamageable): boolean { - if (this.damaged) return false; - target.hp -= this.damage; - this.damaged = true; - core.drawHeroAnimate('hand'); - popDamage(this.damage, this.boss, '#ff8180'); - return true; - } - - ai(boss: TowerBoss, time: number, frame: number): void { - if (time > 3000) { - if (!this.sounded) { - core.playSound('arrow.opus'); - this.sounded = true; - } - const progress = (time - 3000) / 2000; - const res = ArrowProjectile.easing!(progress); - const dx = res * 640; - const x = 480 - 32 - dx; - if (this.direction === ProjectileDirection.Horizontal) { - this.setPosition(x, this.y); - } else { - this.setPosition(this.x, x); - } - } else if (time > 5000) { - this.destroy(); - } - } - - render(canvas: MotaOffscreenCanvas2D, transform: Transform): void { - const ctx = canvas.ctx; - ctx.globalAlpha = 1; - const ratio = devicePixelRatio * core.domStyle.scale; - const cell = 32 * ratio; - ctx.save(); - - if (this.time < 3000) { - let begin = 1; - if (this.time < 2000) { - begin = ArrowProjectile.dangerEasing!(this.time / 2000); - } - const len = begin * 13 * 32; - const fl = len * ratio; - const x1 = 480 - 32 - len; - const fx1 = x1 * ratio; - - if (this.direction === ProjectileDirection.Horizontal) { - const canvas = ArrowProjectile.horizontal!.canvas; - ctx.drawImage(canvas, fx1, 0, fl, cell, x1, this.y, len, 32); - } else { - const canvas = ArrowProjectile.vertical!.canvas; - ctx.drawImage(canvas, 0, fx1, cell, fl, this.x, x1, 32, len); - } - } else { - if (this.direction === ProjectileDirection.Horizontal) { - const len = Math.max(this.x - 32, 0); - const fl = len * ratio; - const canvas = ArrowProjectile.horizontal!.canvas; - ctx.drawImage(canvas, cell, 0, fl, cell, 32, this.y, len, 32); - } else { - const len = Math.max(this.y - 32, 0); - const fl = len * ratio; - const canvas = ArrowProjectile.vertical!.canvas; - ctx.drawImage(canvas, 0, cell, cell, fl, this.x, 32, 32, len); - } - } - const img = core.material.images.images['arrow.png']; - if (this.direction === ProjectileDirection.Vertical) { - ctx.translate(this.x + 32, this.y); - ctx.rotate(Math.PI / 2); - ctx.drawImage(img, 0, 0, 102, 32); - } else { - ctx.drawImage(img, this.x, this.y, 102, 32); - } - ctx.restore(); - } -} - -export class PortalProjectile extends Projectile { - static easing?: TimingFn; - - damage: number = 0; - hitbox: Hitbox.Circle = new Hitbox.Circle(0, 0, 0); - - /** 传送目标位置 */ - private tx: number = 0; - /** 传送目标位置 */ - private ty: number = 0; - /** 是否已经传送过 */ - private transfered: boolean = false; - - private effect?: PointEffect; - private effectId1?: number; - private effectId2?: number; - - static init() { - this.easing = hyper('sin', 'out'); - } - - static end() { - this.easing = void 0; - } - - createEffect(effect: PointEffect) { - this.effect = effect; - const id1 = effect.addEffect( - PointEffectType.CircleWarpTangetial, - Date.now(), - 4000, - [this.tx * 32 + 16, this.ty * 32 + 16, 0, 32] - ); - const id2 = effect.addEffect( - PointEffectType.CircleContrast, - Date.now(), - 4000, - [this.tx * 32 + 16, this.ty * 32 + 16, 32, 24] - ); - this.effectId1 = id1; - this.effectId2 = id2; - } - - /** - * 设置传送目标位置 - */ - setTarget(x: number, y: number) { - this.tx = x; - this.ty = y; - } - - isIntersect(hitbox: Hitbox.HitboxType): boolean { - return false; - } - - updateHitbox(x: number, y: number): void { - this.hitbox.setCenter(x, y); - } - - doDamage(target: IStateDamageable): boolean { - return false; - } - - ai(boss: TowerBoss, time: number, frame: number): void { - if (!this.transfered && time > 2000) { - this.transfered = true; - core.setHeroLoc('x', this.tx); - core.setHeroLoc('y', this.ty); - } - - if (time > 4000) { - this.destroy(); - } - } - - render(canvas: MotaOffscreenCanvas2D, transform: Transform): void { - const effect = this.effect; - const id1 = this.effectId1; - const id2 = this.effectId2; - if (!effect || isNil(id1) || isNil(id2)) return; - const time = this.time; - const max = Math.PI * 2; - if (time < 2000) { - const progress = PortalProjectile.easing!(time / 2000); - const ratio = Math.min(progress * 3, 1); - effect.setEffect(id1, void 0, [0, max * progress, 0, 0]); - effect.setEffect(id2, void 0, [ratio, 0, 0, 0]); - } else { - const progress = PortalProjectile.easing!((time - 2000) / 2000); - const ratio = Math.min((1 - progress) * 3, 1); - effect.setEffect(id1, void 0, [max * progress, max, 0, 0]); - effect.setEffect(id2, void 0, [ratio, 0, 0, 0]); - } - } -} - -export class IceProjectile extends Projectile { - damage: number = 5000; - hitbox: Hitbox.Rect = new Hitbox.Rect(0, 0, 32, 32); - - private damaged: boolean = false; - /** 是否已经播放冰冻动画 */ - private animated: boolean = false; - /** 是否已经转换成滑冰图块 */ - private converted: boolean = false; - - private bx: number = 0; - private by: number = 0; - - /** - * 设置这个寒冰弹幕的攻击位置 - */ - setPos(x: number, y: number) { - this.bx = x; - this.by = y; - this.updateHitbox(x * 32, y * 32); - } - - isIntersect(hitbox: Hitbox.HitboxType): boolean { - if (this.damaged) return false; - if (this.time < 2000) return false; - if (hitbox instanceof Hitbox.Rect) { - return Hitbox.checkRectRect(hitbox, this.hitbox); - } else { - return false; - } - } - - updateHitbox(x: number, y: number): void { - this.hitbox.setPosition(x, y); - } - - doDamage(target: IStateDamageable): boolean { - if (!this.damaged) return false; - target.hp -= this.damage; - this.damaged = true; - popDamage(this.damage, this.boss, '#6bf8ff'); - return true; - } - - ai(boss: TowerBoss, time: number, frame: number): void { - if (!this.converted && time > 2000) { - this.converted = true; - core.setBgFgBlock('bg', 167, this.bx, this.by); - } - if (time > 4000) { - core.setBgFgBlock('bg', 526, this.bx, this.by); - this.destroy(); - } - } - - render(canvas: MotaOffscreenCanvas2D, transform: Transform): void { - const ctx = canvas.ctx; - if (this.time < 2000) { - ctx.fillStyle = 'rgb(150,150,255)'; - ctx.globalAlpha = 0.6; - ctx.fillRect(this.x + 2, this.y + 2, 28, 28); - } else { - if (!this.animated) { - this.animated = true; - core.drawAnimate('ice', this.bx, this.by); - } - } - } -} - -export class ThunderProjectile extends Projectile { - /** 闪电缓存画布 */ - static cache: MotaOffscreenCanvas2D | null = null; - - damage: number = 0; - hitbox: Hitbox.Rect = new Hitbox.Rect(0, 0, 96, 96); - - private bx: number = 0; - private by: number = 0; - /** 闪电的强度 */ - private power: number = 0; - private damaged: boolean = false; - private cached: boolean = false; - private sounded: boolean = false; - - private effect?: PointEffect; - private effectId1?: number; - private effectId2?: number; - - static init() { - this.cache = mainRenderer.requireCanvas(); - this.cache.setHD(true); - this.cache.size(480, 480); - } - - static end() { - this.cache?.clear(); - if (this.cache) mainRenderer.deleteCanvas(this.cache); - this.cache = null; - } - - /** - * 创建着色器特效 - */ - createEffect(effect: PointEffect) { - this.effect = effect; - this.effectId1 = effect.addEffect( - PointEffectType.CircleBrightness, - Date.now() + 1000, - 600, - [this.bx * 32 + 16, this.by * 32 + 16, 128, 32], - [1, 0, 0, 0] - ); - this.effectId2 = effect.addEffect( - PointEffectType.CircleWarp, - Date.now() + 1000, - 600, - [this.bx * 32 + 16, this.by * 32 + 16, 240 + this.power * 32, 32], - [0.1, 6, 0.8, 0], - [0, Math.PI, 0, 0] - ); - } - - /** - * 设置闪电的信息 - */ - setData(x: number, y: number, power: number) { - this.bx = x; - this.by = y; - this.power = power; - this.damage = power * 3000; - this.updateHitbox(x * 32 - 32, y * 32 - 32); - } - - isIntersect(hitbox: Hitbox.HitboxType): boolean { - if (this.damaged) return false; - if (this.time < 1000) return false; - if (hitbox instanceof Hitbox.Rect) { - return Hitbox.checkRectRect(hitbox, this.hitbox); - } else { - return false; - } - } - - updateHitbox(x: number, y: number): void { - this.hitbox.setPosition(x, y); - } - - doDamage(target: IStateDamageable): boolean { - if (this.damaged) return false; - this.damaged = true; - target.hp -= this.damage; - popDamage(this.damage, this.boss, '#cfe6fc'); - return true; - } - - ai(boss: TowerBoss, time: number, frame: number): void { - if (time > 500) { - if (!this.sounded) { - core.playSound('thunder.opus'); - this.sounded = true; - } - } - if (time > 2000) { - this.destroy(); - } - } - - render(canvas: MotaOffscreenCanvas2D, transform: Transform): void { - const ctx = canvas.ctx; - if (this.time < 1000) { - ctx.fillStyle = '#fff'; - ctx.globalAlpha = 0.6; - for (let dx = -1; dx < 2; dx++) { - for (let dy = -1; dy < 2; dy++) { - const x = (this.bx + dx) * 32 + 2; - const y = (this.by + dy) * 32 + 2; - ctx.fillRect(x, y, 28, 28); - } - } - } else { - if (!this.cached) this.cacheThunder(); - if (!ThunderProjectile.cache) return; - const progress = (this.time - 1000) / 1000; - const effect = this.effect; - const id = this.effectId1; - if (!effect || isNil(id)) return; - if (progress < 0.6) { - const x = this.bx * 32 + 16; - const y = this.by * 32 + 16; - effect.setEffect( - id, - [x, y, 32 + progress * 256, 32], - [(0.6 - progress) / 0.6, 0, 0, 0] - ); - } - if (progress < 0.5) { - ctx.globalAlpha = 1; - } else { - ctx.globalAlpha = 1 - (progress - 0.5) * 2; - } - ctx.drawImage(ThunderProjectile.cache.canvas, 0, 0, 480, 480); - } - } - - private cacheThunder() { - const cache = ThunderProjectile.cache; - if (!cache) return; - this.cached = true; - cache.clear(); - const ctx = cache.ctx; - ctx.beginPath(); - for (let i = 0; i < this.power; i++) { - let x = this.bx * 32 + 16; - let y = this.by * 32 + 16; - ctx.moveTo(x, y); - while (y > 0) { - x += Math.floor(Math.random() * 30 - 15); - y -= Math.floor(Math.random() * 80); - ctx.lineTo(x, y); - } - } - ctx.shadowBlur = 5; - ctx.shadowColor = '#62c8f4'; - ctx.lineWidth = 2; - ctx.globalAlpha = 0.6; - ctx.strokeStyle = '#fff'; - ctx.stroke(); - } -} - -export class ThunderBallProjectile extends Projectile { - static dangerEasing?: TimingFn; - - static horizontal: MotaOffscreenCanvas2D | null = null; - static vertical: MotaOffscreenCanvas2D | null = null; - - damage: number = 3000; - hitbox: Hitbox.Rect = new Hitbox.Rect(0, 0, 16, 16); - - private direction: ProjectileDirection = ProjectileDirection.BottomToTop; - private cx: number = 0; - private cy: number = 0; - private damaged: boolean = false; - private sounded: boolean = false; - - /** - * boss战开始时初始化 - */ - static init() { - this.dangerEasing = power(3, 'out'); - this.horizontal = mainRenderer.requireCanvas(); - this.vertical = mainRenderer.requireCanvas(); - const hor = this.horizontal; - hor.size(480, 32); - hor.setHD(true); - const ctxHor = hor.ctx; - ctxHor.fillStyle = '#fff'; - ctxHor.globalAlpha = 0.6; - for (let i = 0; i < 15; i++) { - ctxHor.fillRect(i * 32 + 2, 2, 28, 28); - } - const ver = this.vertical; - ver.size(32, 480); - ver.setHD(true); - const ctxVer = ver.ctx; - ctxVer.fillStyle = '#fff'; - ctxVer.globalAlpha = 0.6; - for (let i = 0; i < 15; i++) { - ctxVer.fillRect(2, i * 32 + 2, 28, 28); - } - } - - /** - * boss战结束后清理 - */ - static end() { - this.dangerEasing = void 0; - this.horizontal?.clear(); - if (this.horizontal) mainRenderer.deleteCanvas(this.horizontal); - this.horizontal = null; - this.vertical?.clear(); - if (this.vertical) mainRenderer.deleteCanvas(this.vertical); - this.vertical = null; - } - - setData(direction: ProjectileDirection, cx: number, cy: number) { - this.cx = cx; - this.cy = cy; - this.direction = direction; - this.setPosition(cx * 32 + 16, cy * 32 + 16); - } - - isIntersect(hitbox: Hitbox.HitboxType): boolean { - if (this.damaged) return false; - if (this.time < 3000) return false; - if (hitbox instanceof Hitbox.Rect) { - return Hitbox.checkRectRect(this.hitbox, hitbox); - } else { - return false; - } - } - - updateHitbox(x: number, y: number): void { - this.hitbox.setPosition(x, y); - } - - doDamage(target: IStateDamageable): boolean { - if (this.damaged) return false; - this.damaged = true; - target.hp -= this.damage; - core.playSound('electron.opus'); - popDamage(this.damage, this.boss, '#cfe6fc'); - return true; - } - - ai(boss: TowerBoss, time: number, frame: number): void { - if (time > 3000) { - if (!this.sounded) { - core.playSound('electron.opus'); - this.sounded = true; - } - const dt = time - 3000; - const dis = dt * 0.2; - const cx = this.cx * 32 + 16; - const cy = this.cy * 32 + 16; - - switch (this.direction) { - case ProjectileDirection.BottomToTop: - this.setPosition(cx, cy - dis); - break; - case ProjectileDirection.LeftToRight: - this.setPosition(cx + dis, cy); - break; - case ProjectileDirection.RightToLeft: - this.setPosition(cx - dis, cy); - break; - case ProjectileDirection.TopToBottom: - this.setPosition(cx, cy + dis); - break; - } - - if (this.x < -16 || this.x > 496 || this.y < -16 || this.y > 496) { - this.destroy(); - } - } - } - - render(canvas: MotaOffscreenCanvas2D, transform: Transform): void { - const ctx = canvas.ctx; - const cx = this.cx * 32 + 16; - const cy = this.cy * 32 + 16; - let left = 0; - let right = 0; - let top = 0; - let bottom = 0; - if (this.time < 3000) { - let begin = 1; - if (this.time < 2000) { - begin = ArrowProjectile.dangerEasing!(this.time / 2000); - } - - switch (this.direction) { - case ProjectileDirection.BottomToTop: { - const height = (cy - 48) * begin; - left = cx - 16; - right = cx + 16; - bottom = cy + 16; - top = cy - height - 16; - break; - } - case ProjectileDirection.LeftToRight: { - const width = (432 - cx) * begin; - left = cx - 16; - right = cx + 16 + width; - bottom = cy + 16; - top = cy - 16; - break; - } - case ProjectileDirection.RightToLeft: { - const width = (cx - 48) * begin; - left = cx - width - 16; - right = cx + 16; - bottom = cy + 16; - top = cy - 16; - break; - } - case ProjectileDirection.TopToBottom: { - const height = (432 - cy) * begin; - left = cx - 16; - right = cx + 16; - bottom = cy + 16 + height; - top = cy + 16; - break; - } - } - } else { - switch (this.direction) { - case ProjectileDirection.BottomToTop: { - left = cx - 16; - right = cx + 16; - bottom = this.y; - top = 32; - break; - } - case ProjectileDirection.LeftToRight: { - left = this.x; - right = 448; - bottom = cy + 16; - top = cy - 16; - break; - } - case ProjectileDirection.RightToLeft: { - left = 32; - right = this.x; - bottom = cy + 16; - top = cy - 16; - break; - } - case ProjectileDirection.TopToBottom: { - left = cx - 16; - right = cx + 16; - bottom = 448; - top = this.y; - break; - } - } - } - const ratio = devicePixelRatio * core.domStyle.scale; - const w = right - left; - const h = bottom - top; - const fw = w * ratio; - const fh = h * ratio; - const fl = left * ratio; - const ft = top * ratio; - const cell = 32 * ratio; - const hor = ThunderBallProjectile.horizontal!.canvas; - const ver = ThunderBallProjectile.vertical!.canvas; - ctx.save(); - if (this.time > 1000 && this.time < 3000) { - ctx.globalAlpha = (3000 - this.time) / 2000; - } else { - ctx.globalAlpha = 1; - } - if (w > 0 && h > 0 && this.time < 3000) { - switch (this.direction) { - case ProjectileDirection.BottomToTop: - case ProjectileDirection.TopToBottom: { - ctx.drawImage(ver, 0, ft, cell, fh, left, top, w, h); - break; - } - case ProjectileDirection.LeftToRight: - case ProjectileDirection.RightToLeft: { - ctx.drawImage(hor, fl, 0, fw, cell, left, top, w, h); - break; - } - } - } - ctx.globalAlpha = 1; - ctx.fillStyle = '#fff'; - ctx.shadowBlur = 8; - ctx.shadowColor = '#62c8f4'; - ctx.globalAlpha = 0.9; - ctx.beginPath(); - const radius = 7 + Math.floor(Math.random() * 2); - ctx.arc(this.x, this.y, radius, 0, Math.PI * 2); - ctx.fill(); - ctx.restore(); - } -} - -export class BoomProjectile extends Projectile { - damage: number = 3000; - hitbox: Hitbox.Rect = new Hitbox.Rect(0, 0, 32, 32); - - private bx: number = 0; - private by: number = 0; - private last: number = 500; - - private damaged: boolean = false; - private animated: boolean = false; - - setData(x: number, y: number, last: number) { - this.bx = x; - this.by = y; - this.last = last; - this.setPosition(x * 32, y * 32); - } - - isIntersect(hitbox: Hitbox.HitboxType): boolean { - if (this.time < this.last + 1000) return false; - if (this.damaged) return false; - if (hitbox instanceof Hitbox.Rect) { - return Hitbox.checkRectRect(this.hitbox, hitbox); - } else { - return false; - } - } - - updateHitbox(x: number, y: number): void { - this.hitbox.setPosition(x, y); - } - - doDamage(target: IStateDamageable): boolean { - if (this.damaged) return false; - target.hp -= this.damage; - this.damaged = true; - popDamage(this.damage, this.boss, '#e08aff'); - return true; - } - - ai(boss: TowerBoss, time: number, frame: number): void { - if (!this.animated && time > this.last + 1000) { - this.animated = true; - core.drawAnimate('explosion1', this.bx, this.by); - } - if (time > this.last + 1100) { - this.destroy(); - } - } - - render(canvas: MotaOffscreenCanvas2D, transform: Transform): void { - const ctx = canvas.ctx; - const end = this.last + 1000; - const r = 12; - const mr = 27; - ctx.save(); - if (this.time < end) { - const angle = this.time / 500; - const sin = Math.sin(angle); - const cos = Math.cos(angle); - ctx.fillStyle = 'rgb(255,50,50)'; - ctx.strokeStyle = 'rgb(255,50,50)'; - ctx.lineWidth = 1.5; - ctx.globalAlpha = 0.8; - const cx = this.x + 16; - const cy = this.y + 16; - ctx.beginPath(); - ctx.arc(cx, cy, r, 0, Math.PI * 2); - ctx.moveTo(cx + r * cos, cy + r * sin); - ctx.lineTo(cx + mr * cos, cy + mr * sin); - ctx.moveTo(cx - r * cos, cy - r * sin); - ctx.lineTo(cx - mr * cos, cy - mr * sin); - ctx.stroke(); - ctx.beginPath(); - ctx.arc(cx, cy, 2, 0, Math.PI * 2); - ctx.fill(); - } - if (this.time > end - 500) { - const dt = this.time - end + 500; - const pos = this.y - (1 - dt / 500) * 480; - const img = core.material.images.images['boom.png']; - ctx.drawImage(img, this.x, pos - 80, 36, 80); - } - ctx.restore(); - } -} - -export class ChainProjectile extends Projectile { - damage: number = 4000; - hitbox: Hitbox.Line = new Hitbox.Line(0, 0, 0, 0); - - private damaged: boolean = false; - - isIntersect(hitbox: Hitbox.HitboxType): boolean { - if (this.time < 1000) return false; - if (this.damaged) return false; - if (hitbox instanceof Hitbox.Rect) { - return Hitbox.checkLineRect(this.hitbox, hitbox); - } else { - return false; - } - } - - updateHitbox(x: number, y: number): void { - this.hitbox.setPoint1(x, y); - } - - doDamage(target: IStateDamageable): boolean { - if (this.damaged) return false; - target.hp -= this.damage; - this.damaged = true; - core.playSound('electron.opus'); - popDamage(this.damage, this.boss, '#8affd6'); - return true; - } - - ai(boss: TowerBoss, time: number, frame: number): void { - if (time > 2000) { - this.destroy(); - } - } - - render(canvas: MotaOffscreenCanvas2D, transform: Transform): void { - const ctx = canvas.ctx; - ctx.save(); - ctx.beginPath(); - ctx.moveTo(this.hitbox.x1, this.hitbox.y1); - ctx.lineTo(this.hitbox.x2, this.hitbox.y2); - - const progress = (this.time - 1000) / 1000; - - if (this.time < 1000) { - ctx.globalAlpha = 0.6; - ctx.strokeStyle = 'rgb(220,100,255)'; - ctx.stroke(); - } else { - ctx.lineWidth = 2; - ctx.strokeStyle = '#fff'; - ctx.shadowBlur = 12; - ctx.shadowColor = '#62c8f4'; - ctx.globalAlpha = 1 - progress; - ctx.stroke(); - } - ctx.restore(); - } -} diff --git a/packages-user/legacy-plugin-client/src/chase/chase.ts b/packages-user/legacy-plugin-client/src/chase/chase.ts deleted file mode 100644 index 59043a5..0000000 --- a/packages-user/legacy-plugin-client/src/chase/chase.ts +++ /dev/null @@ -1,356 +0,0 @@ -import { MotaOffscreenCanvas2D } from '@motajs/render'; -import { Container, MotaRenderer, Shader, Sprite } from '@motajs/render'; -import { - CameraAnimation, - LayerGroup, - disableViewport, - enableViewport -} from '@user/client-modules'; -import { loading } from '@user/data-base'; -import { - heroMoveCollection, - type HeroMover, - type MoveStep -} from '@user/data-state'; -import EventEmitter from 'eventemitter3'; -import { mainRenderer } from '@user/client-modules'; - -export interface IChaseController { - /** 本次追逐战实例 */ - readonly chase: Chase; - - /** - * 开始这个追逐战 - * @param fromSave 是否是从存档开始 - */ - start(fromSave: boolean): void; - - /** - * 结束这个追逐战 - * @param success 是否逃脱成功 - */ - end(success: boolean): void; - - /** - * 初始化这次追逐战的音频 - * @param fromSave 是否从存档开始 - */ - initAudio(fromSave: boolean): void; -} - -export interface ChaseData { - path: Partial>; - camera: Partial>; -} - -interface TimeListener { - fn: (emitTime: number) => void; - time: number; -} - -interface LocListener { - fn: (x: number, y: number) => void; - floorId: FloorIds; - once: boolean; -} - -interface ChaseEvent { - changeFloor: [floor: FloorIds]; - end: [success: boolean]; - start: []; - step: [x: number, y: number]; - frame: [totalTime: number, floorTime: number]; -} - -export class Chase extends EventEmitter { - static shader: Shader; - - /** 本次追逐战的数据 */ - private readonly data: ChaseData; - - /** 是否显示路线 */ - private showPath: boolean = false; - /** 每层的路线显示 */ - private pathMap: Map = new Map(); - /** 当前的摄像机动画 */ - private nowCamera?: CameraAnimation; - /** 当前楼层 */ - private nowFloor?: FloorIds; - - /** 开始时刻 */ - startTime: number = 0; - /** 进入当前楼层的时刻 */ - nowFloorTime: number = 0; - /** 是否正在进行追逐战 */ - started: boolean = false; - - /** 路径显示的sprite */ - private pathSprite?: Sprite; - /** 当前 LayerGroup 渲染元素 */ - private layer: LayerGroup; - /** 委托ticker的id */ - private delegation: number = -1; - - /** 时间监听器 */ - private onTimeListener: TimeListener[] = []; - /** 楼层时间监听器 */ - private onFloorTimeListener: Partial> = {}; - /** 勇士位置监听器 */ - private onHeroLocListener: Map> = new Map(); - - /** 勇士移动实例 */ - private heroMove: HeroMover; - - constructor(data: ChaseData, showPath: boolean = false) { - super(); - - this.data = data; - this.showPath = showPath; - - const render = MotaRenderer.get('render-main')!; - const layer = render.getElementById('layer-main')! as LayerGroup; - this.layer = layer; - - const mover = heroMoveCollection.mover; - this.heroMove = mover; - - mover.on('stepEnd', this.onStepEnd); - } - - private onStepEnd = (step: MoveStep) => { - if (step.type === 'speed') return; - const { x, y } = core.status.hero.loc; - this.emitHeroLoc(x, y); - this.emit('step', x, y); - }; - - private emitHeroLoc(x: number, y: number) { - if (!this.nowFloor) return; - const floor = core.status.maps[this.nowFloor]; - const width = floor.width; - const index = x + y * width; - const list = this.onHeroLocListener.get(index); - if (!list) return; - const toDelete = new Set(); - list.forEach(v => { - if (v.floorId === this.nowFloor) { - v.fn(x, y); - if (v.once) toDelete.add(v); - } - }); - toDelete.forEach(v => list.delete(v)); - } - - private emitTime() { - const now = Date.now(); - const nTime = now - this.startTime; - const fTime = now - this.nowFloorTime; - - this.emit('frame', nTime, fTime); - - while (true) { - const time = this.onTimeListener[0]; - if (!time) break; - if (time.time <= nTime) { - time.fn(nTime); - this.onTimeListener.shift(); - } else { - break; - } - } - - if (!this.nowFloor) return; - const floor = this.onFloorTimeListener[this.nowFloor]; - if (!floor) return; - - while (true) { - const time = floor[0]; - if (!time) break; - if (time.time <= fTime) { - time.fn(nTime); - floor.shift(); - } else { - break; - } - } - } - - private tick = () => { - if (!this.started) return; - const floor = core.status.floorId; - if (floor !== this.nowFloor) { - this.changeFloor(floor); - } - this.emitTime(); - }; - - private readyPath() { - for (const [key, nodes] of Object.entries(this.data.path)) { - if (nodes.length === 0) return; - const floor = key as FloorIds; - const canvas = mainRenderer.requireCanvas(); - const ctx = canvas.ctx; - const cell = 32; - const half = cell / 2; - const { width, height } = core.status.maps[floor]; - canvas.setHD(true); - canvas.size(width * cell, height * cell); - const [fx, fy] = nodes.shift()!; - ctx.beginPath(); - ctx.moveTo(fx * cell + half, fy * cell + half); - nodes.forEach(([x, y]) => { - ctx.lineTo(x * cell + half, y * cell + half); - }); - ctx.strokeStyle = '#0ff'; - ctx.globalAlpha = 0.6; - ctx.stroke(); - this.pathMap.set(floor, canvas); - } - this.pathSprite = new Sprite('static', false, true); - this.pathSprite.size(480, 480); - this.pathSprite.pos(0, 0); - this.pathSprite.setZIndex(120); - this.pathSprite.setAntiAliasing(false); - this.layer.appendChild(this.pathSprite); - this.pathSprite.setRenderFn(canvas => { - const ctx = canvas.ctx; - const path = this.pathMap.get(core.status.floorId); - if (!path) return; - ctx.drawImage(path.canvas, 0, 0, path.width, path.height); - }); - } - - /** - * 当到达某个时间时触发函数 - * @param time 触发时刻 - * @param fn 触发时执行的函数,函数的参数表示实际触发时间 - */ - onTime(time: number, fn: (emitTime: number) => void) { - this.onTimeListener.push({ time, fn }); - if (this.started) { - this.onTimeListener.sort((a, b) => a.time - b.time); - } - } - - /** - * 当在某个楼层中到达某个时间时触发函数 - * @param floor 触发楼层 - * @param time 从进入该楼层开始计算的触发时刻 - * @param fn 触发时执行的函数 - */ - onFloorTime(floor: FloorIds, time: number, fn: (emitTime: number) => void) { - this.onFloorTimeListener[floor] ??= []; - const list = this.onFloorTimeListener[floor]; - list.push({ time, fn }); - if (this.started) { - list.sort((a, b) => a.time - b.time); - } - } - - private ensureLocListener(index: number) { - const listener = this.onHeroLocListener.get(index); - if (listener) return listener; - else { - const set = new Set(); - this.onHeroLocListener.set(index, set); - return set; - } - } - - /** - * 当勇士走到某一层的某一格时执行函数 - * @param x 触发横坐标 - * @param y 触发纵坐标 - * @param floor 触发楼层 - * @param fn 触发函数 - * @param once 是否只执行一次 - */ - onLoc( - x: number, - y: number, - floor: FloorIds, - fn: (x: number, y: number) => void, - once: boolean = false - ) { - const map = core.status.maps[floor]; - const { width } = map; - const index = x + y * width; - const set = this.ensureLocListener(index); - set.add({ floorId: floor, fn, once }); - } - - /** - * 当勇士走到某一层的某一格时执行函数,且只执行一次 - * @param x 触发横坐标 - * @param y 触发纵坐标 - * @param floor 触发楼层 - * @param fn 触发函数 - */ - onceLoc( - x: number, - y: number, - floor: FloorIds, - fn: (x: number, y: number) => void - ) { - this.onLoc(x, y, floor, fn, true); - } - - /** - * 切换楼层 - * @param floor 目标楼层 - */ - changeFloor(floor: FloorIds) { - if (floor === this.nowFloor) return; - this.nowFloor = floor; - if (this.nowCamera) { - this.nowCamera.destroy(); - } - const camera = this.data.camera[floor]; - if (camera) { - camera.start(); - this.nowCamera = camera; - } - this.nowFloorTime = Date.now(); - this.emit('changeFloor', floor); - } - - start() { - disableViewport(); - if (this.showPath) this.readyPath(); - this.changeFloor(core.status.floorId); - this.startTime = Date.now(); - this.delegation = this.layer.delegateTicker(this.tick); - this.started = true; - for (const floorTime of Object.values(this.onFloorTimeListener)) { - floorTime.sort((a, b) => a.time - b.time); - } - this.onTimeListener.sort((a, b) => a.time - b.time); - const render = MotaRenderer.get('render-main')!; - const mapDraw = render.getElementById('map-draw') as Container; - Chase.shader.appendTo(mapDraw); - this.emit('start'); - } - - /** - * 结束这次追逐战 - * @param success 是否成功逃脱 - */ - end(success: boolean) { - enableViewport(); - this.layer.removeTicker(this.delegation); - this.pathSprite?.destroy(); - this.heroMove.off('stepEnd', this.onStepEnd); - Chase.shader.remove(); - this.emit('end', success); - this.removeAllListeners(); - this.pathMap.forEach(v => mainRenderer.deleteCanvas(v)); - this.pathMap.clear(); - } -} - -loading.once('coreInit', () => { - const shader = new Shader(); - Chase.shader = shader; - shader.size(480, 480); - shader.setHD(true); -}); diff --git a/packages-user/legacy-plugin-client/src/chase/chase1.ts b/packages-user/legacy-plugin-client/src/chase/chase1.ts deleted file mode 100644 index 0560635..0000000 --- a/packages-user/legacy-plugin-client/src/chase/chase1.ts +++ /dev/null @@ -1,723 +0,0 @@ -import { Animation, hyper, linear, power, sleep } from 'mutate-animate'; -import { Chase, ChaseData, IChaseController } from './chase'; -import { MotaRenderer, Sprite } from '@motajs/render'; -import { PointEffect, PointEffectType } from '../fx/pointShader'; -import { - bgmController, - Camera, - CameraAnimation, - ICameraScale, - LayerGroup -} from '@user/client-modules'; -import { loading } from '@user/data-base'; -import { chaseInit1, clip } from '@user/legacy-plugin-data'; - -const path: Partial> = { - MT16: [ - [23, 23], - [0, 23] - ], - MT15: [ - [63, 4], - [61, 4], - [61, 5], - [58, 5], - [58, 8], - [54, 8], - [54, 11], - [51, 11], - [51, 8], - [45, 8], - [45, 4], - [47, 4], - [47, 6], - [51, 6], - [51, 5], - [52, 5], - [52, 3], - [50, 3], - [50, 5], - [48, 5], - [48, 3], - [35, 3], - [35, 5], - [31, 5], - [31, 7], - [34, 7], - [34, 9], - [31, 9], - [31, 11], - [12, 11], - [12, 8], - [1, 8], - [1, 7], - [0, 7] - ], - MT14: [ - [127, 7], - [126, 7], - [126, 8], - [124, 8], - [124, 7], - [115.2, 7], - [115.2, 9.2], - [110.2, 9.2], - [110.2, 11], - [109.8, 11], - [109.8, 8.8], - [111.8, 8.8], - [111.8, 7], - [104, 7], - [104, 3], - [100, 3], - [100, 4], - [98, 4], - [98, 3], - [96, 3], - [96, 6], - [95, 6], - [95, 7], - [88, 7], - [88, 6], - [85, 6], - [85, 8], - [83, 8], - [83, 9], - [81, 9], - [81, 11], - [72, 11], - [72, 5], - [68, 5], - [68, 8], - [67, 8], - [67, 10], - [65, 10], - [65, 11], - [62, 11], - [62, 9], - [60, 9], - [60, 11], - [57, 11], - [57, 9], - [54, 9] - ] -}; - -let back: Sprite | undefined; -let contrastId: number = 0; -const effect = new PointEffect(); - -loading.once('loaded', () => { - effect.create(Chase.shader, 40); -}); - -/** - * 初始化并开始这个追逐战 - */ -export function initChase(): IChaseController { - const ani = new Animation(); - - const render = MotaRenderer.get('render-main')!; - const layer = render.getElementById('layer-main')! as LayerGroup; - - const camera = new Camera(layer); - camera.clearOperation(); - camera.transform = layer.camera; - camera.disable(); - const animation16 = new CameraAnimation(camera); - const animation15 = new CameraAnimation(camera); - const animation14 = new CameraAnimation(camera); - effect.setTransform(layer.camera); - - const data: ChaseData = { - path, - camera: { - MT16: animation16, - MT15: animation15, - MT14: animation14 - } - }; - - const chase = new Chase(data, flags.chaseHard === 0); - - // 旋转在前,平移在后 - const translate1 = camera.addTranslate(); - const scale = camera.addScale(); - const rotate = camera.addRotate(); - const translate2 = camera.addTranslate(); - const translate = camera.addTranslate(); - - translate1.x = -7 * 32; - translate1.y = -7 * 32; - translate2.x = 7 * 32; - translate2.y = 7 * 32; - - translate.x = 10 * 32; - translate.y = 10 * 32; - - const inOut = hyper('sin', 'in-out'); - // MT16 摄像机动画 - animation16.translate(translate, 10, 10, 1, 0, linear()); - animation16.translate(translate, 0, 10, 1600, 0, hyper('sin', 'in')); - // MT15 摄像机动画 - animation15.rotate(rotate, -Math.PI / 30, 4000, 0, inOut); - animation15.rotate(rotate, 0, 3000, 5000, inOut); - animation15.rotate(rotate, -Math.PI / 40, 1800, 11000, inOut); - animation15.rotate(rotate, 0, 2000, 13000, inOut); - animation15.translate(translate, 49, 0, 1, 0, linear()); - animation15.translate(translate, 45, 0, 2324, 0, hyper('sin', 'in')); - animation15.translate(translate, 40, 0, 1992, 2324, hyper('sin', 'out')); - animation15.translate(translate, 41, 0, 498, 5312, hyper('sin', 'in-out')); - animation15.translate(translate, 37, 0, 1660, 5810, hyper('sin', 'in')); - animation15.translate(translate, 29, 0, 830, 7470, hyper('sin', 'out')); - animation15.translate(translate, 25, 0, 996, 11454, hyper('sin', 'in')); - animation15.translate(translate, 12, 0, 996, 12450, linear()); - animation15.translate(translate, 0, 0, 1470, 13446, hyper('sin', 'out')); - // MT14 摄像机动画 - animation14.rotate(rotate, -Math.PI / 70, 1000, 0, inOut); - animation14.rotate(rotate, 0, 4000, 2000, inOut); - animation14.translate(translate, 113, 0, 1, 0, hyper('sin', 'in')); - animation14.translate(translate, 109, 0, 1328, 0, hyper('sin', 'in')); - animation14.translate(translate, 104, 0, 332, 1328, hyper('sin', 'out')); - animation14.translate(translate, 92, 0, 2822, 5478, hyper('sin', 'in')); - animation14.translate(translate, 84, 0, 1992, 8300, linear()); - animation14.translate(translate, 74, 0, 2988, 10292, linear()); - animation14.translate(translate, 65, 0, 2988, 13280, linear()); - animation14.translate(translate, 58, 0, 1992, 16268, linear()); - animation14.translate(translate, 47, 0, 3320, 18260, linear()); - animation14.translate(translate, 36, 0, 3320, 21580, linear()); - animation14.translate(translate, 0, 0, 9960, 24900, linear()); - - chase.on('end', success => { - camera.transform.reset(); - camera.transform.translate( - -translate.x * 32 - 7 * 32, - -translate.y * 32 - 7 * 32 - ); - animation16.destroy(); - animation15.destroy(); - animation14.destroy(); - camera.destroy(); - back?.destroy(); - back = void 0; - core.removeFlag('onChase'); - core.removeFlag('chaseId'); - - if (success) { - // completeAchievement('challenge', 0); - } - }); - - judgeFail1(chase, ani, camera); - drawBack(chase, ani); - para1(chase, ani); - para2(chase, ani); - para3(chase, ani); - processScale(chase, ani, scale, camera); - - chaseInit1(); - - chase.on('end', () => { - effect.end(); - camera.destroy(); - }); - - chase.on('frame', () => { - effect.requestUpdate(); - }); - - chase.on('changeFloor', () => { - effect.clearEffect(); - }); - - const controller: IChaseController = { - chase, - start(fromSave) { - core.setFlag('onChase', true); - core.setFlag('chaseId', 1); - chase.start(); - camera.enable(); - wolfMove(chase); - effect.use(); - effect.start(); - if (fromSave) { - initFromSave(chase); - core.autosave(); - } - }, - end(success) { - chase.end(success); - }, - initAudio(fromSave) { - if (fromSave) initFromSave(chase); - else initAudio(chase); - } - }; - return controller; -} - -function initAudio(chase: Chase) { - playAudio(0, chase); -} - -function initFromSave(chase: Chase) { - playAudio(43.5, chase); -} - -function playAudio(from: number, chase: Chase) { - const playing = bgmController.playingBgm; - bgmController.play('escape.opus', from); - bgmController.blockChange(); - chase.on('end', () => { - bgmController.unblockChange(); - if (playing) bgmController.play(playing); - }); -} - -function processScale( - chase: Chase, - ani: Animation, - scale: ICameraScale, - camera: Camera -) { - chase.onceLoc(35, 3, 'MT15', () => { - camera.applyScaleAnimation(scale, ani, 2200); - ani.mode(linear()).time(1).scale(1.2); - sleep(150).then(() => { - ani.mode(hyper('sin', 'out')).time(2000).scale(1); - }); - }); - chase.onFloorTime('MT14', 100, () => { - camera.applyScaleAnimation(scale, ani, 30000); - ani.mode(hyper('sin', 'in-out')).time(3000).scale(0.8); - }); - chase.onceLoc(57, 10, 'MT14', () => { - ani.mode(power(6, 'in')).time(200).scale(1.1); - sleep(200).then(() => { - ani.mode(hyper('sin', 'in-out')).time(3000).scale(1); - }); - }); -} - -async function wolfMove(_chase: Chase) { - core.moveBlock(23, 17, Array(6).fill('down'), 80); - await sleep(550); - core.setBlock(508, 23, 23); -} - -function judgeFail1(chase: Chase, ani: Animation, camera: Camera) { - chase.on('frame', () => { - const now = Date.now(); - const time = now - chase.nowFloorTime; - if (time < 500) return; - if (core.status.hero.loc.x > -camera.transform.x / 32 + 22) { - chase.end(false); - if (ani.value.rect !== void 0) { - ani.time(750).apply('rect', 0); - } - core.lose('逃跑失败'); - } - }); -} - -function drawBack(chase: Chase, ani: Animation) { - chase.onFloorTime('MT15', 0, () => { - ani.register('rect', 0); - ani.mode(hyper('sin', 'out')).time(1500).absolute().apply('rect', 64); - - const render = MotaRenderer.get('render-main')!; - const layer = render.getElementById('layer-main')! as LayerGroup; - back = new Sprite('absolute', false); - back.setZIndex(100); - back.size(480, 480); - back.pos(0, 0); - back.appendTo(layer); - back.setRenderFn(canvas => { - const ctx = canvas.ctx; - ctx.fillStyle = '#000'; - ctx.fillRect(0, 0, 480, ani.value.rect); - ctx.fillRect(0, 480, 480, -ani.value.rect); - }); - }); -} - -function addCommonWarp(x: number, y: number) { - effect.addEffect( - PointEffectType.CircleWarp, - Date.now(), - 500, - [x * 32 + 16, y * 32 + 16, 48, 32], - [1 / 10, 6, 0.8, 0], - [0, -Math.PI, 0, 0] - ); -} - -function addMediumWarp(x: number, y: number) { - effect.addEffect( - PointEffectType.CircleWarp, - Date.now(), - 5000, - [x * 32 + 16, y * 32 + 16, 480, 64], - [1 / 40, 1, 0.5, 0], - [0, Math.PI * 2, 0, 0] - ); -} - -function addLargeWarp(x: number, y: number) { - effect.addEffect( - PointEffectType.CircleWarp, - Date.now(), - 10000, - [x * 32 + 16, y * 32 + 16, 1080, 96], - [1 / 25, 1, 0.5, 0], - [0, Math.PI * 2, 0, 0] - ); -} - -function addCommonContrast(x: number, y: number, ani: Animation, chase: Chase) { - const id = contrastId++; - const name = 'contrast' + id; - ani.register(name, 1); - sleep(500).then(() => { - ani.mode(linear()).absolute().time(1500).apply(name, 0); - }); - const fx = effect.addEffect( - PointEffectType.CircleContrast, - Date.now(), - 2000, - [x * 32 + 16, y * 32 + 16, 48, 8], - [1, 0, 0, 0] - ); - const fn = () => { - effect.setEffect(fx, void 0, [ani.value[name], 0, 0, 0]); - }; - chase.on('frame', fn); - sleep(2000).then(() => { - chase.off('frame', fn); - }); -} - -function addMediumContrast(x: number, y: number, ani: Animation, chase: Chase) { - const id = contrastId++; - const name = 'contrast' + id; - ani.register(name, 1); - sleep(1500).then(() => { - ani.mode(linear()).absolute().time(5000).apply(name, 0); - }); - const fx = effect.addEffect( - PointEffectType.CircleContrast, - Date.now(), - 7500, - [x * 32 + 16, y * 32 + 16, 144, 32], - [1, 0, 0, 0] - ); - const fn = () => { - effect.setEffect( - fx, - [x * 32 + 16, y * 32 + 16, 144 + (1 - ani.value[name]) * 240, 32], - [ani.value[name], 0, 0, 0] - ); - }; - chase.on('frame', fn); - sleep(7500).then(() => { - chase.off('frame', fn); - }); -} - -function addLargeContrast(x: number, y: number, ani: Animation, chase: Chase) { - const id = contrastId++; - const name = 'contrast' + id; - ani.register(name, 1); - sleep(500).then(() => { - ani.mode(linear()).absolute().time(9500).apply(name, 0); - }); - const fx = effect.addEffect( - PointEffectType.CircleContrast, - Date.now(), - 7500, - [x * 32 + 16, y * 32 + 16, 324, 240], - [1, 0, 0, 0] - ); - const fn = () => { - effect.setEffect( - fx, - [x * 32 + 16, y * 32 + 16, 324 + (1 - ani.value[name]) * 720, 240], - [ani.value[name], 0, 0, 0] - ); - }; - chase.on('frame', fn); - sleep(10000).then(() => { - chase.off('frame', fn); - }); -} - -function explode1(x: number, y: number, ani: Animation, chase: Chase) { - core.setBlock(336, x, y); - core.drawAnimate('explosion1', x, y); - addCommonWarp(x, y); - addCommonContrast(x, y, ani, chase); -} - -function para1(chase: Chase, ani: Animation) { - chase.onFloorTime('MT15', 830, () => { - for (let tx = 53; tx < 58; tx++) { - for (let ty = 3; ty < 8; ty++) { - core.setBlock(336, tx, ty); - } - } - core.drawAnimate('explosion3', 55, 5); - addMediumWarp(55, 5); - addMediumContrast(55, 5, ani, chase); - }); - chase.onFloorTime('MT15', 1080, () => { - explode1(58, 9, ani, chase); - explode1(59, 9, ani, chase); - }); - chase.onFloorTime('MT15', 1190, () => { - explode1(53, 8, ani, chase); - explode1(52, 8, ani, chase); - }); - chase.onFloorTime('MT15', 1580, () => { - explode1(51, 7, ani, chase); - }); - chase.onFloorTime('MT15', 1830, () => { - explode1(47, 7, ani, chase); - explode1(49, 9, ani, chase); - }); -} - -function para2(chase: Chase, ani: Animation) { - let emitted32x9 = false; - chase.onceLoc(45, 8, 'MT15', () => { - explode1(45, 9, ani, chase); - }); - chase.onceLoc(45, 6, 'MT15', () => { - explode1(44, 6, ani, chase); - }); - chase.onceLoc(45, 4, 'MT15', () => { - explode1(44, 4, ani, chase); - core.drawAnimate('explosion1', 48, 6); - core.removeBlock(48, 6); - addCommonWarp(48, 6); - addCommonContrast(48, 6, ani, chase); - }); - chase.onceLoc(41, 3, 'MT15', () => { - explode1(41, 4, ani, chase); - explode1(32, 6, ani, chase); - }); - chase.onceLoc(35, 3, 'MT15', () => { - core.drawAnimate('explosion3', 37, 7); - addMediumWarp(37, 7); - addMediumContrast(37, 7, ani, chase); - for (let tx = 36; tx < 42; tx++) { - for (let ty = 4; ty < 11; ty++) { - core.setBlock(336, tx, ty); - } - } - }); - chase.onceLoc(31, 5, 'MT15', () => { - core.removeBlock(34, 8); - core.removeBlock(33, 8); - core.drawAnimate('explosion1', 34, 8); - core.drawAnimate('explosion1', 33, 8); - addCommonWarp(34, 8); - addCommonWarp(33, 8); - addCommonContrast(34, 8, ani, chase); - addCommonContrast(33, 8, ani, chase); - }); - chase.onceLoc(33, 7, 'MT15', () => { - explode1(32, 9, ani, chase); - }); - chase.onceLoc(33, 9, 'MT15', () => { - if (emitted32x9) return; - emitted32x9 = true; - core.removeBlock(32, 9); - core.drawAnimate('explosion1', 32, 9); - addCommonWarp(32, 9); - addCommonContrast(32, 9, ani, chase); - }); - chase.onceLoc(34, 9, 'MT15', () => { - if (emitted32x9) return; - emitted32x9 = true; - core.removeBlock(32, 9); - core.drawAnimate('explosion1', 32, 9); - addCommonWarp(32, 9); - addCommonContrast(32, 9, ani, chase); - }); - chase.onceLoc(35, 9, 'MT15', () => { - if (emitted32x9) return; - emitted32x9 = true; - core.removeBlock(32, 9); - core.drawAnimate('explosion1', 32, 9); - addCommonWarp(32, 9); - }); - for (let x = 19; x < 31; x++) { - const xx = x; - chase.onceLoc(xx, 11, 'MT15', () => { - core.setBlock(336, xx + 1, 11); - core.drawAnimate('explosion1', xx + 1, 11); - }); - } -} - -function para3(chase: Chase, ani: Animation) { - chase.onceLoc(126, 7, 'MT14', () => { - explode1(126, 6, ani, chase); - explode1(124, 6, ani, chase); - explode1(124, 9, ani, chase); - explode1(126, 9, ani, chase); - }); - chase.onceLoc(123, 7, 'MT14', () => { - core.setBlock(508, 127, 7); - core.jumpBlock(127, 7, 112, 7, 500, true); - setTimeout(() => { - core.setBlock(509, 112, 7); - }, 520); - core.drawHeroAnimate('amazed'); - explode1(121, 6, ani, chase); - explode1(122, 6, ani, chase); - explode1(120, 8, ani, chase); - explode1(121, 8, ani, chase); - explode1(122, 8, ani, chase); - }); - let emitted110x10 = false; - let emitted112x8 = false; - chase.onceLoc(110, 10, 'MT14', () => { - explode1(109, 11, ani, chase); - core.removeBlock(112, 8); - core.drawAnimate('explosion1', 112, 8); - addCommonWarp(112, 8); - addCommonContrast(112, 8, ani, chase); - core.insertAction([ - { type: 'moveHero', time: 400, steps: ['backward:1'] } - ]); - emitted110x10 = true; - }); - chase.onLoc(112, 8, 'MT14', () => { - if (!emitted110x10 || emitted112x8) return; - core.jumpBlock(112, 7, 110, 4, 500, true); - core.drawHeroAnimate('amazed'); - setTimeout(() => { - core.setBlock(506, 110, 4); - }, 540); - emitted112x8 = true; - }); - chase.onceLoc(118, 7, 'MT14', () => { - explode1(117, 6, ani, chase); - explode1(116, 6, ani, chase); - explode1(115, 6, ani, chase); - explode1(114, 6, ani, chase); - explode1(117, 8, ani, chase); - explode1(116, 8, ani, chase); - }); - chase.onceLoc(112, 7, 'MT14', () => { - explode1(112, 8, ani, chase); - explode1(113, 7, ani, chase); - }); - chase.onceLoc(115, 7, 'MT14', () => { - for (let tx = 111; tx <= 115; tx++) { - explode1(tx, 10, ani, chase); - } - explode1(112, 8, ani, chase); - }); - chase.onceLoc(110, 7, 'MT14', () => { - core.jumpBlock(97, 4, 120, -3, 2000); - for (let tx = 109; tx <= 120; tx++) { - for (let ty = 3; ty <= 11; ty++) { - if (ty == 7) continue; - core.setBlock(336, tx, ty); - } - } - core.drawAnimate('explosion2', 119, 7); - addLargeWarp(119, 7); - addLargeContrast(119, 7, ani, chase); - core.removeBlock(105, 7); - core.drawAnimate('explosion1', 105, 7); - addCommonWarp(105, 7); - addCommonContrast(105, 7, ani, chase); - }); - chase.onceLoc(97, 3, 'MT14', () => { - explode1(95, 3, ani, chase); - explode1(93, 6, ani, chase); - }); - chase.onceLoc(88, 6, 'MT14', () => { - explode1(87, 4, ani, chase); - explode1(88, 5, ani, chase); - }); - chase.onceLoc(86, 6, 'MT14', () => { - explode1(84, 6, ani, chase); - explode1(85, 5, ani, chase); - explode1(86, 8, ani, chase); - }); - chase.onceLoc(81, 9, 'MT14', () => { - explode1(81, 8, ani, chase); - explode1(82, 11, ani, chase); - }); - chase.onceLoc(72, 11, 'MT14', () => { - explode1(73, 8, ani, chase); - explode1(72, 4, ani, chase); - }); - chase.onceLoc(72, 7, 'MT14', () => { - for (let tx = 74; tx < 86; tx++) { - for (let ty = 3; ty < 12; ty++) { - core.setBlock(336, tx, ty); - } - } - core.drawAnimate('explosion2', 79, 7); - addLargeWarp(79, 7); - addLargeContrast(79, 7, ani, chase); - }); - chase.onceLoc(68, 5, 'MT14', () => { - explode1(68, 4, ani, chase); - explode1(67, 6, ani, chase); - }); - chase.onceLoc(67, 10, 'MT14', () => { - for (let tx = 65; tx <= 72; tx++) { - for (let ty = 3; ty <= 9; ty++) { - core.setBlock(336, tx, ty); - } - } - core.setBlock(336, 72, 10); - core.setBlock(336, 72, 11); - core.drawAnimate('explosion3', 69, 5); - addMediumWarp(69, 5); - addMediumContrast(69, 5, ani, chase); - }); - chase.onceLoc(64, 11, 'MT14', () => { - explode1(63, 9, ani, chase); - explode1(60, 8, ani, chase); - explode1(56, 11, ani, chase); - }); - chase.onceLoc(57, 9, 'MT14', () => { - for (let tx = 58; tx <= 64; tx++) { - for (let ty = 3; ty <= 11; ty++) { - core.setBlock(336, tx, ty); - } - } - core.drawAnimate('explosion2', 61, 7); - addLargeWarp(61, 7); - addLargeContrast(61, 7, ani, chase); - }); - const exploded: Set = new Set(); - chase.on('step', x => { - if (core.status.floorId !== 'MT14') return; - if (exploded.has(x)) return; - if (x > 20 && x < 49) { - for (let ty = 3; ty <= 11; ty++) { - core.setBlock(336, x + 4, ty); - core.drawAnimate('explosion1', x + 4, ty); - } - exploded.add(x); - } - }); - chase.onceLoc(21, 7, 'MT14', async () => { - flags.finishChase1 = true; - clip('choices:0'); - core.showStatusBar(); - ani.time(750).apply('rect', 0); - chase.end(true); - await sleep(750); - ani.ticker.destroy(); - core.deleteCanvas('chaseBack'); - }); -} diff --git a/packages-user/legacy-plugin-client/src/chase/index.ts b/packages-user/legacy-plugin-client/src/chase/index.ts deleted file mode 100644 index b036a5e..0000000 --- a/packages-user/legacy-plugin-client/src/chase/index.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { IChaseController } from './chase'; -import { initChase as init1 } from './chase1'; - -let nowChase: IChaseController | undefined; - -const chaseIndexes: Record IChaseController> = { - 0: init1 -}; - -export function getNow() { - return nowChase; -} - -export function initChase(index: number) { - nowChase?.end(false); - const controller = chaseIndexes[index](); - nowChase = controller; - controller.chase.on('end', () => { - nowChase = void 0; - }); - return nowChase; -} - -export function start(fromSave: boolean) { - nowChase?.start(fromSave); -} - -export function end(success: boolean) { - nowChase?.end(success); -} - -export function initAudio(fromSave: boolean) { - nowChase?.initAudio(fromSave); -} diff --git a/packages-user/legacy-plugin-client/src/fx/frag.ts b/packages-user/legacy-plugin-client/src/fx/frag.ts deleted file mode 100644 index 1431bb4..0000000 --- a/packages-user/legacy-plugin-client/src/fx/frag.ts +++ /dev/null @@ -1,225 +0,0 @@ -import { Animation, linear, sleep } from 'mutate-animate'; -// import { has } from '@motajs/legacy-ui'; - -// todo: 移植到渲染树 - -interface SplittedImage { - canvas: HTMLCanvasElement; - x: number; - y: number; -} - -interface FraggingImage extends SplittedImage { - /** 横坐标增量 */ - deltaX: number; - /** 纵坐标增量 */ - deltaY: number; - endRad: number; -} - -/** 最大移动距离,最终位置距离中心的距离变成原来的几倍 */ -const MAX_MOVE_LENGTH = 1.15; -/** 移动距离波动,在最大移动距离的基础上加上多少倍距离的波动距离 */ -const MOVE_FLUSH = 0.7; -/** 最大旋转角,单位是弧度 */ -const MAX_ROTATE = 0.5; -/** 碎裂动画的速率曲线函数 */ -const FRAG_TIMING = linear(); - -export function init() { - return; - // Mota.rewrite(core.events, 'afterBattle', 'add', (_, enemy, x, y) => { - // // 打怪特效 - // const setting = Mota.require('var', 'mainSetting'); - // if (setting.getValue('fx.frag') && has(x) && has(y)) { - // const frame = core.status.globalAnimateStatus % 2; - // const canvas = document.createElement('canvas'); - // canvas.width = 32; - // canvas.height = 32; - // core.drawIcon(canvas, enemy.id, 0, 0, 32, 32, frame); - // const manager = applyFragWith(canvas); - // const frag = manager.canvas; - // frag.style.imageRendering = 'pixelated'; - // frag.style.width = `${frag.width * core.domStyle.scale}px`; - // frag.style.height = `${frag.height * core.domStyle.scale}px`; - // const left = - // (x * 32 + 16 - frag.width / 2 - core.bigmap.offsetX) * - // core.domStyle.scale; - // const top = - // (y * 32 + 16 - frag.height / 2 - core.bigmap.offsetY) * - // core.domStyle.scale; - // frag.style.left = `${left}px`; - // frag.style.top = `${top}px`; - // frag.style.zIndex = '45'; - // frag.style.position = 'absolute'; - // frag.style.filter = 'sepia(20%)brightness(120%)'; - // core.dom.gameDraw.appendChild(frag); - // manager.onEnd.then(() => { - // frag.remove(); - // }); - // } - // }); -} - -export function applyFragWith( - canvas: HTMLCanvasElement, - length: number = 4, - time: number = 1000, - config: any = {} // todo: 类型标注 -) { - // 先切分图片 - const imgs = splitCanvas(canvas, length); - const cx = canvas.width / 2; - const cy = canvas.height / 2; - - let maxX = 0; - let maxY = 0; - const toMove: FraggingImage[] = imgs.map(v => { - const centerX = v.x + v.canvas.width / 2; - const centerY = v.y + v.canvas.height / 2; - const onX = centerX === cx; - const onY = centerY === cy; - const mml = config.maxMoveLength ?? MAX_MOVE_LENGTH; - const mf = config.moveFlush ?? MOVE_FLUSH; - const rate = mml - 1 + Math.random() ** 3 * mf; - let endX = onY ? 0 : (centerX - cx) * rate; - let endY = onX ? 0 : (centerY - cy) * rate; - const mx = Math.abs(endX + centerX) + Math.abs(v.canvas.width); - const my = Math.abs(endY + centerY) + Math.abs(v.canvas.height); - if (mx > maxX) maxX = mx; - if (my > maxY) maxY = my; - const r = config.maxRotate ?? MAX_ROTATE; - const endRad = Math.random() * r * 2 - r; - - return { - deltaX: endX, - deltaY: endY, - endRad, - x: centerX, - y: centerY, - canvas: v.canvas - }; - }); - - // 再执行动画 - const frag = document.createElement('canvas'); - const ctx = frag.getContext('2d')!; - const ani = new Animation(); - ani.register('rate', 0); - const ft = config.fragTiming ?? FRAG_TIMING; - ani.absolute().time(time).mode(ft).apply('rate', 1); - frag.width = maxX * 2; - frag.height = maxY * 2; - ctx.save(); - const dw = maxX - canvas.width / 2; - const dh = maxY - canvas.height / 2; - - const fragFn = () => { - const rate = ani.value.rate; - const opacity = 1 - rate; - ctx.globalAlpha = opacity; - ctx.clearRect(0, 0, frag.width, frag.height); - toMove.forEach(v => { - ctx.save(); - const nx = v.deltaX * rate; - const ny = v.deltaY * rate; - const rotate = v.endRad * rate; - - ctx.translate(nx + v.x + dw, ny + v.y + dh); - ctx.rotate(rotate); - ctx.drawImage( - v.canvas, - nx - v.canvas.width / 2, - ny - v.canvas.height / 2 - ); - ctx.restore(); - }); - }; - const onEnd = () => {}; - ani.ticker.add(fragFn); - - return makeFragManager(frag, ani, time, onEnd); -} - -function makeFragManager( - canvas: HTMLCanvasElement, - ani: Animation, - time: number, - onEnd: () => void -) { - const promise = sleep(time + 50); - - return { - animation: ani, - onEnd: promise.then(() => { - ani.ticker.destroy(); - onEnd(); - }), - canvas - }; -} - -export function withImage( - image: CanvasImageSource, - sx: number, - sy: number, - sw: number, - sh: number -): SplittedImage { - const canvas = document.createElement('canvas'); - const ctx = canvas.getContext('2d')!; - canvas.width = sw; - canvas.height = sh; - ctx.drawImage(image, sx, sy, sw, sh, 0, 0, sw, sh); - return { canvas, x: sx, y: sy }; -} - -/** - * 切分画布 - * @param canvas 要被切分的画布 - * @param l 切分小块的边长 - */ -function splitCanvas(canvas: HTMLCanvasElement, l: number): SplittedImage[] { - if (canvas.width / l < 2 || canvas.height / l < 2) { - console.warn('切分画布要求切分边长大于等于画布长宽的一半!'); - return []; - } - const w = canvas.width; - const h = canvas.height; - const numX = Math.floor(w / l); - const numY = Math.floor(h / l); - const rw = (w - numX * l) / 2; - const rh = (h - numY * l) / 2; - - const res: SplittedImage[] = []; - - if (rw > 0) { - if (rh > 0) { - res.push( - withImage(canvas, 0, 0, rw, rh), - withImage(canvas, 0, canvas.height - rh, rw, rh), - withImage(canvas, canvas.width - rw, 0, rw, rh), - withImage(canvas, canvas.width - rw, canvas.height - rh, rw, rh) - ); - } - for (const x of [0, canvas.width - rw]) { - for (let ny = 0; ny < numY; ny++) { - res.push(withImage(canvas, x, rh + l * ny, rw, l)); - } - } - } - if (rh > 0) { - for (const y of [0, canvas.height - rh]) { - for (let nx = 0; nx < numX; nx++) { - res.push(withImage(canvas, rw + l * nx, y, l, rh)); - } - } - } - for (let nx = 0; nx < numX; nx++) { - for (let ny = 0; ny < numY; ny++) { - res.push(withImage(canvas, rw + l * nx, rh + l * ny, l, l)); - } - } - - return res; -} diff --git a/packages-user/legacy-plugin-client/src/fx/index.ts b/packages-user/legacy-plugin-client/src/fx/index.ts deleted file mode 100644 index 35f9314..0000000 --- a/packages-user/legacy-plugin-client/src/fx/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './pointShader'; diff --git a/packages-user/legacy-plugin-client/src/fx/pointShader.ts b/packages-user/legacy-plugin-client/src/fx/pointShader.ts deleted file mode 100644 index 9b2178c..0000000 --- a/packages-user/legacy-plugin-client/src/fx/pointShader.ts +++ /dev/null @@ -1,652 +0,0 @@ -import { logger } from '@motajs/common'; -import { UniformType, Shader, ShaderProgram, Transform } from '@motajs/render'; - -export const enum PointEffectType { - /** - * 无特效,在此之后的所有特效将会被截断,因此不要在空特效之后添加特效,也不要手动添加空特效 - */ - None, - /** - * 反色特效,可与任意特效叠加\ - * 参数分别为:\ - * `data1: x, y, radius, decay` | 横坐标,纵坐标,半径,衰减开始半径\ - * `data2: ratio, _, _, _` | 反色强度,空,空,空 - */ - CircleInvert, - /** - * 灰度特效,可与任意特效叠加\ - * 参数分别为:\ - * `data1: x, y, radius, decay` | 横坐标,纵坐标,半径,衰减开始半径\ - * `data2: ratio, _, _, _` | 黑白强度,空,空,空 - */ - CircleGray, - /** - * 对比度特效,可与任意特效叠加\ - * 参数分别为:\ - * `data1: x, y, radius, decay` | 横坐标,纵坐标,半径,衰减开始半径\ - * `data2: ratio, _, _, _` | 对比度强度(0表示不变,-1表示灰色,1表示2倍对比度),空,空,空 - */ - CircleContrast, - /** - * 饱和度特效,可与任意特效叠加\ - * 参数分别为:\ - * `data1: x, y, radius, decay` | 横坐标,纵坐标,半径,衰减开始半径\ - * `data2: ratio, _, _, _` | 对比度强度(0表示不变,-1表示灰色,1表示2倍饱和度),空,空,空 - */ - CircleSaturate, - /** - * 饱和度特效,可与任意特效叠加\ - * 参数分别为:\ - * `data1: x, y, radius, decay` | 横坐标,纵坐标,半径,衰减开始半径\ - * `data2: angle, _, _, _` | 旋转角度(0表示旋转0度,1表示旋转360度),空,空,空 - */ - CircleHue, - /** - * 圆形扭曲特效\ - * 参数分别为:\ - * `data1: x, y, maxRaius, waveRadius` | 中心横坐标,中心纵坐标,波纹最大传播距离,波纹环的半径\ - * `data2: amplitude, attenuation, linear, tangential` \ - *   * `amplitude`: 震动幅度(1表示幅度为1个屏幕,受摄像机缩放影响)\ - *   * `attenuation`: 衰减比例,即衰减速度\ - *   * `linear`: 开始线性衰减时间(为确保波纹最终归于平静,在衰减时,会首先平方反比衰减, - * 然后到此值时转为线性衰减。此参数范围0-1,0.5表示从一半时间处开始线性衰减)\ - *   * `tangential`: 切向扭曲比例(1表示与振动幅度一致)\ - * `data3: startPhase, endPhase, _, _` | 起始位置相位(靠近波纹中心的位置),终止位置相位(远离波纹中心位置),空,空, - * 其中相位一个周期为2 * PI,填 Math.PI * 2 则表示相位从一个周期处开始 - */ - CircleWarp, - /** - * 圆形切向扭曲特效\ - * 参数分别为:\ - * `data1: x, y, minRadius, maxRadius` | 中心横坐标,中心纵坐标,扭曲环内圈半径,扭曲环外圈半径 - * (1表示扭曲了相位角的程度,例如Math.PI的相位,幅度为1,表示旋转整整一圈)\ - * `data2: startPhase, endPhase, _, _` 起始位置相位(靠近波纹中心的位置),终止位置相位(远离波纹中心的位置),空,空 - */ - CircleWarpTangetial, - /** - * 圆形亮度特效,可与任何特效叠加\ - * 参数分别为:\ - * `data1: x, y, radius, decay` | 中心横坐标,中心纵坐标,半径,衰减开始半径\ - * `data2: ratio, _, _, _` | 亮度(0表示不变,1表示2倍亮度),空,空,空 - */ - CircleBrightness -} - -type EffectData = [x0: number, x1: number, x2: number, x3: number]; - -const warpEffect = new Set(); -warpEffect - .add(PointEffectType.CircleWarp) - .add(PointEffectType.CircleWarpTangetial); - -export class PointEffect { - /** 着色器程序 */ - private program?: ShaderProgram; - /** 着色器渲染元素 */ - private shader?: Shader; - - /** 是否开始计时器 */ - private started: boolean = false; - /** 计时器委托id */ - private delegation: number = -1; - /** 特效id计数器,用于修改对应特效的数据 */ - private effectId: number = 0; - /** 特效id到特效索引的映射 */ - private idIndexMap: Map = new Map(); - /** 变换矩阵 */ - private transform?: Transform; - - /** 特效最大数量 */ - private effectCount: number = 0; - /** 特效数据 */ - private dataList: Float32Array = new Float32Array(); - /** 经过矩阵变换操作后的特效数据 */ - private transformed: Float32Array = new Float32Array(); - /** 当前的数据指针,也就是下一次添加特效应该添加至哪 */ - private dataPointer: number = 0; - /** 是否需要更新数据 */ - private needUpdateData: boolean = false; - /** 需要在之后添加的特效 */ - private toAdd: Set = new Set(); - /** 每个特效的开始时间 */ - private startTime: Map = new Map(); - - /** - * 为着色器创建程序 - * @param shader 着色器渲染元素 - * @param itemCount 最大效果数量 - */ - create(shader: Shader, itemCount: number) { - if (this.program || this.shader || this.started) return; - const program = shader.createProgram(ShaderProgram); - program.fs(generateFragment(itemCount)); - program.requestCompile(); - - // 声明变量 - program.defineUniform('u_count', shader.UNIFORM_1i); - program.defineUniform('u_screen', shader.UNIFORM_2f); - program.defineUniformBlock( - 'EffectInfo', - itemCount * 16, - shader.gl.DYNAMIC_DRAW, - 0 - ); - - this.program = program; - this.shader = shader; - this.effectCount = itemCount; - this.dataList = new Float32Array(itemCount * 16); - this.transformed = new Float32Array(itemCount * 16); - this.transform = shader.transform; - - return program; - } - - /** - * 在下一帧更新特效数据 - */ - requestUpdate() { - if (this.dataList[0] !== PointEffectType.None) { - this.needUpdateData = true; - } - if (this.shader) this.shader.update(this.shader); - } - - /** - * 设置本特效实例的变换矩阵,变换矩阵可以在设置特效位置时自动进行变换,配合摄像机视角 - * @param tranform 变换矩阵 - */ - setTransform(tranform: Transform) { - this.transform = tranform; - } - - /** - * 添加一个特效,如果特效还未开始,那么会在其开始时添加特效,注意特效数据必须填四位,不足者补0 - * @param type 特效类型 - * @param startTime 特效开始时间 - * @param time 特效持续时间 - * @param data1 第一组自定义数据,可选 - * @param data2 第二组自定义数据,可选 - * @param data3 第三组自定义数据,可选 - * @returns 这个特效的唯一id,可用于设置特效 - */ - addEffect( - type: PointEffectType, - startTime: number, - time: number, - data1: EffectData = [0, 0, 0, 0], - data2: EffectData = [0, 0, 0, 0], - data3: EffectData = [0, 0, 0, 0] - ) { - if (type === PointEffectType.None) return -1; - const now = Date.now(); - // 如果已经结束,那么什么都不干 - if (now > time + startTime) return -1; - // 填充 0 是因为 std140 布局中,每个数据都会占据 16 的倍数个字节 - // 不过第二项填充一个整数,是为了能够对每个特效进行标识,从而能够对某个特效进行修改 - const id = this.effectId++; - // 第三项为特效的进度 - const data = [type, id, 0, time, ...data1, ...data2, ...data3]; - this.startTime.set(id, startTime); - - if (now >= startTime) { - this.addEffectToList(data); - } else { - // 如果还没开始,那么添加至预备队列 - this.toAdd.add(data); - } - - return id; - } - - /** - * 立刻删除一个特效 - * @param id 要删除的特效的id - */ - deleteEffect(id: number) { - this.removeEffect(this.findIndexById(id)); - } - - /** - * 清除所有特性 - */ - clearEffect() { - this.dataList.fill(0); - this.dataPointer = 0; - this.needUpdateData = true; - } - - /** - * 设置一个特效的数据,注意特效数据必须填四位,不足者补0 - * @param id 特效id - * @param data1 第一组自定义数据,可选 - * @param data2 第二组自定义数据,可选 - * @param data3 第三组自定义数据,可选 - */ - setEffect( - id: number, - data1?: EffectData, - data2?: EffectData, - data3?: EffectData - ) { - const index = this.findIndexById(id); - if (index >= this.dataPointer || index === -1) return; - const list = this.dataList; - if (data1) { - list.set(data1, index * 16 + 4); - } - if (data2) { - list.set(data2, index * 16 + 8); - } - if (data3) { - list.set(data3, index * 16 + 12); - } - this.needUpdateData = true; - } - - private findIndexById(id: number) { - const map = this.idIndexMap.get(id); - if (map !== void 0) return map; - let index = -1; - const list = this.dataList; - for (let i = 0; i < this.effectCount; i++) { - const realIndex = i * 16 + 1; - if (list[realIndex] === id) { - index = i; - break; - } - } - if (index !== -1) { - this.idIndexMap.set(id, index); - } - return index; - } - - private addEffectToList(data: number[]) { - if (this.dataPointer >= this.effectCount) { - logger.warn(1101); - return; - } - const type = data[0]; - const list = this.dataList; - if (warpEffect.has(type)) { - list.copyWithin(16, 0); - list.set(data, 0); - this.dataPointer++; - this.idIndexMap.clear(); - } else { - const id = data[1]; - list.set(data, this.dataPointer * 16); - this.idIndexMap.set(id, this.dataPointer); - this.dataPointer++; - } - - this.needUpdateData = true; - } - - private removeEffect(index: number) { - if (index >= this.effectCount) return; - if (this.dataPointer === 0) return; - const list = this.dataList; - const id = list[index * 16 + 1]; - this.startTime.delete(id); - list.copyWithin(index * 16, index * 16 + 16); - list.fill(0, -16, -1); - this.dataPointer--; - this.needUpdateData = true; - this.idIndexMap.clear(); - } - - /** - * 使用这个特效作为着色器程序 - */ - use() { - if (!this.shader || !this.program) return; - this.shader.useProgram(this.program); - const uCount = - this.program.getUniform('u_count'); - uCount?.set(this.effectCount); - } - - /** - * 开始计时器 - */ - start() { - if (!this.shader || !this.program) return; - this.started = true; - const block = this.program.getUniformBlock('EffectInfo')!; - const screen = - this.program.getUniform('u_screen'); - const { width, height } = this.shader; - const scale = core.domStyle.scale * devicePixelRatio; - screen?.set(width * scale, height * scale); - - // 不知道性能怎么样,只能试试看了 - this.delegation = this.shader.delegateTicker(() => { - if (!this.started) { - this.shader?.removeTicker(this.delegation); - return; - } - const now = Date.now(); - const toDelete = new Set(); - this.toAdd.forEach(v => { - const id = v[1]; - const startTime = this.startTime.get(id); - if (!startTime) return; - const time = v[3]; - if (now > startTime + time) { - toDelete.add(v); - } else if (now >= startTime) { - this.addEffectToList(v); - toDelete.add(v); - } - }); - toDelete.forEach(v => this.toAdd.delete(v)); - - const toRemove: number[] = []; - const list = this.dataList; - - // 倒序以保证删除时不会影响到其他删除 - for (let i = this.effectCount - 1; i >= 0; i--) { - const type = list[i * 16]; - if (type === PointEffectType.None) continue; - const id = list[i * 16 + 1]; - const start = this.startTime.get(id); - if (!start) { - toRemove.push(i); - continue; - } - const time = list[i * 16 + 3]; - const progress = (now - start) / time; - if (progress > 1) toRemove.push(i); - list[i * 16 + 2] = progress; - } - toRemove.forEach(v => { - this.removeEffect(v); - }); - - if (this.needUpdateData) { - const list = this.dataList; - const transformed = this.transformed; - transformed.set(list); - this.transformData(); - block.set(transformed); - this.needUpdateData = false; - } - }); - } - - /** - * 结束计时器 - */ - end() { - if (!this.started || !this.shader || !this.program) return; - this.shader.removeTicker(this.delegation); - this.started = false; - this.dataList.fill(0); - this.dataPointer = 0; - } - - destroy() { - this.end(); - if (this.shader && this.program) { - this.shader.deleteProgram(this.program); - } - } - - private transformData() { - const transform = this.transform; - if (!transform) return; - const count = this.effectCount; - const list = this.dataList; - const transformed = this.transformed; - let ratio = core.domStyle.scale; - if (this.shader?.highResolution) ratio *= devicePixelRatio; - const scale = transform.scaleX * ratio; - const scaleTransform = new Transform(); - scaleTransform.scale(ratio, ratio); - const scaled = scaleTransform.multiply(transform); - const fixedHeight = core._PY_ * ratio; - - const transformXY = (index: number) => { - const x = list[index + 4]; - const y = list[index + 5]; - const [tx, ty] = Transform.transformed(scaled, x, y); - transformed[index + 4] = tx; - transformed[index + 5] = fixedHeight - ty; - }; - - for (let i = 0; i < count; i++) { - const index = i * 16; - const type = list[index]; - - switch (type) { - case PointEffectType.CircleGray: - case PointEffectType.CircleInvert: - case PointEffectType.CircleContrast: - case PointEffectType.CircleSaturate: - case PointEffectType.CircleHue: - case PointEffectType.CircleBrightness: - case PointEffectType.CircleWarpTangetial: { - transformXY(index); - transformed[index + 6] *= scale; - transformed[index + 7] *= scale; - break; - } - case PointEffectType.CircleWarp: { - transformXY(index); - transformed[index + 6] *= scale; - transformed[index + 7] *= scale; - transformed[index + 8] *= scale; - break; - } - case PointEffectType.None: { - return; - } - } - } - } -} - -function generateFragment(itemCount: number) { - return /* glsl */ ` -uniform int u_count; -uniform vec2 u_screen; // 画布长宽 - -out vec4 outColor; - -struct Effect { - vec2 type; // 效果类型 - vec2 time; // 开始时间,持续时长 - vec4 info1; // 第一组信息,表示自定义参数 - vec4 info2; // 第二组信息,表示自定义参数 - vec4 info3; // 第三组信息,表示自定义参数 -}; - -layout (std140) uniform EffectInfo { - Effect effects[${itemCount}]; -}; - -// Helper function: RGB to HSL conversion -vec3 rgb2hsl(vec3 color) { - float maxC = max(max(color.r, color.g), color.b); - float minC = min(min(color.r, color.g), color.b); - float delta = maxC - minC; - - float h = 0.0; - float s = 0.0; - float l = (maxC + minC) * 0.5; - - if (delta != 0.0) { - s = (l < 0.5) ? delta / (maxC + minC) : delta / (2.0 - maxC - minC); - - if (maxC == color.r) { - h = (color.g - color.b) / delta + (color.g < color.b ? 6.0 : 0.0); - } else if (maxC == color.g) { - h = (color.b - color.r) / delta + 2.0; - } else { - h = (color.r - color.g) / delta + 4.0; - } - h /= 6.0; - } - - return vec3(h, s, l); -} - -// Helper function: Hue to RGB conversion -float hue2rgb(float p, float q, float t) { - if (t < 0.0) t += 1.0; - if (t > 1.0) t -= 1.0; - if (t < 1.0 / 6.0) return p + (q - p) * 6.0 * t; - if (t < 1.0 / 2.0) return q; - if (t < 2.0 / 3.0) return p + (q - p) * (2.0 / 3.0 - t) * 6.0; - return p; -} - -// Helper function: HSL to RGB conversion -vec3 hsl2rgb(vec3 hsl) { - float h = hsl.x; - float s = hsl.y; - float l = hsl.z; - - float r, g, b; - - if (s == 0.0) { - r = g = b = l; // Achromatic (gray) - } else { - float q = (l < 0.5) ? (l * (1.0 + s)) : (l + s - l * s); - float p = 2.0 * l - q; - - r = hue2rgb(p, q, h + 1.0 / 3.0); - g = hue2rgb(p, q, h); - b = hue2rgb(p, q, h - 1.0 / 3.0); - } - - return vec3(r, g, b); -} - -// x: 横坐标 y: 纵坐标 z: 半径 w: 衰减开始半径 -// 计算圆形效果的衰减程度 -float calCircleDecay(vec4 data) { - float dis = distance(data.xy, gl_FragCoord.xy); - if (dis <= data.w) return 1.0; - if (dis >= data.z) return 0.0; - if (data.z <= data.w) return 1.0; - return 1.0 - (dis - data.w) / (data.z - data.w); -} - -// data1: x, y, maxRadius, waveRadius -// data2: amplitude, attenuation, linear, _ -// 计算波纹扭曲的衰减程度,从 x = 1 的平方反比函数开始,衰减至 x = 1 + attenuation,然后线性衰减 -float calWarpDecay(float progress, vec4 data1, vec4 data2) { - if (progress >= data2.z) { - float end = 1.0 / pow(1.0 + data2.y, 2.0); - return end - end * (progress - data2.z) / (1.0 - data2.z); - } else { - return 1.0 / pow(1.0 + (progress / data2.z) * data2.y, 2.0); - } -} - -void main() { - vec2 coord = v_texCoord; - vec4 color = texture(u_sampler, v_texCoord); - for (int i = 0; i < u_count; i++) { - Effect effect = effects[i]; - int effectType = int(effect.type.x); - vec2 timeInfo = effect.time; - vec4 data1 = effect.info1; - vec4 data2 = effect.info2; - vec4 data3 = effect.info3; - if (effectType == ${PointEffectType.None}) break; - float progress = timeInfo.x; - - // 下面开始实施对应的着色器特效 - - // 反色,data1: x y radius decay;data2: ratio _ _ _ - if (effectType == ${PointEffectType.CircleInvert}) { - float ratio = data2.x * calCircleDecay(data1); - if (ratio > 0.0) { - vec3 delta = (1.0 - 2.0 * color.rgb) * ratio; - color.rgb = clamp(color.rgb + delta, 0.0, 1.0); - } - } - // 灰度,data1: x y radius decay;data2: ratio _ _ _ - else if (effectType == ${PointEffectType.CircleGray}) { - float ratio = data2.x * calCircleDecay(data1); - if (ratio > 0.0) { - float gray = dot(color.rgb, vec3(0.2126, 0.7125, 0.0722)); - vec3 grayed = color.rgb - gray; - color = vec4(color.rgb - grayed * ratio, 1.0); - } - } - // 亮度,data1: x y radius decay;data2: ratio _ _ _ - else if (effectType == ${PointEffectType.CircleBrightness}) { - float ratio = data2.x * calCircleDecay(data1) + 1.0; - if (ratio > 0.0) { - color.rgb *= ratio; - } - } - // 对比度,data1: x y radius decay;data2: ratio _ _ _ - else if (effectType == ${PointEffectType.CircleContrast}) { - float ratio = data2.x * calCircleDecay(data1) + 1.0; - if (ratio > 0.0) { - color.rgb = mix(vec3(0.5), color.rgb, ratio); - } - } - // 饱和度,data1: x y radius decay;data2: ratio _ _ _ - else if (effectType == ${PointEffectType.CircleSaturate}) { - float ratio = data2.x * calCircleDecay(data1) + 1.0; - if (ratio > 0.0) { - float gray = dot(color.rgb, vec3(0.299, 0.587, 0.114)); - color.rgb = mix(vec3(gray), color.rgb, ratio); - } - } - // 色相旋转,data1: x y radius decay;data2: angle _ _ _ - else if (effectType == ${PointEffectType.CircleHue}) { - float ratio = data2.x * calCircleDecay(data1); - if (ratio > 0.0) { - vec3 hsl = rgb2hsl(color.rgb); - hsl.x = mod(hsl.x + data2.x * ratio, 1.0); - color.rgb = hsl2rgb(hsl); - } - } - // 扭曲,data1: x, y, maxRadius, waveRadius; data2: amplitude, attenuation, linear, _ - // data3: startPhase, endPhase, _, _ - else if (effectType == ${PointEffectType.CircleWarp}) { - float dis = distance(data1.xy, gl_FragCoord.xy); - // 当前半径 - float radius = progress * data1.z; - if (dis > radius + data1.w || dis < radius - data1.w) continue; - float ratio = data2.x * calWarpDecay(progress, data1, data2); - float halfRadius = data1.w / 2.0; - if (ratio > 0.0 && abs(dis - radius) <= halfRadius) { - // 计算当前相位 - float x = ((dis - radius) / data1.w + 0.5) * (data3.y - data3.x) + data3.x; - float wave = sin(x) * ratio; - float xRatio = (gl_FragCoord.x - data1.x) / dis; - float yRatio = (gl_FragCoord.y - data1.y) / dis; - coord.x += wave * xRatio + wave * yRatio * data2.w; - coord.y += wave * yRatio + wave * xRatio * data2.w; - color = texture(u_sampler, coord); - } - } - // 切向扭曲,data1: x, y, minRadius, maxRadius; data2: startPhase, endPhase, _, _ - else if (effectType == ${PointEffectType.CircleWarpTangetial}) { - float dis = distance(data1.xy, gl_FragCoord.xy); - float ratio = (dis - data1.z) / (data1.w - data1.z); - if (ratio <= 1.0 && ratio > 0.0) { - float phase = ratio * (data2.y - data2.x) + data2.x; - float waveSin = sin(phase); - float waveCos = cos(phase); - // 相对坐标 - vec2 relCoord = gl_FragCoord.xy - data1.xy; - coord.x = (data1.x + relCoord.x * waveCos - relCoord.y * waveSin) / u_screen.x; - coord.y = 1.0 - (data1.y + relCoord.x * waveSin + relCoord.y * waveCos) / u_screen.y; - color = texture(u_sampler, coord); - } - } - } - outColor = color; -} -`; -} diff --git a/packages-user/legacy-plugin-client/src/index.ts b/packages-user/legacy-plugin-client/src/index.ts index d77935a..9e299e2 100644 --- a/packages-user/legacy-plugin-client/src/index.ts +++ b/packages-user/legacy-plugin-client/src/index.ts @@ -2,6 +2,4 @@ if (import.meta.env.DEV) { import('./dev/hotReload'); } -export * from './boss'; -export * from './chase'; -export * from './fx'; +export {}; diff --git a/packages-user/legacy-plugin-data/src/chase.ts b/packages-user/legacy-plugin-data/src/chase.ts deleted file mode 100644 index 36cf8c3..0000000 --- a/packages-user/legacy-plugin-data/src/chase.ts +++ /dev/null @@ -1,19 +0,0 @@ -export function chaseInit1() { - const ids: FloorIds[] = ['MT13', 'MT14', 'MT15']; - const toRemove: [number, number, FloorIds][] = []; - ids.forEach(v => { - core.status.maps[v].cannotMoveDirectly = true; - core.extractBlocks(v); - core.status.maps[v].blocks.forEach(vv => { - if ( - ['animates', 'items'].includes(vv.event.cls) && - !vv.event.id.endsWith('Portal') - ) { - toRemove.push([vv.x, vv.y, v]); - } - }); - }); - toRemove.forEach(v => { - core.removeBlock(...v); - }); -} diff --git a/packages-user/legacy-plugin-data/src/enemy/checkblock.ts b/packages-user/legacy-plugin-data/src/enemy/checkblock.ts index 777bc33..1b6831c 100644 --- a/packages-user/legacy-plugin-data/src/enemy/checkblock.ts +++ b/packages-user/legacy-plugin-data/src/enemy/checkblock.ts @@ -1,22 +1,13 @@ -import { has, ofDir } from '@user/data-utils'; - export function createCheckBlock() { // 伤害弹出 // 复写阻激夹域检测 - control.prototype.checkBlock = function (forceMockery: boolean = false) { + control.prototype.checkBlock = function () { const x = core.getHeroLoc('x'), y = core.getHeroLoc('y'), loc = x + ',' + y; const info = core.status.thisMap.enemy.mapDamage[loc]; const damage = info?.damage; if (damage) { - if (!main.replayChecking) { - // addPop( - // (x - core.bigmap.offsetX / 32) * 32 + 12, - // (y - core.bigmap.offsetY / 32) * 32 + 20, - // (-damage).toString() - // ); - } core.status.hero.hp -= damage; const type = [...info.type]; const text = type.join(',') || '伤害'; @@ -33,120 +24,5 @@ export function createCheckBlock() { core.updateStatusBar(); } } - checkMockery(loc, forceMockery); - checkHunt(loc); }; } - -function checkMockery(loc: string, force: boolean = false) { - if (core.status.lockControl && !force) return; - const mockery = core.status.thisMap.enemy.mapDamage[loc]?.mockery; - if (mockery) { - mockery.sort((a, b) => (a[0] === b[0] ? a[1] - b[1] : a[0] - b[0])); - const action = []; - const [tx, ty] = mockery[0]; - let { x, y } = core.status.hero.loc; - const dir = x > tx ? 'left' : x < tx ? 'right' : y > ty ? 'up' : 'down'; - const { x: dx, y: dy } = core.utils.scan[dir]; - - action.push({ type: 'forbidSave', forbid: true }); - action.push({ type: 'changePos', direction: dir }); - const blocks = core.getMapBlocksObj(); - while (true) { - x += dx; - y += dy; - const block = blocks[`${x},${y}`]; - if (block) { - if ( - [ - 'animates', - 'autotile', - 'tileset', - 'npcs', - 'npc48', - 'terrains' - ].includes(block.event.cls) && - block.event.noPass - ) { - action.push( - { - type: 'hide', - loc: [[x, y]], - remove: true, - time: 0 - }, - { - type: 'function', - function: `function() { core.removeGlobalAnimate(${x}, ${y}) }` - }, - { - type: 'animate', - name: 'hand', - loc: [x, y], - async: true - } - ); - } - if (block.event.cls.startsWith('enemy')) { - action.push({ type: 'moveAction' }); - } - } - action.push({ type: 'moveAction' }); - if (x === tx && y === ty) break; - } - action.push({ - type: 'function', - function: `function() { core.checkBlock(true); }` - }); - action.push({ type: 'stopAsync' }); - action.push({ type: 'forbidSave' }); - core.insertAction(action); - } -} - -function checkHunt(loc: string) { - const hunt = core.status.thisMap.enemy.mapDamage[loc]?.hunt; - if (!hunt) return; - const { x: hx, y: hy } = core.status.hero.loc; - - const action: any = []; - hunt.sort((a, b) => { - return a[0] === b[0] ? a[1] - b[1] : a[0] - b[0]; - }); - - for (const [x, y, dir] of hunt) { - const [tx, ty] = ofDir(x, y, dir); - if (core.getBlock(tx, ty)) continue; - action.push( - { - type: 'move', - loc: [x, y], - time: 100, - keep: true, - steps: [`${dir}:1`] - }, - { - type: 'update' - } - ); - - if (has(hy) && x === hx) { - if (Math.abs(y - hy) <= 2) { - action.push({ - type: 'battle', - loc: [tx, ty] - }); - } - } - if (has(hx) && y === hy) { - if (Math.abs(x - hx) <= 2) { - action.push({ - type: 'battle', - loc: [tx, ty] - }); - } - } - } - - core.insertAction(action); -} diff --git a/packages-user/legacy-plugin-data/src/enemy/index.ts b/packages-user/legacy-plugin-data/src/enemy/index.ts index d770bdc..c3a151a 100644 --- a/packages-user/legacy-plugin-data/src/enemy/index.ts +++ b/packages-user/legacy-plugin-data/src/enemy/index.ts @@ -5,4 +5,3 @@ export function createEnemy() { } export * from './checkblock'; -export * from './remainEnemy'; diff --git a/packages-user/legacy-plugin-data/src/enemy/remainEnemy.ts b/packages-user/legacy-plugin-data/src/enemy/remainEnemy.ts deleted file mode 100644 index d07a2b5..0000000 --- a/packages-user/legacy-plugin-data/src/enemy/remainEnemy.ts +++ /dev/null @@ -1,54 +0,0 @@ -// todo: 优化,直接调用 floor.enemy.list 进行计算 - -/** - * 检查漏怪 - */ -export function checkRemainEnemy(floorIds: FloorIds[]) { - const enemy: Partial> = - {}; - floorIds.forEach(v => { - core.extractBlocks(v); - const blocks = core.status.maps[v].blocks; - blocks.forEach(block => { - if (!block.event.cls.startsWith('enemy') || block.disable) return; - const id: EnemyIds = block.event.id as EnemyIds; - enemy[v] ??= []; - const info = enemy[v]!; - info.push({ loc: [block.x, block.y], id }); - }); - }); - return enemy; -} - -/** - * 获取剩余怪物字符串 - */ -export function getRemainEnemyString(floorIds: FloorIds[]) { - const enemy = checkRemainEnemy(floorIds); - const str = []; - let now = []; - for (const floor in enemy) { - const all: { loc: LocArr; id: EnemyIds }[] = enemy[floor as FloorIds]!; - const remain: Partial> = {}; - all.forEach(v => { - const id = v.id; - remain[id] ??= 0; - remain[id]!++; - }); - const title = core.status.maps[floor as FloorIds].title; - for (const id in remain) { - const name = core.material.enemys[id as EnemyIds].name; - now.push(`${title}(${floor}): ${name} * ${remain[id as EnemyIds]}`); - if (now.length === 10) { - str.push(now.join('\n')); - now = []; - } - } - } - if (now.length > 0) { - str.push(now.join('\n')); - str[0] = `当前剩余怪物:\n${str[0]}`; - } - - return str; -} diff --git a/packages-user/legacy-plugin-data/src/index.ts b/packages-user/legacy-plugin-data/src/index.ts index 8869b9d..278ba30 100644 --- a/packages-user/legacy-plugin-data/src/index.ts +++ b/packages-user/legacy-plugin-data/src/index.ts @@ -18,11 +18,9 @@ export function createLegacy() { } export * from './enemy'; -export * from './chase'; export * from './fallback'; export * from './fiveLayer'; export * from './removeMap'; export * from './replay'; export * from './shop'; -export * from './skill'; export * from './ui'; diff --git a/packages-user/legacy-plugin-data/src/replay.ts b/packages-user/legacy-plugin-data/src/replay.ts index 9a61d85..b049da4 100644 --- a/packages-user/legacy-plugin-data/src/replay.ts +++ b/packages-user/legacy-plugin-data/src/replay.ts @@ -1,9 +1,5 @@ -import { HeroSkill, getSkillFromIndex, upgradeSkill } from '@user/data-state'; import { canOpenShop } from './shop'; import { hook } from '@user/data-base'; -import { jumpSkill } from './skill'; - -const replayableSettings = ['autoSkill']; let cliping = false; let startIndex = 0; @@ -32,51 +28,6 @@ export function initReplay() { }); } - // 注册修改设置的录像操作 - const settingNameMap: Record = { - autoSkill: '自动切换技能' - }; - core.registerReplayAction('settings', name => { - if (!name.startsWith('set:')) return false; - const [, setting, value] = name.split(':'); - const v = eval(value); - if (typeof v !== 'boolean') return false; - if (!replayableSettings.includes(setting)) return false; - switch (setting) { - case 'autoSkill': - HeroSkill.setAutoSkill(v); - break; - } - const settingName = settingNameMap[setting]; - core.status.route.push(name); - if (settingName) { - tipAndWait(`切换设置:${settingName}`, 1000).then(() => { - core.replay(); - }); - } else { - core.replay(); - } - return true; - }); - - core.registerReplayAction('upgradeSkill', name => { - if (!name.startsWith('skill:')) return false; - const skill = parseInt(name.slice(6)); - const success = upgradeSkill(skill); - const s = getSkillFromIndex(skill); - const skillName = s?.title; - core.status.route.push(name); - if (!success) { - const { tip } = Mota.require('@motajs/legacy-ui'); - tip('error', `升级技能:${skillName}失败`); - return false; - } - tipAndWait(`升级技能:${skillName}`, 1000).then(() => { - core.replay(); - }); - return true; - }); - // 商店 let shopOpened = false; let openedShopId = ''; @@ -143,89 +94,6 @@ export function initReplay() { return true; }); - const skillNameMap: Record = { - Blade: '断灭之刃', - Shield: '铸剑为盾' - }; - function skillAction(skill: string) { - let toEmit = skill; - - // 兼容性处理 - if (skill === '1') { - toEmit = 'Blade'; - } else if (skill === '2') { - toEmit = 'Jump'; - } else if (skill === '3') { - toEmit = 'Shield'; - } - - if (toEmit === 'Jump') { - if ( - !flags.onChase && - !core.status.floorId.startsWith('tower') && - HeroSkill.learnedSkill(HeroSkill.Jump) - ) { - const success = jumpSkill(); - core.status.route.push(`useSkill:${toEmit}`); - if (!success) core.replay(); - return true; - } else { - if (core.hasItem('pickaxe')) { - core.useItem('pickaxe'); - } - } - } else { - if (HeroSkill.getAutoSkill()) { - core.replay(); - core.updateStatusBar(); - return true; - } - let num = HeroSkill.Skill.None; - switch (toEmit) { - case 'Blade': - num = HeroSkill.Blade; - break; - case 'Shield': - num = HeroSkill.Shield; - break; - } - HeroSkill.toggleSkill(num); - } - core.updateStatusBar(); - const name = skillNameMap[toEmit]; - core.status.route.push(`useSkill:${toEmit}`); - if (name) { - tipAndWait(`切换技能:${name}`, 1000).then(() => { - core.replay(); - }); - } else { - core.replay(); - } - return true; - } - - core.registerReplayAction('useSkill', name => { - if (!name.startsWith('useSkill:')) return false; - const [, skill] = name.split(':'); - return skillAction(skill); - }); - - // 兼容旧版 - core.registerReplayAction('key', name => { - if (!name.startsWith('key:')) return false; - const key = parseInt(name.slice(4)); - - if (key === 49) { - return skillAction('1'); - } else if (key === 50) { - return skillAction('2'); - } else if (key === 51) { - return skillAction('3'); - } - - return false; - }); - core.registerReplayAction('fly', action => { if (!action.startsWith('fly:')) return false; const floorId = action.slice(4) as FloorIds; diff --git a/packages-user/legacy-plugin-data/src/skill.ts b/packages-user/legacy-plugin-data/src/skill.ts deleted file mode 100644 index c096eb6..0000000 --- a/packages-user/legacy-plugin-data/src/skill.ts +++ /dev/null @@ -1,232 +0,0 @@ -// @ts-nocheck - -import { HeroSkill } from '@user/data-state'; - -// 所有的主动技能效果 -var ignoreInJump = { - event: ['X20007', 'X20001', 'X20006', 'X20014', 'X20010', 'X20007'], - bg: [ - 'X20037', - 'X20038', - 'X20039', - 'X20045', - 'X20047', - 'X20053', - 'X20054', - 'X20055', - 'X20067', - 'X20068', - 'X20075', - 'X20076' - ] -}; - -export const jumpIgnoreFloor: Set = new Set([ - 'MT31', - 'snowTown', - 'MT36', - 'MT37', - 'MT38', - 'MT39', - 'MT40', - 'MT42', - 'MT43', - 'MT44', - 'MT45', - 'MT46', - 'MT47', - 'MT48', - 'MT49', - 'MT50', - 'MT57', - 'MT59', - 'MT60', - 'MT61', - 'MT71', - 'MT72', - 'MT73', - 'MT74', - 'MT75', - 'MT84', - 'MT93' -]); -// 跳跃 -export function jumpSkill(callback?: () => void) { - if (core.status.floorId.startsWith('tower')) { - callback?.(); - core.drawTip('当前无法使用该技能'); - return false; - } - if (jumpIgnoreFloor.has(core.status.floorId) || flags.onChase) { - callback?.(); - core.drawTip('当前楼层无法使用该技能'); - return false; - } - if (!HeroSkill.learnedSkill(HeroSkill.Jump)) { - callback?.(); - return false; - } - if (!flags['jump_' + core.status.floorId]) - flags['jump_' + core.status.floorId] = 0; - if (core.status.floorId == 'MT14') { - const loc = core.status.hero.loc; - if (loc.x === 77 && loc.y === 5) { - flags.MT14Jump = true; - } - if (flags.jump_MT14 === 2 && !flags.MT14Jump) { - callback?.(); - core.drawTip('该地图还有一个必跳的地方,你还没有跳'); - return false; - } - } - if (flags['jump_' + core.status.floorId] >= 3) { - callback?.(); - core.drawTip('当前地图使用次数已用完'); - return false; - } - var direction = core.status.hero.loc.direction; - var loc = core.status.hero.loc; - var checkLoc = {}; - switch (direction) { - case 'up': - checkLoc.x = loc.x; - checkLoc.y = loc.y - 1; - break; - case 'right': - checkLoc.x = loc.x + 1; - checkLoc.y = loc.y; - break; - case 'down': - checkLoc.x = loc.x; - checkLoc.y = loc.y + 1; - break; - case 'left': - checkLoc.x = loc.x - 1; - checkLoc.y = loc.y; - break; - } - // 前方是否可通行 或 是怪物 - var cls = core.getBlockCls(checkLoc.x, checkLoc.y); - var noPass = core.noPass(checkLoc.x, checkLoc.y); - var id = core.getBlockId(checkLoc.x, checkLoc.y) || ''; - var bgId = - core.getBlockByNumber(core.getBgNumber(checkLoc.x, checkLoc.y)).event - .id || ''; - // 可以通行 - if ( - !noPass || - cls == 'items' || - (id.startsWith('X') && !ignoreInJump.event.includes(id)) || - (bgId.startsWith('X') && !ignoreInJump.bg.includes(bgId)) - ) { - callback?.(); - core.drawTip('当前无法使用技能'); - return false; - } - // debugger; - // 不是怪物且不可以通行 - if (noPass && !(cls == 'enemys' || cls == 'enemy48')) { - var toLoc = checkNoPass(direction, checkLoc.x, checkLoc.y, true); - if (!toLoc) { - callback?.(); - return false; - } - core.autosave(); - if (flags.chapter <= 1) core.status.hero.hp -= 200 * flags.hard; - core.updateStatusBar(); - flags['jump_' + core.status.floorId]++; - if (core.status.hero.hp <= 0) { - core.status.hero.hp = 0; - core.updateStatusBar(); - core.events.lose('你跳死了'); - callback?.(); - return false; - } - core.playSound('015-Jump01.opus'); - core.insertAction( - [{ type: 'jumpHero', loc: [toLoc.x, toLoc.y], time: 500 }], - void 0, - void 0, - callback - ); - return true; - } - // 是怪物 - if (cls == 'enemys' || cls == 'enemy48') { - var firstNoPass = checkNoPass(direction, checkLoc.x, checkLoc.y, false); - if (!firstNoPass) { - callback?.(); - return false; - } - core.autosave(); - if (flags.chapter <= 1) core.status.hero.hp -= 200 * flags.hard; - core.updateStatusBar(); - flags['jump_' + core.status.floorId]++; - if (core.status.hero.hp <= 0) { - core.status.hero.hp = 0; - core.updateStatusBar(); - core.events.lose('你跳死了'); - callback?.(); - return false; - } - core.playSound('015-Jump01.opus'); - core.insertAction( - [ - { - type: 'jump', - from: [checkLoc.x, checkLoc.y], - to: [firstNoPass.x, firstNoPass.y], - time: 500, - keep: true - } - ], - void 0, - void 0, - callback - ); - return true; - } - return false; - - // 检查一条线上的不可通过 - function checkNoPass(direction, x, y, startNo) { - if (!startNo) startNo = false; - switch (direction) { - case 'up': - y--; - break; - case 'right': - x++; - break; - case 'down': - y++; - break; - case 'left': - x--; - break; - } - if ( - x > core.status.thisMap.width - 1 || - y > core.status.thisMap.height - 1 || - x < 0 || - y < 0 - ) { - return core.drawTip('当前无法使用技能'); - } - var id = core.getBlockId(x, y) || ''; - if (core.getBgNumber(x, y)) - var bgId = - core.getBlockByNumber(core.getBgNumber(x, y)).event.id || ''; - else var bgId = ''; - if ( - core.noPass(x, y) || - core.getBlockCls(x, y) == 'items' || - (id.startsWith('X') && !ignoreInJump.event.includes(id)) || - (bgId.startsWith('X') && !ignoreInJump.bg.includes(bgId)) || - core.getBlockCls(x, y) == 'animates' - ) - return checkNoPass(direction, x, y, true); - if (!startNo) return checkNoPass(direction, x, y, false); - return { x: x, y: y }; - } -} diff --git a/packages-user/legacy-plugin-data/src/ui.ts b/packages-user/legacy-plugin-data/src/ui.ts index 80eb6b1..ee5c628 100644 --- a/packages-user/legacy-plugin-data/src/ui.ts +++ b/packages-user/legacy-plugin-data/src/ui.ts @@ -31,7 +31,7 @@ export function initUI() { }; control.prototype.showStatusBar = function () { - if (main.mode == 'editor') return; + if (main.mode === 'editor') return; core.removeFlag('hideStatusBar'); if (mainSetting.getValue('ui.tips')) { if (!fixedUi.hasName('tips')) { @@ -42,7 +42,7 @@ export function initUI() { }; control.prototype.hideStatusBar = function (showToolbox) { - if (main.mode == 'editor') return; + if (main.mode === 'editor') return; // 如果原本就是隐藏的,则先显示 if (!core.domStyle.showStatusBar) this.showStatusBar(); diff --git a/packages/legacy-ui/src/data/settings.json b/packages/legacy-ui/src/data/settings.json index 98ea5e2..0320032 100644 --- a/packages/legacy-ui/src/data/settings.json +++ b/packages/legacy-ui/src/data/settings.json @@ -4,7 +4,6 @@ "是否全屏进行游戏,全屏后按ESC退出全屏,开启后将不能通过按ESC开启系统设置菜单,", "请按下方的按钮打开。进入或退出全屏后请存读档一下,以解决一部分绘制问题。" ], - "halo": ["开启后,会在地图上显示范围光环。"], "itemDetail": ["是否在地图上显示宝石血瓶装备等增加的属性值"], "transition": [ "是否展示当一个ui界面,如怪物手册等的打开与关闭时的动画。当此项开启时,", @@ -16,10 +15,6 @@ "criticalGem": ["临界是否显示为在当前地图要吃的宝石数"] }, "action": { - "autoSkill": [ - "开启后,打怪物的时候会自动选择伤害最低的技能。同时显伤也会显示此状态下的伤害,", - "临界也会考虑技能在内" - ], "hotkey": ["设置游戏中会用到的一些快捷键"] }, "utils": { diff --git a/packages/legacy-ui/src/preset/ui.ts b/packages/legacy-ui/src/preset/ui.ts index 978d326..a803482 100644 --- a/packages/legacy-ui/src/preset/ui.ts +++ b/packages/legacy-ui/src/preset/ui.ts @@ -66,8 +66,6 @@ mainSetting.on('valueChange', (key, n, o) => { if (root === 'screen') { handleScreenSetting(setting, n, o); - } else if (root === 'action') { - handleActionSetting(setting, n, o); } else if (root === 'audio') { handleAudioSetting(setting, n, o); } else if (root === 'ui') { @@ -107,19 +105,6 @@ function handleScreenSetting( } } -function handleActionSetting( - key: string, - n: T, - _o: T -) { - if (key === 'autoSkill') { - // 自动切换技能 - const HeroSkill = Mota.require('@user/data-state').HeroSkill; - HeroSkill.setAutoSkill(n as boolean); - core.status.route.push(`set:autoSkill:${n}`); - } -} - function handleAudioSetting( key: string, n: T, @@ -163,7 +148,6 @@ mainSetting .register('fullscreen', '全屏游戏', false, COM.Boolean) .register('scale', '画面缩放', 100, COM.Number, [50, 500, 25]) .setDisplayFunc('scale', value => `${value}%`) - .register('halo', '光环显示', true, COM.Boolean) .register('itemDetail', '宝石血瓶显伤', true, COM.Boolean) .register('transition', '界面动画', false, COM.Boolean) .register('fontSize', '字体大小', 16, COM.Number, [2, 48, 1]) @@ -176,7 +160,6 @@ mainSetting 'action', '操作设置', new MotaSetting() - .register('autoSkill', '自动切换技能', true, COM.Boolean) .register('hotkey', '快捷键', false, COM.HotkeySetting) .setDisplayFunc('hotkey', () => '') ) @@ -194,23 +177,10 @@ mainSetting '系统设置', new MotaSetting().register('autoScale', '自动放缩', true, COM.Boolean) ) - .register( - 'fx', - '特效设置', - new MotaSetting().register( - 'portalParticle', - '传送门特效', - true, - COM.Boolean - ) - ) .register( 'ui', 'ui设置', new MotaSetting() - .register('mapScale', '小地图缩放', 100, COM.Number, [50, 1000, 50]) - .setDisplayFunc('mapScale', value => `${value}%`) - .register('mapLazy', '小地图懒更新', false, COM.Boolean) .register( 'bookScale', '怪物手册缩放', @@ -219,9 +189,6 @@ mainSetting [10, 500, 10] ) .setDisplayFunc('bookScale', value => `${value}%`) - .register('danmaku', '显示弹幕', true, COM.Boolean) - .register('danmakuSpeed', '弹幕速度', 60, COM.Number, [10, 1000, 5]) - .register('tips', '小贴士', true, COM.Boolean) ); interface SettingTextData { @@ -233,25 +200,13 @@ mainSetting .setDescription('audio.bgmVolume', `背景音乐的音量`) .setDescription('audio.soundEnabled', `是否开启音效`) .setDescription('audio.soundVolume', `音效的音量`) - .setDescription('ui.mapScale', `楼传小地图的缩放,百分比格式`) - .setDescription( - 'ui.mapLazy', - `是否启用小地图懒更新模式,此模式下剩余怪物数量不会实时更新而变成切换地图后更新,打开小地图时出现卡顿可以尝试开启此设置` - ) .setDescription( 'ui.bookScale', `怪物手册界面中每个怪物框体的高度缩放,最小值限定为 20% 屏幕高度` ) - .setDescription('ui.danmaku', '是否显示弹幕') - .setDescription('ui.danmakuSpeed', '弹幕速度,刷新或开关弹幕显示后起效') - .setDescription('ui.tips', `是否在游戏画面右上角常亮显示小贴士`) .setDescription( 'screen.blur', '打开任意ui界面时是否有背景虚化效果,移动端打开后可能会有掉帧或者发热现象。关闭ui后生效' - ) - .setDescription( - 'fx.portalParticle', - '是否启用苍蓝之殿的传送门粒子特效,启用后可能对性能及设备发热有所影响' ); function setFontSize() { @@ -286,7 +241,6 @@ export function createSetting() { mainSetting.reset({ 'screen.fullscreen': !!document.fullscreenElement, 'screen.scale': storage.getValue('screen.scale', 100), - 'screen.halo': !!storage.getValue('screen.showHalo', true), 'screen.itemDetail': !!storage.getValue('screen.itemDetail', true), 'screen.transition': !!storage.getValue('screen.transition', false), 'screen.fontSize': storage.getValue( @@ -305,22 +259,10 @@ export function createSetting() { ), 'audio.soundVolume': storage.getValue('audio.soundVolume', 80), 'utils.autoScale': !!storage.getValue('utils.autoScale', true), - 'fx.portalParticle': !!storage.getValue('fx.portalParticle', true), - 'ui.mapScale': storage.getValue( - 'ui.mapScale', - isMobile ? 300 : Math.floor(window.innerWidth / 600) * 50 - ), - 'ui.mapLazy': storage.getValue('ui.mapLazy', false), 'ui.bookScale': storage.getValue( 'ui.bookScale', isMobile ? 100 : 80 - ), - 'ui.danmaku': storage.getValue('ui.danmaku', true), - 'ui.danmakuSpeed': storage.getValue( - 'ui.danmakuSpeed', - Math.floor(window.innerWidth / 30) * 5 - ), - 'ui.tips': storage.getValue('ui.tips', true) + ) }); }); } diff --git a/packages/legacy-ui/src/tools/fly.ts b/packages/legacy-ui/src/tools/fly.ts index e896806..a28a961 100644 --- a/packages/legacy-ui/src/tools/fly.ts +++ b/packages/legacy-ui/src/tools/fly.ts @@ -179,6 +179,7 @@ export function getMapData( const floor = core.floors[now]; const change = floor.changeFloor; for (const [loc, ev] of Object.entries(change)) { + if (!ev) continue; const target = ev.floorId as FloorIds; if (target.startsWith(':')) continue; const [x, y] = loc.split(',').map(v => parseInt(v)); diff --git a/public/libs/actions.js b/public/libs/actions.js index e0056ed..ad8fa08 100644 --- a/public/libs/actions.js +++ b/public/libs/actions.js @@ -583,13 +583,6 @@ actions.prototype._sys_ondown = function (x, y, px, py) { y: Math.floor((py + core.bigmap.offsetY) / 32) }; - const loopMaps = Mota.require('@user/data-state').MiscData.loopMaps; - if (loopMaps.has(core.status.floorId)) { - const floor = core.status.thisMap; - if (pos.x < 0) pos.x += floor.width; - if (pos.x >= floor.width) pos.x -= floor.width; - } - core.status.stepPostfix = []; core.status.stepPostfix.push(pos); diff --git a/public/libs/control.js b/public/libs/control.js index 358a866..eb6634d 100644 --- a/public/libs/control.js +++ b/public/libs/control.js @@ -2120,10 +2120,6 @@ control.prototype._doSL_load_afterGet = function (id, data) { core.myconfirm('此存档可能存在风险,你想要播放录像么?', _replay); return; } - // 追逐战 - Mota.r(() => { - Mota.require('@user/legacy-plugin-client').end(false); - }); // core.ui.closePanel(); core.loadData(data, function () { core.removeFlag('__fromLoad__'); diff --git a/public/libs/core.js b/public/libs/core.js index 2fa2a8d..da70e19 100644 --- a/public/libs/core.js +++ b/public/libs/core.js @@ -7,14 +7,14 @@ 'use strict'; function core() { - this._WIDTH_ = 15; - this._HEIGHT_ = 15; + this._WIDTH_ = 13; + this._HEIGHT_ = 13; this._PX_ = this._WIDTH_ * 32; this._PY_ = this._HEIGHT_ * 32; this._HALF_WIDTH_ = Math.floor(this._WIDTH_ / 2); this._HALF_HEIGHT_ = Math.floor(this._HEIGHT_ / 2); - this.__SIZE__ = main.mode == 'editor' ? 15 : this._HEIGHT_; + this.__SIZE__ = main.mode == 'editor' ? 13 : this._HEIGHT_; this.__PIXELS__ = this.__SIZE__ * 32; this.__HALF_SIZE__ = Math.floor(this.__SIZE__ / 2); this.material = { diff --git a/public/libs/events.js b/public/libs/events.js index 3f4052b..a23a6f5 100644 --- a/public/libs/events.js +++ b/public/libs/events.js @@ -26,7 +26,6 @@ events.prototype.startGame = function (hard, seed, route, callback) { hard = hard || ''; if (main.mode != 'play') return; - Mota.require('@user/data-state').resetSkillLevel(); // 无动画的开始游戏 if (core.flags.startUsingCanvas || route != null) { diff --git a/public/libs/maps.js b/public/libs/maps.js index cb8924a..13c5d7c 100644 --- a/public/libs/maps.js +++ b/public/libs/maps.js @@ -806,8 +806,6 @@ maps.prototype.generateMovableArray = function (floorId) { for (var x = 0; x < width; ++x) { array[x] = Array(height).fill([]); } - const loopMaps = Mota.require('@user/data-state').MiscData.loopMaps; - const isLoop = loopMaps.has(floorId); var v2 = floorId == core.status.floorId && core.bigmap.v2; const half = core._HALF_WIDTH_; var startX = v2 @@ -829,24 +827,19 @@ maps.prototype.generateMovableArray = function (floorId) { ) : height; - if (isLoop) { - startX = 0; - endX = core.status.maps[floorId].width; - } - for (var x = startX; x < endX; x++) { for (var y = startY; y < endY; y++) { - array[x][y] = ['left', 'down', 'up', 'right'].filter(function ( - direction - ) { - return core.maps._canMoveHero_checkPoint( - x, - y, - direction, - floorId, - arrays - ); - }); + array[x][y] = ['left', 'down', 'up', 'right'].filter( + function (direction) { + return core.maps._canMoveHero_checkPoint( + x, + y, + direction, + floorId, + arrays + ); + } + ); } } return array; @@ -888,11 +881,6 @@ maps.prototype._canMoveHero_checkPoint = function ( var nx = x + core.utils.scan[direction].x, ny = y + core.utils.scan[direction].y; - const loopMaps = Mota.require('@user/data-state').MiscData.loopMaps; - if (loopMaps.has(floorId)) { - if (nx < 0) nx = floor.width - 1; - if (nx >= floor.width) nx = 0; - } if ( nx < 0 || ny < 0 || @@ -1128,9 +1116,6 @@ maps.prototype.automaticRoute = function (destX, destY) { // BFS找寻最短路径 var route = this._automaticRoute_bfs(startX, startY, destX, destY); if (route[destX + ',' + destY] == null) return []; - const floor = core.status.thisMap; - const loopMaps = Mota.require('@user/data-state').MiscData.loopMaps; - // 路径数组转换 var ans = [], nowX = destX, @@ -1140,10 +1125,6 @@ maps.prototype.automaticRoute = function (destX, destY) { ans.push({ direction: dir, x: nowX, y: nowY }); nowX -= core.utils.scan[dir].x; nowY -= core.utils.scan[dir].y; - if (loopMaps.has(core.status.floorId)) { - if (nowX < 0) nowX += floor.width; - if (nowX >= floor.width) nowX -= floor.width; - } } ans.reverse(); return ans; @@ -1162,7 +1143,6 @@ maps.prototype._automaticRoute_bfs = function (startX, startY, destX, destY) { queue.queue({ depth: 0, x: startX, y: startY }); var blocks = core.getMapBlocksObj(); const floor = core.status.thisMap; - const loopMaps = Mota.require('@user/data-state').MiscData.loopMaps; while (queue.length != 0) { var curr = queue.dequeue(), @@ -1173,22 +1153,16 @@ maps.prototype._automaticRoute_bfs = function (startX, startY, destX, destY) { if (!core.inArray(canMoveArray[nowX][nowY], direction)) continue; var nx = nowX + core.utils.scan[direction].x; var ny = nowY + core.utils.scan[direction].y; - if (loopMaps.has(core.status.floorId)) { - if (nx < 0) nx = floor.width - 1; - if (nx >= floor.width) nx = 0; - if (route[nx + ',' + ny] || ny < 0 || ny >= floor.height) { - continue; - } - } else { - if ( - nx < 0 || - nx >= core.bigmap.width || - ny < 0 || - ny >= core.bigmap.height || - route[nx + ',' + ny] != null - ) - continue; - } + + if ( + nx < 0 || + nx >= core.bigmap.width || + ny < 0 || + ny >= core.bigmap.height || + route[nx + ',' + ny] != null + ) + continue; + // 重点 if (nx == destX && ny == destY) { route[nx + ',' + ny] = direction; @@ -2669,22 +2643,25 @@ maps.prototype._drawThumbnail_realDrawTempCanvas = function ( options.heroIcon = options.heroIcon || core.status.hero.image || 'hero.png'; options.heroIcon = core.getMappedName(options.heroIcon); - var icon = core.material.icons.hero[options.heroLoc.direction]; - var height = core.material.images.images[options.heroIcon].height / 4; - var width = - (core.material.images.images[options.heroIcon].width || 128) / 4; - core.drawImage( - options.ctx, - core.material.images.images[options.heroIcon], - icon.stop * width, - icon.loc * height, - width, - height, - 32 * options.heroLoc.x + 32 - width, - 32 * options.heroLoc.y + 32 - height, - width, - height - ); + const image = core.material.images.images[options.heroIcon]; + if (image) { + var icon = core.material.icons.hero[options.heroLoc.direction]; + var height = + core.material.images.images[options.heroIcon].height / 4; + var width = (image.width || 128) / 4; + core.drawImage( + options.ctx, + core.material.images.images[options.heroIcon], + icon.stop * width, + icon.loc * height, + width, + height, + 32 * options.heroLoc.x + 32 - width, + 32 * options.heroLoc.y + 32 - height, + width, + height + ); + } } // 缩略图:前景 this.drawFg(floorId, options); @@ -3891,7 +3868,14 @@ maps.prototype._moveBlock_doMove = function ( _run(); } else core.maps._moveBlock_moving(blockInfo, canvases, moveInfo); - } else core.maps._moveJumpBlock_finished(blockInfo, canvases, moveInfo, animate, cb); + } else + core.maps._moveJumpBlock_finished( + blockInfo, + canvases, + moveInfo, + animate, + cb + ); }, moveInfo.per_time); core.animateFrame.lastAsyncId = animate; diff --git a/public/maps/index.html b/public/maps/index.html deleted file mode 100644 index b80010c..0000000 --- a/public/maps/index.html +++ /dev/null @@ -1,85 +0,0 @@ - - - - - - - - 人类:开天辟地 缩略图集 - - - - -
- 人类:开天辟地 缩略图集 -
- - - - \ No newline at end of file diff --git a/public/maps/冰封雪原.png b/public/maps/冰封雪原.png deleted file mode 100644 index 5ea0ed4..0000000 Binary files a/public/maps/冰封雪原.png and /dev/null differ diff --git a/public/maps/冰封高原.png b/public/maps/冰封高原.png deleted file mode 100644 index 7c28d78..0000000 Binary files a/public/maps/冰封高原.png and /dev/null differ diff --git a/public/maps/勇气之路.png b/public/maps/勇气之路.png deleted file mode 100644 index 71adeb4..0000000 Binary files a/public/maps/勇气之路.png and /dev/null differ diff --git a/public/maps/智慧小径.png b/public/maps/智慧小径.png deleted file mode 100644 index bb687d9..0000000 Binary files a/public/maps/智慧小径.png and /dev/null differ diff --git a/public/maps/洞穴.png b/public/maps/洞穴.png deleted file mode 100644 index 0f8a0e8..0000000 Binary files a/public/maps/洞穴.png and /dev/null differ diff --git a/public/maps/草原.png b/public/maps/草原.png deleted file mode 100644 index 7d013e9..0000000 Binary files a/public/maps/草原.png and /dev/null differ diff --git a/public/project/data.js b/public/project/data.js index 96b1d5a..897866d 100644 --- a/public/project/data.js +++ b/public/project/data.js @@ -3,170 +3,22 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "main": { "floorIds": [ "empty", - "MT0", - "MT1", - "MT2", - "MT3", - "MT4", - "MT5", - "MT6", - "MT7", - "MT8", - "MT9", - "MT10", - "MT11", - "MT12", - "MT13", - "MT14", - "MT15", - "MT16", - "MT17", - "MT18", - "MT19", - "MT20", - "MT21", - "tower1", - "tower2", - "tower3", - "tower4", - "tower5", - "tower6", - "tower7", - "MT22", - "MT23", - "MT24", - "MT25", - "MT26", - "MT27", - "MT28", - "MT29", - "MT30", - "MT31", - "MT32", - "MT33", - "MT34", - "MT35", - "MT36", - "MT37", - "MT38", - "MT39", - "MT40", - "MT41", - "MT42", - "MT43", - "MT44", - "MT45", - "snowTown", - "snowShop", - "MT46", - "MT47", - "MT48", - "MT49", - "MT50", - "MT51", - "MT52", - "MT53", - "MT54", - "MT55", - "MT56", - "MT57", - "MT58", - "MT59", - "MT60", - "MT61", - "MT62", - "MT63", - "MT64", - "MT65", - "MT66", - "MT67", - "MT68", - "MT69", - "MT71", - "MT72", - "MT73", - "MT74", - "MT75", - "MT76", - "MT77", - "MT78", - "MT79", - "MT80", - "MT81", - "MT82", - "MT83", - "MT84", - "MT85", - "MT86", - "MT87", - "MT88", - "MT89", - "MT90", - "MT91", - "MT92", - "MT93", - "MT94", - "MT95", - "MT96", - "MT97" - ], - "floorPartitions": [ - [ - "MT0", - "MT16" - ], - [ - "MT17", - "MT100" - ] + "sample0", + "sample1", + "sample2", + "MT0" ], + "floorPartitions": [], "images": [ - "IQ.png", - "arrow.png", - "atk.png", - "bg.webp", - "boom.png", - "botton.png", - "cloud.png", - "def.png", - "exp.png", - "fog.png", - "hero1.png", - "hero2.png", - "hp.png", - "money.png", - "skill.png", - "skill0.png", - "skill1.png", - "skill10.png", - "skill11.png", - "skill12.png", - "skill13.png", - "skill14.png", - "skill2.png", - "skill3.png", - "skill4.png", - "skill5.png", - "skill6.png", - "skill7.png", - "skill8.png", - "skill9.png", - "sun.png", - "tower7.webp", - "winskin.png", - "winskin2.png", - "winskin3.png" + "bear.png", + "bg.jpg", + "brave.png", + "dragon.png", + "hero.png", + "winskin.png" ], "tilesets": [ - "magictower.png", - "043-Cave01.png", - "004-Mountain01.png", - "Map-Tower01.png", - "Caverna1.png", - "map-tower.png", - "winter1.png", - "snowTown.png", - "room.png" + "magictower.png" ], "animates": [ "amazed", @@ -257,10 +109,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "tree.opus", "zone.opus" ], - "fonts": [ - "normal", - "FiraCode" - ], + "fonts": [], "nameMap": { "确定": "confirm.opus", "取消": "cancel.opus", @@ -385,12 +234,12 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = "splitImages": [] }, "firstData": { - "title": "人类:开天辟地", - "name": "HumanBreak", - "version": "Ver 2.7.3.1", - "floorId": "MT0", + "title": "魔塔样板", + "name": "template", + "version": "Ver 2.B", + "floorId": "sample0", "hero": { - "image": "hero1.png", + "image": "hero.png", "animate": false, "name": "原始人", "lv": 1, @@ -411,8 +260,8 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = }, "loc": { "direction": "up", - "x": 7, - "y": 13 + "x": 6, + "y": 10 }, "flags": {}, "followers": [], @@ -561,7 +410,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = 0, 1 ], - "background": "winskin3.png", + "background": "winskin.png", "textfont": 20, "time": 25, "letterSpacing": 1 @@ -638,7 +487,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d = 255, 1 ], - "background": "winskin2.png", + "background": "winskin.png", "textfont": 20, "time": 25 }, diff --git a/public/project/enemys.js b/public/project/enemys.js index af0333f..ab86d5b 100644 --- a/public/project/enemys.js +++ b/public/project/enemys.js @@ -1,219 +1,84 @@ var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 = { - "greenSlime": {"name":"绿头怪","hp":100,"atk":11,"def":3,"money":0,"exp":1,"point":0,"special":[],"description":"别小看这些家伙,虽然他们只是一种极其低级的怪物,低级到普通人用手都可以打死,但数量是他们的优势。"}, - "redSlime": {"name":"红头怪","hp":120,"atk":16,"def":6,"money":0,"exp":2,"point":0,"special":[],"value":10,"description":"即使是最弱的怪物,也有进化的时候,对吧?据说,红头怪便是绿头怪进化形成的。"}, - "blackSlime": {"name":"青头怪","hp":170,"atk":20,"def":8,"money":0,"exp":3,"point":0,"special":[],"description":"看,这就是最弱的怪物进化出的最强的怪物之一了。他们弱吗?"}, - "slimelord": {"name":"粘液王","hp":200,"atk":58,"def":24,"money":0,"exp":8,"point":0,"special":[],"description":"看上去黏糊糊的,实际也确实黏糊糊的,据说是史莱姆族的长老级人物,拥有不俗的实力。"}, - "bat": {"name":"小蝙蝠","hp":60,"atk":15,"def":0,"money":0,"exp":2,"point":0,"special":[4],"description":"经常出现在山洞中,再平常不过了。但是这次它却有了攻击性。"}, - "bigBat": {"name":"大蝙蝠","hp":150,"atk":17,"def":5,"money":0,"exp":4,"point":0,"special":[4],"crit":0,"charge":0,"courage":0,"together":0,"hungry":0,"value":100,"n":1000,"description":"或许是小蝙蝠的父亲?一种极其强悍的蝙蝠,实力不够千万不要靠近他。"}, - "redBat": {"name":"恐怖蝙蝠","hp":1200,"atk":260,"def":110,"money":1,"exp":32,"point":0,"special":[5],"description":"恐惧?或许他们并不知道恐惧是什么,他们不会害怕任何东西,即使这个东西能够威胁到自己的生命。"}, - "vampire": {"name":"冥灵魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "skeleton": {"name":"骷髅人","hp":300,"atk":80,"def":10,"money":0,"exp":9,"point":0,"special":[1],"crit":300,"description":"骷髅?看起来是被人动了手脚,或许是未来的高科技机器人呢?"}, - "skeletonCaptain": {"name":"骷髅队长","hp":750,"atk":200,"def":50,"money":0,"exp":21,"point":0,"special":[1],"crit":1000,"description":"机器人也会有领袖吗?这还真是第一次听说。"}, - "zombie": {"name":"兽人","hp":150,"atk":43,"def":14,"money":0,"exp":6,"point":0,"special":[],"description":"野兽嘛,在远古时期,再正常不过了。"}, - "zombieKnight": {"name":"兽人武士","hp":480,"atk":62,"def":30,"money":0,"exp":15,"point":0,"special":[],"description":"他们总是认为,要变得强大,杀掉其他野兽,自己才能存活下来。"}, - "rock": {"name":"洞穴巨石","hp":31,"atk":25,"def":0,"money":0,"exp":4,"point":0,"special":[3],"description":"一些具有攻击性的巨石?或许就是兽人穿上了一层石头外衣吧。"}, - "bluePriest": {"name":"初级法师","hp":100,"atk":120,"def":0,"money":3,"exp":0,"point":1,"special":[2]}, + "greenSlime": {"name":"绿头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "redSlime": {"name":"红头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[16,18],"value":10}, + "blackSlime": {"name":"青头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "slimelord": {"name":"怪王","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[1,9]}, + "bat": {"name":"小蝙蝠","hp":100,"atk":120,"def":0,"money":2,"exp":0,"point":0,"special":[1]}, + "bigBat": {"name":"大蝙蝠","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "redBat": {"name":"红蝙蝠","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "vampire": {"name":"冥灵魔王","hp":888,"atk":888,"def":888,"money":888,"exp":888,"point":0,"special":[6],"n":8}, + "skeleton": {"name":"骷髅人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "skeletonCaptain": {"name":"骷髅队长","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "zombie": {"name":"兽人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "zombieKnight": {"name":"兽人武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "rock": {"name":"石头人","hp":50,"atk":50,"def":0,"money":3,"exp":0,"point":0,"special":[3]}, + "bluePriest": {"name":"初级法师","hp":100,"atk":120,"def":0,"money":3,"exp":0,"point":1,"special":[9]}, "redPriest": {"name":"高级法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "brownWizard": {"name":"苍蓝巫师","hp":16000,"atk":5000,"def":2000,"money":4,"exp":250,"point":0,"special":[28],"value":100,"range":2,"melt":null,"paleShield":25}, - "redWizard": {"name":"靛红巫师","hp":12000,"atk":6000,"def":4000,"money":4,"exp":300,"point":0,"special":[25],"value":200,"zoneSquare":true,"melt":30}, - "swordsman": {"name":"野蛮剑士","hp":250,"atk":55,"def":27,"money":0,"exp":9,"point":0,"special":[15],"value":75,"description":"剑?这是什么东西?他们拿的只是比较锋利的骨头吧。"}, + "brownWizard": {"name":"初级巫师","hp":100,"atk":120,"def":0,"money":16,"exp":0,"point":0,"special":[15],"value":100,"range":2}, + "redWizard": {"name":"高级巫师","hp":1000,"atk":1200,"def":0,"money":160,"exp":0,"point":0,"special":[15],"value":200,"zoneSquare":true}, + "swordsman": {"name":"双手剑士","hp":100,"atk":120,"def":0,"money":6,"exp":0,"point":0,"special":[4]}, "soldier": {"name":"冥战士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "yellowKnight": {"name":"勇气骑士","hp":2000,"atk":500,"def":250,"money":1,"exp":30,"point":0,"special":[11],"charge":500,"description":"人们总是说,战斗,需要的就是勇气。而骑士,或许就站在了这勇气之巅了吧。有什么用呢?战场上,该死的时候就是得死,哪怕是在这远古时期,即使不是战场,一场战斗也足以决定生死。"}, - "redKnight": {"name":"靛红骑士","hp":30000,"atk":9000,"def":3000,"money":5,"exp":600,"point":0,"special":[29],"specialHalo":[27],"iceCore":15,"haloRange":3,"fireCore":15}, + "yellowKnight": {"name":"金骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "redKnight": {"name":"红骑士","hp":500,"atk":200,"def":50,"money":0,"exp":0,"point":0,"special":[7]}, "darkKnight": {"name":"黑骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "blueKnight": {"name":"苍蓝骑士","hp":40000,"atk":9000,"def":4000,"money":6,"exp":600,"point":0,"special":[4]}, - "goldSlime": {"name":"黄头怪","hp":1000,"atk":50,"def":50,"money":0,"exp":18,"point":0,"special":[2]}, - "poisonSkeleton": {"name":"紫骷髅","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "poisonBat": {"name":"山间蝙蝠","hp":800,"atk":170,"def":50,"money":1,"exp":24,"point":0,"special":[5],"description":"山的高出,总会有一些恐怖的东西,就比如这只蝙蝠。"}, - "skeletonPriest": {"name":"智慧骷髅","hp":4000,"atk":1200,"def":900,"money":1,"exp":75,"point":0,"special":[1,13],"value":20,"crit":500,"description":"人们说智慧可以做到任何事情,而这只骷髅却将可以变为了很容易。“我挥一挥法杖,智慧便会如泉般涌来。”,他说。"}, + "blueKnight": {"name":"蓝骑士","hp":100,"atk":120,"def":0,"money":9,"exp":0,"point":0,"special":[8]}, + "goldSlime": {"name":"黄头怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "poisonSkeleton": {"name":"紫骷髅","hp":50,"atk":60,"def":70,"money":80,"exp":0,"point":0,"special":[13]}, + "poisonBat": {"name":"紫蝙蝠","hp":100,"atk":120,"def":0,"money":14,"exp":0,"point":0,"special":[13]}, + "skeletonPriest": {"name":"骷髅法师","hp":100,"atk":100,"def":0,"money":0,"exp":0,"point":0,"special":[18],"value":20}, "skeletonKing": {"name":"骷髅王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "evilHero": {"name":"迷失勇者","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "demonPriest": {"name":"苍蓝法师","hp":20000,"atk":4000,"def":3000,"money":4,"exp":250,"point":0,"special":[13]}, - "goldHornSlime": {"name":"尖角怪","hp":1500,"atk":366,"def":166,"money":1,"exp":35,"point":0,"special":[],"description":"一个奇怪的物种,长着两只角就了不起了吗?或许还真是!"}, - "silverSlime": {"name":"银头怪","hp":250,"atk":50,"def":20,"money":0,"exp":11,"point":0,"special":[2]}, - "whiteHornSlime": {"name":"恐怖尖角怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "redSwordsman": {"name":"山间盗贼","hp":1000,"atk":175,"def":40,"money":1,"exp":24,"point":0,"special":[4],"n":8,"description":"即使是现代法治社会,也总会有人去抢夺别人的东西,更何况远古时期呢?"}, + "demonPriest": {"name":"魔神法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "goldHornSlime": {"name":"金角怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "silverSlime": {"name":"银头怪","hp":100,"atk":120,"def":0,"money":15,"exp":0,"point":0,"special":[14]}, + "whiteHornSlime": {"name":"尖角怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "redSwordsman": {"name":"剑王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "poisonZombie": {"name":"绿兽人","hp":100,"atk":120,"def":0,"money":13,"exp":0,"point":0,"special":[12]}, - "octopus": {"name":"血影","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "octopus": {"name":"血影","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"bigImage":null}, "princessEnemy": {"name":"假公主","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "angel": {"name":"天使","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "elemental": {"name":"元素生物","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "steelGuard": {"name":"铁守卫","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[18],"value":20}, - "evilBat": {"name":"邪恶蝙蝠","hp":1000,"atk":800,"def":350,"money":1,"exp":40,"point":0,"special":[2],"bigImage":null}, - "frozenSkeleton": {"name":"冻死骨","hp":7500,"atk":2500,"def":1000,"money":2,"exp":90,"point":0,"special":[1,20],"crit":500,"ice":10,"description":"弱小,无助,哀嚎,这就是残酷的现实。哪怕你身处极寒之中,也难有人对你伸出援手。人类总会帮助他人,但在这绝望的环境下,人类的本性便暴露无遗。这一个个精致却又无情的骷髅,便是那些在极寒之中死去的冤魂。"}, + "steelGuard": {"name":"铁守卫","hp":50,"atk":50,"def":50,"money":0,"exp":0,"point":0,"special":[18],"value":20}, + "evilBat": {"name":"邪恶蝙蝠","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "silverSlimelord": {"name":"银怪王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "goldSlimelord": {"name":"金怪王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "skeletonWarrior": {"name":"骷髅士兵","hp":500,"atk":100,"def":20,"money":0,"exp":12,"point":0,"special":[1],"crit":500,"description":"看来未来的机器人并不满足与赤手空拳,他们也拿上了武器。"}, - "whiteSlimeman": {"name":"水银史莱姆人","hp":750,"atk":100,"def":45,"money":0,"exp":20,"point":0,"special":[4],"description":"汞?这听起来不像是一个远古时期应该存在的名字,但是把它拆分开,叫做水银,是不是可爱了一些?"}, - "slimeman": {"name":"莱姆人","hp":125,"atk":30,"def":10,"money":0,"exp":4,"point":0,"special":[4],"atkValue":2,"defValue":3,"description":"又有谁不能保证史莱姆也能进化成人型生物呢?"}, - "yellowGateKeeper": {"name":"神秘卫兵","hp":375,"atk":200,"def":15,"money":1,"exp":25,"point":0,"special":[1],"crit":5000,"description":"神秘卫兵。确实很神秘,他们从不说话,只知道看着你,当你攻击他们的时候,他们会给你致命的反击。"}, - "blueGateKeeper": {"name":"神秘雕像","hp":1000,"atk":275,"def":120,"money":1,"exp":38,"point":0,"special":[1],"crit":1000,"description":"大概,或许,跟神秘卫兵是同一类东西?"}, - "redGateKeeper": {"name":"勇气卫兵","hp":1000,"atk":450,"def":250,"money":1,"exp":30,"point":0,"special":[1],"crit":2000,"description":"没有人知道这些卫兵是什么。他们有红通通的外表,一颗怀揣着勇气的心。但是,勇气这东西,并不是越多越好,为什么?跟他打一架,他的下场便是勇气过多的下场。"}, + "skeletonWarrior": {"name":"骷髅士兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "whiteSlimeman": {"name":"水银战士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "slimeman": {"name":"影子战士","hp":100,"atk":0,"def":0,"money":11,"exp":0,"point":0,"special":[9],"atkValue":2,"defValue":3}, + "yellowGateKeeper": {"name":"初级卫兵","hp":100,"atk":120,"def":0,"money":10,"exp":0,"point":0,"special":[]}, + "blueGateKeeper": {"name":"中级卫兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "redGateKeeper": {"name":"高级卫兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "magicMaster": {"name":"黑暗大法师","hp":100,"atk":120,"def":0,"money":12,"exp":0,"point":0,"special":[11],"value":0.3333333333333333,"add":true,"notBomb":true}, "devilWarrior": {"name":"魔神武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "fairyEnemy": {"name":"仙子","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "dragon": {"name":"魔龙","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "skeletonKnight": {"name":"骷髅骑士","hp":25000,"atk":5000,"def":4000,"money":5,"exp":450,"point":0,"special":[1,29],"crit":300,"value":5000,"specialHalo":[4],"haloRange":2}, - "skeletonPresbyter": {"name":"骷髅巫师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"description":"法杖,人们总觉得这种东西只应该出现在虚拟的世界中。可是,智慧却成功将这件事变为了现实,而产物便是这只骷髅巫师。"}, - "ironRock": {"name":"山间巨石","hp":750,"atk":150,"def":0,"money":0,"exp":20,"point":0,"special":[3],"description":"恐怖的东西,除了那只蝙蝠,还有...这个巨石。"}, - "grayRock": {"name":"林间巨石","hp":100,"atk":60,"def":0,"money":0,"exp":12,"point":0,"special":[3],"description":"貌似比山洞里面的那些家伙硬了一些?哼,那又能有什么用呢?"}, + "dragon": {"name":"魔龙","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"bigImage":null}, + "skeletonKnight": {"name":"骷髅武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "skeletonPresbyter": {"name":"骷髅巫师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "ironRock": {"name":"铁面人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "grayRock": {"name":"灰色石头人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "yellowPriest": {"name":"中级法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "evilPrincess": {"name":"痛苦魔女","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "blademaster": {"name":"苍蓝之剑","hp":5000,"atk":10000,"def":5000,"money":5,"exp":500,"point":0,"special":[1,5],"courage":null,"crit":250}, + "evilPrincess": {"name":"痛苦魔女","hp":1000,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[10]}, + "blademaster": {"name":"剑圣","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "evilFairy": {"name":"黑暗仙子","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "blueRock": {"name":"勇气之石","hp":2000,"atk":450,"def":230,"money":1,"exp":30,"point":0,"special":[],"description":"巨石,这本身是一种不可怕的怪物。而可怕的是,当这些巨石拥有了勇气,或许就很少有人敢于直面他们了。"}, - "skeletonLite": {"name":"骷髅精英","hp":2000,"atk":275,"def":240,"money":1,"exp":35,"point":0,"special":[9],"description":"骷髅们总是说,没有防御力,让我怎么去攻击别人?呵,这防御力不就来了吗?可是,这又有何用呢?"}, "greenKnight": {"name":"强盾骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "bowman": {"name":"猎人","hp":500,"atk":100,"def":50,"money":0,"exp":16,"point":0,"special":[24],"value":75,"description":"没人知道这些人怎么做出的弓,也没人知道他们怎么收集的这么多剑。而其他人唯一能做的事,便是远离他们。"}, - "liteBowman": {"name":"山间猎手","hp":1200,"atk":200,"def":60,"money":1,"exp":27,"point":0,"special":[24],"description":"这箭,或许就是那些败于他弓下的那些不知好歹的莽夫的骨头吧。或许,绕开他的视野才是躲避他的攻击的最好办法。"}, - "crimsonZombie": {"name":"勇气之兽","hp":1800,"atk":2000,"def":-100,"money":1,"exp":35,"point":0,"special":[],"description":"没人会愿意跟这些野兽一起吧?至少我是不想。上天赋予的勇气,却让他们更加渴望鲜血,这不是很可悲吗?"}, - "watcherSlime": {"name":"邪眼史莱姆","hp":5000,"atk":1200,"def":600,"money":1,"exp":50,"point":0,"special":[17],"description":"成群结队地出现在森林中,看遍百花齐放,经历万物凋零。他们守在这森林中,将那些企图突破这里的人置于死地。"}, - "mutantSlimeman": {"name":"变异史莱姆人","hp":350,"atk":70,"def":27,"money":0,"exp":13,"point":0,"special":[],"description":"据说,史莱姆人也会基因突变,这样就产生了这种变异史莱姆人。"}, - "devilKnight": {"name":"恶灵骑士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "grayPriest": {"name":"智慧法王","hp":3000,"atk":600,"def":250,"money":1,"exp":40,"point":0,"special":[13],"description":"法杖?他已经不需要了。没有人知道他长什么样,只知道他的智慧已非常人能及,只知道他的法术能让一个人在瞬间化为灰烬。"}, - "greenGateKeeper": {"name":"睿智雕像","hp":5000,"atk":1250,"def":900,"money":1,"exp":65,"point":0,"special":[1],"crit":1000}, - "ghostSoldier": {"name":"山间骷髅","hp":750,"atk":180,"def":40,"money":0,"exp":18,"point":0,"special":[],"description":"这次,他们穿上了盔甲。"}, - "frostBat": {"name":"寒霜蝙蝠","hp":20000,"atk":3200,"def":2000,"money":2,"exp":2000,"point":0,"special":[4,20],"ice":90,"description":"“穿梭于寒风里,行走在锋芒中”,寒霜蝙蝠将这句话运用到了极致。别看那小小的身体,它足以将你拆的七零八落。在它面前,任何小把戏都会被它看得一清二楚。它那凶恶的眼神,是否在哪里见过呢?"}, + "bowman": {"name":"初级弓兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "watcherSlime": {"name":"邪眼怪","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "devilKnight": {"name":"恶灵骑士","hp":150,"atk":100,"def":50,"money":0,"exp":0,"point":0,"special":[1,5,7,8]}, + "grayPriest": {"name":"混沌法师","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "greenGateKeeper": {"name":"卫兵队长","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "ghostSoldier": {"name":"冥队长","hp":200,"atk":100,"def":50,"money":0,"exp":0,"point":0,"special":[8]}, + "frostBat": {"name":"寒蝙蝠","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "blackKing": {"name":"黑衣魔王","hp":1000,"atk":500,"def":0,"money":1000,"exp":1000,"point":0,"special":[],"notBomb":true}, "yellowKing": {"name":"黄衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "greenKing": {"name":"青衣武士","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "redKing": {"name":"红衣魔王","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, "blueKing": {"name":"白衣武士","hp":100,"atk":120,"def":0,"money":17,"exp":0,"point":0,"special":[16]}, - "E368": {"name":"绿头武装怪","hp":400,"atk":75,"def":30,"money":0,"exp":14,"point":0,"special":[]}, - "E369": {"name":"红头武装怪","hp":450,"atk":85,"def":35,"money":0,"exp":17,"point":0,"special":[]}, - "E370": {"name":"青头武装怪","hp":600,"atk":100,"def":50,"money":0,"exp":20,"point":0,"special":[1],"crit":400}, - "E371": {"name":"武装怪王","hp":1500,"atk":230,"def":80,"money":1,"exp":30,"point":0,"special":[1],"crit":750}, - "E372": {"name":"高级绿头怪","hp":280,"atk":66,"def":33,"money":0,"exp":12,"point":0,"special":[]}, - "E373": {"name":"高级红头怪","hp":333,"atk":77,"def":33,"money":0,"exp":15,"point":0,"special":[1],"crit":200}, - "E374": {"name":"高级青头怪","hp":666,"atk":111,"def":44,"money":0,"exp":19,"point":0,"special":[]}, - "E375": {"name":"怪圣","hp":2000,"atk":270,"def":100,"money":1,"exp":33,"point":0,"special":[]}, - "E498": {"name":"山间野兽","hp":1200,"atk":175,"def":60,"money":1,"exp":30,"point":0,"special":[7],"hungry":20}, - "E499": {"name":"武装野兽","hp":1500,"atk":240,"def":100,"money":1,"exp":32,"point":0,"special":[7],"hungry":30}, - "E500": {"name":"智慧兽人","hp":4500,"atk":1200,"def":700,"money":1,"exp":55,"point":0,"special":[7],"hungry":30}, - "E501": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E502": {"name":"普通史塔茹","hp":900,"atk":160,"def":55,"money":1,"exp":25,"point":0,"special":[8],"together":20}, - "E503": {"name":"武装史塔茹","hp":1300,"atk":240,"def":110,"money":1,"exp":31,"point":0,"special":[8],"value":null,"crit":null,"together":25}, - "E504": {"name":"精英史塔茹","hp":2000,"atk":450,"def":150,"money":1,"exp":40,"point":0,"special":[8],"together":30}, - "E505": {"name":"勇气史塔茹","hp":3000,"atk":500,"def":250,"money":1,"exp":35,"point":0,"special":[8],"together":10}, - "E511": {"name":"山野蝙蝠","hp":1500,"atk":300,"def":120,"money":1,"exp":37,"point":0,"special":[5]}, - "E512": {"name":"专业盗贼","hp":1800,"atk":400,"def":170,"money":1,"exp":40,"point":0,"special":[5]}, - "E513": {"name":"黑影剑客","hp":10000,"atk":20000,"def":0,"money":5,"exp":600,"point":null,"special":[6],"n":6}, - "E514": {"name":"雪原剑客","hp":10000,"atk":3000,"def":500,"money":2,"exp":110,"point":0,"special":[5,19]}, - "E515": {"name":"勇气之剑","hp":2500,"atk":550,"def":270,"money":2,"exp":40,"point":0,"special":[5,10],"courage":500}, - "E517": {"name":"勇气之盾","hp":4000,"atk":400,"def":350,"money":1,"exp":30,"point":0,"special":[9]}, - "E518": {"name":"勇气圣骑","hp":4000,"atk":1000,"def":400,"money":1,"exp":45,"point":0,"special":[11],"charge":600}, - "E519": {"name":"勇气之魄","hp":3000,"atk":1000,"def":150,"money":1,"exp":45,"point":0,"special":[11],"charge":300}, - "E520": {"name":"勇气之魂","hp":4000,"atk":1200,"def":200,"money":1,"exp":45,"point":0,"special":[1],"crit":500}, - "E521": {"name":"勇气之箭","hp":2500,"atk":425,"def":250,"money":1,"exp":30,"point":0,"special":[1,12],"value":400,"crit":500}, - "E522": {"name":"勇气骷髅","hp":2000,"atk":600,"def":200,"money":1,"exp":30,"point":0,"special":[]}, - "E523": {"name":"红色骷髅士兵","hp":3000,"atk":1000,"def":600,"money":1,"exp":50,"point":0,"special":[]}, - "E524": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E525": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E536": {"name":"智慧法师","hp":2000,"atk":400,"def":200,"money":1,"exp":35,"point":0,"special":[13]}, - "E537": {"name":"智慧蝴蝶","hp":1500,"atk":450,"def":200,"money":1,"exp":35,"point":0,"special":[5,14]}, - "E538": {"name":"再生法师","hp":30000,"atk":6000,"def":6000,"money":5,"exp":500,"point":0,"special":[31],"hpHalo":25}, - "E539": {"name":"苍蓝恶魔","hp":15000,"atk":4500,"def":2000,"money":4,"exp":200,"point":0,"special":[8],"together":25}, - "E544": {"name":"智慧具形","hp":2500,"atk":550,"def":225,"money":1,"exp":35,"point":0,"special":[]}, - "E545": {"name":"勇气圣法","hp":3000,"atk":800,"def":350,"money":1,"exp":40,"point":0,"special":[13]}, - "E546": {"name":"智慧信仰者","hp":2000,"atk":600,"def":250,"money":1,"exp":35,"point":0,"special":[]}, - "E547": {"name":"智慧主教","hp":3000,"atk":700,"def":300,"money":1,"exp":40,"point":0,"special":[1],"crit":500}, - "E548": {"name":"智慧之灵","hp":1000,"atk":550,"def":250,"money":1,"exp":35,"point":0,"special":[]}, - "E549": {"name":"智慧之史","hp":1000,"atk":1000,"def":100,"money":1,"exp":35,"point":0,"special":[1],"crit":10000}, - "E550": {"name":"智慧之兔","hp":1500,"atk":600,"def":200,"money":1,"exp":35,"point":0,"special":[8],"together":20}, - "E556": {"name":"智慧之姆","hp":3000,"atk":800,"def":200,"money":1,"exp":45,"point":0,"special":[8],"together":20}, - "E557": {"name":"智慧之神","hp":10000,"atk":2000,"def":1500,"money":10,"exp":500,"point":0,"special":[]}, - "E561": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E562": {"name":"嘲讽剑客","hp":5000,"atk":1600,"def":500,"money":1,"exp":60,"point":0,"special":[19]}, - "E563": {"name":"嘲讽剑圣","hp":15000,"atk":6000,"def":3000,"money":4,"exp":250,"point":0,"special":[19]}, - "E564": {"name":"苍蓝剑圣","hp":30000,"atk":6000,"def":3000,"money":5,"exp":400,"point":0,"special":[29],"haloRange":3,"specialHalo":[19]}, - "E566": {"name":"智慧史莱姆","hp":6000,"atk":1200,"def":600,"money":1,"exp":50,"point":0,"special":[8],"together":25}, - "E567": {"name":"精明史莱姆","hp":5000,"atk":1200,"def":550,"money":0,"exp":0,"point":0,"special":[8],"together":30}, - "E568": {"name":"精明史莱姆","hp":5000,"atk":1500,"def":600,"money":1,"exp":60,"point":0,"special":[8],"together":30,"displayIdInBook":null}, - "E569": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E570": {"name":"粘液史莱姆","hp":3000,"atk":1000,"def":400,"money":1,"exp":45,"point":0,"special":[4,17]}, - "E571": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E572": {"name":"石化史莱姆","hp":4000,"atk":1200,"def":0,"money":1,"exp":60,"point":0,"special":[3]}, - "E573": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E576": {"name":"智慧守卫","hp":7500,"atk":2500,"def":1250,"money":10,"exp":500,"point":0,"special":[1],"crit":250}, - "E577": {"name":"智慧守护者","hp":15000,"atk":2500,"def":1200,"money":50,"exp":2500,"point":0,"special":[1],"crit":1000}, - "E578": {"name":"苍蓝守卫","hp":25000,"atk":8000,"def":4000,"money":5,"exp":600,"point":0,"special":[1],"crit":300}, - "E579": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E590": {"name":"冰封史莱姆","hp":7500,"atk":1750,"def":1000,"money":2,"exp":75,"point":0,"special":[20],"ice":25}, - "E591": {"name":"新敌人","hp":10000,"atk":2000,"def":1000,"money":0,"exp":0,"point":0,"special":[]}, - "E592": {"name":"冰封巨兽","hp":10000,"atk":2000,"def":1000,"money":2,"exp":85,"point":0,"special":[20,21],"iceHalo":20,"ice":50}, - "E593": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E594": {"name":"苍蓝骑士","hp":20000,"atk":5000,"def":2500,"money":4,"exp":300,"point":0,"special":[29],"charge":500,"specialHalo":[11],"haloRange":3}, - "E595": {"name":"寒冰兽人","hp":12500,"atk":1800,"def":800,"money":2,"exp":100,"point":0,"special":[7],"hungry":25}, - "E596": {"name":"苍蓝兽人","hp":22000,"atk":6000,"def":2000,"money":4,"exp":400,"point":0,"special":[1,28],"paleShield":30,"specialHalo":[],"iceHalo":20,"haloRange":2,"value":1000,"melt":50,"together":20,"fireCore":20,"crit":500}, - "E597": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E598": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E599": {"name":"魔焰骷髅","hp":40000,"atk":6000,"def":5000,"money":5,"exp":550,"point":0,"special":[29],"specialHalo":[13],"haloRange":2}, - "E600": {"name":"寒冰巨石","hp":3000,"atk":2500,"def":0,"money":2,"exp":100,"point":0,"special":[3]}, - "E601": {"name":"苍蓝巨石","hp":5000,"atk":6000,"def":0,"money":5,"exp":400,"point":0,"special":[3]}, - "E602": {"name":"永夜蝙","hp":6000,"atk":2000,"def":800,"money":1,"exp":65,"point":0,"special":[22],"night":100}, - "E603": {"name":"极昼蝠","hp":8000,"atk":1750,"def":1000,"money":1,"exp":65,"point":0,"special":[23],"day":100}, - "E605": {"name":"乾坤之卫","hp":30000,"atk":7500,"def":2000,"money":4,"exp":300,"point":0,"special":[30],"translation":[2,2]}, - "E606": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E607": {"name":"呐喊之魂","hp":40000,"atk":20000,"def":4000,"money":8,"exp":800,"point":0,"special":[29,30],"specialHalo":[27],"haloRange":3,"iceCore":null,"fireCore":10,"translation":[1,0]}, - "E608": {"name":"寒冰护卫","hp":20000,"atk":2750,"def":2000,"money":3,"exp":225,"point":0,"special":[]}, - "E609": {"name":"具形雪人","hp":7500,"atk":2250,"def":1250,"money":2,"exp":90,"point":0,"special":[25],"melt":15}, - "E610": {"name":"高冷雪人","hp":10000,"atk":2500,"def":1500,"money":2,"exp":150,"point":0,"special":[25],"melt":25}, - "E611": {"name":"具形雪人法师","hp":15000,"atk":2500,"def":1750,"money":2,"exp":175,"point":0,"special":[13,25],"melt":30}, - "E612": {"name":"苍蓝雪人","hp":30000,"atk":7500,"def":3000,"money":5,"exp":500,"point":0,"special":[29],"specialHalo":[25],"haloRange":3,"melt":10}, - "E613": {"name":"寒冰核心","hp":20000,"atk":2750,"def":1500,"money":3,"exp":150,"point":0,"special":[26],"iceCore":20}, - "E614": {"name":"火焰核心","hp":15000,"atk":2750,"def":1750,"money":3,"exp":140,"point":0,"special":[27],"fireCore":20}, - "E615": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E616": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E617": {"name":"冰封雕像","hp":12500,"atk":2750,"def":2000,"money":2,"exp":150,"point":0,"special":[]}, - "E618": {"name":"圣殿守卫","hp":30000,"atk":12500,"def":7500,"money":10,"exp":1000,"point":0,"special":[]}, - "E643": {"name":"苍蓝史莱姆","hp":17500,"atk":2800,"def":2000,"money":3,"exp":175,"point":0,"special":[28],"paleShield":30}, - "E644": {"name":"苍蓝融合怪","hp":40000,"atk":7500,"def":5000,"money":8,"exp":1000,"point":0,"special":[32],"assimilateRange":2}, - "E645": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E646": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E647": {"name":"苍蓝之灵-虚","hp":30000,"atk":5000,"def":3000,"money":10,"exp":2500,"point":0,"special":[28],"paleShield":10}, - "E656": {"name":"触手史莱姆","hp":12500,"atk":4500,"def":2500,"money":4,"exp":200,"point":0,"special":[8],"together":25}, - "E657": {"name":"触手法师","hp":50000,"atk":2000,"def":3000,"money":5,"exp":300,"point":0,"special":[8,13],"crit":null,"together":25}, - "E658": {"name":"天域莱姆","hp":15000,"atk":8000,"def":7000,"money":5,"exp":500,"point":0,"special":[8],"together":10}, - "E659": {"name":"圣殿莱姆","hp":50000,"atk":8000,"def":3000,"money":5,"exp":600,"point":0,"special":[8,30],"translation":[-2,-1],"together":20}, - "E666": {"name":"苍蓝之灵-视","hp":150000,"atk":8000,"def":2000,"money":10,"exp":2500,"point":0,"special":[29],"n":5,"specialHalo":[4],"haloRange":5}, - "E667": {"name":"苍之蓝","hp":50000,"atk":6000,"def":2000,"money":5,"exp":500,"point":0,"special":[29],"together":25,"specialHalo":[8],"haloRange":3}, - "E668": {"name":"冰封护卫","hp":30000,"atk":7000,"def":2500,"money":5,"exp":550,"point":0,"special":[29],"specialHalo":[26],"iceCore":15,"haloRange":3}, - "E669": {"name":"苍蓝禁卫","hp":75000,"atk":16000,"def":8000,"money":10,"exp":1000,"point":0,"special":[33],"horn":[5,1,1]}, - "E670": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E671": {"name":"圣殿骑士","hp":60000,"atk":12000,"def":4000,"money":7,"exp":750,"point":0,"special":[1],"crit":300}, - "E672": {"name":"坚固骑士","hp":7500,"atk":10000,"def":0,"money":8,"exp":800,"point":0,"special":[29],"specialHalo":[3],"haloRange":2}, - "E673": {"name":"苍蓝之灵-域","hp":250000,"atk":12000,"def":3000,"money":10,"exp":2500,"point":0,"special":[]}, - "E674": {"name":"进攻亡灵","hp":80000,"atk":14000,"def":5000,"money":7,"exp":700,"point":0,"special":[29,30],"specialHalo":[12],"haloRange":3,"translation":[0,-1]}, - "E675": {"name":"双刃骷髅","hp":50000,"atk":13000,"def":6000,"money":0,"exp":0,"point":0,"special":[5]}, - "E676": {"name":"冲锋骷髅","hp":50000,"atk":8000,"def":4000,"money":6,"exp":500,"point":0,"special":[12]}, - "E677": {"name":"骷髅巫师","hp":150000,"atk":2000,"def":5000,"money":5,"exp":600,"point":0,"special":[13],"crit":null}, - "E678": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E679": {"name":"剑盾之卫","hp":30000,"atk":10000,"def":6000,"money":7,"exp":700,"point":0,"special":[1],"crit":600}, - "E680": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E681": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E682": {"name":"苍蓝聚形","hp":25000,"atk":7000,"def":4000,"money":5,"exp":400,"point":0,"special":[8],"together":20}, - "E683": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E684": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E685": {"name":"守卫队长","hp":100000,"atk":14000,"def":4000,"money":10,"exp":1000,"point":0,"special":[28,29],"specialHalo":[32],"paleShield":20,"haloRange":3,"assimilateRange":2}, - "E686": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E687": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E688": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E689": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E690": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E691": {"name":"游离之魂","hp":60000,"atk":12000,"def":8000,"money":0,"exp":0,"point":0,"special":[29],"specialHalo":[8],"together":10,"haloRange":3}, - "E692": {"name":"苍蓝之灵-圣","hp":150000,"atk":15000,"def":5000,"money":20,"exp":5000,"point":0,"special":[4,28],"paleShield":25}, - "E693": {"name":"苍蓝之灵-战","hp":250000,"atk":25000,"def":6000,"money":20,"exp":5000,"point":0,"special":[32],"assimilateRange":6}, - "E698": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E699": {"name":"苍蓝朝拜者","hp":80000,"atk":12000,"def":6000,"money":9,"exp":900,"point":0,"special":[1,30],"crit":400,"translation":[0,1]}, - "E700": {"name":"亡语之魂","hp":75000,"atk":10000,"def":9000,"money":8,"exp":800,"point":0,"special":[29,30],"haloRange":3,"specialHalo":[25],"melt":15,"translation":[-1,0]}, - "E701": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E702": {"name":"防守之魂","hp":10000,"atk":12000,"def":4000,"money":0,"exp":0,"point":0,"special":[3,29,30],"specialHalo":[26],"iceCore":10,"translation":[1,0],"haloRange":3}, - "E703": {"name":"呐喊之魂","hp":40000,"atk":16000,"def":6000,"money":8,"exp":800,"point":0,"special":[29],"specialHalo":[27],"haloRange":3,"iceCore":null,"fireCore":10,"translation":null,"displayIdInBook":null}, - "E704": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E705": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E707": {"name":"宝箱之灵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[19,34],"description":"前身似乎是...宝箱怪?不知受到了什么法术,变成了这幅鬼样子。闪亮闪亮的,让人欲罢不能,看到他就想要立刻冲过去拿下他。这里的造物主似乎喜欢开玩笑,总是在那些关键位置放置些这些东西,然后在沿途放上物资。这样,那些胜利者,或者说...正在征战四方这位无名开国者,便能够在这稍作休息,恢复精力。"}, - "E708": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E709": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, - "E710": {"name":"新敌人","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]} + "keiskeiFairy": {"name":"铃兰花妖","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "tulipFairy": {"name":"郁金香花妖","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "purpleBowman": {"name":"高级弓兵","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[]}, + "bearDown": {"name":"熊出没","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"faceIds":{"down":"bearDown","left":"bearLeft","right":"bearRight","up":"bearUp"},"bigImage":"bear.png"}, + "bearLeft": {"name":"熊出没","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"faceIds":{"down":"bearDown","left":"bearLeft","right":"bearRight","up":"bearUp"}}, + "bearRight": {"name":"熊出没","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"faceIds":{"down":"bearDown","left":"bearLeft","right":"bearRight","up":"bearUp"}}, + "bearUp": {"name":"熊出没","hp":0,"atk":0,"def":0,"money":0,"exp":0,"point":0,"special":[],"faceIds":{"down":"bearDown","left":"bearLeft","right":"bearRight","up":"bearUp"}} } \ No newline at end of file diff --git a/public/project/floors/MT0.js b/public/project/floors/MT0.js index f4c9896..454a01b 100644 --- a/public/project/floors/MT0.js +++ b/public/project/floors/MT0.js @@ -1,113 +1,36 @@ main.floors.MT0= { "floorId": "MT0", - "title": "洞穴", + "title": "主塔 0 层", "name": "0", "canFlyTo": true, "canFlyFrom": true, "canUseQuickShop": true, "cannotViewMap": false, - "defaultGround": "T331", + "defaultGround": "ground", "images": [], "ratio": 1, "map": [ - [20049,20049,20049,20049,20049,20049,20050, 91,20048,20049,20049,20049,20049,20049,20043], - [20057,20057,20057,20057,20057,20057,20058, 0,20056,20057,20057,20057,20057,20057,20040], - [20065,20065,20065,20065,20065,20065,20074, 0,20064,20065,20065,20065,20065,20065,20040], - [141,141,141,141, 0, 0, 0, 0, 0, 0, 0,141, 33, 33,20040], - [141, 34, 34,141, 0,141, 0, 0, 0,141, 0,494,482,482,20040], - [141, 33, 33,492, 0,141, 0, 0, 0,141, 0,141, 33, 33,20040], - [141, 34, 34,141, 0,141, 0, 0, 0,141, 0,141,141,141,20040], - [141,141,141,141, 92, 0, 0,141, 0, 0, 0,141, 33, 33,20040], - [141, 34, 34,141, 0,141, 0, 0, 0,141, 0,494,482,482,20040], - [141, 33, 33,492, 0,141, 0,642, 0,141, 0,141, 33, 33,20040], - [141, 34, 34,141, 0,141, 45,559, 46,141, 0,141,141,141,20040], - [141,141,141,141, 0, 0,558, 0,560, 0, 0,141, 33, 33,20040], - [141, 33, 33,141, 0,141,367, 0,129,141, 0,494,482,482,20040], - [141, 33, 33,492, 0,141,129, 0,129,141, 0,141, 33, 33,20040], - [141,141,141,141,141,141,141,141,141,141,141,141,141,141,20040] + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ], - "firstArrive": [ - { - "type": "setCurtain", - "color": [ - 0, - 0, - 0, - 0 - ], - "time": 500, - "keep": true - }, - "\t[原始人]又到了秋天,天气开始变凉了", - "秋风从石头的缝隙中穿过,原始人站在山洞中,感受着秋风的凉意,心中涌起一丝熟悉的紧迫感。", - "他知道,随着秋天的到来,山上的树木将变得干燥,而山火的风险也会随之增加。", - "他也知道,每一次暴雨过后,山洞外的河流可能会泛滥,淹没他们的狩猎场。", - "\t[原始人]柴火的消耗逐渐变多了,看来需要再上山砍柴了啊。", - "他从石头的缝隙中看去,看到满山的枫叶在秋风中摇曳,仿佛在提醒他时间的流逝。", - "这些自然的变迁,虽然无情,却也教会了他如何适应和生存。", - "\t[原始人]今天的天气似乎不错,那就上山看看吧。", - { - "type": "function", - "function": "function(){\nif (!core.isReplaying()) Mota.require('@motajs/legacy-ui').fixedUi.open('chapter', { chapter: '序章 起源' });\n}" - } - ], + "firstArrive": [], "parallelDo": "", - "events": { - "6,12": [ - "\t[原始人]\b[up,hero]出去找些柴火" - ], - "8,13": [ - "本塔有很多新的功能,所有的说明都详细地写在了前方的百科全书里面,里面包含所有的功能说明,不阅读可能会影响正常的游戏体验,请仔细阅读。", - "例如你现在首先感受到的应该是状态栏的变动,你可以打开百科全书阅读状态栏相关内容。里面包含状态栏的功能说明与布局说明等。", - "注意百科全书中的内容非常基础详细,如果对魔塔有一定的了解,可以选择性地阅读。", - "打开百科全书的快捷键是H" - ], - "8,12": [ - "第一章计分方式:生命+5000*黄钥匙+15000*蓝钥匙" - ], - "6,13": [ - "原声音乐可以在网易云音乐搜索:魔塔 人类:开天辟地 bgm,部分音乐因为版权问题可能无法播放或者不在歌单内" - ], - "3,7": [ - "这里允许你跳转到第二章。如果你没玩过第一章,那么建议自己游玩,如果玩过却又不想再打一遍,可以由此跳转", - { - "type": "confirm", - "text": "是否跳转到第二章?", - "yes": [ - { - "type": "function", - "function": "function(){\nMota.require('@motajs/legacy-ui').swapChapter(2, flags.hard);\n}" - } - ], - "no": [] - } - ] - }, - "changeFloor": { - "7,0": { - "floorId": "MT1", - "loc": [ - 7, - 14 - ] - } - }, + "events": {}, + "changeFloor": {}, "afterBattle": {}, - "afterGetItem": { - "6,11": [ - "这个可以查看bgm,也可以设置bgm,也可以清空设置的bgm" - ], - "8,11": [ - "请仔细阅读这个道具内的说明", - "注意,虽然内容很多,但是大部分都是“无用”信息,例如对那些ui的说明,基本上打开ui后就能看出来不同区域的功能的,百科全书的说明基本只是对一些细节进行了说明。因此一般来说是不需要非常认真地读关于ui的信息的。", - "而对于那些新的内容,例如怪物标记等,可能需要阅读一下。", - "这里说一个非常重要的一点,那就是本塔中几乎所有ui都是可以滚动的,尝试用滚轮或者手指拖动进行滚动,包括状态栏!" - ], - "7,10": [ - "里面包含了所有游戏的设置,请仔细查看设置" - ] - }, + "afterGetItem": {}, "afterOpenDoor": {}, "cannotMove": {}, "bgmap": [ @@ -116,16 +39,7 @@ main.floors.MT0= "fgmap": [ ], - "width": 15, - "height": 15, - "autoEvent": {}, - "bgm": "cave.opus", - "beforeBattle": {}, - "bg2map": [ - -], - "fg2map": [ - -], - "cannotMoveIn": {} + "width": 13, + "height": 13, + "autoEvent": {} } \ No newline at end of file diff --git a/public/project/floors/MT1.js b/public/project/floors/MT1.js deleted file mode 100644 index e26b325..0000000 --- a/public/project/floors/MT1.js +++ /dev/null @@ -1,105 +0,0 @@ -main.floors.MT1= -{ - "floorId": "MT1", - "title": "洞穴", - "name": "1", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "T331", - "bgm": "cave.opus", - "firstArrive": [ - "\t[原始人]不知为何,最近这些蝙蝠的攻击性变得很强,而且还不知道从哪冒出来了这些黏糊糊的东西。", - "\t[原始人]之前捡到了一个来历不明的方块状东西(怪物手册),好像能打开,不知道里面有没有写什么", - "\t[原始人]或许会有一些东西吧,但愿是我能看懂的文字,别像之前杰克给我的东西一样,完全看不懂是什么文字。", - "\t[系统提示]游戏中每个怪物都有自己的说明,这些说明不会影响正常的剧情流程,但查看它们可以更好地了解本游戏的世界观,剧情玩家建议阅读。", - { - "type": "if", - "condition": "(flag:hard===1)", - "true": [ - "游戏的基础玩法可以在百科全书中查看,你可以按H或者在道具栏打开。" - ] - } - ], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "7,14": { - "floorId": "MT0", - "loc": [ - 7, - 0 - ] - }, - "0,4": { - "floorId": "MT2", - "loc": [ - 14, - 4 - ] - }, - "11,0": { - "floorId": "MT3", - "loc": [ - 10, - 14 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [20044,20049,20049,20049,20049,20049,20049,20049,20049,20049,20050, 91,20048,20049,20043], - [20050,20057,20057,20057,20057,20057,20057,20057,20057,20057,20058, 0,20056,20057,20040], - [20058,20065,20065,20065,20065,20065,20065,20065,20065,20065,20074, 0,20064,20065,20040], - [20074, 0,141, 27, 0, 28, 0, 0,206,141,141, 32, 0, 0,20040], - [ 92, 27,141,141,141,141,141,141, 0, 31, 0,202,141,203,20040], - [20034, 0, 31, 0, 0,141, 0,141,141,141,141,141,141, 0,20040], - [20042,205,141,141,201,141, 32, 0,141, 28, 0,141, 0, 0,20040], - [20042, 0, 0,141, 0,141,141,202,141, 0, 31,202, 0, 31,20040], - [20042, 0, 31,141, 0, 0, 0, 0, 0,205, 17, 17, 17, 17,20040], - [20042,141,141,141,205,141,141,141,141, 0,203, 32, 0, 27,20040], - [20042, 0, 0,201, 0, 0,141, 0,141,202, 17, 0, 0, 0,20040], - [20042,202, 17, 17, 0, 0,205, 31, 0, 28, 17, 28, 0, 32,20040], - [20042, 0, 27, 17, 31,141,141,141,141,201, 17, 17, 17, 17,20040], - [20042, 32, 0, 17, 0,201, 0, 0,201, 31,202, 0, 32, 0,20040], - [20036,20033,20033,20033,20033,20033,20034, 93,20032,20033,20033,20033,20033,20033,20035] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141,141,141,141,141], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141, 0, 0, 0, 0], - [ 0, 0,141,141, 0, 0, 0, 0, 0, 0,141, 0, 0, 0, 0], - [ 0, 0, 0,141, 0, 0, 0, 0, 0, 0,141,141,141,141,141], - [ 0, 0, 0,141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "beforeBattle": {}, - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT10.js b/public/project/floors/MT10.js deleted file mode 100644 index 116abdc..0000000 --- a/public/project/floors/MT10.js +++ /dev/null @@ -1,76 +0,0 @@ -main.floors.MT10= -{ - "floorId": "MT10", - "title": "草原", - "name": "10", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "grass", - "bgm": "grass.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,7": { - "floorId": "MT6", - "loc": [ - 14, - 7 - ] - }, - "7,0": { - "floorId": "MT11", - "loc": [ - 7, - 14 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [ 20, 20, 20, 20, 20, 20, 20, 91, 20, 20, 20, 20, 20, 20, 20], - [ 20, 0, 28,372, 29, 20, 0, 0,267, 0, 0, 20, 0, 0, 20], - [ 20, 33,381, 20, 32, 20, 33, 0, 20, 33, 29, 20, 33, 0, 20], - [ 20, 0, 27, 20, 29,368, 0, 0, 20, 0, 0,276, 0, 0, 20], - [ 20,492, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,369, 20], - [ 20, 0, 29, 20, 0, 27,372, 0, 20, 0, 0, 20, 0, 0, 20], - [ 20,204, 20, 20, 21, 34, 20, 0, 20, 29, 34, 20, 29, 33, 20], - [ 92, 0, 33, 20, 20, 20, 20,224, 20, 0, 0,209, 0, 0, 20], - [ 20, 0, 0,204, 0, 20, 0, 28, 0,204, 20, 20, 20, 20, 20], - [ 20, 20, 20, 20, 0, 20, 34, 0, 20, 0, 20, 0, 27, 0, 20], - [ 20, 32, 29, 0, 34, 20, 20, 20, 20, 0,368, 29, 33, 29, 20], - [ 20,209, 20, 20, 20, 20, 0, 0, 20, 20, 20, 20, 20, 0, 20], - [ 20, 0, 20, 33, 0,204, 29, 34, 20, 0, 33, 0, 20, 0, 20], - [ 20, 33,276, 0, 33, 20, 0, 0,209, 0, 0, 0,276, 0, 20], - [ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20] -], - "bgmap": [ - -], - "fgmap": [ - -], - "beforeBattle": {}, - "weather": [ - "sun", - 8 - ], - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT11.js b/public/project/floors/MT11.js deleted file mode 100644 index 2d1ce51..0000000 --- a/public/project/floors/MT11.js +++ /dev/null @@ -1,84 +0,0 @@ -main.floors.MT11= -{ - "floorId": "MT11", - "title": "草原", - "name": "11", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "grass", - "bgm": "grass.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "7,11": [ - "设定说明之额外伤害", - "这是一种无法被减免的伤害,在破防的基础上,会在计算过每回合造成伤害后将额外伤害加在每回合伤害上", - "例如,你对A怪物每回合造成10点伤害,你有10点额外伤害,那么这时候你每回合就可以对它造成20点伤害", - "该属性对坚固怪同样有效", - "更多详细信息可在百科全书中查看" - ] - }, - "changeFloor": { - "7,14": { - "floorId": "MT10", - "loc": [ - 7, - 0 - ] - }, - "7,0": { - "floorId": "MT12", - "loc": [ - 7, - 14 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [ 20, 20, 20, 20, 20, 20, 20, 91, 20, 20, 20, 20, 20, 20, 20], - [ 20, 33, 0,369, 0, 0, 20, 33, 0,373, 0, 20, 29, 0, 20], - [ 20, 0,381, 20, 0, 0, 20, 0, 0, 20, 28, 20, 0, 33, 20], - [ 20, 20, 20, 20,368, 20, 20, 20, 20, 20, 0, 20, 20, 0, 20], - [ 20, 0, 28,369, 33, 0,369, 27, 0, 20, 33,369, 0, 28, 20], - [ 20, 33, 0, 20, 0, 0, 20, 0, 27,368, 0, 20, 20, 20, 20], - [ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,276, 20, 0, 29, 20], - [ 20, 34, 0, 20, 0, 32, 20, 0, 27, 20, 0,372, 29, 0, 20], - [ 20, 0, 29,368, 32, 29, 20, 33, 0,369, 32, 20, 20, 20, 20], - [ 20, 20, 20, 20, 20,372, 20, 20, 20, 20, 0,372, 0, 34, 20], - [ 20, 34, 32, 20, 34, 0, 20, 0, 32, 28,224, 20, 29, 0, 20], - [ 20, 29, 29,370,372, 20, 20,129, 20, 20, 0, 20, 0, 34, 20], - [ 20, 29, 29, 20, 0, 27,368, 33, 33, 20, 32, 20, 20, 20, 20], - [ 20, 32, 34, 20, 29, 0, 20, 33, 33,368, 0,276, 0, 34, 20], - [ 20, 20, 20, 20, 20, 20, 20, 93, 20, 20, 20, 20, 20, 20, 20] -], - "bgmap": [ - -], - "fgmap": [ - -], - "beforeBattle": {}, - "weather": [ - "sun", - 8 - ], - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT12.js b/public/project/floors/MT12.js deleted file mode 100644 index 231e8ec..0000000 --- a/public/project/floors/MT12.js +++ /dev/null @@ -1,156 +0,0 @@ -main.floors.MT12= -{ - "floorId": "MT12", - "title": "草原", - "name": "12", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "grass", - "bgm": "grass.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "7,1": [ - "\t[原始人]\b[down,hero]杰克?你怎么在这?", - "\t[杰克,thief]\b[down,7,1]我刚刚出山洞,就发现了一堆怪物。", - "\t[杰克,thief]\b[down,7,1]那些怪物冲着我就跑过来,我根本打不过他们。", - "\t[杰克,thief]\b[down,7,1]我就跑到了这里。", - "\t[杰克,thief]\b[down,7,1]多谢你救了我。", - "\t[原始人]\b[down,hero]不用多谢了,咱都是兄弟的。", - "\t[杰克,thief]\b[down,7,1]你来这里是要干什么?", - "\t[原始人]\b[down,hero](他好像没有注意到绿色结晶,就不要提这件事了吧)", - "\t[原始人]\b[down,hero]我要上山砍一些柴火。", - "\t[原始人]\b[down,hero]但是上山的路被强大的怪物堵死了,我根本上不去。", - "\t[杰克,thief]\b[down,7,1]这样啊。", - "\t[杰克,thief]\b[down,7,1]正好,我最近学会了一招,能让你避开那些怪物,我来教给你吧!", - "获得技能:跳跃\n快捷键2,消耗200点生命值,困难消耗400点,一个地图只能使用3次\n如果前方为可通行的地面,则不能使用该技能\n如果前方为怪物,则将怪物移至勇士视线上第一个不能通行的方块后\n如果前方为障碍物,则直接跳到该障碍物的后方", - "\t[原始人]\b[down,hero]多谢杰克兄弟了啊。", - "\t[杰克,thief]\b[down,7,1]不过还是要小心山上的那些怪物,那些怪物都很强。", - "\t[原始人]\b[down,hero]我明白,但是我必须上山,不然都要饿死冻死了。", - "\t[杰克,thief]\b[down,7,1]那我就不打扰你了,咱们之后再见。", - "去南方那个之前过不去的地方推进游戏剧情", - "手机端可以点击右下角的难度来切换下方工具栏至数字键", - { - "type": "function", - "function": "function(){\nconst HeroSkill = Mota.require('@user/data-state').HeroSkill;\nHeroSkill.learnSkill(HeroSkill.Jump);\n}" - }, - { - "type": "hide", - "remove": true - } - ], - "7,9": [ - "把四个骷髅卫兵杀死开启机关门" - ] - }, - "changeFloor": { - "7,14": { - "floorId": "MT11", - "loc": [ - 7, - 0 - ] - } - }, - "afterBattle": { - "1,1": [ - { - "type": "setValue", - "name": "flag:door_MT12_7_3", - "operator": "+=", - "value": "1" - } - ], - "4,2": [ - { - "type": "setValue", - "name": "flag:door_MT12_7_3", - "operator": "+=", - "value": "1" - } - ], - "10,2": [ - { - "type": "setValue", - "name": "flag:door_MT12_7_3", - "operator": "+=", - "value": "1" - } - ], - "13,1": [ - { - "type": "setValue", - "name": "flag:door_MT12_7_3", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "7,3": { - "0": { - "condition": "flag:door_MT12_7_3==4", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT12_7_3", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "map": [ - [ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], - [ 20,210, 0, 29, 33, 20,381,123,381, 20, 33, 29, 0,210, 20], - [ 20, 0, 20, 20,210, 20, 33,381, 33, 20,210, 20, 20, 0, 20], - [ 20, 33, 20, 20, 20, 20, 20, 85, 20, 20, 20, 20, 20, 33, 20], - [ 20, 27, 29, 0,369, 20, 0,373, 0, 20,369, 0, 29, 27, 20], - [ 20, 20, 20, 20, 0, 20, 34, 20, 34, 20, 0, 20, 20, 20, 20], - [ 20, 29, 0, 34,209, 0, 28, 20, 28, 0,209, 34, 0, 29, 20], - [ 20, 20, 20,368, 20, 20, 20, 20, 20, 20, 20,368, 20, 20, 20], - [ 20, 0,372, 0, 0, 20, 29, 20, 29, 20, 0, 0,372, 0, 20], - [ 20, 0, 20, 0, 20, 20, 0,129, 0, 20, 20, 0, 20, 0, 20], - [ 20, 34, 20, 27, 34, 0,248, 0,248, 0, 34, 27, 20, 34, 20], - [ 20, 28, 20, 20, 20, 20, 20,248, 20, 20, 20, 20, 20, 28, 20], - [ 20, 0, 20, 0, 34, 0,224, 0,224, 0, 34, 0, 20, 0, 20], - [ 20, 0,276, 0, 29, 0, 20, 0, 20, 0, 29, 0,276, 0, 20], - [ 20, 20, 20, 20, 20, 20, 20, 93, 20, 20, 20, 20, 20, 20, 20] -], - "bgmap": [ - -], - "fgmap": [ - -], - "beforeBattle": {}, - "weather": [ - "sun", - 8 - ], - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT13.js b/public/project/floors/MT13.js deleted file mode 100644 index 400eb04..0000000 --- a/public/project/floors/MT13.js +++ /dev/null @@ -1,80 +0,0 @@ -main.floors.MT13= -{ - "floorId": "MT13", - "title": "山脚", - "name": "13", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "grass", - "bgm": "mount.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "7,14": { - "floorId": "MT14", - "loc": [ - 7, - 0 - ] - }, - "7,0": { - "floorId": "MT7", - "loc": [ - 7, - 14 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "7,14": { - "2": null - } - }, - "cannotMove": {}, - "map": [ - [152,152,152,152,152,152,152, 91,152,152,152,152,152,152,152], - [152, 27,403,152, 0,152, 34, 0, 34,152, 0, 33,255, 32,152], - [152,482, 28,152, 29,152, 34,381, 34,152, 27, 0,152, 29,152], - [152,498,152,152, 34,152,152,210,152,152,152,152,152, 28,152], - [152, 0, 29, 34,370, 0, 27, 0, 0, 34, 29,152, 32, 32,152], - [152,152,152,152,152,152,152, 0,152,152, 0,152,152,210,152], - [152, 27, 33,152, 0, 0, 34,271, 0, 34,370, 0, 0, 0,152], - [152, 33,381,152,152,152, 0,152,381, 0,152,255,152,152,152], - [152,152,211, 34, 28,152, 0,152,152,152,152, 29, 0, 29,152], - [152,381, 0,152, 34,152,374, 0,492,482,492, 34, 28, 34,152], - [152,152,152,152,370,152, 34,152, 33,152,492,152,152,152,152], - [152, 0, 29, 34, 0,152, 27, 0,210,152, 27, 27,482,403,152], - [152,152,152,374,152,152,152,152, 0,152,152,152,498,152,152], - [152, 34, 0, 0,210, 0, 0, 0,271, 0, 34,381, 0, 34,152], - [152,152,152,152,152,152,152, 93,152,152,152,152,152,152,152] -], - "bgmap": [ - -], - "fgmap": [ - -], - "beforeBattle": {}, - "weather": [ - "sun", - 8 - ], - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT14.js b/public/project/floors/MT14.js deleted file mode 100644 index 779882c..0000000 --- a/public/project/floors/MT14.js +++ /dev/null @@ -1,439 +0,0 @@ -main.floors.MT14= -{ - "floorId": "MT14", - "title": "山路", - "name": "14", - "width": 128, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "T331", - "bgm": "mount.opus", - "firstArrive": null, - "eachArrive": [ - { - "type": "loadBgm", - "name": "plot1.opus" - } - ], - "parallelDo": "", - "events": { - "24,7": { - "trigger": "action", - "enable": true, - "noPass": null, - "displayDamage": true, - "data": [ - { - "type": "if", - "condition": "(switch:A===true)", - "true": [ - "\t[原始人]\b[up,hero]看来是有什么机关" - ], - "false": [ - "\t[原始人]\b[up,hero]这里有个门?", - "\t[原始人]\b[up,hero]奇怪,之前都没有的", - "\t[原始人]\b[up,hero]暴力破坏试试", - { - "type": "animate", - "name": "hand", - "loc": [ - 24, - 7 - ] - }, - { - "type": "animate", - "name": "hand", - "loc": [ - 24, - 7 - ] - }, - { - "type": "animate", - "name": "hand", - "loc": [ - 24, - 7 - ] - }, - "\t[原始人]\b[up,hero]不行,连一点痕迹都没有", - "\t[原始人]\b[up,hero]看来是有什么机关", - { - "type": "setValue", - "name": "switch:A", - "value": "true" - } - ] - } - ] - }, - "78,5": [ - "别给我说这个地方不知道怎么过,用2技能就好了", - { - "type": "setText", - "position": "down" - }, - "注意,2技能的要求是前方是不可通行的图块,由于这里的左面是可以通行的地面,所以只能在这里使用", - { - "type": "setText", - "position": "center" - } - ], - "7,1": { - "trigger": null, - "enable": false, - "noPass": null, - "displayDamage": true, - "opacity": 1, - "filter": { - "blur": 0, - "hue": 0, - "grayscale": 0, - "invert": false, - "shadow": 0 - }, - "data": [ - { - "type": "if", - "condition": "flag:finishChase1", - "true": [ - { - "type": "function", - "function": "function(){\ndelete flags.__bgm__;\ndelete flags.MT14Jump;\ndelete flags['MT14@24@7@A'];\ndelete flags.finishChase1;\ndelete flags.cave;\n}" - }, - { - "type": "confirm", - "text": "是否跳过剧情", - "yes": [ - { - "type": "changeFloor", - "floorId": "MT17", - "loc": [ - 0, - 7 - ], - "direction": "right" - } - ], - "no": [ - { - "type": "pauseBgm" - }, - "\t[野蛮人,hero]\b[down,hero]呼!", - "\t[野蛮人,hero]\b[down,hero]总算逃出来了。", - "\t[野蛮人,hero]\b[down,hero]没想到柴火没砍成,还碰到了狼。", - "\t[野蛮人,hero]\b[down,hero]真是倒了血霉了。", - "\t[野蛮人,hero]\b[down,hero]算了,明天再砍柴吧。", - { - "type": "setCurtain", - "color": [ - 0, - 0, - 0, - 1 - ], - "time": 1500, - "keep": true - }, - { - "type": "setText", - "text": [ - 0, - 0, - 0, - 1 - ], - "background": "winskin3.png" - }, - "人类简史——起源篇", - { - "type": "playSound", - "name": "paper.opus" - }, - "但他已经抑制不了自己的好奇心。", - { - "type": "playSound", - "name": "paper.opus" - }, - "人类嘛,总会在好奇心的驱使下前进。", - { - "type": "playSound", - "name": "paper.opus" - }, - "但是,他们却用好奇心给自己带来了灾难,", - { - "type": "playSound", - "name": "paper.opus" - }, - "只得利用历史中的野蛮人的好奇心来拯救自己。", - { - "type": "playSound", - "name": "paper.opus" - }, - "不出所料,这个野蛮人走上了勇气之路。", - { - "type": "playSound", - "name": "paper.opus" - }, - { - "type": "setText", - "text": [ - 255, - 255, - 255, - 1 - ], - "background": "winskin2.png" - }, - { - "type": "changeFloor", - "floorId": "MT17", - "loc": [ - 0, - 7 - ], - "direction": "right" - } - ] - } - ] - } - ] - }, - "21,7": [ - { - "type": "forbidSave" - } - ], - "127,1": [ - "你是怎么办到的?!", - { - "type": "function", - "function": "function(){\nif (!core.isReplaying()) {\n\tcore.addMountSign(2);\n}\n}" - } - ], - "26,14": [ - "不作死就不会死", - { - "type": "function", - "function": "function(){\nif (!core.isReplaying()) {\n\tcore.addMountSign(1);\n}\n}" - } - ], - "8,2": [ - { - "type": "text", - "text": "这一层有一个必须使用跳跃的地方,需要1个跳跃次数,你一共有3个跳跃次数,请规划好" - }, - { - "type": "text", - "text": "不要吐槽为什么天气变化这么大(" - } - ], - "80,3": [ - "你可以使用楼传传出去" - ] - }, - "changeFloor": { - "7,0": { - "floorId": "MT13", - "loc": [ - 7, - 14 - ] - }, - "127,7": { - "floorId": "MT15", - "loc": [ - 0, - 7 - ] - } - }, - "afterBattle": { - "21,9": [ - { - "type": "setValue", - "name": "flag:door_MT14_24_7", - "operator": "+=", - "value": "1" - } - ], - "21,10": [ - { - "type": "setValue", - "name": "flag:door_MT14_24_7", - "operator": "+=", - "value": "1" - } - ], - "22,10": [ - { - "type": "setValue", - "name": "flag:door_MT14_24_7", - "operator": "+=", - "value": "1" - } - ], - "22,9": [ - { - "type": "setValue", - "name": "flag:door_MT14_24_7", - "operator": "+=", - "value": "1" - } - ], - "91,3": [ - { - "type": "setValue", - "name": "flag:door_MT14_95_3", - "operator": "+=", - "value": "1" - } - ], - "93,3": [ - { - "type": "setValue", - "name": "flag:door_MT14_95_3", - "operator": "+=", - "value": "1" - } - ], - "93,5": [ - { - "type": "setValue", - "name": "flag:door_MT14_95_3", - "operator": "+=", - "value": "1" - } - ], - "91,5": [ - { - "type": "setValue", - "name": "flag:door_MT14_95_3", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": { - "26,7": [ - "\t[原始人]\b[up,hero]下面是一段很长的山路,要集中精力,不要被埋伏了", - "游戏特性:使用跳跃技能时,悬崖视为不可通行但不可对着它使用跳跃" - ] - }, - "afterOpenDoor": {}, - "autoEvent": { - "24,7": { - "0": { - "condition": "flag:door_MT14_24_7==4", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT14_24_7", - "value": "null" - }, - { - "type": "sleep", - "time": 500 - }, - "\t[原始人]\b[up,hero]原来是这样吗" - ] - }, - "1": null - }, - "95,3": { - "0": { - "condition": "flag:door_MT14_95_3==4", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT14_95_3", - "operator": "=", - "value": "null" - } - ] - } - }, - "7,1": { - "0": null, - "1": null, - "2": null - } - }, - "cannotMove": {}, - "map": [ - [152,152,152,152,152,152,152, 91,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,20053, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20075], - [152,376,482,152,482, 27,152, 0, 0,236, 0, 0, 33,152,482,378, 21,381, 0, 27,152, 34, 29,152,152,20056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129], - [152, 0, 28,152,381, 0,235, 21,129,152,502,152,381,492,494,152,152,152,152,482,152, 29, 34,152,152,20064,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065, 0], - [152,152, 0,152,492,152,152, 0,152, 29, 33,152, 0,152,376,482, 21,378,152, 0,498, 34, 29,152,152, 27,336, 33, 0, 28, 0,345, 33,381, 0,235,141, 27,492,376,378,403,484, 0, 22,141, 21,336, 27, 28,381, 0, 34,502, 34,141,141,141,376,403,403, 0,254,333, 0, 0, 32,336, 32,333,376, 0,482,403,482,503, 0, 34,378,336,129, 34,376, 0,336, 28,492,376,378, 21,403,503, 33,503,482, 85, 0,378,375,20007,482, 0,375,494, 0,207, 0,141, 0,499, 0,141, 22, 27,345,492, 0,376,345,403, 21, 34,378,336,376,381,376,20053], - [152,482,498, 0, 27, 0,152,482,152, 0,152,152, 0,152,482,152,371,403,152,152,152,492,254,152,152,482,498, 0,345,345, 0,345, 0,336,336, 0,381, 32,141,141,492,141,141,141,371,141, 27,336,141,141,498,141,502,333,502, 0,403,492, 34,141,333,333, 0, 32, 32, 27, 21,502, 0,333,141,141,492,141,503,141,141,141, 34,336,336, 33,378, 0,336, 28,345,222,141,141,141, 33,336, 33,390,396, 0,482, 0,492, 0,20007, 33,20007, 34,20007, 27,141,482,141, 0,141, 28, 33,345, 0,336, 34,345, 0,340,376, 0,336, 32,378, 32,20056], - [152,492,152,482, 0,152,152,152,152,152,152, 0,502,152,152,152, 0,152,152, 0,482, 29, 0,152,152,381,336, 27,492, 27,272, 28,498, 33,336,502,141,141,141,235, 0, 34,403,492, 0,254, 33,336, 0, 27, 0,492, 34,502, 34,141, 0,371, 0,141, 0,378,211,333, 0,503,336,336,502, 0, 28, 32,498,141, 0,376,482,498,129, 0,375, 34,403, 0,336, 28,345, 0, 33,141,141,503, 33,503,403,403, 0,336,378,482,499,20007,378,20007,381,20007,381,378, 0,141, 34,141,345,381, 0,499,336, 0,345, 32,340,492,222,336,492,336,222, 0], - [152,482,152,152,235,152, 29, 34,152, 33, 0, 21,152,152,272, 0,502,482,502, 28, 0,235,152,152,152,336,336, 0,345,345, 33,345,336, 28,336, 0, 0,502, 0, 32,141,141, 0,141, 33,141, 0,381,211, 33,141,141,502,333,502,141,141,141,141,141,336,482,336,336,371,482,376,492, 33,333,502,141,381,141,375,141,141, 0,345, 0, 0, 0, 0, 0, 0,375, 0,381,371,141,141,141,141, 21,336,403,371, 0,20007,492,20007,20007, 33,20007,378,20007,141,141,141,141,378,141,345,345,492, 0, 27,503,345,345,340, 0, 0,336, 0,336, 34,336], - [152, 0, 28, 21, 0,492, 34,502, 0, 0, 27,212, 0, 0, 33, 29,152,152,152,492,152, 0, 33, 0, 85, 0,487,254, 0,340,381,340,502, 0, 0,381,333,141,141,503,141,141,498, 0, 28,141,498,492,336, 0, 28,381, 34,502, 34,141,381, 28,376, 0,503,381,492,403,403,381,482,336, 27,333, 0, 32, 0,141, 0, 32,141, 27, 33,371,345, 0,333,336,336,482,336,336, 33, 27,378,381, 33,207,403,482,340,351, 34,381,378, 34,503,20007,381,20007, 0, 0, 34,376,272,381, 33, 0, 0,371,492, 34,403, 0, 0,492, 0,381, 32,336,403, 94], - [152,152,152, 0,152,152,152,152,502,492,152,152,152,152, 0, 0,152, 0, 29, 33,152,152,152,152,152,336,336,340, 0,340,502, 0, 27,336,336,492,333,376, 0,403,336,141, 27,345,235, 0, 33, 27,336,141,141,141,494,492, 21,492, 0,141,141,141,482,336,336,403,403, 0, 0, 0, 0, 0, 0, 0,272, 0,381, 32,141,336,336,403,345, 0,333,381, 0,503, 34,403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,371,20007,20007,20007,20007,20007, 34,20007,141,141,141,141,345,345,503,345,345, 0, 28,503,336,336, 34, 0,375,336, 0,207, 34,336], - [152,381, 0,221,152, 0, 0, 33, 0,212,152,381, 34,492,236,492,152, 0,152, 0,152,498,498,152,152,381,336, 0,502, 33, 29,340,502, 0,333,378,403,503,141, 34,336,381, 0,336,141,141,141, 0,336,482,482,141, 33,336,403, 0,371, 0,366,366,381,498, 0,492,345, 0, 0,498,336, 0, 0, 0, 0,141,141,141,141, 27, 28,484,345,498, 0, 33, 27,345,371, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 33,381,378,381, 0,503,492, 34,376, 0,141, 33,492,376, 0,503, 33,336,378, 34,499, 0,336, 0,336,371,336,492,20037], - [152,152,152, 0,152,152,152,152,152, 0,152, 34,381,152, 0,482, 0,212,152, 27,152,498,498,152,152,482,211, 0,340,340,340,340, 0,333,333, 33, 17, 28,141,378,492,492,336,336, 34, 28,211, 0,336,492,141,141,403,333,141,141,366, 0,378,494,376,336, 0, 32,345, 0,211, 0, 0,340,376,403, 27,336, 33,403,336,336,336,336,336, 0,336,336,345,345,482,492,376,378,336, 0,482,376, 0,207,333,333,494,336,336,336,336,336,336,336, 0,141,141,141, 0,375, 21, 33,492, 0,336,336,336,494,336, 0, 27,336, 28,381, 28,20045], - [152, 0,482, 27,492,381, 27,482,152, 33,492,492,152,152,152,152,152, 21,152, 0,152,152,492,152,152, 27,336,371,403, 33,376,492,381, 28, 0,371, 17, 34, 27,375,376,378,403, 33,336, 0,336,254, 32, 28,207,376,378,333,482,482,492,482, 0,375, 0,336, 32, 0,235, 0,336, 0, 34,371,482,378, 0, 0,211, 0,492,376,378,403, 33,207, 33, 0, 0,345,403,403,403,403, 33,222,336,403,333,482,376,376,376,503,503,503, 0,403,403, 34,503, 34, 0,381,376,345,378, 0,333,511,390,396,403,484,336, 28, 32,336, 32, 27, 32,20045], - [152,152,211,152,152,152,152,254,152, 0,152,482, 27,152, 0,482,502, 0,152, 0,152,482, 0,152,152,20037,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20067], - [152, 0, 0, 0, 29, 33, 0, 0, 0,374,152, 29,482,211, 0, 28,152,272, 0,211, 0, 22, 27,152,152,20045, 0,336, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17], - [152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,152,20045,129,336, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17] -], - "bgmap": [ - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0, 0,20053,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20075], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0,20056,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20045], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0,20064,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20073,20045], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20037,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20039, 0, 0, 0, 0,20037,20038,20038,20038,20038,20038,20038,20038,20038,20038,20039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20053], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0,20045,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20056], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0,20045,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20064], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20068,20038,20038,20038,20038,20067, 0, 0, 0, 0, 0, 0, 0, 0, 0,20068,20038,20038,20067,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20053,20054, 0, 0,20054,20054,20054,20075, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20076,20054,20054,20054,20054,20054,20054,20054,20054,20054,20055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20056,20057,20152,20153,20057,20057,20057,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047,20057,20057,20057,20057,20057,20057,20057,20057,20057,20058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20064,20065,20152,20153,20065,20065,20065,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047,20065,20065,20065,20065,20065,20065,20065,20065,20065,20074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20037], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20053,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0,20037,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20067], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0, 0,20045, 0,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305,305, 0, 0,20045,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000,20000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "color": [ - 0, - 0, - 0, - 0.3 - ], - "weather": [ - "cloud", - 5 - ], - "beforeBattle": {}, - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT15.js b/public/project/floors/MT15.js deleted file mode 100644 index 155b704..0000000 --- a/public/project/floors/MT15.js +++ /dev/null @@ -1,145 +0,0 @@ -main.floors.MT15= -{ - "floorId": "MT15", - "title": "山路", - "name": "15", - "width": 64, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "T331", - "bgm": "mount.opus", - "color": [ - 0, - 0, - 0, - 0.3 - ], - "weather": [ - "cloud", - 1 - ], - "firstArrive": [ - { - "type": "loadBgm", - "name": "escape.opus" - }, - "\t[野蛮人]\b[up,hero]山路开始崎岖多变了,要更小心一些" - ], - "eachArrive": [], - "parallelDo": "", - "events": { - "44,0": [ - "不愧是你!!!", - { - "type": "function", - "function": "function(){\nif (!core.isReplaying()) {\n\tcore.addMountSign(4);\n}\n}" - } - ], - "62,0": [ - "卧槽!你连这都到了?!", - { - "type": "function", - "function": "function(){\nif (!core.isReplaying()) {\n\tcore.addMountSign(5);\n}\n}" - } - ], - "9,0": [ - "这边没有彩蛋,往右边走→_→", - { - "type": "function", - "function": "function(){\nif (!core.isReplaying()) {\n\tcore.addMountSign(3);\n}\n}" - } - ], - "13,7": [ - "看到下面那个绝对防御怪了吗?", - "它可以刷血", - "具体方法嘛,就是把 攻击+额外攻击 加到刚好破防,然后接近防杀怪物的时候,就可以刷血了,前提是你得有生命回复才行", - "所以嘛,你可能需要压攻击了", - "不过如果你是简单难度不刷血也无所谓啦,完全可以通关" - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT14", - "loc": [ - 127, - 7 - ] - }, - "63,4": { - "floorId": "MT16", - "loc": [ - 0, - 23 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [30144,30145,30146,30147,30144,30145,30146,30147, 0,129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129,20055], - [30152,30153,30154,30155,30152,30153,30154,30155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20057,20057,20057,20057, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20058], - [30160,30161,30162,30163,30160,30161,30162,30163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,336,141,141,141,141,141,141,141,141,141,141,20007,20065,20065,20065,20065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20074], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,390,403,378, 21,484,492, 0, 27, 0, 0, 0, 28, 32,492,396,376,484,403,492,378,492,376,30152,30153,30154,30155, 34,511,484,376,403,378, 0,499, 0, 28,381, 28, 33,511,141,484, 0,269, 0,336,378, 0,512,336,482, 27,381, 0,20007], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,141,141,141,141,512,141, 33, 0, 28, 0,503,141,141,141, 0,336,336,336,340, 0,141, 0,30160,30161,30162,30163, 28,336,336,336,336,336,494,484,390,403,403,396, 0, 0,492, 0,336, 0,482,492,482,336, 0,336,336,336,492,244, 94], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 33,378,492, 0,381, 0,503,141,141,141, 0, 27, 0,141,512, 0, 32,403,340,403,141,403, 0,244, 34, 27,381,492,403, 0,482, 0,378,336,336,336,512,336,492,376,403,378, 28, 0, 0,511, 0,492,390, 0,403, 0,484, 0, 0], - [336,499, 27, 34,381, 34, 28,503,141,376, 33,340,333,333,333, 0, 34,503, 0,336,336,503,336, 0,336,336,403,340, 34,141, 33, 0,492,336,336,336,336, 0,340,340,492, 0,482,482,492, 0,336, 0,340, 0, 27,482,340,336,336,336,492, 0, 0,504,336,492,269, 0], - [ 92, 0,141,141,141,141,141, 33,141,504,340,340,378,129,333, 0, 0,141, 0, 0,336, 0,336, 28, 0,333, 0,340,376,141,378,390,482,403,482,396,512, 0,340,482, 0,376,482,482,336,484,336,381,340,333,333,511,340, 0, 28,482, 0,269,492, 0, 0,378, 0, 0], - [336, 0,492, 27, 0, 34, 27,503, 0, 34, 0,244, 0, 27,482,499,141,141,381, 27,381, 28,499, 0,375,396, 0,511, 0,504, 0,340,340,340,340,340,340,340,340,511,492,340,336,336,336, 0,381,504, 0,482,376, 0, 0, 21, 0, 0,403, 0,512, 0,504,492,336, 0], - [20038,20038,20038,20038, 0, 0, 0, 0, 0,345,345,345,269,492,336, 27, 28,141,381, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0,482,378, 0,403, 0,376,482,504, 0, 0, 0, 27, 0, 0,511,340,381,340,512,333,504,141,141,511,141,141,141, 0,376, 0,376, 0, 0], - [30152,30153,30154,30155, 0, 0, 0, 0, 0,378,482,504, 0, 28,336,381,381,141,492, 0, 0, 0, 0, 0,492,512, 0, 0, 0, 0, 0,492,336,336,336,336,336,336,336,336,336, 0, 0,141,141,141,340,340,340, 0,333, 27, 27,141, 28, 28,141,482,340,482,336,492,512, 0], - [30160,30161,30162,30163, 0, 0, 0, 0, 0,403,376,492, 27, 0,511, 0, 0,511,396,503,503,503, 33, 28,381,381, 28, 33,503,503,503, 34,503, 34,503, 34,503, 34,503, 34,503, 34, 28, 0,403,492,390,484,396, 0,333, 27, 27,492, 28, 28,141,378, 21,403,396,484,403, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,336,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,141,336, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0,20076,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20075, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20076,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20055], - [ 0, 0, 0, 0, 0, 0, 0, 0,20047,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,20047,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065, 0], - [20054,20054,20054,20054,20054,20054,20054,20054,20055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [20057,20057,20057,20057,20057,20057,20057,20057,20058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20037,20038,20038,20038,20038,20039, 0, 0, 0,20045,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [20065,20065,20065,20065,20065,20065,20065,20065,20074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0,20047, 0, 0, 0,20045,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20037], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0,20068,20038,20038,20038,20067,20047, 0, 0, 0, 0, 0,20045,20047, 0, 0, 0,20045], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0, 0,20045,20047, 0, 0, 0,20045], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20053,20054,20054,20054,20054, 0, 0,20054,20054,20054,20054,20055, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0,20068,20038,20038,20038,20038,20038,20067,20047, 0, 0, 0,20045], - [20038,20038,20038,20038,20038,20038,20038,20038,20039, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20056,20057,20057,20057,20057,20152,20153,20057,20057,20057,20057,20058, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0,20045], - [ 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20064,20065,20065,20065,20065,20152,20153,20065,20065,20065,20065,20074, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0,20045], - [ 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20047, 0, 0, 0,20045], - [ 0, 0, 0, 0, 0, 0, 0, 0,20068,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20067, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20068,20038,20038,20038,20067], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,30128,30129,30130,30131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,30136,30137,30138,30139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,30144,30145,30146,30147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [30128,30129,30130,30131, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [30136,30137,30138,30139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [30144,30145,30146,30147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "beforeBattle": {}, - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT16.js b/public/project/floors/MT16.js deleted file mode 100644 index 0915b62..0000000 --- a/public/project/floors/MT16.js +++ /dev/null @@ -1,491 +0,0 @@ -main.floors.MT16= -{ - "floorId": "MT16", - "title": "山顶", - "name": "16", - "width": 25, - "height": 25, - "canFlyTo": true, - "canFlyFrom": false, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "T331", - "bgm": "mount.opus", - "color": null, - "weather": [ - "cloud", - 2 - ], - "firstArrive": [ - { - "type": "pauseBgm" - }, - { - "type": "loadBgm", - "name": "escape.opus" - }, - "\t[野蛮人]\b[up,hero]这里就是山顶了", - "\t[野蛮人]\b[up,hero]砍一些柴火就赶快回去吧", - "\t[野蛮人]\b[up,hero]不要待太久", - "下面是一场追逐战,建议把音乐打开", - "追逐战很简单,跑就完事了" - ], - "eachArrive": [ - { - "type": "pauseBgm" - } - ], - "parallelDo": "", - "events": { - "23,19": [ - { - "type": "confirm", - "text": "是否跳过追逐战", - "yes": [ - { - "type": "setValue", - "name": "flag:finishChase1", - "value": "true" - }, - { - "type": "changeFloor", - "floorId": "MT14", - "loc": [ - 21, - 7 - ] - }, - { - "type": "setBlock", - "number": "T336", - "loc": [ - [ - 25, - 7 - ] - ], - "floorId": "MT14" - }, - { - "type": "function", - "function": "function(){\ncore.status.maps.MT14.canFlyFrom = false;\nMota.require('@user/legacy-plugin-data').chaseInit1();\n}" - }, - { - "type": "show", - "loc": [ - [ - 7, - 1 - ] - ], - "floorId": "MT14" - }, - { - "type": "exit" - } - ], - "no": [ - { - "type": "function", - "function": "function(){\nMota.require('@user/legacy-plugin-data').readyClip();\n}" - }, - { - "type": "choices", - "text": "请选择难度", - "choices": [ - { - "text": "简单(显示逃跑路线)", - "color": [ - 0, - 255, - 93, - 1 - ], - "action": [ - { - "type": "setValue", - "name": "flag:chaseHard", - "value": "0" - } - ] - }, - { - "text": "困难(不显示逃跑路线)", - "color": [ - 255, - 0, - 0, - 1 - ], - "action": [ - { - "type": "setValue", - "name": "flag:chaseHard", - "value": "1" - } - ] - } - ] - }, - "追逐战后录像会进行自动修复,不用担心录像问题", - "如果逃脱失败,或者想重新开始追逐战,直接读取自动存档即可,会跳过前奏", - { - "type": "hideStatusBar", - "toolbox": true - }, - { - "type": "function", - "function": "function(){\ncore.status.maps.MT15.canFlyFrom = false\n}" - } - ] - }, - { - "type": "forbidSave", - "forbid": true - }, - { - "type": "function", - "function": "function(){\nconst controller = Mota.require('@user/legacy-plugin-client').initChase(0);\ncontroller.initAudio(false);\n}" - }, - { - "type": "show", - "loc": [ - [ - 7, - 1 - ] - ], - "floorId": "MT14" - }, - { - "type": "animate", - "name": "amazed" - }, - { - "type": "sleep", - "time": 1000, - "noSkip": true - }, - { - "type": "moveHero", - "time": 1000, - "steps": [ - "backward:3" - ] - }, - { - "type": "setViewport", - "dxy": [ - 0, - -2 - ], - "time": 500 - }, - { - "type": "autoText", - "text": "\t[野蛮人]\b[up,hero]狼!", - "time": 2000 - }, - { - "type": "autoText", - "text": "\t[野蛮人]\b[up,hero]在睡觉", - "time": 2000 - }, - { - "type": "autoText", - "text": "\t[野蛮人]\b[up,hero]悄悄过去把它打死", - "time": 3000 - }, - { - "type": "autoText", - "text": "\t[野蛮人]\b[up,hero]千万不能惊动它", - "time": 2600 - }, - { - "type": "setViewport", - "dxy": [ - 0, - 2 - ], - "time": 500 - }, - { - "type": "moveHero", - "time": 600, - "steps": [ - "up:10" - ] - }, - { - "type": "setCurtain", - "color": [ - 0, - 0, - 0, - 1 - ], - "time": 75, - "moveMode": "easeIn" - }, - { - "type": "setBlock", - "number": "A506", - "loc": [ - [ - 23, - 8 - ] - ] - }, - { - "type": "setCurtain", - "color": [ - 0, - 0, - 0, - 0 - ], - "time": 300, - "moveMode": "easeOut" - }, - { - "type": "setCurtain", - "time": 0 - }, - { - "type": "autoText", - "text": "\t[野蛮人]\b[up,hero]!!!!!", - "time": 2000 - }, - { - "type": "autoText", - "text": "\t[野蛮人]\b[up,hero]它醒了", - "time": 2000 - }, - { - "type": "move", - "loc": [ - 23, - 8 - ], - "time": 300, - "keep": true, - "steps": [ - "down:1" - ] - }, - { - "type": "sleep", - "time": 200, - "noSkip": true - }, - { - "type": "moveHero", - "time": 300, - "steps": [ - "backward:1" - ] - }, - { - "type": "sleep", - "time": 200, - "noSkip": true - }, - { - "type": "move", - "loc": [ - 23, - 9 - ], - "time": 300, - "keep": true, - "steps": [ - "down:1" - ] - }, - { - "type": "sleep", - "time": 200, - "noSkip": true - }, - { - "type": "moveHero", - "time": 300, - "steps": [ - "backward:1" - ] - }, - { - "type": "sleep", - "time": 200, - "noSkip": true - }, - { - "type": "autoText", - "text": "\t[野蛮人]\b[up,hero]糟了,我可打不过它", - "time": 3000 - }, - { - "type": "autoText", - "text": "\t[野蛮人]\b[up,hero]跑,只能跑了!", - "time": 3000 - }, - { - "type": "moveHero", - "time": 200, - "steps": [ - "backward:9" - ] - }, - { - "type": "jump", - "from": [ - 23, - 10 - ], - "dxy": [ - 0, - 2 - ], - "time": 500, - "keep": true - }, - { - "type": "sleep", - "time": 1000, - "noSkip": true - }, - { - "type": "jump", - "from": [ - 23, - 12 - ], - "dxy": [ - 0, - 2 - ], - "time": 500, - "keep": true - }, - { - "type": "sleep", - "time": 1000, - "noSkip": true - }, - { - "type": "jump", - "from": [ - 23, - 14 - ], - "dxy": [ - 0, - 3 - ], - "time": 500, - "keep": true - }, - { - "type": "sleep", - "time": 1000, - "noSkip": true - }, - { - "type": "autoText", - "text": "\t[野蛮人]\b[up,hero]跑,快跑!!!!!!!!!", - "time": 3000 - }, - { - "type": "function", - "function": "function(){\nMota.require('legacy-plugin-client').start(false);\n}" - }, - { - "type": "autoSave" - } - ], - "2,23": [ - "这里是漏怪检测,将会检测\r[gold]洞穴、山路、山脚、平原\r[white]地区的怪物是否清完", - { - "type": "function", - "function": "function(){\nconst enemy = Mota.require('@user/legacy-plugin-data').getRemainEnemyString(core.floorIds.slice(5, 17));\nif (enemy.length === 0) {\n\tcore.insertAction(['当前无剩余怪物!', { \"type\": \"hide\", \"remove\": true }, ]);\n} else {\n\tcore.insertAction(enemy);\n}\n}" - }, - { - "type": "loadBgm", - "name": "escape.opus" - } - ], - "3,23": [ - "即将开始追逐战,最好打开背景音乐,有耳机尽量佩戴耳机,这样游戏体验更佳", - "为了防止你撞上不该开的门,现在会将所有门打开,并删除所有物品", - "追逐的时候不能用2技能,不能用楼传,逃跑后要原路返回山洞", - "追逐战分为两个难度,简单难度会显示逃跑路径,困难模式不显示,困难模式逃跑成功可以获得成就", - "前方会有大约40秒的剧情,之后开始追逐战并自动存档,如果逃跑失败需要重打,可以直接读自动存档", - "\t[野蛮人]\b[up,hero]这墙上有文字?", - "\t[野蛮人]\b[up,hero]真相就藏在智慧之塔中,而想要到达智慧之塔,你必须经过勇气的考验,通过勇气之路。", - "\t[野蛮人]\b[up,hero]智慧之塔?勇气之路?", - "\t[野蛮人]\b[up,hero]算了,先砍柴吧。", - { - "type": "hide", - "remove": true - } - ] - }, - "changeFloor": { - "0,23": { - "floorId": "MT15", - "loc": [ - 63, - 4 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [20076,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20054,20075], - [20047,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20045], - [20047,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20045], - [20047,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30174,30175, 0,20045], - [20047,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30182,30183, 0,20045], - [20047,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30190,30191, 0,20045], - [20047,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30198,30199, 0,20045], - [20047,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30206,30207, 0,20045], - [20047,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30174,30175,507,20045], - [20047,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30182,30183, 0,20045], - [20047,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30190,30191, 0,20045], - [20047,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30198,30199, 0,20045], - [20047,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30206,30207, 0,20045], - [20047,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30174,30175, 0,20045], - [20047,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30182,30183, 0,20045], - [20047,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30190,30191, 0,20045], - [20047,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30198,30199, 0,20045], - [20047,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30206,30207, 0,20045], - [20047,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30128,30129,30130,30131,30174,30175, 0,20045], - [20047,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30136,30137,30138,30139,30182,30183, 0,20045], - [20055,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30144,30145,30146,30147,30190,30191, 0,20045], - [20058,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30152,30153,30154,30155,30198,30199, 0,20045], - [20074,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30160,30161,30162,30163,30206,30166, 0,20045], - [ 92, 0,516, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20045], - [20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20038,20067] -], - "bgmap": [ - -], - "fgmap": [ - -], - "beforeBattle": {}, - "bg2map": [ - -], - "fg2map": [ - -], - "cannotMoveIn": {} -} \ No newline at end of file diff --git a/public/project/floors/MT17.js b/public/project/floors/MT17.js deleted file mode 100644 index 9661681..0000000 --- a/public/project/floors/MT17.js +++ /dev/null @@ -1,120 +0,0 @@ -main.floors.MT17= -{ - "floorId": "MT17", - "title": "勇气之路", - "name": "17", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "plot1.opus", - "color": null, - "weather": null, - "firstArrive": [ - { - "type": "setCurtain", - "time": 1000 - }, - "\t[野蛮人]\b[up,hero]勇气之路,智慧之塔,我来了!", - "血瓶宝石效果已变成两倍", - { - "type": "setGlobalValue", - "name": "animateSpeed", - "value": 333.333 - }, - { - "type": "function", - "function": "function(){\ndelete flags.__bgm__;\n}" - } - ], - "eachArrive": [], - "parallelDo": "", - "events": { - "6,7": [ - "在地图上拥有追猎怪物的时候无法瞬移" - ], - "13,6": [ - "这个绝对坚固怪能刷血还是尽量刷吧,塔里面有盾,拿了盾之后差不多就能防杀了,大概可以刷10w血", - "注意,如果你开启了自动切换技能,那么当你未防杀他的时候系统可能会自动选择开启技能导致你破了防。这时候你需要自行计算距离不开技能破防还需要吃多少攻" - ] - }, - "changeFloor": { - "14,7": { - "floorId": "MT18", - "loc": [ - 0, - 7 - ] - } - }, - "afterBattle": { - "12,6": [ - { - "type": "function", - "function": "function(){\nif (core.status.hero.hp - flags.hphphp >= 150000) {\n\t//Mota.require('achievement_r').completeAchievement('normal', 1);\n}\ndelete flags.hphphp;\n}" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142, 0, 27,492, 0, 29,142,142,142,142,482, 0,482,142], - [142,142,142, 34,142,142, 34,142, 27,142,142,142,142,142,142], - [142, 28, 34, 29,226, 21, 27,492,381,142, 29, 28, 22, 27,142], - [142,142,142,142,142,268,142,142, 33,142,142,142,517,129,142], - [ 0,209, 0, 0,491, 0,129,143,273,143,143,143, 33, 0, 94], - [143,143,143,143, 0,491,226, 0, 0, 0, 0, 0, 0,521,143], - [143, 34, 27,143,522,143,143,143,143,522,143,143,143, 0,143], - [143, 28, 29,143, 33, 28, 0, 29,492,403,403,143, 0, 28,143], - [143, 34, 27,505, 0,143,223,492,143,143,143,143,273,143,143], - [143,492,143,143,505,143, 34,403,143,376, 33,143,381, 0,143], - [143, 28, 29, 34,376,492,403, 34,515, 33,378,143, 0, 28,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [144,144,144,144,144, 0, 0, 0, 0, 0, 0, 0, 0,144,144], - [ 0, 0, 0, 0,144,144,144,144,144,144, 0, 0, 0,144, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0,144, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144,144,144,144,144, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "beforeBattle": { - "12,6": [ - { - "type": "setValue", - "name": "flag:hphphp", - "value": "core.status.hero.hp" - } - ] - }, - "bg2map": [ - -], - "fg2map": [ - -], - "cannotMoveIn": {} -} \ No newline at end of file diff --git a/public/project/floors/MT18.js b/public/project/floors/MT18.js deleted file mode 100644 index 6895182..0000000 --- a/public/project/floors/MT18.js +++ /dev/null @@ -1,90 +0,0 @@ -main.floors.MT18= -{ - "floorId": "MT18", - "title": "勇气之路", - "name": "18", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "plot1.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "0,3": [ - "你是真会跳" - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT17", - "loc": [ - 14, - 7 - ] - }, - "14,10": { - "floorId": "MT19", - "loc": [ - 0, - 10 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [142,142,142,142, 0,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142, 32,142,142,142,142,142], - [142,142,142,142,142,142,142,142,376, 0,142,142,142,142,142], - [129,142,142, 0,142,142, 21,142,403, 22,223,142,378,142,142], - [ 0,142,142,226,381,482, 28,492,492,142, 0,142, 31,142,142], - [142,142, 27,482,142,142,142,142, 32,142, 32,142, 31,142,142], - [142,142,142,273,142, 0,268, 0,522,381, 27,505,403,142,142], - [ 92, 0, 33, 0,142, 28,143, 0,142,142,492,142,142,142,142], - [143, 0, 33, 0,268,482,143, 21, 28, 0,521,143,142,142,142], - [143,143,494,143, 0,143,143,143, 0,482, 0,143, 33, 28,142], - [143,390,403,143, 27,492, 27,143,143,143,381,492, 27, 33, 94], - [143, 33, 33,143,143,143,381, 28, 33,273, 0,143,522,143,143], - [143,143, 0,515, 33,143,505,143,143,143, 0,143, 0, 33,143], - [143,143,143,143,376, 33, 28,143, 28, 29,226, 29, 27,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,144,144,144, 0, 0, 0, 0, 0, 0, 0], - [144,144,144,144, 0,144, 0,144, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,144,144,144, 0,144,144, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,144,144,144, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,144,144,144,144], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "beforeBattle": {}, - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT19.js b/public/project/floors/MT19.js deleted file mode 100644 index 90f41bb..0000000 --- a/public/project/floors/MT19.js +++ /dev/null @@ -1,103 +0,0 @@ -main.floors.MT19= -{ - "floorId": "MT19", - "title": "勇气之路", - "name": "19", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "plot1.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,10": { - "floorId": "MT18", - "loc": [ - 14, - 10 - ] - }, - "7,0": { - "floorId": "MT20", - "loc": [ - 7, - 14 - ] - }, - "14,6": { - "floorId": "MT21", - "loc": [ - 0, - 6 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [ 0, 17, 17, 17, 17, 17, 17, 91, 17, 17, 17, 17, 17, 17, 17], - [ 17, 17, 17,376,482,378, 17, 23, 17,378,482,376, 17, 17, 17], - [ 17, 17, 17, 17,381, 0,223,484,223, 0,381, 17, 17, 17, 17], - [ 17, 27, 32, 17, 17, 17,30195,403,30197, 17, 17, 17, 17, 17, 17], - [ 17, 32, 28, 17, 17, 17,30195,505,30197, 17, 17, 17, 17, 17, 17], - [ 17, 17,273, 17, 17, 17,30195, 0,30197, 17, 17, 17, 17, 17, 17], - [ 17, 17,403,522, 32, 32,30203, 21,30205,376,378,482,403, 85, 94], - [ 17, 17, 33,143,143,143,143, 33,143,143,143,143,515,143,143], - [ 17, 0,403,143,441, 34,143, 27, 33,378, 0, 0, 0,521,143], - [ 17,268,143,143,143,273,143,143,143,226,143,143,482,143,143], - [ 92, 0, 0, 0, 21, 0,143, 27, 33,381, 0,143,143,143,143], - [143,273,143,143,143, 0,522, 0, 28,143,143,143,143,143,143], - [143, 32,376, 32,143,143,143,143,143,143,143,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143] -], - "bgmap": [ - [ 0,142,142,142,142,142,142, 0,142,142,142,142,142,142,142], - [142,142,142, 0, 0, 0,142, 0,142, 0, 0, 0,142,142,142], - [142,142,142,142, 0, 0, 0, 0, 0, 0, 0,142,142,142,142], - [142, 0, 0,142,142,142,142,30196,142,142,142,142,142,142,142], - [142, 0, 0,142,142,142,142,30196,142,142,142,142,142,142,142], - [142,142, 0,142,142,142,142,30196,142,142,142,142,142,142,142], - [142,142, 0, 0, 0, 0, 0,30204, 0, 0, 0, 0, 0, 0, 0], - [142,142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,30187, 0,30189, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "beforeBattle": {}, - "bg2map": [], - "fg2map": [], - "cannotMoveIn": {} -} \ No newline at end of file diff --git a/public/project/floors/MT2.js b/public/project/floors/MT2.js deleted file mode 100644 index 4c700ee..0000000 --- a/public/project/floors/MT2.js +++ /dev/null @@ -1,79 +0,0 @@ -main.floors.MT2 = { - floorId: 'MT2', - title: '洞穴', - name: '2', - width: 15, - height: 15, - canFlyTo: true, - canFlyFrom: true, - canUseQuickShop: true, - cannotViewMap: false, - images: [], - ratio: 1, - defaultGround: 'T331', - bgm: 'cave.opus', - firstArrive: [], - eachArrive: [], - parallelDo: '', - events: {}, - changeFloor: { - '14,4': { - floorId: 'MT1', - loc: [0, 4] - } - }, - afterBattle: {}, - afterGetItem: {}, - afterOpenDoor: {}, - autoEvent: {}, - cannotMove: {}, - map: [ - [ - 20041, 20041, 20044, 20049, 20049, 20049, 20049, 20049, 20049, - 20049, 20049, 20049, 20049, 20049, 20043 - ], - [ - 20041, 20041, 20042, 20057, 20057, 20057, 20057, 20057, 20057, - 20057, 20057, 20057, 20057, 20057, 20048 - ], - [ - 20041, 20041, 20042, 20065, 20065, 20065, 20065, 20065, 20065, - 20065, 20065, 20065, 20065, 20065, 20056 - ], - [ - 20041, 20041, 20042, 0, 336, 32, 0, 27, 0, 206, 141, 34, 141, 0, - 20064 - ], - [ - 20041, 20041, 20042, 0, 336, 336, 203, 333, 333, 0, 141, 203, 141, - 0, 94 - ], - [20041, 20041, 20042, 0, 0, 31, 0, 0, 205, 0, 201, 34, 201, 0, 20032], - [ - 20041, 20041, 20042, 336, 202, 333, 333, 0, 340, 31, 141, 202, 141, - 141, 20040 - ], - [20041, 20041, 20042, 34, 27, 0, 333, 0, 340, 0, 141, 0, 31, 31, 20040], - [ - 20041, 20041, 20042, 345, 345, 201, 333, 205, 141, 141, 141, 141, - 141, 0, 20040 - ], - [20041, 20041, 20042, 0, 202, 0, 0, 31, 0, 0, 206, 0, 141, 141, 20040], - [20041, 20041, 20042, 0, 336, 31, 0, 336, 0, 31, 141, 0, 28, 0, 20040], - [ - 20041, 20041, 20042, 28, 336, 336, 336, 336, 345, 202, 141, 27, 0, - 32, 20040 - ], - [ - 20041, 20041, 20042, 0, 336, 0, 32, 345, 0, 0, 141, 141, 141, 141, - 20040 - ], - [20041, 20041, 20042, 32, 336, 28, 0, 206, 0, 0, 203, 0, 27, 31, 20040], - [ - 20041, 20041, 20036, 20033, 20033, 20033, 20033, 20033, 20033, - 20033, 20033, 20033, 20033, 20033, 20035 - ] - ], - bgmap: [], - fgmap: [] -}; diff --git a/public/project/floors/MT20.js b/public/project/floors/MT20.js deleted file mode 100644 index 11217e4..0000000 --- a/public/project/floors/MT20.js +++ /dev/null @@ -1,129 +0,0 @@ -main.floors.MT20= -{ - "floorId": "MT20", - "title": "智慧之塔", - "name": "20", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "plot1.opus", - "firstArrive": null, - "eachArrive": [ - { - "type": "setGlobalValue", - "name": "animateSpeed", - "value": 333.3333 - }, - { - "type": "function", - "function": "function(){\ncore.deleteAllCanvas()\n}" - } - ], - "parallelDo": "", - "events": { - "6,9": [ - "万里,智慧破苍穹" - ], - "8,9": [ - "千丈,勇气贯星海" - ], - "7,8": [ - { - "type": "if", - "condition": "flag:boss1", - "true": [ - "\t[智人]\b[up,hero]没必要再进去了" - ], - "false": [ - { - "type": "changeFloor", - "floorId": "tower1", - "loc": [ - 7, - 14 - ] - } - ] - } - ] - }, - "changeFloor": { - "7,14": { - "floorId": "MT19", - "loc": [ - 7, - 0 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [142,142,142,142,142,142,142,40203,142,142,142,142,142,142,142], - [142,142,142,142,142,40193,142,142,142,40197,142,142,142,142,142], - [142,142,142,142,142,40201,142,40203,142,40205,142,142,142,142,142], - [142,142,142,142,40168,40169,142,142,142,40173,40174,142,142,142,142], - [142,142,142,142,40176,40177,40178,40179,40180,40181,40182,142,142,142,142], - [142,142,142,142,40184,40185,40202,40203,40204,40189,40190,142,142,142,142], - [142,142,142,142,40192,40193,40202,40203,40204,40197,40198,142,142,142,142], - [142,142,142,142,40200,40201,40267,40268,40269,40205,40206,142,142,142,142], - [142,142,142,142,40208,40209,40275,543,40277,40213,40214,142,142,142,142], - [142,142,142,142,142,142,129, 0,129,142,142,142,142,142,142], - [142,142,142,142,142,142,142, 0,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142, 0,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142, 0,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142, 0,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142, 93,142,142,142,142,142,142,142] -], - "beforeBattle": {}, - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,40202,40203,40204, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,40210,40276,40212, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - [ 0, 0, 0, 0,40144,40185,40202,40191,40204,40189,40150, 0, 0, 0, 0], - [ 0, 0, 0, 0,40152,40143,40202,40203,40204,40159,40158, 0, 0, 0, 0], - [ 0, 0, 0, 0,40160,40151,40202,40191,40204,40167,40166, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,40209,40202,40203,40204,40213, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,40191, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT21.js b/public/project/floors/MT21.js deleted file mode 100644 index 6d913ad..0000000 --- a/public/project/floors/MT21.js +++ /dev/null @@ -1,226 +0,0 @@ -main.floors.MT21= -{ - "floorId": "MT21", - "title": "勇气之路", - "name": "21", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "plot1.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "14,8": [ - { - "type": "if", - "condition": "(flag:chapter===1)", - "true": [ - { - "type": "confirm", - "text": "是否提交第一章成绩?\n提交将结束游戏,结算第一章成绩,否则将继续第二章", - "yes": [ - "计分方式:生命+黄*5000+蓝*15000", - { - "type": "setValue", - "name": "status:hp", - "operator": "+=", - "value": "item:yellowKey*5000+item:blueKey*15000" - }, - { - "type": "win", - "reason": "智慧之始-new" - }, - { - "type": "exit" - } - ], - "no": [] - }, - { - "type": "setCurtain", - "color": [ - 0, - 0, - 0, - 1 - ], - "time": 1500, - "keep": true - }, - { - "type": "setText", - "text": [ - 0, - 0, - 0, - 1 - ], - "background": "winskin3.png" - }, - "人类简史——起源篇", - { - "type": "playSound", - "name": "paper.opus" - }, - "他踏出了寻找智慧的第一步。", - { - "type": "playSound", - "name": "paper.opus" - }, - "他所练就的勇气,也成为他寻找智慧路上的一大利器。", - { - "type": "playSound", - "name": "paper.opus" - }, - "人类简史——起源篇,完。", - { - "type": "playSound", - "name": "paper.opus" - }, - { - "type": "setValue", - "name": "flag:chapter", - "value": "2" - }, - { - "type": "sleep", - "time": 1000 - }, - "人类简史——进化篇", - { - "type": "playSound", - "name": "paper.opus" - }, - "或许,他真的不理解智慧。", - { - "type": "playSound", - "name": "paper.opus" - }, - "或许,他已经理解了一些。", - { - "type": "playSound", - "name": "paper.opus" - }, - "但这不重要。", - { - "type": "playSound", - "name": "paper.opus" - }, - "他的轨迹已经注定了他对未来的影响。", - { - "type": "playSound", - "name": "paper.opus" - }, - { - "type": "playSound", - "name": "paper.opus" - }, - "这个世界,甚至这个宇宙,都因为他的存在而改变。", - { - "type": "playSound", - "name": "paper.opus" - }, - "在这里,智慧小径,将是他智慧的飞跃点。", - { - "type": "changeFloor", - "floorId": "MT22", - "loc": [ - 0, - 8 - ] - }, - { - "type": "setCurtain", - "time": 1000 - }, - { - "type": "setText", - "text": [ - 255, - 255, - 255, - 1 - ], - "background": "winskin2.png" - }, - "\t[低级智人]\b[up,hero]智慧吗...", - "\t[低级智人]\b[up,hero]智慧又是什么呢?", - "\t[低级智人]\b[up,hero]智慧之神说它可以掌控万物,真的这么神奇吗...", - "\t[低级智人]\b[up,hero]完全摸不到头脑。", - "\t[低级智人]\b[up,hero]或许智慧结晶会告诉我答案吧。", - { - "type": "function", - "function": "function(){\nif (!core.isReplaying()) Mota.require('@motajs/legacy-ui').fixedUi.open('chapter', { chapter: '第二章 智慧' });\nMota.require('removeMap_g').removeMaps('tower1', 'tower7', true);\ndelete flags.tower1;\ndelete flags.wordsTimeOut;\ndelete flags.boom;\ndelete flags.booming;\n}" - }, - { - "type": "setValue", - "name": "item:pickaxe", - "value": "0" - } - ], - "false": [ - { - "type": "changeFloor", - "floorId": "MT22", - "loc": [ - 0, - 8 - ] - } - ] - } - ] - }, - "changeFloor": { - "0,6": { - "floorId": "MT19", - "loc": [ - 14, - 6 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,487,142,142,142,142,142], - [142,142,142,487,494,378, 0,142,378,494,142,142,142,142,142], - [142,142,142,142,142,142,520, 33,518,142,142, 0, 0,142,142], - [142,142,142,142, 33,376, 0,142,381, 0, 33,376, 0,142,142], - [142,142,378,142, 0,142,142,142,142,142,142,142,545,142,142], - [ 92, 0, 33,142,142,142,487,142, 0,381, 33, 0, 0, 0,142], - [143,518,142,142, 0, 33,494,142,143,143,143,520,143,143,142], - [143, 0, 33,376,545,381, 0,520, 0,143, 0, 0,143, 0, 94], - [143,143,143,143,143, 0,143, 0,376,143, 0,545, 0,378,143], - [143, 0, 33, 0,518, 0,143, 0, 0,519, 33,143, 33, 0,143], - [143,143,143,143,381,143,143,143, 33,143,376,143,143,143,143], - [143,143, 0, 33,545, 0,378,143, 0,143,381, 0, 0,143,143], - [143,143,143,378,143, 33, 0,519, 0,143, 0,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143] -], - "beforeBattle": {}, - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -], - "cannotMoveIn": {} -} \ No newline at end of file diff --git a/public/project/floors/MT22.js b/public/project/floors/MT22.js deleted file mode 100644 index cd8c3d2..0000000 --- a/public/project/floors/MT22.js +++ /dev/null @@ -1,116 +0,0 @@ -main.floors.MT22= -{ - "floorId": "MT22", - "title": "智慧小径", - "name": "智慧小径", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "road.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "0,8": [ - { - "type": "if", - "condition": "flag:inWinter", - "true": [ - "\t[低级智人]\b[up,hero]没必要再回去了" - ], - "false": [ - { - "type": "changeFloor", - "floorId": "MT21", - "loc": [ - 14, - 8 - ] - } - ] - } - ], - "3,9": [ - "第二章的加点已开启,可以在技能树的前置技能下方选择", - "如果你玩过上个版本,直接跳到了本章,记得查看背包里面的各种道具,尤其是百科全书,同时注意左边是你来的方向,那里还有些怪物", - "从现在开始,跳跃技能不再消耗生命值,别忘了你还有跳跃技能", - "为了确保平衡与可玩性,从现在开始,无上之盾(第一章终极技能)效果变为1/10,同时每个怪物的最大吸血量限制为怪物生命值的四分之一" - ], - "7,9": [ - "百科全书中已解锁第二章需要特别说明的怪物属性,你可以在百科全书中查看", - "本章计分方式:血量/10+黄*2000+蓝*5000+红*10000" - ] - }, - "changeFloor": { - "14,4": { - "floorId": "MT23", - "loc": [ - 0, - 4 - ] - }, - "9,0": { - "floorId": "MT24", - "loc": [ - 9, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [142,142,142,142,142,142,142,142,142, 91,143,143,143,143,143], - [142,142,142,142,142,142,142,142,142, 0,143,143,143,143,143], - [142,142,482,482,492, 0, 0, 0, 0, 0,143,491,484,143,143], - [142,142,142,142,142, 0, 0, 0, 0, 0,143,143,494,143,143], - [142,142,482,482,492, 0, 0,484, 0,441, 0, 0, 0, 0, 94], - [142,142,142,142,142, 0, 0, 0, 0,143,143,143,143,143,143], - [142,142,482,482,492, 0, 0,484, 0,494,484,491,484,143,143], - [142,142,142,142,142, 0, 0, 0, 0,143,143,143,143,143,143], - [ 92, 0, 0, 0,441, 0, 0,484, 0, 0, 0, 0, 0,143,143], - [143,143, 0,129, 0, 0, 0,129, 0, 0, 0, 0, 0,143,143], - [143,143,492,143,492,143,492,143,492,143,492,143,492,143,143], - [143,143,482,143,482,143,482,143,482,143,482,143,482,143,143], - [143,143,482,143,482,143,482,143,482,143,482,143,482,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144,144,144,144,144,144,144,144], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0], - [144,144,144,144,144,144,144,144, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT23.js b/public/project/floors/MT23.js deleted file mode 100644 index b4c344a..0000000 --- a/public/project/floors/MT23.js +++ /dev/null @@ -1,98 +0,0 @@ -main.floors.MT23= -{ - "floorId": "MT23", - "title": "智慧小径", - "name": "智慧小径", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "road.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "1,3": [ - "请善用拥有电摇嘲讽属性的怪物", - "例如右边就可以利用电摇嘲讽把几个强怪后面的宝石暴露出来" - ] - }, - "changeFloor": { - "0,4": { - "floorId": "MT22", - "loc": [ - 14, - 4 - ] - }, - "12,0": { - "floorId": "MT26", - "loc": [ - 12, - 14 - ] - }, - "14,2": { - "floorId": "MT27", - "loc": [ - 0, - 2 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [143,143,143,143,143,143,143,143,143,143,143,143, 91,143,143], - [143,376,381,523, 0, 0,570, 0, 34,378,143,381, 0,381,143], - [143,143,143,143,484,143,143,143,143, 0,520, 0,484, 0, 94], - [143,129,381,143, 0,143,390,484,143,566,143,143,143,545,143], - [ 92, 0, 0,523,403,143, 21,396,280, 0,403,482,492,482,143], - [143,484,381,143, 0,492,492,143,143,566,143,143,143,143,143], - [143,143,492,143,500,143,441,420,500, 0,378,403,484, 0,143], - [143,390,482,143,484,143,143,143,143,492,143,143,494,143,143], - [143, 0,403,275,376, 0,378,143,482,482,482,143, 34, 34,143], - [143,143,494,143,494,143,143,143,143,492,143,143,523,143,143], - [143,420,484,143, 21,420,492,390, 0,275, 0,519, 0,381,143], - [143, 0,441,143,484, 0,143,482,381,143, 33,143,143,518,143], - [143,280,143,143,143,562,143,143,143,143, 0,143,376, 0,143], - [143, 0,482, 0,482, 0,143, 34,441, 34,520,143, 33,403,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0], - [ 0, 0, 0, 0,144,144,144,144,144,144, 0, 0,144, 0, 0], - [ 0, 0, 0, 0,144, 0, 0, 0, 0,144,144,144,144,144,144], - [ 0, 0, 0, 0,144, 0, 0, 0, 0,144, 0, 0, 0,144, 0], - [144,144,144,144,144, 0, 0, 0, 0,144,144,144,144,144, 0], - [ 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,144,144,144, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT24.js b/public/project/floors/MT24.js deleted file mode 100644 index 71b59b1..0000000 --- a/public/project/floors/MT24.js +++ /dev/null @@ -1,104 +0,0 @@ -main.floors.MT24= -{ - "floorId": "MT24", - "title": "智慧小径", - "name": "智慧小径", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "road.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "8,13": [ - "当勇士被嘲讽时,水也能被撞碎,不要问我为什么(" - ] - }, - "changeFloor": { - "9,14": { - "floorId": "MT22", - "loc": [ - 9, - 0 - ] - }, - "5,0": { - "floorId": "MT25", - "loc": [ - 5, - 14 - ] - }, - "11,0": { - "floorId": "MT25", - "loc": [ - 11, - 14 - ] - }, - "14,5": { - "floorId": "MT26", - "loc": [ - 0, - 5 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [142,142,142,142,142, 91,142,142,142,142,142, 91,143,143,143], - [142,142,142,142,142,280,142, 0,275, 0,484,376, 0,143,143], - [142,142,441,237,484, 0,492, 0,143,143,500,143,492,143,143], - [142,142,390,142, 0,142,142, 0,143, 0,403,491,390, 0,143], - [142,142,396,142,500,376,484,518,143,143,494,143,143,143,143], - [142, 22,484,494,378,142,142, 0,143,520, 0,403,482, 0, 94], - [142,142,142,142,484,142,142,378,143, 0,143,143,492,143,143], - [142,142,484,142,518, 0,376,275,482, 0,500,376, 0,376,143], - [562,142,492,142,142,142,142, 0,143,143,143, 0,484, 0,143], - [142,142, 0, 0,403,484, 0,523,484,378,143,519,143,143,143], - [142,142,280,142,142,492,566,142,142, 0,143,378,484,381,143], - [142,142, 21,484,142,378, 0,142,142,570,143,143,520,143,143], - [142,142,430, 0,142,142,482,142,381, 0,381,492,403,403,143], - [142,142,142,142,142,142,142,142,129, 0,484,143,143,143,143], - [142,142,142,142,142,142,142,142,142, 93,143,143,143,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144,144,144,144,144, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0,144, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0,144, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0,144, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0,144,144,144,144,144], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144,144,144, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT25.js b/public/project/floors/MT25.js deleted file mode 100644 index c294525..0000000 --- a/public/project/floors/MT25.js +++ /dev/null @@ -1,93 +0,0 @@ -main.floors.MT25= -{ - "floorId": "MT25", - "title": "智慧小径", - "name": "智慧小径", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "road.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "5,14": { - "floorId": "MT24", - "loc": [ - 5, - 0 - ] - }, - "11,14": { - "floorId": "MT24", - "loc": [ - 11, - 0 - ] - }, - "14,9": { - "floorId": "MT30", - "loc": [ - 0, - 9 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142, 23,142,142,142,142,142,142,142,142,142], - [142,142,142,142,482,441,482,142,142,142,142,142,142,142,142], - [142,142,142, 21,420,575,430, 21,142,142,142,142,142,142,142], - [142,142,142,142,482,491,482,142,142,142,142, 0,484, 0, 94], - [142,142,142,142,142, 22,142,142,142,142,142,566,143,143,143], - [142,142,142,142,142,576,142,142,142,142,142,430,566,420,143], - [142,142,142,142,142,497,142,142,142,142,142,142,142,566,143], - [142,142,142,142,142,572,142,142,142,142,142, 0,484, 0,143], - [142,142,142,142,142, 93,142,142,142,142,142, 93,143,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,144,144,144], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,144,144, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,144,144, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT26.js b/public/project/floors/MT26.js deleted file mode 100644 index 6f78608..0000000 --- a/public/project/floors/MT26.js +++ /dev/null @@ -1,100 +0,0 @@ -main.floors.MT26= -{ - "floorId": "MT26", - "title": "智慧小径", - "name": "智慧小径", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "road.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,5": { - "floorId": "MT24", - "loc": [ - 14, - 5 - ] - }, - "12,14": { - "floorId": "MT23", - "loc": [ - 12, - 0 - ] - }, - "14,7": { - "floorId": "MT28", - "loc": [ - 0, - 7 - ] - }, - "11,0": { - "floorId": "MT30", - "loc": [ - 11, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [143,143,143,143,143,143,143,143,143,143,143, 91,143,143,143], - [143,441, 21,237, 0,143, 0,482,566, 0,143, 0,143,143,143], - [143,484,390,143, 0,143,378, 0,143, 0,566, 0,376,482,143], - [143,143,143,143,484,143,143,143,143,566,143,143,492,143,143], - [143, 0, 0,492, 0,143,482,403,376, 0,518, 0,482,396,143], - [ 92, 0,518,143, 0,520, 0,378,143,143,143,143,275, 0,143], - [143,143, 0,143,143,143,143,562,143,390,482,143, 0,143,143], - [143, 0,376,143, 0,143,482,482,143,482,403,500,403, 0, 94], - [143,500,143,143,482,143,143,143,143,492,143,143,519,143,143], - [143,468,482,143,441,492,430, 0,143,484,396,237,482, 0,143], - [143,482,468,494, 0,275,420,484,492,390,484,143, 0,482,143], - [143,143,143,143,566,143,572,143,143,494,143,143,143,523,143], - [143,390,482,500, 0,143,482, 0,566,381,482,143,378, 0,143], - [143,143,396,143, 0,566, 0,381,143, 0,381,570, 0,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143, 93,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144,144,144, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0], - [ 0,144,144,144,144, 0,144,144,144,144,144,144,144, 0, 0], - [144,144, 0, 0,144,144,144, 0, 0, 0, 0, 0,144, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,144,144], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,144, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,144, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT27.js b/public/project/floors/MT27.js deleted file mode 100644 index 17dd99f..0000000 --- a/public/project/floors/MT27.js +++ /dev/null @@ -1,86 +0,0 @@ -main.floors.MT27= -{ - "floorId": "MT27", - "title": "智慧小径", - "name": "智慧小径", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "road.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,2": { - "floorId": "MT23", - "loc": [ - 14, - 2 - ] - }, - "4,0": { - "floorId": "MT28", - "loc": [ - 4, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [143,143,143,143, 91,143,143,143,143,143,143,143,143,143,143], - [143,143,143,143, 0,143,143,420,143,143,143,143,143,143,143], - [ 92, 0, 0,482, 0,497,143,430,491,280,143,143,143,143,143], - [143,143,494,143,143,143,143,143,143, 0,143,143,143,143,143], - [143, 0, 0,494,491,494,390, 0,484, 0,143,143,143,143,143], - [143, 0,143,143,143,143, 0,143,143,143,143,143,143,143,143], - [143,441,143,390,482,143, 0,143,484,396,143,143,143,143,143], - [143, 33,500,482,396,143,403,568, 21,403,143,143,143,143,143], - [143,275,143,494,143,143,143,143,143,568,143,143,143,143,143], - [143, 33,237,482,396,494,484,390,396,484,143,143,143,143,143], - [143,441,143,390,482,143,143,143,237,143,143,143,143,143,143], - [143, 0,143,143,143,143,403,376,484,143,143,143,143,143,143], - [143,568,143,376,482,143,378,143,280,143,143,143,143,143,143], - [143, 0,568,378,381,562,492,143, 23,143,143,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [144,144,144,144,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT28.js b/public/project/floors/MT28.js deleted file mode 100644 index 4c8b653..0000000 --- a/public/project/floors/MT28.js +++ /dev/null @@ -1,135 +0,0 @@ -main.floors.MT28= -{ - "floorId": "MT28", - "title": "智慧小径", - "name": "智慧小径", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "road.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "5,13": [ - "注意,如果用跳跃技能把怪物踢走,会导致机关门无法开启" - ] - }, - "changeFloor": { - "4,14": { - "floorId": "MT27", - "loc": [ - 4, - 0 - ] - }, - "0,7": { - "floorId": "MT26", - "loc": [ - 14, - 7 - ] - }, - "8,0": { - "floorId": "MT29", - "loc": [ - 8, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "10,8": [ - { - "type": "setValue", - "name": "flag:door_MT28_11_9", - "operator": "+=", - "value": "1" - } - ], - "12,8": [ - { - "type": "setValue", - "name": "flag:door_MT28_11_9", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "11,9": { - "0": { - "condition": "flag:door_MT28_11_9==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT28_11_9", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [143,143,143,143,143,143,143,143, 91,143,143,143,143,143,143], - [143,143,441,390,396,143, 0,500,491, 0,143,143,143,143,143], - [143,143,143,143,484,280, 0,143, 0, 21,143,143,143,143,143], - [143,482,390,143,143,143,494,143,566,143,143, 0,143,143,143], - [143,441,482,500, 0,484,390,566,420,566,396,482, 22,143,143], - [143,143,492,143,143,143,572,143,566,143,143,494,143,143,143], - [143,143, 0, 0,568,376,482,143, 0,482, 0, 0,143,143,143], - [ 92, 0,484, 0,143,441,378,492, 0,143,143,237,143,143,143], - [143,143,143,568,143,500,143,143,518,143,280,484,280,143,143], - [143,390,484,403,492, 0,403,378,482,143,143, 85,143,143,143], - [143,143,143,143,143,143,143,275,143,143,466,484,467,143,143], - [143,482,376,143, 0,482,376,403, 0,143,143, 23,143,143,143], - [143,520,143,143,518,143,143,143,143,143,143,143,143,143,143], - [143,378,482,519, 0,129,143,143,143,143,143,143,143,143,143], - [143,143,143,143, 93,143,143,143,143,143,143,143,143,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,144,144,144, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,144,144,144,144,144, 0, 0, 0, 0, 0, 0, 0, 0], - [144,144,144, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,144,144,144, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,144,144,144,144, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT29.js b/public/project/floors/MT29.js deleted file mode 100644 index 4e1f9e3..0000000 --- a/public/project/floors/MT29.js +++ /dev/null @@ -1,136 +0,0 @@ -main.floors.MT29 = { - floorId: 'MT29', - title: '智慧小径', - name: '智慧小径', - width: 15, - height: 15, - canFlyTo: true, - canFlyFrom: true, - canUseQuickShop: true, - cannotViewMap: false, - images: [], - ratio: 2, - defaultGround: 'grass', - bgm: 'road.opus', - firstArrive: [ - { - type: 'animate', - name: 'hand', - loc: [13, 8] - }, - { - type: 'animate', - name: 'hand', - loc: [13, 8] - }, - { - type: 'animate', - name: 'jianji', - loc: [13, 8] - }, - { - type: 'hide', - loc: [[13, 8]], - remove: true, - time: 500 - }, - { - type: 'jump', - from: [12, 8], - dxy: [5, 0], - time: 500 - }, - '\t[低级智人]\b[up,hero]杰克?', - '\t[低级智人]\b[up,hero]他为什么会在这里?', - '\t[低级智人]\b[up,hero]奇怪,他好像在为我打通道路。', - '\t[低级智人]\b[up,hero]这些怪物这么强,他是怎么对付的?', - '\t[低级智人]\b[up,hero]而且好像在故意让我发现。', - '\t[低级智人]\b[up,hero]跟上去看看。' - ], - eachArrive: [], - parallelDo: '', - events: {}, - changeFloor: { - '0,9': { - floorId: 'MT30', - loc: [14, 9] - }, - '8,14': { - floorId: 'MT28', - loc: [8, 0] - }, - '14,8': { - floorId: 'MT31', - loc: [0, 7] - } - }, - beforeBattle: {}, - afterBattle: {}, - afterGetItem: {}, - afterOpenDoor: {}, - autoEvent: {}, - cannotMove: {}, - cannotMoveIn: {}, - map: [ - [17, 17, 17, 17, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143], - [17, 17, 17, 17, 143, 143, 143, 143, 482, 237, 484, 280, 0, 390, 143], - [17, 17, 17, 17, 143, 143, 468, 468, 482, 143, 484, 143, 396, 441, 143], - [17, 17, 17, 17, 143, 143, 143, 492, 143, 143, 562, 143, 492, 143, 143], - [17, 17, 17, 17, 390, 0, 143, 482, 143, 0, 390, 484, 396, 0, 143], - [17, 17, 17, 17, 482, 396, 143, 403, 143, 237, 143, 143, 143, 492, 143], - [17, 17, 17, 17, 280, 143, 143, 390, 403, 0, 143, 396, 441, 420, 143], - [17, 17, 0, 500, 0, 376, 143, 143, 568, 143, 143, 143, 143, 572, 143], - [17, 17, 0, 143, 482, 482, 143, 376, 482, 568, 0, 396, 123, 576, 94], - [92, 0, 0, 143, 378, 0, 568, 0, 378, 143, 390, 0, 484, 0, 143], - [ - 143, 500, 143, 143, 143, 492, 143, 143, 143, 143, 143, 492, 143, - 143, 143 - ], - [143, 484, 21, 572, 390, 0, 0, 0, 237, 143, 484, 562, 491, 491, 143], - [ - 143, 390, 396, 494, 21, 484, 143, 143, 484, 492, 492, 143, 143, 237, - 143 - ], - [143, 143, 143, 143, 396, 0, 0, 492, 0, 280, 390, 403, 484, 396, 143], - [ - 143, 143, 143, 143, 143, 143, 143, 143, 93, 143, 143, 143, 143, 143, - 143 - ] - ], - bgmap: [ - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 144, 144, 144, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 144, 0, 0, 144, 0, 0, 144, 144, 144, 144, 144, 144, 144], - [144, 144, 144, 0, 0, 144, 144, 144, 144, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 144, 144, 144, 144, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0] - ], - fgmap: [], - bg2map: [ - [142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 0, 0, 0], - [142, 142, 142, 142, 142, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0], - [142, 142, 142, 142, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [142, 142, 142, 142, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [142, 142, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [142, 142, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [142, 142, 142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [142, 142, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] - ], - fg2map: [] -}; diff --git a/public/project/floors/MT3.js b/public/project/floors/MT3.js deleted file mode 100644 index 53d1989..0000000 --- a/public/project/floors/MT3.js +++ /dev/null @@ -1,71 +0,0 @@ -main.floors.MT3= -{ - "floorId": "MT3", - "title": "洞穴", - "name": "3", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "T331", - "bgm": "cave.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "10,14": { - "floorId": "MT1", - "loc": [ - 11, - 0 - ] - }, - "0,7": { - "floorId": "MT4", - "loc": [ - 14, - 7 - ] - }, - "14,7": { - "floorId": "MT5", - "loc": [ - 0, - 7 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [20044,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20043], - [20042,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20040], - [20042,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20040], - [20042, 0, 31,141, 0, 0, 27, 0, 0,141, 28, 34, 27, 0,20040], - [20050, 0, 0,141,216,141,141,141,141,141,213,141,141,141,20048], - [20058, 31, 0,141, 0, 32, 0, 32, 0,141, 0,141, 32, 32,20056], - [20074,141,203,141,141,141,203,141,141,141, 0,141,141,203,20064], - [ 92, 27, 0, 32,141, 0, 27,216, 0, 32,215, 0, 0, 0, 94], - [20034, 32, 0, 28,141, 34, 0,333, 0, 0,336, 0, 32, 0,20032], - [20042,141,141,216,141,206,333,333,206,336,336,336,141,141,20040], - [20042, 0, 31, 0,203, 0, 32,141, 0, 0,141, 0, 0, 0,20040], - [20042,336,336,216,345, 28, 0,141, 0, 32,206, 0, 32, 0,20040], - [20042, 0, 0, 28,345, 0,141,141,141,141,141,202,141,141,20040], - [20042, 27, 32, 0,345,206, 0, 0, 31, 0, 0, 0, 0, 0,20040], - [20036,20033,20033,20033,20033,20033,20033,20033,20033,20034, 93,20032,20033,20033,20035] -], - "bgmap": [ - -], - "fgmap": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT30.js b/public/project/floors/MT30.js deleted file mode 100644 index ab95f52..0000000 --- a/public/project/floors/MT30.js +++ /dev/null @@ -1,93 +0,0 @@ -main.floors.MT30= -{ - "floorId": "MT30", - "title": "智慧小径", - "name": "智慧小径", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "road.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,9": { - "floorId": "MT29", - "loc": [ - 0, - 9 - ] - }, - "0,9": { - "floorId": "MT25", - "loc": [ - 14, - 9 - ] - }, - "11,14": { - "floorId": "MT26", - "loc": [ - 11, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,142,142,142,142,142,142,142,142,142,142,142,142], - [142,142,142,482,568, 0,390,142,396,142,142,142,142,142,142], - [142,142,390,403,142,484, 0,568,482, 0,403, 0,142,142,142], - [142,142,142,142,142,566, 17,143, 17, 17, 17,500,142,142,142], - [ 92, 0, 0, 0,572,482,482,143, 34,378,376, 34,237,482, 94], - [143,143,143,143,492,143,143,143,143,143,566,143,143,482,143], - [143,487,430,143,403,143,420,441, 21,143,403,403,143,396,143], - [143,280,143,143,562,143,143,280,143,143,143,566,143,403,143], - [143, 34, 34,376,403,378, 34, 34,143,482,492, 0,143,390,143], - [143,143,143,143,143,143,143,143,143,143,143, 93,143,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,144,144,144,144,144,144,144, 0, 0, 0], - [ 0, 0, 0, 0, 0,144,142,142,142,142,142,144, 0, 0, 0], - [144,144,144,144,144,144, 0, 0, 0, 0,144,144,144,144,144], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144,144, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT31.js b/public/project/floors/MT31.js deleted file mode 100644 index b6bb923..0000000 --- a/public/project/floors/MT31.js +++ /dev/null @@ -1,268 +0,0 @@ -main.floors.MT31= -{ - "floorId": "MT31", - "title": "智慧小径", - "name": "智慧小径", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "grass", - "bgm": "road.opus", - "firstArrive": [ - "\t[低级智人]\b[up,hero]杰克,你为什么在这?", - "\t[杰克,thief]\b[up,4,7]哟,咱好久不见了,我只是来这里寻找点东西。", - "\t[低级智人]\b[up,hero]这里怪物这么强,你怎么能打败他?", - "\t[杰克,thief]\b[up,4,7]我有我的特殊办法。", - "\t[低级智人]\b[up,hero]那些...绿色宝石吗?", - "\t[杰克,thief]\b[up,4,7]绿色宝石?我没见过那东西。", - "\t[低级智人]\b[up,hero]那是什么办法呢?", - "\t[杰克,thief]\b[up,4,7]这个你就不用操心了。", - "\t[杰克,thief]\b[up,4,7]对了,有人让我给你说一句话。", - "\t[杰克,thief]\b[up,4,7]时间会诉说真相,而历史不会。", - "\t[杰克,thief]\b[up,4,7]即使历史是真实的。", - "\t[低级智人]\b[up,hero]什么意思?", - "\t[杰克,thief]\b[up,4,7]我也不清楚,不过我先走了,你慢慢理解。", - { - "type": "jump", - "from": [ - 4, - 7 - ], - "dxy": [ - 15, - 0 - ], - "time": 500 - }, - "\t[低级智人]\b[up,hero]...", - "\t[低级智人]\b[up,hero]时间会诉说真相,而历史不会...", - "\t[低级智人]\b[up,hero]能相信的只有时间,而历史能被篡改吗...", - "\t[低级智人]\b[up,hero]历史是真实的,又为何不会诉说真相呢...", - "\t[低级智人]\b[up,hero]完全不能理解。" - ], - "eachArrive": [], - "parallelDo": "", - "events": { - "14,7": [ - { - "type": "if", - "condition": "(!flag:inWinter)", - "true": [ - { - "type": "setCurtain", - "color": [ - 0, - 0, - 0, - 1 - ], - "time": 1500, - "keep": true - }, - { - "type": "setText", - "text": [ - 0, - 0, - 0, - 1 - ], - "background": "winskin3.png" - }, - "人类简史——进化篇", - { - "type": "playSound", - "name": "paper.opus" - }, - "经过了漫长的行走,他感到真相越来越接近。", - { - "type": "playSound", - "name": "paper.opus" - }, - "前方,是会将凛冽渗入骨髓的冰封雪原。", - { - "type": "playSound", - "name": "paper.opus" - }, - "这里,他将寻找到所谓的真相。", - { - "type": "changeFloor", - "floorId": "MT32", - "loc": [ - 0, - 7 - ] - }, - { - "type": "setCurtain", - "time": 1000 - }, - { - "type": "setText", - "text": [ - 255, - 255, - 255, - 1 - ], - "background": "winskin2.png" - }, - "\t[低级智人]\b[up,hero]呼,好冷。", - "\t[低级智人]\b[up,hero]嗯?", - { - "type": "moveHero", - "time": 250, - "steps": [ - "right:1" - ] - }, - "\t[低级智人]\b[up,hero]这是杰克给我留下的衣服吗?", - "\t[低级智人]\b[up,hero]先穿上吧,这里太冷了。", - { - "type": "setValue", - "name": "flag:inWinter", - "value": "true" - } - ], - "false": [ - { - "type": "changeFloor", - "floorId": "MT32", - "loc": [ - 0, - 7 - ] - } - ] - } - ], - "2,6": [ - "注意右方的清怪检测是检测\r[gold]勇气之路\r[]的怪物,本区域的怪物不检测,可以暂时留怪", - "所以说右边的boss是可以暂时不打的(悲,测试的时候是按必须打测的)" - ], - "13,7": [ - "这里是漏怪检测,会检测\r[gold]勇气之路\r[]区域是否有遗漏怪物", - { - "type": "function", - "function": "function(){\nconst enemy = Mota.require('@user/legacy-plugin-data').getRemainEnemyString(core.floorIds.slice(17, 23));\nif (enemy.length === 0) {\n\tcore.insertAction(['当前无剩余怪物!', { \"type\": \"hide\", \"remove\": true }, ]);\n} else {\n\tcore.insertAction(enemy);\n}\n}" - } - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT29", - "loc": [ - 14, - 8 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "10,7": [ - "\t[智慧守护者,E577]\b[up,10,7]智慧!终于有人可以得到这些智慧了!", - "\t[智慧守护者,E577]\b[up,10,7]终于要迎来结束战争的那一天了!", - "\t[智慧守护者,E577]\b[up,10,7]我的任务终于完成了!!", - "\t[低级智人]\b[up,hero]什么结束战争,什么完成任务?", - { - "type": "setBlock", - "number": "I476", - "time": 1000 - }, - "\t[低级智人]\b[up,hero]哎,没问到啊...", - "\t[低级智人]\b[up,hero]战争,又是什么意思呢?", - "\t[低级智人]\b[up,hero]之前智慧之神也提过战争,但是我还没问我们就打起来了。", - "\t[低级智人]\b[up,hero]之后应该就知道了。", - { - "type": "function", - "function": "function(){\ncore.getNextItem()\n}" - }, - { - "type": "sleep", - "time": 1000 - }, - "\t[低级智人]\b[up,hero]!!!", - "\t[低级智人]\b[up,hero]这种感觉!", - "\t[低级智人]\b[up,hero]感觉前所未有的东西涌入了大脑。", - "\t[低级智人]\b[up,hero]这就是智慧吗。", - "\t[低级智人]\b[up,hero]原来如此。", - "\t[低级智人]\b[up,hero]原来,智慧是这个意思。", - "\t[低级智人]\b[up,hero]我明白了,我全都明白了。", - "\t[低级智人]\b[up,hero]智慧,真的可以掌握万物。", - { - "type": "openDoor", - "loc": [ - 7, - 5 - ] - }, - { - "type": "openDoor", - "loc": [ - 7, - 9 - ] - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "7,5": { - "1": null - }, - "7,9": { - "1": null - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143], - [143,143, 0, 0, 0, 0,143,491,491,468,468,466,466,143,143], - [143,143, 0,491,491, 0,143, 85,143,143,143,143,143,143,143], - [143,143,129, 0, 0, 0,143, 0, 0, 0, 0, 0, 0,143,143], - [ 92, 0, 0, 23,123, 0,497, 0, 0, 0,577, 0, 0,516, 94], - [143,143, 0, 0, 0, 0,143, 0, 0, 0, 0, 0, 0,143,143], - [143,143, 0,491,491, 0,143, 85,143,143,143,143,143,143,143], - [143,143, 0, 0, 0, 0,143,491,491,468,468,467,467,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143], - [143,143,143,143,143,143,143,143,143,143,143,143,143,143,143] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [144,144,144,144,144,144,144,144,144,144,144,144,144,144,144], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT32.js b/public/project/floors/MT32.js deleted file mode 100644 index 7c70297..0000000 --- a/public/project/floors/MT32.js +++ /dev/null @@ -1,127 +0,0 @@ -main.floors.MT32= -{ - "floorId": "MT32", - "title": "冰封雪原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [ - { - "type": "function", - "function": "function(){\nMota.require('removeMap_g').removeMaps('MT17', 'MT21', true)\n}" - } - ], - "eachArrive": [], - "parallelDo": "", - "events": { - "0,7": [ - { - "type": "if", - "condition": "(flag:inWinter2===true)", - "true": [ - "\t[低级智人]\b[up,hero]没必要回去了" - ], - "false": [ - { - "type": "changeFloor", - "floorId": "MT31", - "loc": [ - 14, - 7 - ] - } - ] - } - ], - "1,6": [ - "宝石血瓶的加成已提升至8倍" - ], - "1,8": [ - "衣服是个装备,记得穿上", - "光环会在地图上显示,如果不想要可以在背包里面的系统设置里面关闭", - "注意打过永夜怪或者极昼怪之后或者有光环的时候,怪物标记可能与当前地图不符,因为标记怪物是标记的某一类怪物而不是某一点的怪物", - "怪物手册显示的怪物是不经过光环加成的怪物,而定点查看则是经过各种加成的怪物。你可以将鼠标移动到怪物上,按下e或c使用定点查看功能" - ] - }, - "changeFloor": { - "14,6": { - "floorId": "MT33", - "loc": [ - 0, - 6 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147, 0,482,441,274, 0, 28,147, 34, 0,603, 0, 0, 0,147], - [147,595,147,147,147, 32, 0,590, 0, 34,587, 0,147,147,147], - [147, 0,403, 0,147,602,587,586,587,587,587, 21,147,381,147], - [147, 28, 33, 27,492, 34, 34,586, 34,390,588, 0,592, 34,147], - [147,147,494,147,147,585,492,585,595,588,588,590,147,492,147], - [147,129, 0, 21,147, 32, 0,602, 0,586, 0, 0, 34, 0, 94], - [ 92, 0,589, 0,492, 0, 32,584, 27,590, 0,587, 0, 28,147], - [147,129, 0, 22,147,590,492,584, 29,586,587,587,492,147,147], - [147,147,494,147,147, 0, 0,603, 0,586, 0, 32, 32, 0,147], - [147, 27, 33, 28,147,147,147,147,494,585,585,585,584,602,147], - [147, 0,403, 0,492, 34, 34,147, 0, 0,381,381, 0, 0,147], - [147,595,147,147,147,603,147,147,147,147,274,147,147,590,147], - [147, 0, 21, 27, 0, 0, 0, 0, 28, 33, 0,492, 0, 0,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,145,145, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,145, 0,145,145,145,145,145], - [145,145,145,145,145,145,145,145,145,145,145, 0,145, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145,145, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0], - [ 0,145, 0, 0, 0, 0, 0, 0, 0, 0,145,145,145,145, 0], - [ 0,145, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0], - [ 0,145,145,145,145,145,145,145,145,145,145, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,146,146,146, 0, 0, 0, 0,146,146, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,146,146,146, 0, 0, 0,582, 0, 0, 0, 0,146,146, 0], - [ 0,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0,146,146, 0], - [ 0,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,581,581,582, 0, 0, 0, 0, 0, 0, 0], - [ 0,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT33.js b/public/project/floors/MT33.js deleted file mode 100644 index 3304e03..0000000 --- a/public/project/floors/MT33.js +++ /dev/null @@ -1,107 +0,0 @@ -main.floors.MT33= -{ - "floorId": "MT33", - "title": "冰封雪原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,6": { - "floorId": "MT32", - "loc": [ - 14, - 6 - ] - }, - "14,3": { - "floorId": "MT34", - "loc": [ - 0, - 3 - ] - }, - "9,0": { - "floorId": "MT35", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [147,147,147,147,147,147,147,147,147, 91,147,147,147,147,147], - [147, 0, 27, 34, 29, 0,147,376,595, 0,592, 29, 0, 29,147], - [147,147,147,147,147,590,147,378,586, 0,492, 0, 34, 0,147], - [147, 0,595, 0,482, 0,147,586,586, 34,585,147,147,603, 94], - [147, 0,147,147,147,592, 0, 28, 0, 0,585,484,274, 0,147], - [147, 21, 34,147, 0,492,492,587,587,587,147,147,147, 0,147], - [ 92, 0, 0,590, 34,587, 32, 32,274, 32, 0, 32,147, 0,147], - [147,147,147,147, 27,587,587,602,585, 0,378, 0,147,603,147], - [147, 28, 34,274, 0,381, 0, 0,585,147,147,147,147, 0,147], - [147,403, 27,147,147,147,602,585,585, 0,602, 0, 32, 29,147], - [147,147,147,147, 0, 29, 32, 0,585, 0,147,147,147,147,147], - [147, 27, 33,147,590,147,147,147,147, 34,147, 34,390, 22,147], - [147,147, 28,595, 0, 0,381,147,147, 0,514,403, 34,147,147], - [147,147,147,147,147, 33, 0, 0,603, 0,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,145,145,145,145,145, 0], - [ 0,145,145,145,145,145, 0, 0, 0,145, 0, 0, 0,145,145], - [ 0,145, 0, 0, 0,145,145,145,145,145, 0, 0, 0, 0, 0], - [ 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [145,145,145,145,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,145,145,145, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,145,145, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,146, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,146,146,146, 0, 0, 0], - [ 0,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,146,146, 0, 0, 0, 0, 0, 0, 0, 0,146,146,146, 0], - [ 0, 0,146, 0, 0, 0, 0, 0, 0, 0, 0,146,146, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT34.js b/public/project/floors/MT34.js deleted file mode 100644 index 677748f..0000000 --- a/public/project/floors/MT34.js +++ /dev/null @@ -1,161 +0,0 @@ -main.floors.MT34= -{ - "floorId": "MT34", - "title": "冰封雪原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,3": { - "floorId": "MT33", - "loc": [ - 14, - 3 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "6,2": [ - { - "type": "setValue", - "name": "flag:door_MT34_9_3", - "operator": "+=", - "value": "1" - } - ], - "8,2": [ - { - "type": "setValue", - "name": "flag:door_MT34_9_3", - "operator": "+=", - "value": "1" - } - ], - "8,4": [ - { - "type": "setValue", - "name": "flag:door_MT34_9_3", - "operator": "+=", - "value": "1" - } - ], - "6,4": [ - { - "type": "setValue", - "name": "flag:door_MT34_9_3", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "9,3": { - "0": { - "condition": "flag:door_MT34_9_3==4", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT34_9_3", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147, 0, 0, 0, 0, 0,514, 0,514,147,420, 21,147,147,147], - [ 92, 0,376,484,378, 0, 0, 0, 0, 85,487,441,147,147,147], - [147, 0, 0, 0, 0, 0,514, 0,514,147,430, 21,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147], - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,147] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [145,145,145,145,145,145,145,145,145,145,145, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - [584,584,584,584,584,584,584,584,584,584,584,584,584,584, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584, 0], - [584,584,584,584,584,584,584,584,584,584,584,584,584,584, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,582,582,582, 0, 0,586, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,582,582,582, 0, 0, 0,586,586,586, 0,146,146, 0], - [ 0,587,587,587,587,587,587, 0, 0, 0, 0, 0,146,146,146], - [ 0, 0, 0, 0, 0, 0,587,587, 0, 0, 0, 0,146,146,146], - [ 0, 0, 0, 0, 0, 0, 0,587,587, 0, 0,146,146,146,146], - [ 0, 0,581,581,581, 0, 0, 0, 0, 0, 0,146,146,146, 0], - [ 0, 0, 0, 0,581,581, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bg2map": [ - -], - "fg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70182,70183, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70190,70191, 0], - [ 0, 0,70136,70137,70138,70139, 0, 0, 0, 0, 0, 0,70198,70199, 0], - [ 0, 0,70144,70145,70146,70147, 0, 0, 0, 0, 0, 0,70206,70207, 0], - [ 0, 0,70152,70153,70154,70155, 0, 0, 0, 0, 0, 0,70214,70215, 0], - [ 0, 0,70160,70161,70162,70163, 0, 0, 0,70140,70141,70142,70143, 0, 0], - [ 0, 0,70168,70169,70170,70171, 0, 0, 0,70148,70149,70150,70151, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,70156,70157,70158,70159, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,70164,70165,70166,70167, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,70172,70173,70174,70175, 0, 0] -] -} \ No newline at end of file diff --git a/public/project/floors/MT35.js b/public/project/floors/MT35.js deleted file mode 100644 index 56d835e..0000000 --- a/public/project/floors/MT35.js +++ /dev/null @@ -1,248 +0,0 @@ -main.floors.MT35= -{ - "floorId": "MT35", - "title": "冰封雪原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "10,1": { - "trigger": "action", - "enable": true, - "noPass": null, - "displayDamage": true, - "opacity": 1, - "filter": { - "blur": 0, - "hue": 0, - "grayscale": 0, - "invert": false, - "shadow": 0 - }, - "data": [ - "你来这干什么", - { - "type": "if", - "condition": "(core.getBlockId(10,1)!=='none')", - "true": [ - "把怪踢到这了,想打?", - "没门!", - "你别想过漏怪检测了,啊哈哈哈哈!" - ] - } - ] - }, - "4,1": { - "trigger": "action", - "enable": true, - "noPass": null, - "displayDamage": true, - "opacity": 1, - "filter": { - "blur": 0, - "hue": 0, - "grayscale": 0, - "invert": false, - "shadow": 0 - }, - "data": [ - "你来这干什么", - { - "type": "if", - "condition": "(core.getBlockId(4,1)!=='none')", - "true": [ - "把怪踢到这了,想打?", - "没门!", - "你别想过漏怪检测了,啊哈哈哈哈!" - ] - } - ] - }, - "6,13": [ - "前方漏怪检测会检测智慧小径的怪物是否清完,之后不可返回智慧小径" - ], - "7,1": [ - "这里是漏怪检测,会检测\r[gold]智慧小径\r[]区域是否有遗漏怪物", - { - "type": "function", - "function": "function(){\nconst enemy = Mota.require('@user/legacy-plugin-data').getRemainEnemyString(core.floorIds.slice(30, 40));\nif (enemy.length === 0) {\n\tcore.insertAction(['当前无剩余怪物!', { \"type\": \"hide\", \"remove\": true }, ]);\n} else {\n\tcore.insertAction(enemy);\n}\n}" - } - ], - "7,0": [ - { - "type": "if", - "condition": "(flag:inWinter2===true)", - "true": [ - { - "type": "changeFloor", - "floorId": "MT36", - "loc": [ - 7, - 14 - ] - } - ], - "false": [ - { - "type": "setValue", - "name": "flag:inWinter2", - "value": "true" - }, - { - "type": "function", - "function": "function(){\nMota.require('removeMap_g').removeMaps('MT22', 'MT31', true);\n}" - }, - { - "type": "changeFloor", - "floorId": "MT36", - "loc": [ - 7, - 14 - ] - } - ] - } - ] - }, - "changeFloor": { - "7,14": { - "floorId": "MT33", - "loc": [ - 9, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "7,9": [ - { - "type": "setValue", - "name": "flag:door_MT35_3_9", - "operator": "+=", - "value": "1" - }, - { - "type": "setValue", - "name": "flag:door_MT35_11_9", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "3,9": { - "0": { - "condition": "flag:door_MT35_3_9==1", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT35_3_9", - "operator": "=", - "value": "null" - } - ] - }, - "1": null - }, - "11,9": { - "0": { - "condition": "flag:door_MT35_11_9==1", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT35_11_9", - "value": "null" - } - ] - }, - "1": null - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [585,585,585,585,585,585,585, 91,585,585,585,585,585,585,585], - [ 0, 0, 0, 0, 0, 0,585,516,585, 0, 0, 0, 0, 0, 0], - [70064,70065,70065,70065,70065,70065,585,497,585,70065,70065,70065,70065,70065,70066], - [70072,70073,70073,70073,70073,70073, 0, 0, 0,70073,70073,70073,70073,70073,70074], - [70072,70073,70073,70073,70073,70073, 0, 0, 0,70073,70073,70073,70073,70073,70074], - [70072,70073,70073,70073,70073,70073, 0, 0, 0,70073,70073,70073,70073,70073,70074], - [70072,70073,70073,70073,70073,70073, 0, 0, 0,70073,70073,70073,70073,70073,70074], - [70080,70081,70081,70081,70081,70081, 0, 0, 0,70081,70081,70081,70081,70081,70082], - [147,147,147,147,147,147, 0, 0, 0,147,147,147,147,147,147], - [147,381, 33, 85,592,147,147,595,147,147,592, 85, 33,381,147], - [147, 34,376, 0,494, 34,492, 0,492, 34,494, 0,378, 34,147], - [147,274,147,147,147,147,147, 0,147,147,147,147,147,274,147], - [147, 33,147, 28,595, 34,603, 0,602, 34,590, 27,147, 33,147], - [147, 28,603, 34,147, 28,129, 0,147, 27,147, 34,602, 27,147], - [147,147,147,147,147,147,147, 93,147,147,147,147,147,147,147] -], - "bgmap": [ - [70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058], - [70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058], - [70064,70054,70054,70054,70054,70054,70112, 0,70114,70054,70054,70054,70054,70054,70066], - [ 0, 0, 0, 0, 0, 0,70073, 0,70073, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70073, 0,70073, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70073, 0,70073, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70073, 0,70073, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70081, 0,70081, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70112,70113,70114, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70120,70121,70122, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70120,70121,70122, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70120,70121,70122, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70120,70121,70122, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70120,70121,70122, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70128,70129,70130, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT36.js b/public/project/floors/MT36.js deleted file mode 100644 index 6448cdb..0000000 --- a/public/project/floors/MT36.js +++ /dev/null @@ -1,186 +0,0 @@ -main.floors.MT36= -{ - "floorId": "MT36", - "title": "冰封高原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "7,14": [ - { - "type": "changeFloor", - "floorId": "MT35", - "loc": [ - 7, - 0 - ] - } - ], - "6,14": [ - "在本地图的右方,会看到一个棕色的线,这是由于抗锯齿出现的像素错误。这里关闭抗锯齿即可解决(默认是关闭的)。" - ], - "8,14": [ - "从本区域开始将会出现各种光环怪,这需要你认真思考解决办法", - "注意坚固怪受到光环加成后可能无法被打败,因为会首先计算坚固属性再计算光环", - "本区域的地图较为复杂,请善用楼传的小地图功能", - "由于本区域的跳跃技能表现很奇怪,因此本区域不能使用跳跃技能" - ] - }, - "changeFloor": { - "0,8": { - "floorId": "MT37", - "loc": [ - 14, - 8 - ] - }, - "0,4": { - "floorId": "MT37", - "loc": [ - 14, - 4 - ] - }, - "14,3": { - "floorId": "MT38", - "loc": [ - 0, - 3 - ] - }, - "9,0": { - "floorId": "MT39", - "loc": [ - 9, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "1,3": [ - { - "type": "setValue", - "name": "flag:door_MT36_2_4", - "operator": "+=", - "value": "1" - } - ], - "1,5": [ - { - "type": "setValue", - "name": "flag:door_MT36_2_4", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "2,4": { - "0": { - "condition": "flag:door_MT36_2_4==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT36_2_4", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0, 0, 0,604,604,604,604,604, 91,604, 0,70086, 0, 0], - [ 0, 0, 0, 0,378,604, 0,595, 33, 0,604, 0, 0, 0, 0], - [ 0, 0, 0, 0,617,604,403,604, 0,604,70176,70177,70177,70177,70177], - [604,617,604,390, 0, 27, 34,492,378, 0,617,376,403,484, 94], - [ 92, 0, 85,403,592,604,604,492,604,274,70208,70209,70209,70209,70209], - [604,617,604,396,604, 0,602, 0,609, 27,381, 0, 0, 0, 0], - [587,381,378, 33,600, 33,584,381,492,482, 28, 0, 0, 0, 0], - [587,587,587,587,587, 0,584,376,586,274,586,586,586,482, 28], - [ 92, 0, 34,381, 0,603,492, 34, 28, 0,595, 34,494,376, 21], - [584,584,584,584,584,584,584,584,584,584,584, 0,586,614,586], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,590, 0, 27, 33], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,604,492,604, 28], - [482,482,482,494, 34, 34,604,403,587,590, 0, 28, 33,604, 0], - [482,482,482,585, 34, 34,492, 0,609,482,585,585, 0,274, 0], - [585,585,585,585,585,585,129, 0,129,585,585,585,585,585,585] -], - "bgmap": [ - [70073,70073,70073,70073,70056, 0, 0, 0, 0, 0,70058,70086,70086,70086,70086], - [70073,70073,70073,70073,70056, 0, 0, 0, 0, 0,70058,70094,70094,70094,70094], - [70081,70081,70081,70081,70056, 0, 0, 0, 0, 0,70058,70102,70102,70102,70102], - [ 0, 0, 0, 0,70056, 0, 0, 0, 0, 0, 0,70110,70110,70110,70110], - [ 0, 0, 0, 0,70056, 0, 0, 0, 0, 0,70058,70118,70118,70118,70118], - [ 0, 0, 0, 0,70056, 0, 0, 0, 0, 0,70058,70067,70067,70067,70067], - [70049,70049,70049,70049,70051, 0, 0, 0, 0, 0,70058,70067,70067,70067,70067], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70052,70067,70067,70067,70067], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058], - [70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70059, 0, 0,70058], - [70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70056, 0, 0,70058], - [70081,70081,70081,70081,70081,70081,70081,70081,70081,70081,70081,70056, 0, 0,70058], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70051, 0, 0,70058], - [70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058], - [70056, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0,70058] -], - "fgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70200,70201,70201,70201,70201], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70184,70185,70185,70185,70185], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70192,70193,70193,70193,70193], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70049,70049,70049,70050], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70048,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT37.js b/public/project/floors/MT37.js deleted file mode 100644 index 722ac88..0000000 --- a/public/project/floors/MT37.js +++ /dev/null @@ -1,100 +0,0 @@ -main.floors.MT37= -{ - "floorId": "MT37", - "title": "冰封高原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,8": { - "floorId": "MT36", - "loc": [ - 0, - 8 - ] - }, - "14,4": { - "floorId": "MT36", - "loc": [ - 0, - 4 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [147,147,147,147,147,147,147,147,147,147,147,147,147,147,70072], - [147, 0,147, 33, 0,147, 29, 0,274, 0,147,147,147,147,70072], - [147, 0,600, 0, 33,603, 0, 34, 0, 0, 27, 33,381, 0,70080], - [147,378,147, 27,482,376,617,376, 0,494,482,378,602,604,604], - [147,482,147,602,378,403,70007, 0,482,586,376,381, 0, 0, 94], - [147,381,492, 0,604,494,70015,613,586,586,586,614, 32, 0,604], - [147, 0,595, 0, 33, 0,609,482,609,376, 0, 33,595, 21,587], - [147,147,147, 33,587,587,587,590,70022,70023,274,584, 0,587,587], - [147,390,494, 28, 0, 0, 33, 0,492, 0,378,584, 32, 0, 94], - [147,482,147, 0,584,584,602,584,584,584,584,584,584,584,584], - [147,403,147,609, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [147, 22,608, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [147,482,147, 0, 27, 0,381, 0,590, 0, 33,585, 34,376,585], - [147,396,147, 0,147,147,147,147,147,147, 0,600,403, 34,585], - [147,147,147,147,147,147,147,147,147,147,585,585,585,585,585] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,147, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,70048,70049,70049,70049,147,70049,70049,70050, 0, 0, 0], - [ 0, 0, 0, 0,70056, 0, 0, 0, 0, 0, 0,70058, 0, 0, 0], - [ 0, 0, 0, 0,70056, 0, 0, 0, 0, 0, 0,70058, 0, 0, 0], - [ 0, 0, 0, 0,70056, 0, 0, 0, 0, 0, 0,70052,70049,70049,70049], - [ 0, 0, 0, 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,70064,70112,70113,70114,70065,70065,70065,70065,70065,70065,70065], - [ 0, 0, 0, 0,70072,70073, 0,70073,70073,70073,70073,70073,70073,70073,70073], - [ 0, 0, 0, 0,70080,70081, 0,70081,70081,70081,70081,70081,70081,70081,70081], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,70049, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 17,70120,70121,70122, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 17,70120,70121,70122, 17, 17, 17, 17, 17, 17, 17], - [ 0, 0, 0, 0, 0,70128,70129,70130, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT38.js b/public/project/floors/MT38.js deleted file mode 100644 index f57c181..0000000 --- a/public/project/floors/MT38.js +++ /dev/null @@ -1,123 +0,0 @@ -main.floors.MT38= -{ - "floorId": "MT38", - "title": "冰封高原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [ - "\t[低级智人]\b[down,hero]奇怪,这里的山崖边竟然有护栏,难道这附近有其他人吗?" - ], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,3": { - "floorId": "MT36", - "loc": [ - 14, - 3 - ] - }, - "7,0": { - "floorId": "MT40", - "loc": [ - 7, - 14 - ] - }, - "14,3": { - "floorId": "snowTown", - "loc": [ - 0, - 18 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0, 0, 0, 0,604,604, 91,604,604, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,604,604,274,604,604, 0, 0, 0, 0, 0], - [70177,70177,70177,70177,70177,70178, 0,378, 0,70176,70177,70177,70177,70177,70177], - [ 92, 0,590,381, 34,595,376,614,381,600,376,403,482,378, 94], - [70209,70209,70209,70209,70209,70210, 0,491, 0,70208,70209,70209,70209,70209,70209], - [ 0, 0, 0, 0, 0,584,70187,617,70189,584, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70187,376,70189, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70187,378,70189, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70187,403,70189, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70187,484,70189, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70187,608,70189, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70195,484,70197, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,584,584,584, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bgmap": [ - [70086,70086,70086,70086,70086,70056, 0, 0, 0,70058,70086,70086,70086,70086,70086], - [70094,70094,70094,70094,70094,70056, 0, 0, 0,70058,70094,70094,70094,70094,70094], - [70102,70102,70102,70102,70102,70056, 0, 0, 0,70058,70102,70102,70102,70102,70102], - [70110,70110,70110,70110,70110, 0, 0, 0, 0, 0,70110,70110,70110,70110,70110], - [70118,70118,70118,70118,70118,70056, 0, 0, 0,70058,70118,70118,70118,70118,70118], - [70067,70067,70067,70067,70067,70064,70065, 0,70065,70066,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70069,70070,70070,70070,70071,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70077,70078,70078,70078,70079,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70085,70086,70086,70086,70087,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70093,70094,70094,70094,70095,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70101,70102,70102,70102,70103,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70109,70102, 0,70102,70111,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70117,70056, 0,70058,70119,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70064,70065,70066,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70069,70070,70071,70067,70067,70067,70067,70067,70067] -], - "fgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70201,70201,70201,70201,70201,70202, 0, 0, 0,70200,70201,70201,70201,70201,70201], - [ 0, 0, 0, 0, 0, 0,70179, 0,70181, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70185,70185,70185,70185,70185,70186, 0, 0, 0,70184,70185,70185,70185,70185,70185], - [70193,70193,70193,70193,70193,70194, 0, 0, 0,70192,70193,70193,70193,70193,70193], - [ 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70048,70196,70050, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT39.js b/public/project/floors/MT39.js deleted file mode 100644 index dddeac7..0000000 --- a/public/project/floors/MT39.js +++ /dev/null @@ -1,128 +0,0 @@ -main.floors.MT39= -{ - "floorId": "MT39", - "title": "冰封高原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "9,14": { - "floorId": "MT36", - "loc": [ - 9, - 0 - ] - }, - "14,11": { - "floorId": "MT40", - "loc": [ - 0, - 11 - ] - }, - "14,6": { - "floorId": "MT40", - "loc": [ - 0, - 6 - ] - }, - "14,3": { - "floorId": "MT40", - "loc": [ - 0, - 3 - ] - }, - "13,10": { - "floorId": "MT41", - "loc": [ - 3, - 14 - ] - }, - "7,0": { - "floorId": "MT43", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0, 0, 0, 0,604,604, 91,604,604, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,472,604,611,604,472, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,613,390,608,396,614, 0, 0, 0, 0, 0], - [604, 21,376,403,482,584,584,584,584,584,600,381,378,482, 94], - [484,587, 34, 34,617, 0, 0, 0, 0, 0, 0,70022,70023,70022,70023], - [491,494, 34, 34,482, 0, 0, 0, 0, 0, 33,376, 33,600,604], - [587,587,492,584, 28,381, 0,602,604, 0, 28,378,584, 0, 94], - [ 27,587, 0,584, 28,70020,70021, 0,604,592,604,403,584, 34,604], - [ 33,595, 33,274, 33, 34,587, 27,70007,376, 0,584,584,584,584], - [584,584,492,584,584, 28,587,381,70015,492,595, 0, 0,70126, 0], - [70007, 21, 0,586,586, 0,609, 34, 0,274, 27, 0, 0,543, 0], - [70015, 0,381,595, 0,274,604,587,70022,70023,609, 0, 32, 0, 94], - [584,584,584,584,587, 27,587, 0,590, 0, 0,584,584,584,584], - [ 0, 0, 0, 0,482,492, 0,381,604, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,604,604,604,604,604, 93,604, 0, 0, 0, 0] -], - "bgmap": [ - [70073,70073,70073,70073,70073,70056, 0, 0, 0,70058,70073,70073,70073,70073,70073], - [70073,70073,70073,70073,70073,70056, 0, 0, 0,70058,70073,70073,70073,70073,70073], - [70081,70081,70081,70081,70081,70056, 0, 0, 0,70058,70081,70081,70081,70081,70081], - [304,304,304,304, 0,70064,70065,70065,70065,70066, 0, 0, 0, 0, 0], - [147,147,147,147,302,70072,70073,70073,70073,70074, 0, 0, 0, 0, 0], - [147,147,147,147,302,70080,70081,70081,70081,70082, 0,70048,70049,70049,70049], - [147,147,147,147,310, 0, 0, 0, 0, 0, 0,70056, 0, 0, 0], - [147,147,147,147,147,302, 0, 0, 0, 0, 0,70056, 0, 0, 0], - [147,147,147,147,147,302, 0, 0, 0, 0, 0,70064,70065,70065,70065], - [147,147,147,147,147, 0, 0, 0, 0, 0, 0,70072,70073,70073,70073], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70080,70081,70134,70081], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70065,70065,70065,70065,70059, 0, 0, 0, 0, 0,70060,70065,70065,70065,70065], - [70073,70073,70073,70073,70056, 0, 0, 0, 0, 0,70058,70070,70070,70070,70070], - [70073,70073,70073,70073,70056, 0, 0, 0, 0, 0,70058,70078,70078,70078,70078] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [580,580,580,580,580,70064, 0, 0, 0,70066, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,580, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,580,580, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,580, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,580, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,70116, 0, 0,580, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [580,580,580,580,580,580, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT4.js b/public/project/floors/MT4.js deleted file mode 100644 index c4597e2..0000000 --- a/public/project/floors/MT4.js +++ /dev/null @@ -1,57 +0,0 @@ -main.floors.MT4= -{ - "floorId": "MT4", - "title": "洞穴", - "name": "4", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "T331", - "bgm": "cave.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT3", - "loc": [ - 0, - 7 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [20044,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20043], - [20042,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20040], - [20042,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20040], - [20042, 32, 32,141, 31,141,141,141,141, 0, 32,141, 31, 27,20040], - [20042, 32, 32,141, 28,216, 0, 28,141, 27, 0,213, 28, 31,20048], - [20042,141,213,141, 0,141,215, 32,141, 0, 32,141,141,141,20056], - [20042, 0, 0,141,141,141, 0,141,141,141,213,141, 0, 0,20064], - [20042, 32, 27,141, 0,203, 32,141,215, 0, 32,216, 0, 0, 94], - [20042, 0, 0,216, 0,141, 0,141, 0,141, 0,141, 0, 0,20032], - [20042,141,141,141,141,141,206,141, 27, 0,215,141,203,141,20040], - [20042, 0,345,345, 0, 32, 0,141,141,141,141,141, 0, 0,20040], - [20042, 32, 0, 0,203,336,215, 0, 27,141, 0, 31, 0, 31,20040], - [20042,345,345,345, 0,336, 0,336, 0,141,206,141,141,141,20040], - [20042, 0, 28, 32,216, 0, 0,336, 32,216, 0, 0, 31, 0,20040], - [20036,20033,20033,20033,20033,20033,20033,20033,20033,20033,20033,20033,20033,20033,20035] -], - "bgmap": [ - -], - "fgmap": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT40.js b/public/project/floors/MT40.js deleted file mode 100644 index 28c9fb6..0000000 --- a/public/project/floors/MT40.js +++ /dev/null @@ -1,149 +0,0 @@ -main.floors.MT40= -{ - "floorId": "MT40", - "title": "冰封高原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": null, - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,3": { - "floorId": "MT39", - "loc": [ - 14, - 3 - ] - }, - "0,6": { - "floorId": "MT39", - "loc": [ - 14, - 6 - ] - }, - "0,11": { - "floorId": "MT39", - "loc": [ - 14, - 11 - ] - }, - "7,14": { - "floorId": "MT38", - "loc": [ - 7, - 0 - ] - }, - "14,10": { - "floorId": "snowTown", - "loc": [ - 0, - 10 - ] - }, - "14,4": { - "floorId": "snowTown", - "loc": [ - 0, - 4 - ] - }, - "2,1": { - "floorId": "MT41", - "loc": [ - 6, - 4 - ] - }, - "8,0": { - "floorId": "MT42", - "loc": [ - 8, - 14 - ] - }, - "5,0": { - "floorId": "MT42", - "loc": [ - 5, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [70074, 0,70126,584,584, 91,585,585, 91, 0, 0, 0, 0, 0, 0], - [70074, 0,543,381,274, 0, 34,381, 0, 0, 0, 0, 0, 0, 0], - [70108, 33, 0, 27,70007,585,585, 0,617, 32,381, 32,274, 0,604], - [ 92,614, 21, 34,70015, 28,595, 0,604,604, 0,604, 33,604,604], - [604,604, 0,492, 0,586, 0,492, 0,70179,603,70181, 27, 28, 94], - [604, 34,602, 0, 27,586, 0, 34,584,70187,381,70189,584,584,584], - [ 92,381,584,590,70022,70023,604, 0, 0,70187, 27,70189, 0, 0, 0], - [604, 34,584,381, 33,592, 0, 34, 0,70187, 28,70189, 0, 0, 0], - [584,584,584,592,584,584,584,584, 0,70187,484,70189, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,70195,600,70197,482,482,492], - [ 0, 0, 0,381, 0, 0, 0, 0, 27,604, 0,584,584,584, 94], - [ 92, 0, 0,274, 27, 28, 33,492, 0,482, 28, 0,602, 0,381], - [584,584,584,584,584,595,584,492,584,595,584,584,584,584,584], - [ 0, 0, 0, 0, 0, 33,609, 0,609, 33, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,604,604, 93,604,604, 0, 0, 0, 0, 0] -], - "bgmap": [ - [70073,70073,70073,70056, 0, 0, 0,70058, 0,70072,70073,70073,70073,70073,70073], - [70081,70081, 0,70056, 0, 0, 0,70058, 0,70080,70081,70081,70081,70081,70081], - [ 0, 0, 0,70056, 0, 0, 0,70058, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,70056, 0, 0, 0,70058, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,70056, 0, 0, 0,70058, 0, 0, 0, 0, 0, 0, 0], - [70049,70049,70049,70051, 0, 0, 0,70058,70065,70065, 0,70065,70065,70065,70065], - [ 0, 0, 0, 0, 0, 0, 0,70058,70070,70070,70070,70070,70070,70070,70070], - [ 0, 0, 0, 0, 0, 0, 0,70058,70078,70078,70078,70078,70078,70078,70078], - [70065,70065,70112,70113,70114,70065,70065,70066,70086,70086,70086,70086,70086,70086,70086], - [70073,70073,70073, 0,70073,70073,70073,70074,70049,70049, 0,70049,70049,70049,70049], - [70081,70081,70081, 0,70081,70081,70081,70082, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70065,70065,70065,70065,70065,70059, 0, 0, 0,70060,70065,70065,70065,70065,70065], - [70070,70070,70070,70070,70070,70056, 0, 0, 0,70058,70070,70070,70070,70070,70070], - [70078,70078,70078,70078,70078,70056, 0, 0, 0,70058,70078,70078,70078,70078,70078] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,70134, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0], - [ 0, 0,70120,70121,70122,70097, 0, 0, 0, 0,70196, 0, 0, 0, 0], - [ 0,70105,70120,70121,70122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,70128,70129,70130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT41.js b/public/project/floors/MT41.js deleted file mode 100644 index 139c71a..0000000 --- a/public/project/floors/MT41.js +++ /dev/null @@ -1,160 +0,0 @@ -main.floors.MT41= -{ - "floorId": "MT41", - "title": "冰封山洞", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T331", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "2,13": [ - "怪物身后的水可以对话,对话后获得50000点生命值", - "本层可以使用跳跃技能" - ], - "5,11": [ - "\t[初级智人]\b[up,hero]竟然有水!", - "\t[初级智人]\b[up,hero]这里这么冷,为什么会有水呢?", - { - "type": "animate", - "name": "emm", - "loc": "hero" - }, - "\t[初级智人]\b[up,hero]竟然是温水!", - { - "type": "animate", - "name": "emm", - "loc": "hero" - }, - "\t[初级智人]\b[up,hero]这是为什么呢?", - "\t[初级智人]\b[up,hero]之后应该会知道原因吧。", - "\t[初级智人]\b[up,hero]喝一口吧,已经很长时间没喝水了。", - { - "type": "playSound", - "name": "drink.opus" - }, - { - "type": "sleep", - "time": 2000 - }, - { - "type": "animate", - "name": "amazed", - "loc": "hero" - }, - "\t[初级智人]\b[up,hero]这水果然不一样!", - "\t[初级智人]\b[up,hero]感觉喝过之后要比之前更加有活力了。", - "生命值增加50000", - { - "type": "setValue", - "name": "status:hp", - "operator": "+=", - "value": "50000" - }, - { - "type": "hide", - "remove": true - } - ], - "5,7": [ - "你竟然能发现这里?!", - "那我就送你回到标题界面吧!", - { - "type": "function", - "function": "function(){\n//Mota.require('achievement_r').completeAchievement('explore', 0);\n}" - }, - { - "type": "restart" - } - ] - }, - "changeFloor": { - "3,14": { - "floorId": "MT39", - "loc": [ - 13, - 10 - ] - }, - "6,4": { - "floorId": "MT40", - "loc": [ - 2, - 1 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 34, 0,603,336, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,540, 0, 0, 0,336, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,336,602, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,381, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,603,336, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 17, 0, 0, 0, 34, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 91, 0, 0, 0, 0,381, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,617, 0, 0, 0,336,602, 0, 0, 0, 0], - [ 0, 0,129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,540, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bgmap": [ - [20041,20041,20041,20041,20041,20044,20049,20049,20049,20049,20049,20043,20041,20041,20041], - [20041,20041,20041,20041,20041,20042,20057,20057,20057,20057,20057,20040,20041,20041,20041], - [20041,20041,20041,20041,20041,20042,20065,20065,20065,20065,20065,20040,20041,20041,20041], - [20041,20041,20041,20041,20041,20042, 0, 0, 0, 0, 0,20040,20041,20041,20041], - [20041,20041,20041,20041,20041,20042, 0,20032,20034, 0, 0,20040,20041,20041,20041], - [20041,20041,20041,20041,20041,20036,20033,20035,20042, 0, 0,20040,20041,20041,20041], - [20041,20041,20041,20041,20041,20041,20041,20041,20042, 0, 0,20040,20041,20041,20041], - [20041,20041,20041,20041,20044, 0,20043,20041,20042, 0, 0,20040,20041,20041,20041], - [20041,20041,20041,20041,20042, 0,20040,20041,20042, 0, 0,20040,20041,20041,20041], - [20041,20041,20041,20041,20042,142,20040,20041,20042, 0, 0,20040,20041,20041,20041], - [20044,20049,20049,20049,20050,142,20048,20049,20050, 0, 0,20040,20041,20041,20041], - [20042,20057,20057,20057,20058,142,20056,20057,20058, 0, 0,20040,20041,20041,20041], - [20042,20065,20065,20065,20074, 0,20064,20065,20074, 0, 0,20040,20041,20041,20041], - [20042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20040,20041,20041,20041], - [20036,20033,20034, 0,20032,20033,20033,20033,20033,20033,20033,20035,20041,20041,20041] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,20062, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,20070, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,20078, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT42.js b/public/project/floors/MT42.js deleted file mode 100644 index 4a9ed9c..0000000 --- a/public/project/floors/MT42.js +++ /dev/null @@ -1,180 +0,0 @@ -main.floors.MT42= -{ - "floorId": "MT42", - "title": "冰封高原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "8,14": { - "floorId": "MT40", - "loc": [ - 8, - 0 - ] - }, - "5,14": { - "floorId": "MT40", - "loc": [ - 5, - 0 - ] - }, - "0,7": { - "floorId": "MT43", - "loc": [ - 14, - 7 - ] - }, - "0,2": { - "floorId": "MT43", - "loc": [ - 14, - 2 - ] - }, - "14,2": { - "floorId": "MT44", - "loc": [ - 0, - 2 - ] - }, - "14,13": { - "floorId": "MT44", - "loc": [ - 0, - 13 - ] - }, - "9,2": { - "floorId": "MT46", - "loc": [ - 3, - 14 - ] - }, - "2,0": { - "floorId": "MT47", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "4,9": [ - { - "type": "setValue", - "name": "flag:door_MT42_5_10", - "operator": "+=", - "value": "1" - } - ], - "6,9": [ - { - "type": "setValue", - "name": "flag:door_MT42_5_10", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "5,10": { - "0": { - "condition": "flag:door_MT42_5_10==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT42_5_10", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [604, 21,617,604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 92,611,604,604,482, 0, 0, 0, 0,543, 0, 27, 28,482, 94], - [604, 0, 27, 28,381, 28, 0,604,390,396,588,588,492,614,584], - [584,584,584,584,584, 34, 29,604,482,403, 34,592, 33,376,584], - [ 0, 0, 0, 0, 0,595,604,604,608,604,584,588,403,584,584], - [ 0, 0, 0, 0, 0,381, 0,274, 34, 0, 0,588, 0, 0, 0], - [ 92, 0, 27, 0,617,482,587,587, 0, 0,586,588,617,586,586], - [584,584,617,70022,70023,611,70022,70023, 0,600,492, 27,482, 28,586], - [584, 28, 34,584,608,484,608,584, 0, 33,587,587,492,614,586], - [584, 34,381,584,584, 85,584,584, 0,602, 0, 27,381, 0,586], - [584,584,584,584,420,491,430,584,602, 0,492,604,604,643,586], - [584, 0, 0,584,584,468,585,585, 0, 28,604, 27,604,441,586], - [ 0, 0, 0,584,584,497,585,585, 0, 0,600,403,494, 0, 94], - [ 0, 0, 0,584, 0, 93, 0,585, 93,584,584,584,584,584,584] -], - "bgmap": [ - [70073,70073, 0,70073,70073,70073,70073,70073,70073,70073,70073,70073,70073,70097,70073], - [70049,70049, 0,70049,70073,70073,70073,70097,70073, 0,70073,70073,70073,70073,70073], - [ 0, 0, 0, 0,70058,70105,70081,70081,70081, 0,70105,70049,70049,70049,70049], - [ 0, 0, 0, 0,70058, 0, 0, 0, 0, 0,70056, 0, 0, 0, 0], - [70065,70065,70065,70065,70066, 0, 0, 0, 0, 0,70056, 0, 0, 0, 0], - [70073,70073,70073,70073,70074, 0, 0, 0, 0, 0,70064,70083,70084,70065,70065], - [70081,70081,70081,70081,70082, 0, 0, 0, 0, 0,70080,70090,70091,70081,70081], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70098,70099, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,70060,70116,70059, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,70058,70124,70056, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,70058,70132,70056, 0, 0, 0, 0, 0], - [70060,70065,70065,70059, 0, 0, 0,70058, 0,70056, 0, 0, 0, 0, 0], - [70066,70073,70073,70056, 0, 0, 0,70058, 0,70056, 0, 0, 0, 0, 0], - [70074,70073,70073,70056, 0, 0, 0,70058, 0,70056, 0, 0, 0, 0, 0], - [70074,70073,70073,70056, 0, 0, 0,70058, 0,70064,70065,70065,70065,70065,70065] -], - "fgmap": [ - -], - "bg2map": [ - [ 0,70120,70121,70122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70128,70129,70130,70050, 0, 0, 0, 0,70126, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,70134,70048, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT43.js b/public/project/floors/MT43.js deleted file mode 100644 index 0455b3f..0000000 --- a/public/project/floors/MT43.js +++ /dev/null @@ -1,93 +0,0 @@ -main.floors.MT43= -{ - "floorId": "MT43", - "title": "冰封高原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT42", - "loc": [ - 0, - 7 - ] - }, - "14,2": { - "floorId": "MT42", - "loc": [ - 0, - 2 - ] - }, - "7,14": { - "floorId": "MT39", - "loc": [ - 7, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [70031,70031,70031, 0, 0,70029,70029,70029,70029,70029,70029, 0, 0, 0, 0], - [ 0, 0,378, 0,617, 33,586,586,586, 27, 0, 0,611, 32,604], - [ 0,492,585,585,585,610, 0, 0,274, 0,381,604,604,595, 94], - [70031, 0,585,403,585, 0, 21, 0,602,588,492,592, 0, 32,604], - [70031, 32,595, 28,610,376, 0, 31, 0,588, 27, 33,588,584,584], - [70031,600,584,584,584,608, 0, 0, 32,617, 21, 28,588, 0, 0], - [ 0, 33,381, 27,584,376, 29, 0,584,584,584,584,584, 0, 0], - [ 0,586,586,614,584,441, 0, 0, 0, 0, 0, 0, 0, 0, 94], - [70030,378, 33,381,494,378,602,584, 0, 0, 0, 0, 0, 33,584], - [70030,584,584,584,584,584, 0,584,584, 0,608,403,614, 0,584], - [70030, 0, 0, 0, 0, 0,482,376,403,378,584,584,584, 0,584], - [70030, 0, 0, 0, 0, 0,643,604,604,494,602,376, 33,600,584], - [584,584,584,584,584,584,376, 0,604, 32,584,584,584,584,584], - [ 0, 0, 0, 0, 0,584, 33,403,492, 32, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,604,604, 93,604,604, 0, 0, 0, 0, 0] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70072,70073,70073,70073], - [ 0,70048,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049], - [ 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70056, 0, 0, 0,70060,70113,70113,70059, 0, 0, 0, 0, 0, 0], - [ 0,70056, 0, 0, 0,70058,70121,70121,70056, 0, 0, 0,70060,70065,70065], - [ 0,70056, 0, 0, 0,70058,70121,70121,70056, 0, 0, 0,70058,70073,70073], - [ 0,70056, 0, 0, 0,70058,70129,70129,70064,70065,70065,70065,70066,70081,70081], - [ 0,70056, 0, 0, 0,70058, 0, 0,70072,70073,70073,70073,70074, 0, 0], - [ 0,70056, 0, 0, 0,70058, 0, 0,70080,70081,70081,70081,70082, 0, 0], - [ 0,70064,70065,70065,70065,70066, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70072,70073,70073,70073,70074, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70080,70081,70081,70081,70082, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70065,70065,70065,70065,70065,70059, 0, 0, 0,70060,70065,70065,70065,70065,70065], - [70073,70073,70073,70073,70073,70056, 0, 0, 0,70058,70073,70073,70073,70073,70073], - [70073,70073,70073,70073,70073,70056, 0, 0, 0,70058,70073,70073,70073,70073,70073] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT44.js b/public/project/floors/MT44.js deleted file mode 100644 index 4335b3e..0000000 --- a/public/project/floors/MT44.js +++ /dev/null @@ -1,135 +0,0 @@ -main.floors.MT44= -{ - "floorId": "MT44", - "title": "冰封高原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,13": { - "floorId": "MT42", - "loc": [ - 14, - 13 - ] - }, - "0,2": { - "floorId": "MT42", - "loc": [ - 14, - 2 - ] - }, - "7,14": { - "floorId": "snowTown", - "loc": [ - 7, - 0 - ] - }, - "14,5": { - "floorId": "MT45", - "loc": [ - 0, - 5 - ] - }, - "6,2": { - "floorId": "MT46", - "loc": [ - 11, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,617, 34,403, 34,600, 0, 0], - [ 92, 0,584,584,584, 0,543, 0, 34,604,604,604, 34, 0, 0], - [584,643,584, 0,482,390,403,396, 28, 0,492, 0, 28, 0, 0], - [584,376, 0,403, 0,381, 32,595, 0,602,604,610,70176,70177,70177], - [584,584,584,584,584, 0,584,584,494, 0, 34, 0,608, 0, 94], - [ 0, 0, 0, 0, 0,274, 27, 32,584,614,584,584,70208,70209,70209], - [586, 0, 33,403, 0,492, 0,381,584, 21, 0,584,584, 0, 0], - [586,617,588,492,588,588,602,584,584,584, 0,584,584, 0, 0], - [586, 0, 33, 0,274, 32, 0, 0, 0, 0, 33, 0, 0, 0, 0], - [586,586,586,610,587,587,595, 0, 27, 0, 0,585,585, 0, 0], - [586, 0,600, 0,378,587, 33,617,585,585,492, 33, 33, 0, 0], - [586, 33,586,614,587,587,492, 0,584,584,584,584,584, 0, 0], - [ 92, 0,492, 0,376,381, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [584,584,584,584,584,584,584, 93, 0, 0, 0, 0, 0, 0, 0] -], - "bgmap": [ - [70073,70073,70073,70073,70073,70073,70073,70074,70067,70067,70067,70067,70067,70067,70067], - [70073,70073,70073,70073,70073,70073,70126,70074,70067,70049,70049,70049,70067,70067,70067], - [70049,70049,70049,70049,70081,70081,70134,70082,70056, 0, 0, 0,70058,70067,70067], - [ 0, 0, 0, 0,70058, 0, 0, 0,70056, 0, 0, 0,70058,70067,70067], - [ 0, 0, 0, 0,70058,70049,70049,70049,70051, 0, 0, 0,70058,70067,70067], - [70065,70065,70065,70065,70066, 0, 0, 0, 0, 0, 0, 0, 0,70067,70067], - [70081,70081,70081,70081,70082, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067], - [ 0, 0, 0, 0, 0, 0,70060,70065,70065,70065,70116,70065,70066,70067,70067], - [ 0, 0, 0, 0, 0, 0,70058,70081,70081,70081,70124,70081,70082,70067,70067], - [ 0, 0, 0, 0, 0, 0,70058, 0, 0, 0,70132, 0,70058,70067,70067], - [ 0, 0, 0, 0, 0, 0,70058, 0, 0, 0, 0, 0,70058,70067,70067], - [ 0, 0, 0, 0, 0, 0,70058,70060,70065,70065,70065,70065,70066,70067,70067], - [ 0, 0, 0, 0, 0, 0,70058,70058,70070,70070,70070,70070,70071,70067,70067], - [70065,70065,70065,70065,70065,70065,70066,70058,70078,70078,70078,70078,70079,70067,70067] -], - "fgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70200,70201,70201], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,70048, 0, 0, 0,70050, 0, 0], - [ 0, 0, 0, 0,70050, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70184,70185,70185], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70192,70193,70193], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT45.js b/public/project/floors/MT45.js deleted file mode 100644 index 6de9015..0000000 --- a/public/project/floors/MT45.js +++ /dev/null @@ -1,114 +0,0 @@ -main.floors.MT45= -{ - "floorId": "MT45", - "title": "冰封高原", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,5": { - "floorId": "MT44", - "loc": [ - 14, - 5 - ] - }, - "3,14": { - "floorId": "snowTown", - "loc": [ - 18, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70177,70178, 33, 0, 33,70176,70177,70177,70177,70178,390, 0, 22, 0, 0], - [ 92, 0, 0,403, 0,643, 0, 0, 0,608, 0,403, 0, 0, 0], - [70209,70210,70179, 0,70181,70208,70209,70209,70209,70210,491, 0,396, 0, 0], - [ 0, 0,70187,608,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,70187, 33,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,70187, 21,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,70187,403,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,70187, 33,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,70187,608,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,70187, 0,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,70187, 93,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bgmap": [ - [70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067], - [70067,70067,70049,70049,70049,70067,70067,70067,70067,70067,70049,70049,70049,70067,70067], - [70067,70056, 0, 0, 0,70058,70067,70067,70067,70056, 0, 0, 0,70058,70067], - [70067, 0, 0, 0, 0, 0,70067,70067,70067, 0, 0, 0, 0,70058,70067], - [70067,70056, 0, 0, 0,70058,70067,70067,70067,70056, 0, 0, 0,70058,70067], - [70067,70064,70065, 0,70065,70066,70067,70067,70067,70064,70065,70065,70065,70066,70067], - [70067,70069,70070,70070,70070,70071,70067,70067,70067,70069,70070,70070,70070,70071,70067], - [70067,70077,70078,70078,70078,70079,70067,70067,70067,70077,70078,70078,70078,70079,70067], - [70067,70085,70086,70086,70086,70087,70067,70067,70067,70085,70086,70086,70086,70087,70067], - [70067,70093,70094,70094,70094,70095,70067,70067,70067,70093,70094,70094,70094,70095,70067], - [70067,70101,70102,70102,70102,70103,70067,70067,70067,70101,70102,70102,70102,70103,70067], - [70067,70109,70110,70110,70110,70111,70067,70067,70067,70109,70110,70110,70110,70111,70067], - [70067,70117,70118,70118,70118,70119,70067,70067,70067,70117,70118,70118,70118,70119,70067] -], - "fgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70201,70202, 0, 0, 0,70200,70201,70201,70201,70202, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70048, 0, 0, 0,70050, 0, 0, 0,70048, 0, 0, 0,70050, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70185,70186, 0, 0, 0,70184,70185,70185,70185,70186, 0, 0, 0, 0, 0], - [70193,70194, 0, 0, 0,70192,70193,70193,70193,70194, 0, 0, 0, 0, 0], - [ 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT46.js b/public/project/floors/MT46.js deleted file mode 100644 index 8798100..0000000 --- a/public/project/floors/MT46.js +++ /dev/null @@ -1,121 +0,0 @@ -main.floors.MT46= -{ - "floorId": "MT46", - "title": "冰封高原", - "name": "46", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T331", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "7,11": [ - "\t[初级智人]\b[up,hero]这里也有水!", - "\t[初级智人]\b[up,hero]看来下面的水的源头是这里吗。", - "\t[初级智人]\b[up,hero]喝一口吧,说不定有什么奇效。", - "攻防增加20点,智慧增加1000点", - { - "type": "setValue", - "name": "status:atk", - "operator": "+=", - "value": "20", - "norefresh": true - }, - { - "type": "setValue", - "name": "status:def", - "operator": "+=", - "value": "20", - "norefresh": true - }, - { - "type": "setValue", - "name": "status:mdef", - "operator": "+=", - "value": "1000" - }, - "\t[初级智人]\b[up,hero]...", - "\t[初级智人]\b[up,hero]果然。", - "\t[初级智人]\b[up,hero]这就是智慧之神给我的引导吗。", - "\t[初级智人]\b[up,hero]前往山顶,走吧。", - { - "type": "hide", - "remove": true - } - ] - }, - "changeFloor": { - "3,14": { - "floorId": "MT42", - "loc": [ - 9, - 2 - ] - }, - "11,14": { - "floorId": "MT44", - "loc": [ - 6, - 2 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,376, 33,378, 0,608, 0,492, 0,608, 0,378, 33,376, 0], - [ 0,336,336,336,336, 0,345,492,345, 0,333,333,333,333, 0], - [ 0, 0,617, 34, 0, 0,610, 33,610, 0, 0, 34,600, 0, 0], - [ 0,381,336, 0, 0, 0, 0,643, 0, 0, 0, 0,333,381, 0], - [ 0, 28,336,600, 0, 0, 0, 93, 0, 0, 0,617,333, 27, 0], - [ 0,336,336, 0, 0, 0, 0, 17, 0, 0, 0, 0,333,333, 0], - [ 0,484,492, 0, 0, 0, 0, 17, 0, 0, 0, 0,492,484, 0], - [ 0, 0, 0,540, 0, 0, 0, 17, 0, 0, 0,540, 0, 0, 0] -], - "bgmap": [ - [20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041], - [20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041], - [20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041], - [20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041,20041], - [20044,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20043], - [20042,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20040], - [20042,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20040], - [20042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20040], - [20042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20040], - [20042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20040], - [20042, 0, 0, 0,20032,20033,20034, 0,20032,20033,20034, 0, 0, 0,20040], - [20042, 0, 0, 0,20040,20041,20042,142,20040,20041,20042, 0, 0, 0,20040], - [20042, 0, 0, 0,20040,20041,20042,142,20040,20041,20042, 0, 0, 0,20040], - [20042, 0, 0, 0,20040,20041,20042,142,20040,20041,20042, 0, 0, 0,20040], - [20036,20033,20034, 0,20040,20041,20042,142,20040,20041,20042, 0,20032,20033,20035] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT47.js b/public/project/floors/MT47.js deleted file mode 100644 index a82c689..0000000 --- a/public/project/floors/MT47.js +++ /dev/null @@ -1,138 +0,0 @@ -main.floors.MT47= -{ - "floorId": "MT47", - "title": "冰封高原", - "name": "47", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "7,14": { - "floorId": "MT42", - "loc": [ - 2, - 0 - ] - }, - "7,0": { - "floorId": "MT48", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "6,3": [ - { - "type": "setValue", - "name": "flag:door_MT47_7_3", - "operator": "+=", - "value": "1" - } - ], - "8,3": [ - { - "type": "setValue", - "name": "flag:door_MT47_7_3", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "7,3": { - "0": { - "condition": "flag:door_MT47_7_3==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT47_7_3", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0,70030, 0, 0, 0,604, 91,604,70029,70029,70029,70029, 0, 0], - [ 0, 0,70030, 0,70031, 0,604,468,604, 0, 0, 0,70028,70030,70030], - [70030,70030,70030,70031,70031,70031,604,608,604,70028,70028,70028,70028, 0, 0], - [ 0, 0, 0,70031, 0, 0,611, 85,611, 0, 0, 0,70029,70029,70029], - [70031, 0,381, 33,378,613, 0,376, 33,378,604,643, 0,441,604], - [70031,586,586,586,586,586,602,604,608,604,604, 0,604,378,604], - [70031,376, 34,494, 32,586, 0,604, 0,602, 0,381,604, 33,604], - [70031, 0,403,585,592, 0, 34,604, 33,587,587,587,587,587,587], - [ 0,617,585,585,492,586,586,586,378,587,587, 0,492,482,587], - [ 0, 0,611, 0,376, 33, 0,492, 0, 0,602, 0,587,482,587], - [ 0,643,584,584,584,614,584,584,584,600,584,608,585,585,585], - [70029,376, 21,378,584,376, 0,584, 0,378,584, 34,403, 34,585], - [70029, 33,403, 33,584, 33,381,643,381, 33,584,376, 21,378,585], - [70029,584,584,584,584,584,584, 0,584,584,584,584,584,584,584], - [70029, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 0, 0, 0] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0,70056, 0,70058, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70056, 0,70058, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70056, 0,70058, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70056, 0,70058, 0, 0, 0, 0, 0, 0], - [ 0,70048,70049,70049,70049,70049,70051, 0,70052,70049,70049,70049,70049,70049,70049], - [ 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,70064,70065,70065,70065,70065, 0, 0, 0,70065,70065,70065,70065,70065,70065], - [ 0,70072,70073,70073,70073,70073,70073, 0,70073,70073,70073,70073,70073,70073,70073] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70112,70113,70114, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70120,70121,70122, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT48.js b/public/project/floors/MT48.js deleted file mode 100644 index 8eee639..0000000 --- a/public/project/floors/MT48.js +++ /dev/null @@ -1,217 +0,0 @@ -main.floors.MT48= -{ - "floorId": "MT48", - "title": "冰封高原", - "name": "48", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "7,10": [ - "\t[苍蓝之灵-虚,E647]\b[up,7,7]你来了,智慧之神看中的人。", - "\t[中级智人]\b[up,hero]你是什么人?", - "\t[苍蓝之灵-虚,E647]\b[up,7,7]苍蓝之灵。", - "\t[苍蓝之灵-虚,E647]\b[up,7,7]我跟你之前见到的智慧之神是同一时期的产物。", - "\t[苍蓝之灵-虚,E647]\b[up,7,7]你应该也知道当时发生了什么。", - "\t[中级智人]\b[up,hero]那你又为何出现在这里呢?", - "\t[苍蓝之灵-虚,E647]\b[up,7,7]抬头,看到那宏伟的宫殿了吗?(玩家视角应该看不到)", - "\t[苍蓝之灵-虚,E647]\b[up,7,7]那便是未来之人做下的最后赌注 - 苍蓝之殿。", - "\t[苍蓝之灵-虚,E647]\b[up,7,7]你现在还有很多疑虑吧,那里便有你想要找的答案。", - "\t[中级智人]\b[up,hero]那么我怎么过去?", - "\t[苍蓝之灵-虚,E647]\b[up,7,7]打败我,你便有资格进入。", - "\t[中级智人]\b[up,hero]为什么又是要打一场?", - "\t[苍蓝之灵-虚,E647]\b[up,7,7]......", - "\t[苍蓝之灵-虚,E647]\b[up,7,7]之后,你会明白的。", - { - "type": "hide", - "remove": true - } - ], - "7,0": [ - { - "type": "if", - "condition": "(flag:pale1!==1)", - "true": [ - { - "type": "setCurtain", - "color": [ - 0, - 0, - 0, - 1 - ], - "time": 1500, - "keep": true - }, - { - "type": "setText", - "text": [ - 0, - 0, - 0, - 1 - ], - "background": "winskin3.png" - }, - "人类简史——进化篇", - { - "type": "playSound", - "name": "paper.opus" - }, - "孤注一掷。", - { - "type": "playSound", - "name": "paper.opus" - }, - "为拯救自己,人类执行了苍蓝计划。", - { - "type": "playSound", - "name": "paper.opus" - }, - "硬币一旦抛出,又有谁能得知它的朝向呢?", - { - "type": "playSound", - "name": "paper.opus" - }, - "在它落地之前,前方,是毁灭,亦是重生。", - { - "type": "playSound", - "name": "paper.opus" - }, - "当他踏入宫殿的那一刻,硬币便已抛出。", - { - "type": "playSound", - "name": "paper.opus" - }, - "来自未来的“孤注一掷”。", - { - "type": "playSound", - "name": "paper.opus" - }, - { - "type": "setText", - "text": [ - 255, - 255, - 255, - 1 - ], - "background": "winskin2.png" - }, - { - "type": "changeFloor", - "floorId": "MT49", - "loc": [ - 7, - 14 - ] - }, - { - "type": "setCurtain", - "time": 1500 - }, - "\t[中级智人]\b[up,hero]!!", - "\t[中级智人]\b[up,hero]这,这是!", - "\t[中级智人]\b[up,hero]这就是未来人类的最后底牌了吗?", - "\t[中级智人]\b[up,hero]我一定要弄清楚这里面的东西。", - "\t[中级智人]\b[up,hero]前方,一定会有我所寻找的答案。", - { - "type": "setValue", - "name": "flag:pale1", - "value": "1" - } - ], - "false": [ - { - "type": "changeFloor", - "floorId": "MT49", - "loc": [ - 7, - 14 - ] - } - ] - } - ] - }, - "changeFloor": { - "7,14": { - "floorId": "MT47", - "loc": [ - 7, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "7,7": [ - "\t[中级智人]\b[up,hero]为什么,为什么一定要打一场,来决定胜负呢?", - { - "type": "openDoor", - "loc": [ - 7, - 3 - ] - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [146,146,146,146,146,146,604, 0,604,146,146,146,146,146,146], - [146,146,146,146, 0, 0,604, 0,604, 0,146,146, 0, 0,146], - [ 0, 0, 0, 0, 0, 0,604, 0,604, 0, 0,146,146, 0,146], - [587, 0,584,584,584,584,584, 85,584,584,584,584,584, 0,146], - [587, 0,584, 0, 0, 0,584, 0,584, 0, 0, 0,584, 0, 0], - [587, 0,584, 0, 0, 0,584, 0,584, 0, 0, 0,584,588,588], - [587, 0,584, 0,466, 0,584, 0,584, 0,467, 0,584, 0,588], - [ 0, 0,584, 0, 0,491, 0,647, 0,491, 0, 0,584, 0,588], - [ 0, 0,584, 0,468, 0,584, 0,584, 0,468, 0,584, 0,588], - [ 0,588,584, 0, 0, 0,584, 0,584, 0, 0, 0,584, 0, 0], - [ 0,588,584, 0, 0, 0,584, 0,584, 0, 0, 0,584,604, 0], - [588,588,584,584,584,584,584,492,584,584,584,584,584,604, 0], - [ 0, 0, 0, 0, 0, 0,604, 0,604, 0, 0, 0, 0,604, 0], - [ 0, 0, 0, 0, 0, 0,604, 0,604, 0, 0, 0, 0, 0, 0], - [586,586,586, 0, 0, 0,604, 93,604, 0, 0, 0,588,588,588] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0,70056, 91,70058, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70056, 0,70058, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70056, 0,70058, 0, 0, 0, 0, 0, 0], - [ 0, 0,70048,70049,70049,70049,70051, 0,70052,70049,70049,70049,70050, 0, 0], - [ 0, 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058, 0, 0], - [ 0, 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058, 0, 0], - [ 0, 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058, 0, 0], - [ 0, 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058, 0, 0], - [ 0, 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058, 0, 0], - [ 0, 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058, 0, 0], - [ 0, 0,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058, 0, 0], - [ 0, 0,70064,70065,70065,70065,70059, 0,70060,70065,70065,70065,70066, 0, 0], - [ 0, 0,70072,70073,70073,70073,70056, 0,70058,70073,70073,70073,70074, 0, 0], - [ 0, 0,70080,70081,70081,70081,70056, 0,70058,70081,70081,70081,70082, 0, 0], - [ 0, 0, 0, 0, 0, 0,70056, 0,70058, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT49.js b/public/project/floors/MT49.js deleted file mode 100644 index d01d8f9..0000000 --- a/public/project/floors/MT49.js +++ /dev/null @@ -1,112 +0,0 @@ -main.floors.MT49= -{ - "floorId": "MT49", - "title": "苍蓝之殿-入", - "name": "49", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winter.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "6,10": [ - "以万&定%$*#■◁" - ], - "8,10": [ - "行$天&*至^%?□▼" - ], - "7,14": [ - { - "type": "changeFloor", - "floorId": "MT48", - "loc": [ - 7, - 0 - ] - } - ], - "7,10": [ - { - "type": "changeFloor", - "floorId": "MT50", - "loc": [ - 7, - 14 - ] - } - ] - }, - "changeFloor": {}, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0,80922,80923,80924,80925,80926,80927,81120,81121,81122,81123,81124, 0, 0], - [ 0, 0,80930,80931,80932,80933,80934,80935,81128,81129,81130,81131,81132, 0, 0], - [ 0, 0,80938,80939,80940,80941,80942,80943,81136,81137,81138,81139,81140, 0, 0], - [ 0, 0,80946,80947,80948,80949,80950,80951,81144,81145,81146,81147,81148, 0, 0], - [ 0, 0,80954,80955,80956,80957,80958,80959,81152,81153,81154,81155,81156, 0, 0], - [ 0, 0,80962,80963,80964,80965,80966,80967,81160,81161,81162,81163,81164, 0, 0], - [ 0, 0,80970,80971,80972,80973,80974,80975,81168,81169,81170,81171,81172, 0, 0], - [ 0, 0,80978,80979,80980,80981,80982,80983,81176,81177,81178,81179,81180, 0, 0], - [ 0, 0,80986,80987,80988,80989,80990,80991,81184,81185,81186,81187,81188, 0, 0], - [ 0, 0,80994,80995,80996,80997,80998,80999,81192,81193,81194,81195,81196, 0, 0], - [ 0, 0,81002,81003, 0,81005,129, 91,129,81201,81202,81203,81204, 0, 0], - [ 0, 0,81069,81070,81071, 0, 0, 0, 0, 0,81069,81070,81071, 0, 0], - [ 0, 0,81077,81078,81079, 0, 0, 0, 0, 0,81077,81078,81079, 0, 0], - [ 0,146,146,146,146, 0, 0, 0, 0, 0, 0, 0,146,146, 0], - [146,146,146,146,146,146, 0, 93, 0,146,146,146,146,146,146] -], - "bgmap": [ - [70067,70067,70067,70067,70067,70067, 0, 0, 0,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067, 0, 0, 0,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067, 0, 0, 0,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067, 0, 0, 0,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067, 0, 0, 0,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067, 0, 0, 0,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067, 0, 0, 0,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067, 0, 0, 0,70067,70067,70067,70067,70067,70067], - [70067,70067,70067,70067,70067,70067, 0, 0, 0,70067,70067,70067,70067,70067,70067], - [70067,70067,70048,70049,70049,70049,70056, 0,70058,70049,70049,70049,70050,70067,70067], - [70067,70067,70056, 0, 0, 0,70056, 0,70058, 0, 0, 0,70058,70067,70067], - [70049,70049,70051, 0, 0, 0,70056, 0,70058, 0, 0, 0,70052,70049,70049], - [ 0, 0, 0, 0, 0, 0,70056, 0,70058, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70056, 0,70058, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,70056, 0,70058, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,81085,81086,81087, 0, 0, 0, 0, 0,81085,81086,81087, 0, 0], - [ 0, 0,81093,81094,81095, 0, 0, 0, 0, 0,81093,81094,81095, 0, 0], - [ 0, 0,81101,81102,81103, 0, 0, 0, 0, 0,81101,81102,81103, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT5.js b/public/project/floors/MT5.js deleted file mode 100644 index 9b94e21..0000000 --- a/public/project/floors/MT5.js +++ /dev/null @@ -1,186 +0,0 @@ -main.floors.MT5= -{ - "floorId": "MT5", - "title": "洞穴", - "name": "5", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "T331", - "bgm": "cave.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "14,7": [ - { - "type": "if", - "condition": "(flag:cave==1)", - "true": [ - { - "type": "changeFloor", - "floorId": "MT6", - "loc": [ - 2, - 4 - ], - "direction": "down" - }, - { - "type": "setGlobalValue", - "name": "animateSpeed", - "value": 270.2703 - } - ], - "false": [ - { - "type": "confirm", - "text": "是否提交序章成绩?", - "yes": [ - { - "type": "win", - "reason": "踏上旅途" - }, - { - "type": "exit" - } - ], - "no": [] - }, - { - "type": "setCurtain", - "color": [ - 0, - 0, - 0, - 1 - ], - "time": 1500, - "keep": true - }, - { - "type": "setText", - "text": [ - 0, - 0, - 0, - 1 - ], - "background": "winskin3.png", - "textfont": 20, - "time": 25 - }, - "人类简史——起源篇", - { - "type": "playSound", - "name": "paper.opus" - }, - "走出山洞,看似一个不起眼的举动,却是一个让残酷的真相永远地消失在了历史中的举动。", - { - "type": "playSound", - "name": "paper.opus" - }, - "但是,这个举动,也是人类至今都能与自然和谐共处的根本。", - { - "type": "playSound", - "name": "paper.opus" - }, - "那些残酷的历史将无人知晓,那些人类的残忍杀戮将不会出现。", - { - "type": "playSound", - "name": "paper.opus" - }, - "而这些源头便是这看似无足轻重的一个举动。", - { - "type": "setText", - "text": [ - 255, - 255, - 255, - 1 - ], - "background": "winskin2.png", - "textfont": 20, - "time": 25 - }, - { - "type": "changeFloor", - "floorId": "MT6", - "loc": [ - 2, - 4 - ], - "direction": "down" - }, - { - "type": "setValue", - "name": "flag:cave", - "value": "1" - }, - { - "type": "setGlobalValue", - "name": "animateSpeed", - "value": 270.2703 - } - ] - } - ], - "13,7": [ - "这里是漏怪检测,会检测\r[gold]山洞\r[]区域的怪物是否清空", - { - "type": "function", - "function": "function(){\nconst enemy = Mota.require('@user/legacy-plugin-data').getRemainEnemyString(core.floorIds.slice(0, 5));\nif (enemy.length === 0) {\n\tcore.insertAction(['当前无剩余怪物!', { \"type\": \"hide\", \"remove\": true }, ]);\n} else {\n\tcore.insertAction(enemy);\n}\n}" - } - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT3", - "loc": [ - 14, - 7 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [20044,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20049,20043], - [20042,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20057,20040], - [20042,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20065,20040], - [20042, 32, 27, 0,141, 32, 0, 27, 0, 32,141, 0, 27, 32,20040], - [20050,141,141,213,141,141,141,213,141,141,141,213,141,141,20048], - [20058, 32, 28, 0,141, 32, 0, 28, 0, 32,141, 0, 28, 32,20056], - [20074,141,141,216,141,141,141,216,141,141,141,216,141,141,20064], - [ 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,516, 94], - [20034,336,336,216,336,336,336,216,336,336,336,216,336,336,20032], - [20042, 31, 32, 31,336, 0,203, 0,203, 0,336, 31, 32, 31,20040], - [20042, 0, 28, 0,336, 31,336, 31,336, 31,336, 0, 28, 0,20040], - [20042,215,336,336,336,336,336,215,336,336,336,336,336,215,20040], - [20042, 0, 32, 0,336, 31,336, 31,336, 31,336, 0, 32, 0,20040], - [20042, 0, 27, 0,336, 0,203, 0,203, 0,336, 0, 27, 0,20040], - [20036,20033,20033,20033,20033,20033,20033,20033,20033,20033,20033,20033,20033,20033,20035] -], - "bgmap": [ - -], - "fgmap": [ - -], - "beforeBattle": {}, - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT50.js b/public/project/floors/MT50.js deleted file mode 100644 index 084e098..0000000 --- a/public/project/floors/MT50.js +++ /dev/null @@ -1,123 +0,0 @@ -main.floors.MT50= -{ - "floorId": "MT50", - "title": "苍蓝之殿-中", - "name": "50", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [ - { - "type": "openDoor", - "loc": [ - 2, - 7 - ] - } - ], - "eachArrive": [], - "parallelDo": "", - "events": { - "7,14": [ - { - "type": "changeFloor", - "floorId": "MT49", - "loc": [ - 7, - 10 - ] - } - ], - "5,13": [ - "欢迎来到苍蓝之殿,这是本塔第二章里面最大的一个区,也是最复杂的一个区。整个苍蓝之殿分为五个部分:左下角、右下角、左上角、右上角和中心,每个部分都有不一样的玩法,多多动脑哦。", - "在你刚进入苍蓝之殿时,你只能先前往左下角部分(本地图的左面),右下角暂时不能前往。注意往上走往左依然可以进入左下角,不要只盯着这个地图的左边不放。", - "本区域极大,建议打开小地图游玩。如果打开小地图后打怪出现卡顿,可以尝试在 设置->ui设置 里面打开小地图懒更新设置", - "此区域建议多多使用定点查看功能,鼠标移动到怪物上按C或E即可打开(如果你没有设置自己的快捷键的话)。手机端暂时无法定点查看", - "打完左下角和右下角的boss之后,开四个机关门", - "注意不要忘记购买装备,到了下一章之后本章的商店将不能到达,不过快捷商店还会保留。这些装备在下一章都会有向上合成", - "本区域可以使用跳跃技能,不要忘记了。", - "注意火炬可通行,而且跳跃时会跳过火炬,不会跳到火炬上。", - "三章及以后还会有魔攻怪,因此魔法防御技能的长期收益会较大" - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT51", - "loc": [ - 14, - 7 - ] - }, - "7,0": { - "floorId": "MT60", - "loc": [ - 7, - 14 - ] - }, - "14,7": { - "floorId": "MT62", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 27, 0, 28, 0,648, 0, 0, 0,648, 0, 28, 0, 27,648], - [648, 0,381, 0,482,648, 0, 0, 0,648,482, 0,381, 0,648], - [648, 28, 0, 27, 0,648, 0, 0, 0,648, 0, 27, 0, 28,648], - [648, 0,482, 0,103,648, 0, 0, 0,648,103, 0,482, 0,648], - [648, 85,648,648,648,648, 0, 0, 0,648,648,648,648, 85,648], - [648, 0,648, 0, 0, 0,484, 0,484, 0, 0, 0,648, 0,648], - [ 92, 0, 85, 0, 0, 0, 0, 23, 0, 0, 0, 0, 85, 0, 94], - [648, 0,648, 0, 0, 0,484, 0,484, 0, 0, 0,648, 0,648], - [648, 85,648,648,648,648, 0, 0, 0,648,648,648,648, 85,648], - [648, 0,482, 0,103,648, 0, 0, 0,648,103, 0,482, 0,648], - [648, 28, 0, 27, 0,648, 0, 0, 0,648, 0, 27, 0, 28,648], - [648, 0,381, 0,482,648, 0, 0, 0,648,482, 0,381, 0,648], - [648, 27, 0, 28, 0,706, 92, 0, 0,648, 0, 28, 0, 27,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50403,50404,50405, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50411,50412,50413, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50419,50420,50421, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,648, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT51.js b/public/project/floors/MT51.js deleted file mode 100644 index 90860bf..0000000 --- a/public/project/floors/MT51.js +++ /dev/null @@ -1,123 +0,0 @@ -main.floors.MT51= -{ - "floorId": "MT51", - "title": "苍蓝之殿-左下", - "name": "51", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT50", - "loc": [ - 0, - 7 - ] - }, - "0,8": { - "floorId": "MT52", - "loc": [ - 14, - 8 - ] - }, - "7,0": { - "floorId": "MT53", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "11,12": [ - { - "type": "setValue", - "name": "flag:door_MT51_12_11", - "operator": "+=", - "value": "1" - } - ], - "13,12": [ - { - "type": "setValue", - "name": "flag:door_MT51_12_11", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": { - "12,10": [ - "\t[智人]\b[up,hero]一个奇怪的石头?", - "\t[智人]\b[up,hero]感觉拿在身上会有一种温暖感", - "\t[智人]\b[up,hero]尝试装备在身上吧" - ] - }, - "afterOpenDoor": {}, - "autoEvent": { - "12,11": { - "0": { - "condition": "flag:door_MT51_12_11==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT51_12_11", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 0, 21, 0,596, 32, 0, 32,648, 27,648, 29, 0, 29,648], - [648,376,484, 28,648, 0,381, 0,648, 0,596, 0,378, 0,648], - [648,648,648,648,648, 0,648,648,648, 33,648,648,648,578,648], - [648,594, 33,381,648,539, 34,492, 0,243,648,376,403,378,648], - [648, 33,648,492,648, 0,648,648,648, 0,648,484, 21,484,648], - [648, 27,648, 0, 34, 0,219, 0,103, 0,648,648,494,648,648], - [648,243,648,656,648,648, 0,648,484,648,648, 27, 0, 0, 94], - [ 92, 0,482, 0, 27,492, 34,648, 0, 0,539, 0,381, 0,648], - [648,648,648,648,648,648, 0,648,656,648,648,648,648,648,648], - [648, 0,482, 0, 29, 0,219,648,482, 0,648,491,662,491,648], - [648,648,601,648,492,648, 0,648,648,492,648,648, 85,648,648], - [648,491, 0,648,482,648, 0,648,381, 0,648,596, 0,596,648], - [648, 0,378,648,482,648, 0,220,482,378,492, 0,482, 0,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT52.js b/public/project/floors/MT52.js deleted file mode 100644 index 84591a6..0000000 --- a/public/project/floors/MT52.js +++ /dev/null @@ -1,188 +0,0 @@ -main.floors.MT52= -{ - "floorId": "MT52", - "title": "苍蓝之殿-左下", - "name": "52", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "11,7": [ - { - "type": "setText", - "position": "down" - }, - "“若人心简单,则正义亦易”——柏拉图", - "可是,人心哪能是简单的?", - "那些贪婪的统治者,用他们所谓的民主,用那所谓的公平创造了一个个压迫人民的国度。", - "用自己的肮脏意志,制定了一项项的法律,并冠以正义之名,让每个人都去遵守他们的“正义”。", - "这就是他们所谓的民主。", - "或许是我的想法太过激进了吧,毕竟那些国家也存在了几百年的时间,他们的“正义”或许也没有那么邪恶。", - { - "type": "sleep", - "time": 300 - }, - "——熵增。", - "在阅读这片石碑的那位智人应该不知道这个东西吧。", - "在没有外界能量输入的情况下,一个系统的总熵不会减少。这意味着一个封闭系统必然走向混乱。", - "虽然这只是一个物理规律,但是又未尝不能去描述这个世界呢?", - "那些统治者所做的事,只不过是在增加这片大地的“熵”罢了。", - "江山易改,本性难移。", - "果不其然,战争爆发了...", - "那时,我的内心很平静。虽然我只是个物理学家,但对哲学也略有涉猎,我知道他们那些国家早晚会发动战争。", - "但是,我的内心却有前所未有的恐惧。", - "我本以为这次战争只不过是一些打打闹闹,根本不成气候。", - "但是我错了。" - ] - }, - "changeFloor": { - "14,8": { - "floorId": "MT51", - "loc": [ - 0, - 8 - ] - }, - "4,0": { - "floorId": "MT54", - "loc": [ - 4, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "12,1": [ - { - "type": "setValue", - "name": "flag:door_MT52_11_2", - "operator": "+=", - "value": "1" - } - ], - "12,3": [ - { - "type": "setValue", - "name": "flag:door_MT52_11_2", - "operator": "+=", - "value": "1" - } - ], - "9,1": [ - { - "type": "setValue", - "name": "flag:door_MT52_8_2", - "operator": "+=", - "value": "1" - } - ], - "9,3": [ - { - "type": "setValue", - "name": "flag:door_MT52_8_2", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "11,2": { - "0": { - "condition": "flag:door_MT52_11_2==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT52_11_2", - "operator": "=", - "value": "null" - } - ] - } - }, - "8,2": { - "0": { - "condition": "flag:door_MT52_8_2==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT52_8_2", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648, 91,648,648,648,648,648,648,648,648,648,648], - [648, 27, 0,648, 0,648,376,491,648,249,376,648,578, 0,648], - [648, 0,484,648,243,497, 22,403, 85,403,491, 85, 0,484,648], - [648, 28, 0,220, 0,648,378,491,648,249,378,648,578, 0,648], - [648,648,648,648, 0,648,648,648,648,648,648,648,648, 0,648], - [648, 33, 0,648,482,648, 29, 0,648,381, 0,648,378, 0,648], - [648, 0,381,492, 0,648, 0, 27,539, 0,482,596, 0,103,648], - [648, 33, 0,648, 0,648,648,219,648,648,648,706,648,648,648], - [648,596,648,648,656, 0, 0, 0, 0,482, 0, 0, 0, 0, 94], - [648,376, 0,648,648,648,648,494,648,648,648,648,497,648,648], - [648,482,381,492,482,539, 33, 0, 28,494,376,381, 22,396,648], - [648,601,648,648,648,648,648,243,648,648,648,240,648,648,648], - [648,491, 0,648,484, 0,648, 0, 29, 27,648,491,396,491,648], - [648,103,376,596, 0, 33,220, 0,484, 28,249,403, 21,390,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,648, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT53.js b/public/project/floors/MT53.js deleted file mode 100644 index 68e1b6c..0000000 --- a/public/project/floors/MT53.js +++ /dev/null @@ -1,86 +0,0 @@ -main.floors.MT53= -{ - "floorId": "MT53", - "title": "苍蓝之殿-左下", - "name": "53", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "7,14": { - "floorId": "MT51", - "loc": [ - 7, - 0 - ] - }, - "0,7": { - "floorId": "MT54", - "loc": [ - 14, - 7 - ] - }, - "7,0": { - "floorId": "MT56", - "loc": [ - 7, - 14 - ] - }, - "14,7": { - "floorId": "MT60", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,656, 34,219,648, 0,482, 0,243, 29, 33,492,482,482,648], - [648, 0,648,381,648,648,648,578,648,648,656,648,648,648,648], - [648, 0,648,482,648,376,484,378,648,381, 0,648,376,403,648], - [648, 0,648,563,492, 0,381, 0,648, 0,482,240,484,378,648], - [648,484,648,648,648,648,494,648,648,219,648,648,648,648,648], - [648, 0,578, 0,648,403, 0,484,648, 0, 33,648, 33, 0,648], - [ 92, 0,648,482,648, 0, 21, 0,648,103, 0,220, 0, 0, 94], - [648,492,648, 0,648,390, 0,396,648, 0, 33,648, 33, 0,648], - [648,381,648,381,648,648,249,648,648,219,648,648,648,492,648], - [648,482,648, 0, 0,596, 33, 0,492, 0, 0,539, 27, 0,648], - [648, 0,243,378, 0,648, 0,103,648, 33, 0,648, 0, 28,648], - [648,601,648,492,648,648,243,648,648,648,539,648, 29, 0,648], - [648,378, 0,491,376,648, 0, 0, 34, 0, 0,656, 0,484,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT54.js b/public/project/floors/MT54.js deleted file mode 100644 index 8d1829f..0000000 --- a/public/project/floors/MT54.js +++ /dev/null @@ -1,112 +0,0 @@ -main.floors.MT54= -{ - "floorId": "MT54", - "title": "苍蓝之殿-左下", - "name": "54", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "9,13": [ - "注意,对于同时拥有二连击、三连击等连击属性时,各连击之间为乘算叠加。而对于两个四连击及以上的连击叠加,则会根据杀戮光环的技能说明方式进行叠加,一般是加算", - "那个开关一定要试着去触发一下" - ], - "7,9": [ - { - "type": "function", - "async": true, - "function": "function(){\nMota.require('@user/data-state').Mechanism.BluePalace.doorConvert(7, 9);\n}" - } - ] - }, - "changeFloor": { - "14,7": { - "floorId": "MT53", - "loc": [ - 0, - 7 - ] - }, - "4,14": { - "floorId": "MT52", - "loc": [ - 4, - 0 - ] - }, - "0,7": { - "floorId": "MT55", - "loc": [ - 14, - 7 - ] - }, - "7,0": { - "floorId": "MT57", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 28,491,648, 0, 27,648, 0, 0,656, 0,482, 0, 0,648], - [648,491,376,601, 29, 0,563, 0, 0,648,648,648,648,539,648], - [648,648,492,648,648,220,648,648,648,648,487,441,492, 0,648], - [648, 0,484, 0,219, 0,103,656, 0,648,594,648,648,578,648], - [648, 29, 0, 29,648,378, 0,648,381,494,376,240,378,491,648], - [648,648,648,539,648,648,648,648,376,648,648,648,648,648,648], - [ 92, 0,648, 0,657,403,482,648,482,492,484,484,648, 0, 94], - [648, 0,648, 0,648,648,648,648,656,648,492,648,648, 0,648], - [648, 0,656, 0, 27,381,648,660, 21,648, 0, 0, 0, 0,648], - [648,648,648,648,103, 21,648,648,648,648,539,648,648,648,648], - [648, 28,648, 0, 28,482,648, 0, 27, 0, 33, 0, 28, 0,648], - [648,484,648,596,648,648,648,596,648,648,494,648,648,249,648], - [648, 27,243, 0, 0,381, 0,482, 0,706,376,396,381,491,648], - [648,648,648,648, 93,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,648, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT55.js b/public/project/floors/MT55.js deleted file mode 100644 index d58d956..0000000 --- a/public/project/floors/MT55.js +++ /dev/null @@ -1,80 +0,0 @@ -main.floors.MT55= -{ - "floorId": "MT55", - "title": "苍蓝之殿-左下", - "name": "55", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "6,7": [ - { - "type": "function", - "async": true, - "function": "function(){\nMota.require('@user/data-state').Mechanism.BluePalace.doorConvert(6, 7);\n}" - } - ] - }, - "changeFloor": { - "14,7": { - "floorId": "MT54", - "loc": [ - 0, - 7 - ] - }, - "7,0": { - "floorId": "MT58", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,378,484,648, 28, 0,648, 0,578,376,482,648, 28,482,648], - [648, 0,381,492,482, 27,219, 0,648,482,403,494,482, 29,648], - [648,601,648,648,648,648,648,563,648,648,648,648,657,648,648], - [648,103,484,594, 21, 0,492, 0, 29, 0,482,648, 33, 27,648], - [648,381, 0,648, 0,484,648,648,648,648,657,648, 29, 33,648], - [648,657,648,648,648,648,648, 0, 27, 0,482,648,648,243,648], - [648, 0, 0, 0,381, 0,660, 0,103,648,648,648, 0, 0, 94], - [648,648,648,648,492,648,648, 0, 28,656, 0, 0,484, 0,648], - [648, 27, 29,596, 0, 28,648,494,648,648,657,648,648,648,648], - [648,487, 28,648, 27, 0,492, 0,381,482, 0,492, 29, 28,648], - [648,240,648,648,648,492,648,243,648,648,648,648, 27, 33,648], - [648,487,378,648,390,487,648, 0,648, 0, 28,648,648,220,648], - [648,376,381,249,403,378,648, 33,657, 0, 27, 0,482, 0,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT56.js b/public/project/floors/MT56.js deleted file mode 100644 index 617bae6..0000000 --- a/public/project/floors/MT56.js +++ /dev/null @@ -1,87 +0,0 @@ -main.floors.MT56= -{ - "floorId": "MT56", - "title": "苍蓝之殿-左下", - "name": "56", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "3,8": [ - { - "type": "function", - "async": true, - "function": "function(){\nMota.require('@user/data-state').Mechanism.BluePalace.doorConvert(3, 8);\n}" - } - ] - }, - "changeFloor": { - "7,14": { - "floorId": "MT53", - "loc": [ - 7, - 0 - ] - }, - "0,7": { - "floorId": "MT57", - "loc": [ - 14, - 7 - ] - }, - "14,7": { - "floorId": "MT61", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 0,482,648,390, 21,396,492,482,482,492,484,403,484,648], - [648,381, 0,249, 0,484, 0,648,648,648,648,396, 22,376,648], - [648,657,648,648,648,648,648,648, 27, 0,648,648,648,249,648], - [648, 0, 33, 27, 0,563, 0,657,484, 28,648,378, 0,482,648], - [648,648,648,648,220,648,494,648,648,648,648,596,648,648,648], - [648, 0,482, 0, 0,648, 27, 0,648, 0,648, 0, 0, 0,648], - [ 92, 0,648,648,657,648,484, 29,596,103,539,482, 0,482, 94], - [648, 0,648,660,484,648, 28, 0,648, 27,648,648,648,492,648], - [648,578,648,648,648,648,648,648,648, 0,648, 28,243, 0,648], - [648, 0,381,482, 28, 0,492,482,648, 33,648, 0,648,381,648], - [648,648,494,648,648, 0,648,482,648, 0,219,484,648, 0,648], - [648, 0,381, 0,648,243,648,648,648,648,648,648,648,482,648], - [648, 28,484,376,601, 0, 0, 0,482, 0, 0, 0,220, 0,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT57.js b/public/project/floors/MT57.js deleted file mode 100644 index b8e51c3..0000000 --- a/public/project/floors/MT57.js +++ /dev/null @@ -1,178 +0,0 @@ -main.floors.MT57= -{ - "floorId": "MT57", - "title": "苍蓝之殿-左下", - "name": "57", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "13,8": [ - "本地图不能使用跳跃。中间那个深色的开关可以开启去苍蓝之殿右下角的路。打死那两个石头人开机关门" - ], - "7,1": [ - { - "type": "if", - "condition": "(!flag:palace1)", - "true": [ - { - "type": "openDoor", - "loc": [ - 12, - 7 - ], - "floorId": "MT50" - }, - { - "type": "openDoor", - "loc": [ - 13, - 7 - ], - "floorId": "MT60" - }, - { - "type": "openDoor", - "loc": [ - 12, - 7 - ], - "floorId": "MT61" - }, - { - "type": "playSound", - "name": "door.opus" - }, - "\t[智人]\b[down,hero]貌似有哪里的门开了,应该是苍蓝之殿右下角吧", - "现在可以去苍蓝之殿的右下区域了。注意有三条可以去右边的路,机关门都已经开启" - ] - }, - { - "type": "setValue", - "name": "flag:palace1", - "value": "true" - } - ] - }, - "changeFloor": { - "14,7": { - "floorId": "MT56", - "loc": [ - 0, - 7 - ] - }, - "7,14": { - "floorId": "MT54", - "loc": [ - 7, - 0 - ] - }, - "0,7": { - "floorId": "MT58", - "loc": [ - 14, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "2,2": [ - { - "type": "setValue", - "name": "flag:door_MT57_7_4", - "operator": "+=", - "value": "1" - } - ], - "12,2": [ - { - "type": "setValue", - "name": "flag:door_MT57_7_4", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "7,4": { - "0": { - "condition": "flag:door_MT57_7_4==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT57_7_4", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 0,648,378,403,648,396,661,390,648,403,376,648, 0,648], - [648,376,601,487,390,648, 0,468, 0,648,396,487,601,378,648], - [648, 0,648,494,648,648,487,103,487,648,648,494,648, 0,648], - [648,482,648, 0,381,648,648, 85,648,648,381, 0,648,482,648], - [648, 0,596, 33, 0,656, 0,491, 0,656, 0, 33,596, 0,648], - [648,648,648,648,648,648,648,497,648,648,648,648,648,648,648], - [ 92, 0, 0,484, 0, 0, 0, 22, 0, 0, 0,484, 0, 93, 94], - [648,648,243,648,249,648,648,648,648,648,249,648,243,706,648], - [648, 27, 0,648, 0,403, 0,648, 0,403, 0,648, 0, 28,648], - [648, 0,482,648,390,491,396,494,396,491,390,648,482, 0,648], - [648,601,648,648,648,648,648,648,648,648,648,648,648,601,648], - [648,491,378,657,484,648, 0,484, 0,648,484,657,376,491,648], - [648,381, 0,648, 0,656, 29, 0, 29,656, 0,648, 0,381,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,648, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT58.js b/public/project/floors/MT58.js deleted file mode 100644 index 540054e..0000000 --- a/public/project/floors/MT58.js +++ /dev/null @@ -1,94 +0,0 @@ -main.floors.MT58= -{ - "floorId": "MT58", - "title": "苍蓝之殿-左下", - "name": "58", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "11,3": [ - { - "type": "function", - "async": true, - "function": "function(){\nMota.require('@user/data-state').Mechanism.BluePalace.doorConvert(11, 3);\n}" - } - ], - "6,1": [ - { - "type": "function", - "async": true, - "function": "function(){\nMota.require('@user/data-state').Mechanism.BluePalace.doorConvert(6, 1);\n}" - } - ] - }, - "changeFloor": { - "14,7": { - "floorId": "MT57", - "loc": [ - 0, - 7 - ] - }, - "7,14": { - "floorId": "MT55", - "loc": [ - 7, - 0 - ] - }, - "0,7": { - "floorId": "MT59", - "loc": [ - 14, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 0,381, 0,484, 0,660,494,468, 0,578, 0, 0,594,648], - [648,596,648,648,648,648,648,648,376,491,648,648,648, 0,648], - [648, 21, 0, 33, 0,656, 0,648,648,492,648,660,648, 28,648], - [648,648,648,648,648,648, 0,656, 33, 0,657, 0, 27,484,648], - [648, 0,648,381,482,492, 21,648,648,494,648,648,648,648,648], - [648, 0,594,482,376,648, 0,648,376, 0,657, 0, 0, 0,648], - [ 92, 0,648,648,648,648,220,648, 0,648, 0,648, 0, 0, 94], - [648,484,648, 0, 0,219, 0,648,601, 0,378,648,648,596,648], - [648, 0,648,482,648,648, 0,648,648,648,219,648,381, 0,648], - [648, 0,596, 0, 0,648, 33, 0, 28, 0, 0,492, 0,484,648], - [648,492,648,648,381,648,648,492,648,648,240,648,578,648,648], - [648,378,487,648, 0,648, 0,484, 0,648,468,648,403,376,648], - [648,403,376,249, 0,494, 29, 0, 29,243,484,494,396,491,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT59.js b/public/project/floors/MT59.js deleted file mode 100644 index 4f5aaa5..0000000 --- a/public/project/floors/MT59.js +++ /dev/null @@ -1,207 +0,0 @@ -main.floors.MT59= -{ - "floorId": "MT59", - "title": "苍蓝之殿-左下", - "name": "59", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "12,5": [ - "注意这个boss现在不是必打的,只要能打过去苍蓝殿上方区域的那个黄卫兵就能去上面的区域了,之后回头再来清这个boss也可以" - ] - }, - "changeFloor": { - "14,7": { - "floorId": "MT58", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "2,7": [ - { - "type": "openDoor", - "loc": [ - 4, - 4 - ] - }, - { - "type": "openDoor", - "loc": [ - 4, - 10 - ] - }, - { - "type": "setValue", - "name": "flag:door_palaceSouth", - "operator": "+=", - "value": "1" - }, - { - "type": "setValue", - "name": "flag:door_palace", - "operator": "+=", - "value": "1" - }, - { - "type": "if", - "condition": "(flag:door_palaceSouth===2)", - "true": [ - { - "type": "openDoor", - "loc": [ - 1, - 5 - ], - "floorId": "MT50" - }, - { - "type": "openDoor", - "loc": [ - 13, - 5 - ], - "floorId": "MT50" - }, - { - "type": "openDoor", - "loc": [ - 1, - 9 - ], - "floorId": "MT50" - }, - { - "type": "openDoor", - "loc": [ - 13, - 9 - ], - "floorId": "MT50" - }, - { - "type": "setValue", - "name": "flag:door_palaceSouth", - "value": "null" - }, - "入口处的机关门已开启" - ] - }, - { - "type": "if", - "condition": "(flag:door_palace===4)", - "true": [ - { - "type": "openDoor", - "loc": [ - 7, - 4 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 4, - 7 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 7, - 10 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 10, - 7 - ], - "floorId": "MT72" - }, - { - "type": "setValue", - "name": "flag:door_palace", - "value": "null" - }, - "苍蓝之殿中心处的机关门已经开启,进入后会到达本章最后一个小区域" - ] - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "4,10": { - "1": null - }, - "4,4": { - "1": null - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 27, 0, 27,648, 0,648,578, 0,491, 0,596,482, 0,648], - [648,491, 28,491,648, 0,648, 0,648,648,648,648, 0, 29,648], - [648, 27,468, 27,648,487,648, 21,648, 27, 0,648, 27, 0,648], - [648, 0, 28, 0, 85, 0,648,487,648, 0, 29,657, 0, 28,648], - [648,648,648,648,648,390,648,390,648,484,648,648,706,648,648], - [648,482, 0,482,648, 0,249, 0,648,539,648,482, 91,482,648], - [648, 0,666, 0,492,403,648,648,648, 0,492, 0,381, 0, 94], - [648,482, 0,482,648, 0,249, 0,648,539,648,482, 0,482,648], - [648,648,648,648,648,396,648,396,648,484,648,648,648,648,648], - [648, 0, 27, 0, 85, 0,648,487,648, 0, 29,657, 0, 27,648], - [648, 28,468, 28,648,487,648, 21,648, 28, 0,648, 28, 0,648], - [648,491, 27,491,648, 0,648, 0,648,648,648,648, 0, 29,648], - [648, 28, 0, 28,648, 0,648,578, 0,491, 0,596,482, 0,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,648, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT6.js b/public/project/floors/MT6.js deleted file mode 100644 index 94783cf..0000000 --- a/public/project/floors/MT6.js +++ /dev/null @@ -1,207 +0,0 @@ -main.floors.MT6= -{ - "floorId": "MT6", - "title": "草原", - "name": "6", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "grass", - "bgm": "grass.opus", - "firstArrive": [ - { - "type": "setCurtain", - "time": 500 - }, - "\t[原始人]\b[down,hero]外面也有这些怪物吗。", - "\t[原始人]\b[down,hero]看来上山会有很大的难度啊。", - "\t[智慧结晶]\b[down,4,4]哦?看起来你需要一些帮助?", - "\t[原始人]\b[down,hero]谁?谁在说话?", - "\t[智慧结晶]\b[down,4,4]你往左边看看,那有一个绿色水晶,我就是那个绿色水晶。", - { - "type": "changePos", - "direction": "right" - }, - { - "type": "sleep", - "time": 300 - }, - { - "type": "moveHero", - "steps": [ - "right:1" - ] - }, - "\t[原始人]\b[down,hero]这东西会说话?", - "\t[智慧结晶]\b[down,4,4]对呀对呀。", - "\t[智慧结晶]\b[down,4,4]我叫智慧结晶,是专门来帮助你的。", - "\t[原始人]\b[down,hero]帮助我?你这样怎么帮助我?", - "\t[智慧结晶]\b[down,4,4]别着急,我先给你说一下我的来历。", - "\t[智慧结晶]\b[down,4,4]未来的人类想要拯救他们自己的世界,但是无能为力,只好向历史出手。", - "\t[智慧结晶]\b[down,4,4]于是他们便通过一些方法将我们传送到了这里,让我们来帮助你们。", - "\t[智慧结晶]\b[down,4,4]这样历史便会改写,他们才有可能成功。", - "\t[原始人]\b[down,hero]那你怎么帮助我呢?", - "\t[智慧结晶]\b[down,4,4]很简单,我有很多智慧,你只需要把我放到手里,我就会消失。", - "\t[智慧结晶]\b[down,4,4]我的智慧也会传递给你,你也就能变强了。", - "\t[原始人]\b[down,hero]智慧?智慧有什么用?", - "\t[智慧结晶]\b[down,hero]之后你就会知道的。", - { - "type": "function", - "function": "function(){\ncore.getNextItem();\n}" - }, - { - "type": "sleep", - "time": 300 - }, - "智慧涌入了原始人的大脑", - "\t[原始人]\b[down,hero]这种感觉...", - "\t[原始人]\b[down,hero]感觉好像可以学习一些简单的东西了。", - { - "type": "function", - "function": "function(){\nif (!core.isReplaying()) Mota.require('@motajs/legacy-ui').fixedUi.open('chapter', { chapter: '第一章 勇气' });\n}" - }, - { - "type": "setValue", - "name": "flag:chapter", - "value": "1" - }, - { - "type": "setValue", - "name": "item:skill1", - "value": "1" - }, - { - "type": "setValue", - "name": "item:cross", - "value": "1" - } - ], - "eachArrive": [], - "parallelDo": "", - "events": { - "2,3": [ - { - "type": "changeFloor", - "floorId": "MT5", - "loc": [ - 14, - 7 - ], - "direction": "left" - }, - { - "type": "setGlobalValue", - "name": "animateSpeed", - "value": 277.7778 - } - ], - "5,5": [ - "你可以在百科全书中查看第一章中需要特别说明的怪物特技" - ] - }, - "changeFloor": { - "7,14": { - "floorId": "MT7", - "loc": [ - 7, - 0 - ] - }, - "14,7": { - "floorId": "MT10", - "loc": [ - 0, - 7 - ] - } - }, - "afterBattle": { - "4,12": [ - { - "type": "function", - "function": "function(){\nif (core.status.hero.hp === 1) {\n\t//Mota.require('achievement_r').completeAchievement('normal', 0);\n}\n}" - } - ] - }, - "afterGetItem": { - "4,4": [ - { - "type": "sleep", - "time": 300 - }, - "现在开启了智慧加点功能,该功能将会贯穿整个游戏,下面请仔细阅读玩法", - "人生不能后悔,一旦加过点后,便再也没有办法悔掉,加点时请慎重选择", - "很多技能都有多个等级,升级需要消耗更多智慧,但收益也会随之增多", - "有一些技能为必点技能,这些技能会在说明中特别指出,请尽快早点点这些技能,否则可能会导致游戏无法进行", - "你可以通过拾取绿宝石来获取智慧,拥有足够的智慧后请尽快加点", - "合理分配技能是该塔的关键,所以请加点时慎重选择", - "按J或者点击状态栏的技能树可以打开技能树", - "现在技能树已经可以在百科全书中查看", - "祝您游戏愉快!", - { - "type": "openDoor", - "loc": [ - 2, - 10 - ] - } - ] - }, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [30048, 0, 0,30050, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], - [30056,30057,30057,30058, 0, 0, 29, 20, 32, 29,372, 0,276, 29, 20], - [30064,30060,30118,30066, 0, 0, 0, 20, 29, 34, 20, 0, 20, 20, 20], - [30072,30073,30126,30074, 0, 0, 32, 20, 20, 20, 20, 31, 0, 31, 20], - [ 20, 0, 0, 0, 29, 0, 0, 20, 0, 0,204, 0, 31, 0, 20], - [ 20, 0, 0, 0, 0,129, 29,267, 0, 0, 20,276, 20, 20, 20], - [ 20, 0, 0, 0, 0, 0, 20, 20, 20, 29, 20, 0, 0, 0, 20], - [30060,30112,30113,30114,30065,30066, 0, 34, 0, 0, 20, 29, 20,368, 94], - [30073,30112,30113,30114,30073,30074, 20, 20, 20,209, 0, 34, 0, 0, 20], - [ 20,30120,30121,30122, 20, 0, 0,276, 0, 0, 20,248, 20, 20, 20], - [ 20, 20, 85, 20, 20, 20, 20, 32, 20, 32, 20, 32, 0, 32, 20], - [ 20, 0, 0, 0, 20, 0, 20, 0, 20, 20, 20, 0, 29, 0, 20], - [ 20, 0, 27, 0,214, 33,204, 29,224, 32, 0,368, 20, 20, 20], - [ 20, 0, 0, 0, 20, 0, 20, 32, 20, 0, 20, 29, 0, 29, 20], - [ 20, 20, 20, 20, 20, 20, 20, 93, 20, 20, 20, 20, 20, 20, 20] -], - "bgmap": [ - [ 0, 0, 0, 0, 0,30050, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,30050, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,30050, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,30050, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,30050, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,30050, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [30057,30104,30105,30106,30057,30058, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,30065,30065,30065, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,30073,30073,30073, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "beforeBattle": {}, - "weather": [ - "sun", - 8 - ], - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT60.js b/public/project/floors/MT60.js deleted file mode 100644 index adec2e5..0000000 --- a/public/project/floors/MT60.js +++ /dev/null @@ -1,310 +0,0 @@ -main.floors.MT60= -{ - "floorId": "MT60", - "title": "苍蓝之殿-中", - "name": "60", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "7,14": { - "floorId": "MT50", - "loc": [ - 7, - 0 - ] - }, - "0,7": { - "floorId": "MT53", - "loc": [ - 14, - 7 - ] - }, - "7,0": { - "floorId": "MT61", - "loc": [ - 7, - 14 - ] - }, - "14,7": { - "floorId": "MT64", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "1,3": [ - { - "type": "setValue", - "name": "flag:door_MT60_2_2", - "operator": "+=", - "value": "1" - } - ], - "3,3": [ - { - "type": "setValue", - "name": "flag:door_MT60_2_2", - "operator": "+=", - "value": "1" - } - ], - "3,5": [ - { - "type": "setValue", - "name": "flag:door_MT60_2_2", - "operator": "+=", - "value": "1" - } - ], - "1,5": [ - { - "type": "setValue", - "name": "flag:door_MT60_2_2", - "operator": "+=", - "value": "1" - } - ], - "1,9": [ - { - "type": "setValue", - "name": "flag:door_MT60_2_12", - "operator": "+=", - "value": "1" - } - ], - "1,11": [ - { - "type": "setValue", - "name": "flag:door_MT60_2_12", - "operator": "+=", - "value": "1" - } - ], - "3,11": [ - { - "type": "setValue", - "name": "flag:door_MT60_2_12", - "operator": "+=", - "value": "1" - } - ], - "3,9": [ - { - "type": "setValue", - "name": "flag:door_MT60_2_12", - "operator": "+=", - "value": "1" - } - ], - "11,9": [ - { - "type": "setValue", - "name": "flag:door_MT60_12_12", - "operator": "+=", - "value": "1" - } - ], - "11,11": [ - { - "type": "setValue", - "name": "flag:door_MT60_12_12", - "operator": "+=", - "value": "1" - } - ], - "13,11": [ - { - "type": "setValue", - "name": "flag:door_MT60_12_12", - "operator": "+=", - "value": "1" - } - ], - "13,9": [ - { - "type": "setValue", - "name": "flag:door_MT60_12_12", - "operator": "+=", - "value": "1" - } - ], - "11,3": [ - { - "type": "setValue", - "name": "flag:door_MT60_12_2", - "operator": "+=", - "value": "1" - } - ], - "11,5": [ - { - "type": "setValue", - "name": "flag:door_MT60_12_2", - "operator": "+=", - "value": "1" - } - ], - "13,5": [ - { - "type": "setValue", - "name": "flag:door_MT60_12_2", - "operator": "+=", - "value": "1" - } - ], - "13,3": [ - { - "type": "setValue", - "name": "flag:door_MT60_12_2", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "2,2": { - "0": { - "condition": "flag:door_MT60_2_2==4", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT60_2_2", - "operator": "=", - "value": "null" - } - ] - } - }, - "2,12": { - "0": { - "condition": "flag:door_MT60_2_12==4", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT60_2_12", - "operator": "=", - "value": "null" - } - ] - } - }, - "12,12": { - "0": { - "condition": "flag:door_MT60_12_12==4", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT60_12_12", - "operator": "=", - "value": "null" - } - ] - } - }, - "12,2": { - "0": { - "condition": "flag:door_MT60_12_2==4", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT60_12_2", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,390,441,396,648, 0, 0, 0, 0, 0,648,396,441,390,648], - [648,648, 85,648,648, 0, 0, 0, 0, 0,648,648, 85,648,648], - [648,249, 0,249,648, 0, 0, 0, 0, 0,648,232, 0,232,648], - [648, 0,491, 0,648, 0, 0, 0, 0, 0,648, 0,491, 0,648], - [648,249, 0,249,648,103, 0, 0, 0,103,648,232, 0,232,648], - [648,648,492,648,648, 0, 0, 0, 0, 0,648,648,492,648,648], - [ 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 94], - [648,648,492,648,648, 0, 0, 0, 0, 0,648,648,492,648,648], - [648,578, 0,578,648,103, 0, 0, 0,103,648,671, 0,671,648], - [648, 0,491, 0,648, 0, 0, 0, 0, 0,648, 0,491, 0,648], - [648,578, 0,578,648, 0, 0, 0, 0, 0,648,671, 0,671,648], - [648,648, 85,648,648, 0, 0, 0, 0, 0,648,648, 85,648,648], - [648,390,441,396,648, 0, 0, 0, 0, 0,648,396,441,390,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50400,50401,50402, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50408,50409,50410, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50416,50417,50418, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT61.js b/public/project/floors/MT61.js deleted file mode 100644 index 1f70396..0000000 --- a/public/project/floors/MT61.js +++ /dev/null @@ -1,100 +0,0 @@ -main.floors.MT61= -{ - "floorId": "MT61", - "title": "苍蓝之殿-中", - "name": "61", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "7,14": { - "floorId": "MT60", - "loc": [ - 7, - 0 - ] - }, - "0,7": { - "floorId": "MT56", - "loc": [ - 14, - 7 - ] - }, - "14,7": { - "floorId": "MT67", - "loc": [ - 0, - 7 - ] - }, - "7,0": { - "floorId": "MT72", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,494,482,482,492,484,492, 0,492,484,492,482,482,494,648], - [648,491,648,648,648,648,648,618,648,648,648,648,648,491,648], - [648,497,648, 0, 0, 0, 0, 0, 0, 0, 0, 0,648,497,648], - [648,487,648, 0,482, 0, 0, 0, 0, 0,482, 0,648,487,648], - [648,487,648, 0, 0,103, 0, 0, 0,103, 0, 0,648,487,648], - [648,648,648, 0, 0, 0, 0, 0, 0, 0, 0, 0,648,648,648], - [ 92, 0, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 85, 0, 94], - [648,648,648, 0, 0, 0, 0, 0, 0, 0, 0, 0,648,648,648], - [648,487,648, 0, 0,103, 0, 0, 0,103, 0, 0,648,487,648], - [648,487,648, 0,482, 0, 0, 0, 0, 0,482, 0,648,487,648], - [648,497,648, 0, 0, 0, 0, 0, 0, 0, 0, 0,648,497,648], - [648,491,648,648,648,648,648, 0,648,648,648,648,648,491,648], - [648,494,482,482,492,484,492, 0,492,484,492,482,482,494,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50448,50449,50450,50451,50452, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50456,50457,50458,50459,50460, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50464,50465,50466,50467,50468, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50472,50473,50474,50475,50476, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50480,50481,50482,50483,50484, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT62.js b/public/project/floors/MT62.js deleted file mode 100644 index e04abbf..0000000 --- a/public/project/floors/MT62.js +++ /dev/null @@ -1,98 +0,0 @@ -main.floors.MT62= -{ - "floorId": "MT62", - "title": "苍蓝之殿-右下", - "name": "62", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "2,5": [ - "注意乾坤挪移属性的怪物,它会移动光环的位置。如果光环位置移动到了不包含光环自身怪物的位置,那么怪物自身将不会受到影响。注意,杀戮光环是可以给怪物加光环属性的。", - "以及本区域的特点就是那些光环怪,善用那些光环怪能有意想不到的效果" - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT50", - "loc": [ - 14, - 7 - ] - }, - "14,7": { - "floorId": "MT63", - "loc": [ - 0, - 7 - ] - }, - "7,0": { - "floorId": "MT64", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,403, 0, 33,657, 0, 28, 0, 0,648,376,484,648, 0,648], - [648,492,648,249,648,220,648,648,492,648, 21,381,494,376,648], - [648, 28,648, 27,648, 0,381, 0, 34,648,396,484,648,491,648], - [648, 0,482, 0,648,648,648,596,648,648,648,232,648, 29,648], - [648,648,706,648,648,482, 0, 0, 0,648, 0, 0,578, 0,648], - [648,482, 91,482,648, 0,648,648,648,648,601,648,648,648,648], - [ 92, 0,381, 0,605, 0,492, 0,390,648,403, 0, 0, 0, 94], - [648,482, 0,482,648, 0,648,381, 0,648, 0,648,648,249,648], - [648,648,648,648,648,482,648, 0,484,659, 0,648, 28, 0,648], - [648, 0,484, 0,648, 0,648,648,648,648,657,648, 0,482,648], - [648,378,648,381,249, 0,601, 0,378, 0,482,492,657,648,648], - [648,594,648,648,648,492,648,648,648,648,596,648, 0,482,648], - [648, 0,482, 0,648,484,648, 28, 0,482, 0,648,376, 0,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT63.js b/public/project/floors/MT63.js deleted file mode 100644 index c15ba99..0000000 --- a/public/project/floors/MT63.js +++ /dev/null @@ -1,91 +0,0 @@ -main.floors.MT63= -{ - "floorId": "MT63", - "title": "苍蓝之殿-右下", - "name": "63", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "1,9": [ - "注意,由于杀戮光环产生的光环也会被乾坤挪移影响,例如右下角那几个红光环,它就是由黄光环里面的怪物产生,然后被乾坤挪移影响产生的。", - "以及,融化怪死后产生的光环也是会被乾坤挪移影响的。但是抱团怪不会影响,虽然类似于光环,但实际是不属于光环。" - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT62", - "loc": [ - 14, - 7 - ] - }, - "7,0": { - "floorId": "MT65", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,491,494,484,648,378,482, 0,220, 0, 27, 0, 28, 0,648], - [648,491,648, 0,578, 0,403,648,648,605,648,648,648,494,648], - [648,648,648,220,648,648,648,648,376, 0, 29,648,482,390,648], - [648,376,484,403, 0,227,441,492, 0,103, 0,648,396, 22,648], - [648,601,648,648,492,648,648,648, 28, 0,484,648,482,403,648], - [648, 0, 0,648, 27, 0, 33,648,648,492,648,648,232,648,648], - [ 92, 0,482,648,596,648,648,648,381, 0,482,648, 28, 0,648], - [648, 93, 0,657,103, 0,403,578, 0,376, 0,249, 0, 0,648], - [648,706,648,648,648,648, 0,648,648,648,648,648,648, 29,648], - [648, 0,376, 0,657, 0,482,492, 0,601,381,482,648, 0,648], - [648,648,492,648, 0,648,648,648,376,648, 0,378,648,482,648], - [648, 28, 33,648,484,648,484,648, 0,648,492,648,648, 0,648], - [648, 33, 29,605, 0,220, 0,657, 33,648,378,482,381,578,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT64.js b/public/project/floors/MT64.js deleted file mode 100644 index b438461..0000000 --- a/public/project/floors/MT64.js +++ /dev/null @@ -1,86 +0,0 @@ -main.floors.MT64= -{ - "floorId": "MT64", - "title": "苍蓝之殿-右下", - "name": "64", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "7,14": { - "floorId": "MT62", - "loc": [ - 7, - 0 - ] - }, - "0,7": { - "floorId": "MT60", - "loc": [ - 14, - 7 - ] - }, - "14,4": { - "floorId": "MT65", - "loc": [ - 0, - 4 - ] - }, - "7,0": { - "floorId": "MT67", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,403,396, 22,390,648,376, 0,378,492, 0,484, 0,484,648], - [648,648,648,648, 0,648, 0,103, 0,648,220,648,648,648,648], - [648, 0,482,648,482,648,482, 0,482,659, 0,648,376, 0,648], - [648,378, 0,648,232,648,657,648,648,648, 0,648, 0,403, 94], - [648, 0,381,659, 0, 0, 0,648, 0,403, 0,578,378, 0,648], - [648,648,648,648,648,648,657,648, 0,648,648,648,648,648,648], - [ 92, 0,492, 33,482,648, 0,648,482,240, 27,482, 0, 28,648], - [648,657,648,648, 33,648, 0,492, 0,648,492,648,648,578,648], - [648, 0,381,648,492,648,103,648,648,648, 28, 0,482, 27,648], - [648, 27,482,657, 0,482,596,482, 0,648,249,648,648,671,648], - [648,648,648,648,648,648,648, 0, 28,648, 0,648,390,484,648], - [648,376, 0,648,482, 27,648,220,648,648, 0,494, 21,441,648], - [648,482,403,601, 0, 29,605, 0, 0, 0,484,648,396,484,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT65.js b/public/project/floors/MT65.js deleted file mode 100644 index 67809f0..0000000 --- a/public/project/floors/MT65.js +++ /dev/null @@ -1,86 +0,0 @@ -main.floors.MT65= -{ - "floorId": "MT65", - "title": "苍蓝之殿-右下", - "name": "65", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,4": { - "floorId": "MT64", - "loc": [ - 14, - 4 - ] - }, - "7,14": { - "floorId": "MT63", - "loc": [ - 7, - 0 - ] - }, - "14,6": { - "floorId": "MT66", - "loc": [ - 0, - 6 - ] - }, - "7,0": { - "floorId": "MT68", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,491,390,232, 0,484,648, 0, 0, 0,482, 0, 0,578,648], - [648,378,403,648, 29, 0,648,605,648,648,648,492,648,378,648], - [648,648,494,648, 0,378,648, 0, 27, 21,482, 0,648,484,648], - [ 92, 0,482,648, 27, 0,648,220,648,648,648,596,648,376,648], - [648, 0, 0,648,648,564,648, 0,648, 0,381, 0, 0,240,648], - [648,482, 0,657, 0,403, 0,482,249,103,648,492,648, 0, 94], - [648,648,648,648,492,648,648,648,648,484,605,381,648, 0,648], - [648,482,648,376,484,648, 27,482,492, 0,648, 0,648, 0,648], - [648, 0,605, 21,403,648, 29, 28,648, 0,648,378,484,249,648], - [648, 29,648,648,220,648,596,648,648,220,648,648,648,648,648], - [648, 0,492,491, 0,578, 0,491,648,381, 0, 33, 0,381,648], - [648,249,648,648,648,648,657,648,648,648,492,648,648,659,648], - [648,484, 27, 28,381,492, 0, 0,484,648,376,491, 0,403,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT66.js b/public/project/floors/MT66.js deleted file mode 100644 index 1077160..0000000 --- a/public/project/floors/MT66.js +++ /dev/null @@ -1,205 +0,0 @@ -main.floors.MT66= -{ - "floorId": "MT66", - "title": "苍蓝之殿-右下", - "name": "66", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "1,8": [ - "下面那个装备的作用是对魔攻拥有500点防御", - "本塔一般不需要保存套装等操作,因此移动端不需要担心需要频繁切装备", - "注意这个红门是有嘲讽的,打开之后会出现向右的嘲讽,源头在那个双手剑士" - ], - "6,1": [ - "上面地狱绘图,请做好心理准备" - ] - }, - "changeFloor": { - "0,6": { - "floorId": "MT65", - "loc": [ - 14, - 6 - ] - }, - "7,0": { - "floorId": "MT69", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "4,11": [ - { - "type": "setValue", - "name": "flag:door_MT66_3_12", - "operator": "+=", - "value": "1" - } - ], - "4,13": [ - { - "type": "setValue", - "name": "flag:door_MT66_3_12", - "operator": "+=", - "value": "1" - } - ], - "7,11": [ - { - "type": "setValue", - "name": "flag:door_MT66_6_12", - "operator": "+=", - "value": "1" - } - ], - "7,13": [ - { - "type": "setValue", - "name": "flag:door_MT66_6_12", - "operator": "+=", - "value": "1" - } - ], - "10,11": [ - { - "type": "setValue", - "name": "flag:door_MT66_9_12", - "operator": "+=", - "value": "1" - } - ], - "10,13": [ - { - "type": "setValue", - "name": "flag:door_MT66_9_12", - "operator": "+=", - "value": "1" - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": { - "3,12": { - "0": { - "condition": "flag:door_MT66_3_12==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT66_3_12", - "operator": "=", - "value": "null" - } - ] - } - }, - "6,12": { - "0": { - "condition": "flag:door_MT66_6_12==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT66_6_12", - "operator": "=", - "value": "null" - } - ] - } - }, - "9,12": { - "0": { - "condition": "flag:door_MT66_9_12==2", - "currentFloor": true, - "priority": 0, - "delayExecute": false, - "multiExecute": false, - "data": [ - { - "type": "openDoor" - }, - { - "type": "setValue", - "name": "flag:door_MT66_9_12", - "operator": "=", - "value": "null" - } - ] - } - } - }, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 0,578, 0, 29, 0,706, 0, 21, 0,578, 0,657, 0,648], - [648, 28,648,376,484,378,648,484, 0,403,648,484,648,484,648], - [648, 0,648,648,492,648,648,492,648,648,648,659,648,492,648], - [648,482,249, 0, 27,648, 27,482,648,376,484, 28,648,482,648], - [648,648,648,648, 0,648, 0, 29,648, 0,403, 0,648,482,648], - [ 92, 0,484,648,601,648,220,648,648,232,648,648,648,648,648], - [648, 93, 0,657, 0, 0,484, 0, 0, 0,601, 29, 0,376,648], - [648,706,648,648,648,605,648,605,648,648,648, 0,103, 0,648], - [648, 27, 0,482, 0,381,648, 28, 0,482,648,378, 0,484,648], - [648,648,497,648,648,648,648,648,494,648,648,648,648,563,648], - [648,487,390,648,232,376,648,240,376,648,671,484, 0,484,648], - [648,663,403, 85,403,487, 85,381,487, 85, 0, 0,103, 0,648], - [648,487,396,648,232,378,648,240,378,648,671,484, 0,484,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,648, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT67.js b/public/project/floors/MT67.js deleted file mode 100644 index f532a0e..0000000 --- a/public/project/floors/MT67.js +++ /dev/null @@ -1,79 +0,0 @@ -main.floors.MT67= -{ - "floorId": "MT67", - "title": "苍蓝之殿-右下", - "name": "67", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,7": { - "floorId": "MT61", - "loc": [ - 14, - 7 - ] - }, - "7,14": { - "floorId": "MT64", - "loc": [ - 7, - 0 - ] - }, - "14,7": { - "floorId": "MT68", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 0,601, 0,491,648,484, 0,484,648,484,648, 28,482,648], - [648,484,648,378, 0,249, 0, 21, 0,539, 0,605, 0, 27,648], - [648, 0,648,648,648,648,667,648,492,648,656,648,648,492,648], - [648,390,492, 0,482,648, 28, 0, 27,648, 0,648,482,482,648], - [648,648,648,648, 0,648, 0,103, 0,648,656,648,648,648,648], - [648, 0, 0,220, 0,648,403, 0,484,492, 0, 0,484, 0,648], - [ 92, 0,648,648,596,648,578,648,648,648,648,648, 0, 0, 94], - [648,484, 0,648,381, 0,484,492,376,482, 29,648,657,648,648], - [648, 0, 0,648,648,648,240,648,648,648,243,648,376,491,648], - [648,103, 0,657, 0, 28, 0,482, 0,381, 0,648,381, 28,648], - [648,648,648,648,492,648,648,648,648,648,578,648,671,648,648], - [648,376, 0,605,491,378,648, 0, 0,492,376,648,396,403,648], - [648, 0,491,648,381, 21,578, 0, 0,648,403,494,487,376,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT68.js b/public/project/floors/MT68.js deleted file mode 100644 index 6619adb..0000000 --- a/public/project/floors/MT68.js +++ /dev/null @@ -1,97 +0,0 @@ -main.floors.MT68= -{ - "floorId": "MT68", - "title": "苍蓝之殿-右下", - "name": "68", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "13,8": [ - "右边地狱绘图,请做好心理准备" - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT67", - "loc": [ - 14, - 7 - ] - }, - "7,14": { - "floorId": "MT65", - "loc": [ - 7, - 0 - ] - }, - "14,7": { - "floorId": "MT69", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648,403, 0,396, 0,390, 0,671, 0,492,378, 0,605, 0,648], - [648,648,648,648,648,648,648,648,381,648, 0,484,648,482,648], - [648, 0,605, 0, 27, 0,484,648, 0,648,648,648,648, 0,648], - [648,491,648,648,492,648, 0, 0,657, 0,484, 0, 0,249,648], - [648, 0,648,482,482,648,648,249,648,648,657,648,492,648,648], - [648,220,648,648,492,648, 0,381, 0,648, 0,648, 0, 0,648], - [ 92, 0,578,484,403,668,376,103,378,220,482,578,482,376, 94], - [648,648,648,648,648,648, 0,491, 0,648, 0,648,648,706,648], - [648,390,491,232,396,648,648,494,648,648, 0,249, 28, 0,648], - [648,491,468,648, 0,648,376,482,378,492,381,648, 0,484,648], - [648,494,648,648,482,659, 0, 21, 0,648, 0,648,648,494,648], - [648,482,482,648,648,648,648,648,657,648,648,648,376,403,648], - [648,484,484,648,482,482,492, 0, 0, 0, 0,671,487,378,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,648, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT69.js b/public/project/floors/MT69.js deleted file mode 100644 index 1241b03..0000000 --- a/public/project/floors/MT69.js +++ /dev/null @@ -1,103 +0,0 @@ -main.floors.MT69= -{ - "floorId": "MT69", - "title": "苍蓝之殿-右下", - "name": "69", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "7,6": [ - "提示一个本地图的较优解法:从此处直接向右走,然后反过来把红骑士杀了,就基本上没光环了" - ], - "3,7": [ - "不要被这一层吓到了(,实际上光环只有四个青光环,其他的都是青光环产生的。如果实在想不到解法,中间的那个木牌会提示一种较优解法" - ], - "5,13": [ - "不要被这一层吓到了(,实际上光环只有四个青光环,其他的都是青光环产生的。如果实在想不到解法,中间的那个木牌会提示一种较优解法" - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT68", - "loc": [ - 14, - 7 - ] - }, - "7,14": { - "floorId": "MT66", - "loc": [ - 7, - 0 - ] - }, - "14,7": { - "floorId": "MT71", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 28,484,605, 0,648, 0,390, 0,648, 0,659,491,376,648], - [648, 29, 27,648, 0,494,396, 22,403,494, 0,648,378,381,648], - [648,648,648,648,482,648, 0,491, 0,648,482,648,648,648,648], - [648, 0,491,596, 0,648,648,671,648,648, 0,249,491, 0,648], - [648,243,648,648, 0, 27, 0, 0, 0, 28, 0,648,648,601,648], - [648, 0,484,648,594,648,648,706,648,648,227,648,491, 0,648], - [ 92, 0, 0,706, 28,381, 28,648, 0,491, 0,648, 0, 0, 94], - [648, 0,484,648, 0,484, 0,648,376,381,376,648,491, 0,648], - [648,492,648,648,648,648,648,648,648,648,648,648,648,578,648], - [648,378, 0,381,667, 0,657, 0,657, 0,564,381, 0,376,648], - [648,648,578,648, 0,648,648,403,648,648, 0,648,232,648,648], - [648,484,376,648,491,648,482, 0,482,648,491,648,396,491,648], - [648,378,484,648, 0,706, 0, 0, 0,648, 0,648,491,390,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,648, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,648, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT7.js b/public/project/floors/MT7.js deleted file mode 100644 index 0a95903..0000000 --- a/public/project/floors/MT7.js +++ /dev/null @@ -1,110 +0,0 @@ -main.floors.MT7= -{ - "floorId": "MT7", - "title": "草原", - "name": "7", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "grass", - "bgm": "grass.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "6,7": [ - "设定说明之跳跃技能", - "你可以用这个技能做一些骚操作,比如偷怪后面的宝石", - "当然,为了防止直接把宝石偷完,塔里面也会有相应的措施防止你这么干,比如一张地图只能使用3次" - ] - }, - "changeFloor": { - "7,0": { - "floorId": "MT6", - "loc": [ - 7, - 14 - ] - }, - "0,2": { - "floorId": "MT8", - "loc": [ - 14, - 2 - ] - }, - "14,2": { - "floorId": "MT9", - "loc": [ - 0, - 2 - ] - }, - "0,7": { - "floorId": "MT8", - "loc": [ - 14, - 7 - ] - }, - "14,7": { - "floorId": "MT9", - "loc": [ - 0, - 7 - ] - }, - "7,14": { - "floorId": "MT13", - "loc": [ - 7, - 0 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [ 20, 20, 20, 20, 20, 20, 20, 91, 20, 20, 20, 20, 20, 20, 20], - [ 20, 29, 34, 20, 0, 29, 20, 32, 20, 29, 0, 20, 34, 29, 20], - [ 92, 0, 33,209, 33, 0,204, 33,204, 0, 33,209, 33, 0, 94], - [ 20,152,152,152,152,152,152,152,152,152,152,152,152,152, 20], - [ 20, 0, 29, 29, 0, 0, 29, 0, 29, 0, 0, 29, 29, 0, 20], - [ 20, 29, 0, 0, 29, 0, 0, 29, 0, 0, 29, 0, 0, 29, 20], - [ 20,152,152,152,152,152,152,152,492,152,152,152,152,152, 20], - [ 92, 28, 0,370, 0, 0,129,152,381, 34, 21, 34,381,374, 94], - [ 20,152,152, 0,152, 0, 29,152,152,152,152,152,152, 34, 20], - [ 20, 34, 29, 27,152, 0,152,152, 27, 28, 0,211,152, 0, 20], - [ 20,152,152,255,152, 0,152,403, 33,152,152, 33,152, 28, 20], - [ 20, 0, 0, 0,152,271,492,152,152,152, 0, 27,152, 0, 20], - [ 20, 34,152,152,152,152, 0,255, 0, 32,233,152,492, 34, 20], - [ 20, 21, 28, 0, 0,210, 0, 27,152,152, 0, 33, 0,271, 20], - [ 20, 20, 20, 20, 20, 20, 20, 93, 20, 20, 20, 20, 20, 20, 20] -], - "bgmap": [ - -], - "fgmap": [ - -], - "beforeBattle": {}, - "weather": [ - "sun", - 8 - ], - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT70.js b/public/project/floors/MT70.js deleted file mode 100644 index b7e5c23..0000000 --- a/public/project/floors/MT70.js +++ /dev/null @@ -1,45 +0,0 @@ -main.floors.MT70= -{ -"floorId": "MT70", -"title": "苍蓝之殿-右下", -"name": "70", -"width": 15, -"height": 15, -"canFlyTo": true, -"canFlyFrom": true, -"canUseQuickShop": true, -"cannotViewMap": false, -"images": [], -"ratio": 8, -"defaultGround": "T650", -"bgm": "palaceSouth.opus", -"firstArrive": [], -"eachArrive": [], -"parallelDo": "", -"events": {}, -"changeFloor": {}, -"beforeBattle": {}, -"afterBattle": {}, -"afterGetItem": {}, -"afterOpenDoor": {}, -"autoEvent": {}, -"cannotMove": {}, -"cannotMoveIn": {}, -"map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], -} \ No newline at end of file diff --git a/public/project/floors/MT71.js b/public/project/floors/MT71.js deleted file mode 100644 index e3808de..0000000 --- a/public/project/floors/MT71.js +++ /dev/null @@ -1,182 +0,0 @@ -main.floors.MT71= -{ - "floorId": "MT71", - "title": "苍蓝之殿-右下", - "name": "71", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceSouth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,7": { - "floorId": "MT69", - "loc": [ - 14, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "12,7": [ - { - "type": "openDoor", - "loc": [ - 10, - 13 - ] - }, - { - "type": "openDoor", - "loc": [ - 10, - 1 - ] - }, - { - "type": "setValue", - "name": "flag:door_palaceSouth", - "operator": "+=", - "value": "1" - }, - { - "type": "setValue", - "name": "flag:door_palace", - "operator": "+=", - "value": "1" - }, - { - "type": "if", - "condition": "(flag:door_palaceSouth===2)", - "true": [ - { - "type": "openDoor", - "loc": [ - 1, - 5 - ], - "floorId": "MT50" - }, - { - "type": "openDoor", - "loc": [ - 13, - 5 - ], - "floorId": "MT50" - }, - { - "type": "openDoor", - "loc": [ - 1, - 9 - ], - "floorId": "MT50" - }, - { - "type": "openDoor", - "loc": [ - 13, - 9 - ], - "floorId": "MT50" - }, - { - "type": "setValue", - "name": "flag:door_palaceSouth", - "value": "null" - }, - "入口处的机关门已开启" - ] - }, - { - "type": "if", - "condition": "(flag:door_palace===4)", - "true": [ - { - "type": "openDoor", - "loc": [ - 7, - 4 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 4, - 7 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 7, - 10 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 10, - 7 - ], - "floorId": "MT72" - }, - { - "type": "setValue", - "name": "flag:door_palace", - "value": "null" - }, - "苍蓝之殿中心处的机关门已经开启,进入后会到达本章最后一个小区域" - ] - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648,378,484,671, 0,648, 0, 0,484, 0, 85,376,487,376,648], - [648,484,376,648, 0,648, 0,648,648,492,648, 0,378, 0,648], - [648,494,648,648,484,648,484,648,376, 0,648,376,476,376,648], - [648,378,484,232, 0,648, 0,648, 0,484,648, 0,378, 0,648], - [648,484,376,648, 0,648, 0,578,378, 0,648,648,648,648,648], - [648,648,648,648,657,648,657,648,648,648,648,484, 0,484,648], - [ 92, 0, 0, 0, 0,491, 0, 21, 0, 0,492, 0,673, 0,648], - [648,648,648,648,657,648,657,648,648,648,648,484, 0,484,648], - [648,484,376,648, 0,648, 0,578,378, 0,648,648,648,648,648], - [648,378,484,232, 0,648, 0,648, 0,484,648, 0,376, 0,648], - [648,494,648,648,484,648,484,648,376, 0,648,378,476,378,648], - [648,484,376,648, 0,648, 0,648,648,492,648, 0,376, 0,648], - [648,378,484,671, 0,648, 0, 0,484, 0, 85,378,487,378,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT72.js b/public/project/floors/MT72.js deleted file mode 100644 index 2e55314..0000000 --- a/public/project/floors/MT72.js +++ /dev/null @@ -1,97 +0,0 @@ -main.floors.MT72= -{ - "floorId": "MT72", - "title": "苍蓝之殿-中", - "name": "72", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "4,10": [ - "打败四个区域的boss后开机关门" - ] - }, - "changeFloor": { - "7,14": { - "floorId": "MT61", - "loc": [ - 7, - 0 - ] - }, - "7,0": { - "floorId": "MT73", - "loc": [ - 7, - 14 - ] - }, - "7,7": { - "floorId": "MT94", - "loc": [ - 7, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,648], - [648, 0,487, 0, 0, 0, 0,103, 0, 0, 0, 0,487, 0,648], - [648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,648], - [648, 0, 0, 0,648,648,648, 85,648,648,648, 0, 0, 0,648], - [648, 0, 0, 0,648, 0, 0, 0, 0, 0,648, 0, 0, 0,648], - [648, 0, 0, 0,648, 0, 0, 0, 0, 0,648, 0, 0, 0,648], - [648, 0,103, 0, 85, 0, 0, 87, 0, 0, 85, 0,103, 0,648], - [648, 0, 0, 0,648, 0, 0, 0, 0, 0,648, 0, 0, 0,648], - [648, 0, 0, 0,648, 0, 0, 0, 0, 0,648, 0, 0, 0,648], - [648, 0, 0, 0,129,648,648, 85,648,648,648, 0, 0, 0,648], - [648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,648], - [648, 0,487, 0, 0, 0, 0,103, 0, 0, 0, 0,487, 0,648], - [648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50448,50449,50450,50451,50452, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50456,50457,50458,50459,50460, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50464,50465,50466,50467,50468, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50472,50473,50474,50475,50476, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50480,50481,50482,50483,50484, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT73.js b/public/project/floors/MT73.js deleted file mode 100644 index c6519aa..0000000 --- a/public/project/floors/MT73.js +++ /dev/null @@ -1,105 +0,0 @@ -main.floors.MT73= -{ - "floorId": "MT73", - "title": "苍蓝之殿-中", - "name": "73", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "6,12": [ - "这里是苍蓝之殿的上方两区域,两区域都可以去,不再像下方一样需要打开开关另一个区域才会开。", - "这里打完之后就可以到第二章的最终区域了,最终区域在苍蓝之殿的正中心,也就是这里向下走一个地图。" - ] - }, - "changeFloor": { - "7,14": { - "floorId": "MT72", - "loc": [ - 7, - 0 - ] - }, - "7,0": { - "floorId": "MT74", - "loc": [ - 7, - 14 - ] - }, - "0,7": { - "floorId": "MT81", - "loc": [ - 14, - 7 - ] - }, - "14,7": { - "floorId": "MT88", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,494,482,482,492,484,492, 0,492,484,492,482,482,494,648], - [648,491,648,648,648,648,648, 0,648,648,648,648,648,491,648], - [648,497,648, 0, 0, 0, 0, 0, 0, 0, 0, 0,648,497,648], - [648,487,648, 0, 0, 0, 0, 0, 0, 0, 0, 0,648,487,648], - [648,487,648, 0, 0,103, 0, 0, 0,103, 0, 0,648,487,648], - [648,648,648, 0, 0, 0, 0, 0, 0, 0, 0, 0,648,648,648], - [ 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94], - [648,648,648, 0, 0, 0, 0, 0, 0, 0, 0, 0,648,648,648], - [648,487,648, 0, 0,103, 0, 0, 0,103, 0, 0,648,487,648], - [648,487,648, 0, 0, 0, 0, 0, 0, 0, 0, 0,648,487,648], - [648,497,648, 0, 0, 0, 93, 0, 0, 0, 0, 0,648,497,648], - [648,491,648,648,648,648,706, 0,648,648,648,648,648,491,648], - [648,494,482,482,492,484,492, 0,492,484,492,482,482,494,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50448,50449,50450,50451,50452, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50456,50457,50458,50459,50460, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50464,50465,50466,50467,50468, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50472,50473,50474,50475,50476, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0,50480,50481,50482,50483,50484, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,648, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT74.js b/public/project/floors/MT74.js deleted file mode 100644 index b1c6da2..0000000 --- a/public/project/floors/MT74.js +++ /dev/null @@ -1,100 +0,0 @@ -main.floors.MT74= -{ - "floorId": "MT74", - "title": "苍蓝之殿-中", - "name": "74", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "7,0": { - "floorId": "MT75", - "loc": [ - 7, - 14 - ] - }, - "7,14": { - "floorId": "MT73", - "loc": [ - 7, - 0 - ] - }, - "0,7": { - "floorId": "MT78", - "loc": [ - 14, - 7 - ] - }, - "14,7": { - "floorId": "MT87", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,487,487,487,648, 0, 0, 0, 0, 0,648,487,487,487,648], - [648,648,497,648,648, 0, 0, 0, 0, 0,648,648,497,648,648], - [648, 0, 0, 0,648, 0, 0, 0, 0, 0,648, 0, 0, 0,648], - [648, 0,487, 0,648, 0, 0, 0, 0, 0,648, 0,487, 0,648], - [648, 0, 0, 0,648,103, 0, 0, 0,103,648, 0, 0, 0,648], - [648,648,494,648,648, 0, 0, 0, 0, 0,648,648,494,648,648], - [ 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94], - [648,648,494,648,648, 0, 0, 0, 0, 0,648,648,494,648,648], - [648, 0, 0, 0,648,103, 0, 0, 0,103,648, 0, 0, 0,648], - [648, 0,487, 0,648, 0, 0, 0, 0, 0,648, 0,487, 0,648], - [648, 0, 0, 0,648, 0, 0, 0, 0, 0,648, 0, 0, 0,648], - [648,648,497,648,648, 0, 0, 0, 0, 0,648,648,497,648,648], - [648,487,487,487,648, 0, 0, 0, 0, 0,648,487,487,487,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50400,50401,50402, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50408,50409,50410, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50416,50417,50418, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT75.js b/public/project/floors/MT75.js deleted file mode 100644 index 0a609c0..0000000 --- a/public/project/floors/MT75.js +++ /dev/null @@ -1,93 +0,0 @@ -main.floors.MT75= -{ - "floorId": "MT75", - "title": "苍蓝之殿-中", - "name": "75", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "7,14": { - "floorId": "MT74", - "loc": [ - 7, - 0 - ] - }, - "0,7": { - "floorId": "MT76", - "loc": [ - 14, - 7 - ] - }, - "14,7": { - "floorId": "MT85", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648,491,491,494,491,494, 0, 0, 0,494,491,494,491,491,648], - [648,648,648,648,648,648, 0, 0, 0,648,648,648,648,648,648], - [648,484,484,492,484,492, 0, 0, 0,492,484,492,484,484,648], - [648,648,648,648,648,648, 0, 0, 0,648,648,648,648,648,648], - [648, 0, 0, 0, 0,103, 0, 0, 0,103, 0, 0, 0, 0,648], - [648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,648], - [ 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94], - [648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,648], - [648, 0, 0, 0, 0,103, 0, 0, 0,103, 0, 0, 0, 0,648], - [648,648,648,648,648,648, 0, 0, 0,648,648,648,648,648,648], - [648,484,484,492,484,492, 0, 0, 0,492,484,492,484,484,648], - [648,648,648,648,648,648, 0, 0, 0,648,648,648,648,648,648], - [648,491,491,494,491,494, 0, 0, 0,494,491,494,491,491,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50403,50404,50405, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50411,50412,50413, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50419,50420,50421, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT76.js b/public/project/floors/MT76.js deleted file mode 100644 index 4b004a9..0000000 --- a/public/project/floors/MT76.js +++ /dev/null @@ -1,79 +0,0 @@ -main.floors.MT76= -{ - "floorId": "MT76", - "title": "苍蓝之殿-左上", - "name": "76", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT75", - "loc": [ - 0, - 7 - ] - }, - "0,7": { - "floorId": "MT77", - "loc": [ - 14, - 7 - ] - }, - "3,14": { - "floorId": "MT78", - "loc": [ - 3, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 34,378,513,482,648, 21,376,403,378, 34,648,378, 29,648], - [648,376, 34,648, 0,648,648,492,648,648, 0,648,482,376,648], - [648,648,648,648,682,648, 27, 29, 28,648,513,648,648,671,648], - [648, 0,682, 33, 0,648,648,578,648,648, 0,232, 27, 33,648], - [648,484,648, 0,381, 0,648,103,657,484, 0,648, 29, 28,648], - [648, 0,648,648,648,492,648, 0,648, 0,381,648,648,494,648], - [ 92, 0,648,376, 0,378,648,682,648,648,492,648, 92, 0, 94], - [648, 0,492, 0, 22, 0,648, 27,484, 29, 0,648,648,648,648], - [648, 0,648,381, 0,491,648, 0,648,657,648,648, 0,378,648], - [648,657,648,648,682,648,648,658,648, 0,482,658,482, 0,648], - [648, 0, 33, 0, 0,648, 0,482,492, 27, 0,648,648,232,648], - [648,648,648,648,249,648,482,648,648,648,682,648, 29,376,648], - [648, 0,482, 0, 0,648, 0,482,648, 0, 0,648,378,482,648], - [648,648,648, 93,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT77.js b/public/project/floors/MT77.js deleted file mode 100644 index 499ad54..0000000 --- a/public/project/floors/MT77.js +++ /dev/null @@ -1,72 +0,0 @@ -main.floors.MT77= -{ - "floorId": "MT77", - "title": "苍蓝之殿-左上", - "name": "77", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT76", - "loc": [ - 0, - 7 - ] - }, - "12,14": { - "floorId": "MT79", - "loc": [ - 12, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 0,648, 0,648, 0,381, 0,648,378, 34,648,482,376,648], - [648,482,648,482,648,376,491,378,494, 34,381,671,381,482,648], - [648, 0,648, 0,648,618,648,648,648,648,232,648,648,648,648], - [648,538,403,538,492,378, 0,677, 0,482, 0, 0,482, 0,648], - [648,648,648,648,648,648,648,648,658,648,648,492,648,682,648], - [648,396,390,658,482,378,482,671,103, 0,484, 0,648,482,648], - [648,648,648,648,648,648,648,648,658,648,648,682,648, 0, 94], - [648,682, 0,682, 0,376,677,648, 0,482,648, 0,648,482,648], - [648, 0,648, 0,648,648, 0,648,578,648,648,492,648,682,648], - [648, 27,599, 28, 0,492,484,648, 29, 0,648, 27, 0, 28,648], - [648,648,648,648, 0,648, 0,658,103, 29,578, 0, 29, 0,648], - [648,403,378,648,513,648,648,648,658,648,648,648,492,648,648], - [648,376, 33,618, 0, 33, 0,658, 0, 0,648, 0, 0, 33,648], - [648,648,648,648,648,648,648,648,648,648,648,648, 93,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT78.js b/public/project/floors/MT78.js deleted file mode 100644 index 42cf519..0000000 --- a/public/project/floors/MT78.js +++ /dev/null @@ -1,93 +0,0 @@ -main.floors.MT78= -{ - "floorId": "MT78", - "title": "苍蓝之殿-左上", - "name": "78", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "3,0": { - "floorId": "MT76", - "loc": [ - 3, - 14 - ] - }, - "14,7": { - "floorId": "MT74", - "loc": [ - 0, - 7 - ] - }, - "0,10": { - "floorId": "MT79", - "loc": [ - 14, - 10 - ] - }, - "0,6": { - "floorId": "MT79", - "loc": [ - 14, - 6 - ] - }, - "7,14": { - "floorId": "MT81", - "loc": [ - 7, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648, 91,648,648,648,648,648,648,648,648,648,648,648], - [648, 0,648, 0, 0,648, 33, 0,682, 0, 34,648, 34, 0,648], - [648,482,648, 34, 0,657, 0, 0,648, 28, 0,578, 0, 27,648], - [648, 0,648,648,492,648,648,677,648,648,648,648,648,492,648], - [648, 27, 0,249, 0,648, 29, 0,648, 27,381, 0,381, 28,648], - [648,492,648,648,482,648, 0,648,648,232,648,648,648,648,648], - [ 92, 0, 33,648, 28,648, 21, 0,648, 0, 0,648,482, 0,648], - [648, 0, 0,578, 0,648,648,648,648,648, 0,513, 0, 0, 94], - [648,492,648,648,648,648,494, 0, 21,648,484,648,482, 0,648], - [648, 0, 0,677, 0,491, 0,648, 0,648, 0,648,648,494,648], - [ 92, 0,484,648,648,648,659,648,682,648,682,648, 0,381,648], - [648,648,648,648,376,232, 0,492, 0,657, 0,658, 33, 0,648], - [648,376,482,648,378,648,378,648,648,648,648,648,648,677,648], - [648,403,378,618,381,648, 0, 0,679, 0, 0,376, 0, 0,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT79.js b/public/project/floors/MT79.js deleted file mode 100644 index 68f356e..0000000 --- a/public/project/floors/MT79.js +++ /dev/null @@ -1,93 +0,0 @@ -main.floors.MT79= -{ - "floorId": "MT79", - "title": "苍蓝之殿-左上", - "name": "79", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,6": { - "floorId": "MT78", - "loc": [ - 0, - 6 - ] - }, - "14,10": { - "floorId": "MT78", - "loc": [ - 0, - 10 - ] - }, - "12,0": { - "floorId": "MT77", - "loc": [ - 12, - 14 - ] - }, - "0,7": { - "floorId": "MT80", - "loc": [ - 14, - 7 - ] - }, - "7,14": { - "floorId": "MT82", - "loc": [ - 7, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648, 91,648,648], - [648, 21, 0, 33, 0,648, 0,381, 0, 0,677, 0, 0, 0,648], - [648,648,648,648,671,648,513,648,648,648,648, 34, 0, 34,648], - [648, 28, 0,648, 27,648, 28,648, 28, 33,648,648,648,648,648], - [648, 0, 29,648, 0,482, 0,492, 0, 29, 0,492, 0, 0,648], - [648,648,538,648,494,648,648,648,648,648,658,648, 0, 0,648], - [648, 0, 0,378, 0,648,376, 0,378,648, 0,578, 0, 0, 94], - [ 92, 0,484, 0,103,648, 0,487, 0,648, 0,648,648,494,648], - [648,671,648,648,232,648,378, 0,376,648,484, 0,648, 0,648], - [648, 28,403,648, 0,648,648,648,648,648,648,682,648, 0,648], - [648,376,484,492, 0,648, 0,482, 0,657, 29, 0,648, 0, 94], - [648,492,648,648,648,648,648,648,648,648, 0,482,492, 0,648], - [648, 0,403,648, 0,648,482, 0,482,648,658,648,648,513,648], - [648, 27,482,599, 28,578, 0,103, 0,492, 0, 0,484, 0,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT8.js b/public/project/floors/MT8.js deleted file mode 100644 index fa77231..0000000 --- a/public/project/floors/MT8.js +++ /dev/null @@ -1,76 +0,0 @@ -main.floors.MT8= -{ - "floorId": "MT8", - "title": "草原", - "name": "8", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "grass", - "bgm": "grass.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,2": { - "floorId": "MT7", - "loc": [ - 0, - 2 - ] - }, - "14,7": { - "floorId": "MT7", - "loc": [ - 0, - 7 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], - [ 20, 28,370, 0, 33, 20, 33,211,482, 27, 20, 31, 0, 31, 20], - [ 20, 20, 33, 20, 0, 20, 27, 20, 28,403,492, 0,381, 0, 94], - [ 20, 0, 29, 20,254, 28, 0, 20, 20, 20, 20, 31, 0, 31, 20], - [ 20,374, 20, 20, 20,492, 20, 20, 21, 0, 20, 20, 20, 20, 20], - [ 20, 34, 28, 0, 20,381, 27, 20, 27, 0, 33, 0, 20,482, 20], - [ 20, 20, 20,210, 20, 28, 33, 20, 20, 20, 20,370, 20, 33, 20], - [ 20, 29, 33, 29, 20, 20,254, 20,374, 0, 27, 0, 20, 0, 94], - [ 20, 0, 27, 0,492, 0, 0, 0, 0, 20, 0, 20, 20,255, 20], - [ 20,255, 20, 20, 20,492, 20, 20, 20, 20, 0, 0,210, 0, 20], - [ 20, 0, 21, 0, 20, 29, 33, 0,271, 20, 0, 34, 20, 33, 20], - [ 20, 20, 20, 34,370, 0, 20, 20, 28, 20, 20, 20, 20,381, 20], - [ 20, 29, 20, 0, 20, 28, 20, 20, 0, 20, 33, 0, 20, 33, 20], - [ 20, 0, 0, 27, 20,271, 0, 33, 29,492, 28, 0,370, 0, 20], - [ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20] -], - "bgmap": [ - -], - "fgmap": [ - -], - "beforeBattle": {}, - "weather": [ - "sun", - 8 - ], - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT80.js b/public/project/floors/MT80.js deleted file mode 100644 index 0338fbf..0000000 --- a/public/project/floors/MT80.js +++ /dev/null @@ -1,80 +0,0 @@ -main.floors.MT80= -{ - "floorId": "MT80", - "title": "苍蓝之殿-左上", - "name": "80", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "7,2": [ - { - "type": "function", - "async": true, - "function": "function(){\nMota.require('@user/data-state').Mechanism.BluePalace.doorConvert(7, 2);\n}" - } - ] - }, - "changeFloor": { - "14,7": { - "floorId": "MT79", - "loc": [ - 0, - 7 - ] - }, - "7,14": { - "floorId": "MT83", - "loc": [ - 7, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648,381, 0, 33, 0,492,376, 93,513, 0,618,482,376,482,648], - [648,648,648,648,682,648,648,660,648, 0,648,648,648,378,648], - [648, 0, 33,648, 0,484,648,648,648,491,648,396,648,381,648], - [648, 27, 29,658,376,103,672, 0,657, 0,494,403,599, 21,648], - [648,648,648,648,492,648,648,494,648,232,648,648,648,648,648], - [648,484,618, 0, 27,648, 28, 0,648, 0,482, 0,578, 0,648], - [648, 0,648, 21,482,648,482, 29,658, 0, 29,103,648, 0, 94], - [648,376,648, 0, 28,682, 27, 0,648,492,648,682,648,484,648], - [648,494,648,648,648,648,659,648,648,484,648, 0,648, 0,648], - [648,378,648, 0,484,682, 0,376,494, 28,658,484,657, 0,648], - [648,381,648,492,648,648,648,232,648,648,648, 0,648,492,648], - [648,484,648,482, 0, 28,648,103, 0, 0,648,682,648, 33,648], - [648, 0,671, 0, 29, 0,677, 0,484, 0,677, 34,578, 33,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT81.js b/public/project/floors/MT81.js deleted file mode 100644 index 0a9fecb..0000000 --- a/public/project/floors/MT81.js +++ /dev/null @@ -1,79 +0,0 @@ -main.floors.MT81= -{ - "floorId": "MT81", - "title": "苍蓝之殿-左上", - "name": "81", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT73", - "loc": [ - 0, - 7 - ] - }, - "7,0": { - "floorId": "MT78", - "loc": [ - 7, - 14 - ] - }, - "0,7": { - "floorId": "MT82", - "loc": [ - 14, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 27, 0, 29, 0, 28,648, 0, 0,578, 0,482, 0,249,648], - [648,671,648,648,648,682,648,484, 0,648,492,648,648, 0,648], - [648, 0,378,648,682, 33,648,648,232,648, 28, 29,648,482,648], - [648,381,484,494, 0,648,648, 0, 34,648,482, 27,648, 0,648], - [648, 0,376,648,682, 0,648,103,376,648,658,648,648,648,648], - [648,679,648,648,648, 33,658, 0, 34,658, 0,648,482, 0,648], - [ 92, 0,484,381,648,648,648,648,648,648, 0,659, 0, 0, 94], - [648,648,648,677,648, 0,491, 0,378,492, 0,648,482, 0,648], - [648, 27, 0, 33,648,648,648,648,677,648, 33,648,648,648,648], - [648, 0, 29,103,682,376,482,648,484,648, 0,682, 0, 27,648], - [648,648,648,494,648,648,659,648, 0,682, 0,648, 33, 0,648], - [648, 0,648, 0,648,482, 0,648,492,648,648,648,677,648,648], - [648, 0,249, 33,578, 0,378,648, 0, 21, 0, 28, 0, 27,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT82.js b/public/project/floors/MT82.js deleted file mode 100644 index 3c7303c..0000000 --- a/public/project/floors/MT82.js +++ /dev/null @@ -1,79 +0,0 @@ -main.floors.MT82= -{ - "floorId": "MT82", - "title": "苍蓝之殿-左上", - "name": "82", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT81", - "loc": [ - 0, - 7 - ] - }, - "7,0": { - "floorId": "MT79", - "loc": [ - 7, - 14 - ] - }, - "0,7": { - "floorId": "MT83", - "loc": [ - 14, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 32, 29,658, 29, 32,249, 0,482,513,484,648, 29, 28,648], - [648,376, 32,648, 32,378,648, 0, 0,648, 0,671, 27,484,648], - [648,648,648,648,672,648,648,648,232,648,648,648,648,648,648], - [648,378, 33,648, 34, 34,494, 0,491,648, 0,492,484, 21,648], - [648,381,376,494, 34, 34,648,103, 0,492, 28,648, 27, 29,648], - [648,671,648,648,648,648,648,578,648,648, 0,648,648,677,648], - [ 92, 0,484,378, 0,599,648, 0, 27, 0,682,648, 0, 0, 94], - [648,492,648,648,648, 0,648,648,648,648,482,658, 0, 0,648], - [648, 0,376,484, 0,232,648, 27, 28,648,492,648,648,657,648], - [648,677,648,648,648, 0,679,484, 21,648, 0,657, 0, 0,648], - [648, 0,484, 0,492, 0,648, 28, 27,648, 0,648, 0,482,648], - [648,648,648,618,648, 28,648,648,648,648, 27,648,648,648,648], - [648,378,376,381,648, 0,513, 0,484,578, 0,492,484,484,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT83.js b/public/project/floors/MT83.js deleted file mode 100644 index fbd397c..0000000 --- a/public/project/floors/MT83.js +++ /dev/null @@ -1,79 +0,0 @@ -main.floors.MT83= -{ - "floorId": "MT83", - "title": "苍蓝之殿-左上", - "name": "83", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT82", - "loc": [ - 0, - 7 - ] - }, - "7,0": { - "floorId": "MT80", - "loc": [ - 7, - 14 - ] - }, - "0,7": { - "floorId": "MT84", - "loc": [ - 14, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 0,482,378, 0,232, 0, 0, 0,671, 0, 27,482, 0,648], - [648,679,648,648,494,648,484, 0,484,648,494,648,648,677,648], - [648, 29, 0,618, 0,648,648,648,648,648, 0,658, 0, 29,648], - [648, 0,482,648,396,648, 28, 22, 27,648,390,648,482, 0,648], - [648,682,648,648, 0,599, 27,491, 28,672, 0,648,648,682,648], - [648, 0,484,648,648,648,648,494,648,648,648,648,484, 0,648], - [ 92, 0, 0,648, 0,484, 0,538, 0,376, 0,648, 0, 0, 94], - [648,648,679,648,378,103,648,648,648,103,378,648,513,648,648], - [648,484, 0,648, 0,376, 0,492, 0,484, 0,648, 0,482,648], - [648,671,648,648,648,648,658,648,658,648,648,648,648,232,648], - [648, 0,376,484, 0,648, 33,648, 33,648, 0,482, 28, 0,648], - [648,492,648,677,648,648,682,648,682,648,648,578,648,492,648], - [648, 27, 0,482,657, 0, 33,494, 33, 0,657, 34, 0, 28,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT84.js b/public/project/floors/MT84.js deleted file mode 100644 index cc00ad0..0000000 --- a/public/project/floors/MT84.js +++ /dev/null @@ -1,118 +0,0 @@ -main.floors.MT84= -{ - "floorId": "MT84", - "title": "苍蓝之殿-左上", - "name": "84", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT83", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "6,7": [ - { - "type": "setValue", - "name": "flag:door_palace", - "operator": "+=", - "value": "1" - }, - { - "type": "if", - "condition": "(flag:door_palace===4)", - "true": [ - { - "type": "openDoor", - "loc": [ - 7, - 4 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 4, - 7 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 7, - 10 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 10, - 7 - ], - "floorId": "MT72" - }, - { - "type": "setValue", - "name": "flag:door_palace", - "value": "null" - }, - "苍蓝之殿中心处的机关门已经开启,进入后会到达本章最后一个小区域" - ] - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648,671, 0,484,378, 0,679,648,578, 0, 28, 34,658, 0,648], - [648, 0,648,648,648,648, 0,648, 0,648,648,648,648,658,648], - [648,378,648, 0,482,648,484,648, 34,648, 33, 0,648, 28,648], - [648,232,648,648,538,648,378,648, 28,648,513,648,648, 0,648], - [648, 0,482,381, 0,648, 0,648, 0,648, 0, 29, 33,677,648], - [648,648,648,648,648,648,618,648,682,648,648,648,648,648,648], - [648,466,467,468,695,664,692,648, 0, 0,484, 0,484, 0, 94], - [648,648,648,648,648,648,618,648,682,648,648,648,648,648,648], - [648, 0,482,381, 0,648, 0,648, 0,648, 0, 29, 33,677,648], - [648,232,648,648,538,648,376,648, 27,648,513,648,648, 0,648], - [648,376,648, 0,482,648,484,648, 34,648, 33, 0,648, 27,648], - [648, 0,648,648,648,648, 0,648, 0,648,648,648,648,658,648], - [648,671, 0,484,376, 0,679,648,578, 0, 27, 34,658, 0,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT85.js b/public/project/floors/MT85.js deleted file mode 100644 index ff9cc9a..0000000 --- a/public/project/floors/MT85.js +++ /dev/null @@ -1,79 +0,0 @@ -main.floors.MT85= -{ - "floorId": "MT85", - "title": "苍蓝之殿-右上", - "name": "85", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,7": { - "floorId": "MT75", - "loc": [ - 14, - 7 - ] - }, - "14,3": { - "floorId": "MT86", - "loc": [ - 0, - 3 - ] - }, - "10,14": { - "floorId": "MT87", - "loc": [ - 10, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 0, 0, 0, 0,484, 0, 0, 0, 0,676,648, 0, 0,648], - [648,679,648,648,513,648,648,648,648,648, 0,648, 0, 34,648], - [648,482, 0,648, 27,484,648, 0, 28,648, 0,648, 34, 0, 94], - [648, 0,378,648,381, 28,492,491, 0,492, 0,578, 0, 0,648], - [648,648,648,648,648,648,648,648,659,648, 0,648,648,513,648], - [648, 0,482,648, 0,578, 0,648, 0,648, 0,648, 28, 0,648], - [ 92, 0, 0,249,482,648, 29, 0,484,648, 0,648, 0, 27,648], - [648, 0,482,648, 0,648,648,648,648,648,484,648,648,618,648], - [648,648,648,648, 27, 0,492, 21,376,677, 0, 0,648,381,648], - [648,482, 0,682, 0, 0,648,648,648,648,648,658,648,484,648], - [648,658,648,648,648,682,648,378, 0,578, 29, 0,648,376,648], - [648, 0,484,648, 0, 28,648, 0, 0,648, 0, 0,648, 22,648], - [648, 27, 0,492, 33, 0,682, 0, 33,648, 0, 29,494,378,648], - [648,648,648,648,648,648,648,648,648,648, 93,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT86.js b/public/project/floors/MT86.js deleted file mode 100644 index 8a70f7c..0000000 --- a/public/project/floors/MT86.js +++ /dev/null @@ -1,91 +0,0 @@ -main.floors.MT86= -{ - "floorId": "MT86", - "title": "苍蓝之殿-右上", - "name": "86", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "3,4": [ - "同化怪加上追猎属性后,如果其移动一步后与勇士战斗,那么其特殊属性会继承自移动后的位置,而非移动前", - "例如本地图右边的同化怪,当其向下移动一步后,将不再会受到蓝骑士的二连击属性加成,战斗伤害会变低" - ] - }, - "changeFloor": { - "7,14": { - "floorId": "MT89", - "loc": [ - 7, - 0 - ] - }, - "0,3": { - "floorId": "MT85", - "loc": [ - 14, - 3 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648,482,376,482, 0,492, 0, 0, 34, 0, 0, 34, 0, 0,648], - [648,648,648,648,671,648,676,648,648,648,648,677,648,492,648], - [ 92, 0, 0,648, 0,648, 0, 0,232,491,648, 0, 27, 0,648], - [648, 0, 0,706, 33, 0,378, 0,648,491,492, 33, 0, 33,648], - [648,249,648,648,648,494,648,648,648,644,648,648,648,249,648], - [648, 0,482,648,376, 21,378,648, 29, 0,648, 33, 0, 33,648], - [648, 0, 0,648,482,403,482,648, 0,484,578, 0, 28, 0,648], - [648, 29, 0,648,648,618,648,648,657,648,648,648,648,494,648], - [648,648,657,648,682, 0, 0, 0,103,658, 28, 0,648,378,648], - [648, 0, 0,484, 0,648,648,682,648,648, 0,491,492, 0,648], - [648,648,648,648,513, 0,648,482,482,648, 27, 0,648,376,648], - [648, 33,381,648,648, 0,648,648,538,648,648,648,648, 0,648], - [648,376, 33,679, 0,484,492, 0, 0,484, 0, 0,232,491,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT87.js b/public/project/floors/MT87.js deleted file mode 100644 index febbc55..0000000 --- a/public/project/floors/MT87.js +++ /dev/null @@ -1,105 +0,0 @@ -main.floors.MT87= -{ - "floorId": "MT87", - "title": "苍蓝之殿-右上", - "name": "87", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "1,9": [ - "对于连击属性,如果一个同化怪同时拥有了“2连击”“3连击”或“n连击”,那么即使该同化怪的特殊属性是加算,不同连击属性之间依然会视为乘算,而“n连击”之间则为加算", - "例如,一个怪同时拥有3连击与6连击,那么怪物实际表现就是18连击" - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT74", - "loc": [ - 14, - 7 - ] - }, - "10,0": { - "floorId": "MT85", - "loc": [ - 10, - 14 - ] - }, - "7,14": { - "floorId": "MT88", - "loc": [ - 7, - 0 - ] - }, - "14,7": { - "floorId": "MT89", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648, 91,648,648,648,648], - [648,482,376,482, 0,648, 0,249, 0, 33, 0,513, 0,381,648], - [648,648,648,648,679,648,484,648, 28,103, 28,648,482, 0,648], - [648, 0,482,648, 0,648,494,648,648,644,648,648,648,492,648], - [648, 29, 0,578, 0,648,484,648, 27,103, 27,648,482, 0,648], - [648,648,249,648, 0,657, 0,578, 0, 33, 0,657, 0, 29,648], - [648, 0,482,648,648,648,648,648,648,648,648,648,682,648,648], - [ 92, 0, 0,492, 0,491, 0,682, 0, 33,658, 33, 0, 0, 94], - [648, 0,482,648,648,648,648,648, 28, 0,648, 0, 27, 0,648], - [648,706,648,648, 27, 0, 29,648,648,648,648,648,648,677,648], - [648,378,491,232, 0,482, 0,492, 21, 0,482,648, 29, 0,648], - [648,492,648,648,648,648,677,648,648,648,682,648, 0,482,648], - [648,484, 27,671,484,648, 33, 0, 33,659, 0,648,657,648,648], - [648, 28,484,648, 0,513, 0, 0, 0,648, 0,682, 0, 0,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,648, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT88.js b/public/project/floors/MT88.js deleted file mode 100644 index 2496d48..0000000 --- a/public/project/floors/MT88.js +++ /dev/null @@ -1,79 +0,0 @@ -main.floors.MT88= -{ - "floorId": "MT88", - "title": "苍蓝之殿-右上", - "name": "88", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,7": { - "floorId": "MT73", - "loc": [ - 14, - 7 - ] - }, - "7,0": { - "floorId": "MT87", - "loc": [ - 7, - 14 - ] - }, - "14,11": { - "floorId": "MT90", - "loc": [ - 0, - 11 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 0,677, 0,491,657, 0, 0, 0, 0,492, 0, 0,484,648], - [648, 33,648,648,648,648, 33, 0, 33, 0,648,648,648, 0,648], - [648, 0,648, 0, 33,648,492,648,648,243,648,482,648,682,648], - [648, 27,648, 29, 0,648, 0,682, 0,484,648, 0,682, 0,648], - [648,492,648,648,658,648,484,648, 29, 0,648, 0,648,484,648], - [648, 0,482,648, 0,657, 0,648,648,492,648,482,648,648,648], - [ 92, 0, 0,578, 0,648, 0,682, 0,381,578, 0,679,491,648], - [648, 0,482,648,484,648,538,648,648, 0,648, 0,648,491,648], - [648,648,648,648, 0,648, 0,484,648,249,648, 0,648,648,648], - [648, 28,682, 0,682,648, 27, 0,648, 27,648, 0,648, 34,648], - [648, 0,648,648,648,648,648,492,648, 0,648, 0,648, 0, 94], - [648, 0,648, 33, 27,679, 28,484,648, 0,648, 0,648, 0,648], - [648,482,513, 27, 33,648,484, 28,232,484,492,676, 0, 34,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT89.js b/public/project/floors/MT89.js deleted file mode 100644 index 40a2397..0000000 --- a/public/project/floors/MT89.js +++ /dev/null @@ -1,86 +0,0 @@ -main.floors.MT89= -{ - "floorId": "MT89", - "title": "苍蓝之殿-右上", - "name": "89", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,7": { - "floorId": "MT87", - "loc": [ - 14, - 7 - ] - }, - "7,0": { - "floorId": "MT86", - "loc": [ - 7, - 14 - ] - }, - "7,14": { - "floorId": "MT90", - "loc": [ - 7, - 0 - ] - }, - "14,7": { - "floorId": "MT92", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,249, 29, 0,482,578, 27, 0,658, 0,381,648,484,484,648], - [648, 29,648,648,648,648, 0,648,648,648,648,648,492,648,648], - [648, 0,648,484,378,648,484,492, 0, 0,676,648,378, 33,648], - [648,484,648,378, 21,618, 0,648, 0,648, 0,679, 33, 27,648], - [648,578,648,648,648,648,679,648, 0,648,484,648,648,648,648], - [648, 0, 0, 0,484, 0, 0,648, 0,648, 0,513, 0, 0,648], - [ 92, 0,648,492,648,648, 0,648,494,648,648,648,484, 0, 94], - [648, 0,682, 0,491,648, 0,644,420,249,482,648,648,682,648], - [648,682,648, 29, 0,648,648,648,578,648,482,648, 0,484,648], - [648,482,648,648,657,648, 0,648,494,648,492,648,657,648,648], - [648, 29,492, 33, 0,538, 0,676, 0,648,487,677,491, 0,648], - [648,648,648,648,677,648,648, 0,648,648,648,648,657,648,648], - [648, 27,482, 28, 0,648,484, 0, 0,232, 0,378, 0,482,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT9.js b/public/project/floors/MT9.js deleted file mode 100644 index 99c5e82..0000000 --- a/public/project/floors/MT9.js +++ /dev/null @@ -1,76 +0,0 @@ -main.floors.MT9= -{ - "floorId": "MT9", - "title": "草原", - "name": "9", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 1, - "defaultGround": "grass", - "bgm": "grass.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,2": { - "floorId": "MT7", - "loc": [ - 14, - 2 - ] - }, - "0,7": { - "floorId": "MT7", - "loc": [ - 14, - 7 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], - [ 20, 31, 0, 31, 20, 27,482, 28,211, 0, 20,254, 0,381, 20], - [ 92, 0,381, 0,492, 0,403, 0, 20, 34, 20, 0, 20, 33, 20], - [ 20, 31, 0, 31, 20, 20, 20, 20, 20, 29, 20, 28, 20, 0, 20], - [ 20, 20, 20, 20, 20, 27, 20, 21,374, 0,370, 34, 20, 27, 20], - [ 20, 0,492, 0, 29, 33, 0, 0, 20,210, 20, 20, 20,492, 20], - [ 20,482, 20,370, 20, 20, 20,255, 20, 0, 34, 29, 0, 0, 20], - [ 92, 0, 20, 33, 29, 20, 34, 27, 20, 20, 20, 20,255, 20, 20], - [ 20, 0,255, 29, 28, 20,381, 0, 20, 0,271, 0, 34, 0, 20], - [ 20, 20, 20, 20,210, 20, 20,492, 20, 20, 0, 20, 20, 20, 20], - [ 20,210, 0, 0, 28, 0,374, 33, 21,492, 0,374, 0, 29, 20], - [ 20, 0, 20, 20, 20, 20, 0, 20, 20, 20, 28, 20, 20,370, 20], - [ 20, 21, 20, 29, 33, 20, 0, 20, 34, 20, 34, 20, 34, 27, 20], - [ 20, 0,370, 0, 27, 20, 29, 34,492, 34, 29, 20, 29, 34, 20], - [ 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20] -], - "bgmap": [ - -], - "fgmap": [ - -], - "beforeBattle": {}, - "weather": [ - "sun", - 8 - ], - "cannotMoveIn": {}, - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT90.js b/public/project/floors/MT90.js deleted file mode 100644 index 8eb823f..0000000 --- a/public/project/floors/MT90.js +++ /dev/null @@ -1,79 +0,0 @@ -main.floors.MT90= -{ - "floorId": "MT90", - "title": "苍蓝之殿-右上", - "name": "90", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,11": { - "floorId": "MT88", - "loc": [ - 14, - 11 - ] - }, - "7,0": { - "floorId": "MT89", - "loc": [ - 7, - 14 - ] - }, - "14,8": { - "floorId": "MT91", - "loc": [ - 0, - 8 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648,376, 0,648,491,232, 0, 0,484, 0,648, 0,494, 0,648], - [648,484,381,671, 0,648,492,648,648,513,648, 21,648,376,648], - [648,648,648,648,492,648, 27, 0,484, 0,538, 0,648,491,648], - [648,484,381,679, 0,648,492,648,648,492,648,677,648,378,648], - [648,378, 0,648,484,232, 27,482,648, 0,658, 0,648,618,648], - [648,648,648,648,648,648,482, 28,648,381,648, 33,658, 0,648], - [648, 0,578, 0, 28,648,644,648,648, 0,648,648,648, 0,648], - [648, 0,648,484, 0,682,103,657, 0, 33,648,482,657, 0, 94], - [648, 33,648, 0, 27,648,249,648,648,648,648,492,648,648,648], - [648, 0,648,648,648,648, 0,484, 0,492, 27,482,677, 0,648], - [ 92, 0, 0, 33, 0,648,494,648,513,648, 0, 29,648, 0,648], - [648,492,648,648,513,648,491,648, 0,648,648,648,648, 0,648], - [648, 28, 0, 33, 0,648,491,648, 28, 0, 29,658, 0,484,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT91.js b/public/project/floors/MT91.js deleted file mode 100644 index c9786e9..0000000 --- a/public/project/floors/MT91.js +++ /dev/null @@ -1,79 +0,0 @@ -main.floors.MT91= -{ - "floorId": "MT91", - "title": "苍蓝之殿-右上", - "name": "91", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT93", - "loc": [ - 0, - 7 - ] - }, - "0,8": { - "floorId": "MT90", - "loc": [ - 14, - 8 - ] - }, - "7,0": { - "floorId": "MT92", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 27,381, 28,648,376,679, 0, 0,484,381, 0,492, 0,648], - [648, 27, 21, 28,618, 33,381,648,492,648, 0,378,648,482,648], - [648,494,648,648,648,648,648,648, 33,648,232,648,648, 0,648], - [648, 0,648, 0,599, 0,513, 0, 28,648, 0,677, 0, 28,648], - [648, 28, 0,482,648, 33,648,648,492,648, 0,648,648,648,648], - [648,648,648,648,648, 0,232,403, 0,648, 27,648, 0, 33,648], - [648, 0, 0, 0,648, 33,648,648, 0,644, 0,648,381, 0, 94], - [ 92, 0,484, 0,658, 0, 0,648,658,648,648,648,679,648,648], - [648,492,648,648,648,648,682,648, 0,378,682, 0, 0,676,648], - [648, 0, 0,578, 0,484, 0,648,482, 0,648,482,648,484,648], - [648,658,648,648,682,648,648,648,648,648,648,657,648, 0,648], - [648, 0, 28,648, 0,648, 34, 0, 34,648, 27, 0,648, 0,648], - [648, 27,482,492, 34,492, 0, 0, 0,513, 0, 28,492,376,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT92.js b/public/project/floors/MT92.js deleted file mode 100644 index 194cc1a..0000000 --- a/public/project/floors/MT92.js +++ /dev/null @@ -1,72 +0,0 @@ -main.floors.MT92= -{ - "floorId": "MT92", - "title": "苍蓝之殿-右上", - "name": "92", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,7": { - "floorId": "MT89", - "loc": [ - 14, - 7 - ] - }, - "7,14": { - "floorId": "MT91", - "loc": [ - 7, - 0 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648,376, 0,482,679, 0, 33, 0, 0,648, 0,381,648, 27,648], - [648,671,648,648,648,682,648,648,648,648,658,648,648, 0,648], - [648,381, 33,648,482, 0,648,482,494,376, 0, 33,232, 28,648], - [648, 33,378,492, 0, 28,657, 0,648,648,648,648,648, 0,648], - [648,648,648,648,658,648,648,492,648, 0,644, 0,648, 33,648], - [648, 0,482,648, 33,648, 28, 0,648,484,648,484,677, 0,648], - [ 92, 0, 0,682, 0,658, 0,484,648,378,648,648,648,494,648], - [648,513,648,648,648,648,648,492,648, 0,679,482, 0, 27,648], - [648, 27,648, 32,578, 34, 0,381,648,648,648,648,648,677,648], - [648, 0,648, 0,648,648,648,682,648, 27,538,376,492,378,648], - [648, 32,249, 28,648, 28, 0, 34,648, 0,648,482,648,482,648], - [648,648,648,648,648,657,648,648,648, 33,648,658,648,682,648], - [648,491,376,378,618, 0, 33, 0,513, 0,492, 0,682, 0,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT93.js b/public/project/floors/MT93.js deleted file mode 100644 index 9e8ed03..0000000 --- a/public/project/floors/MT93.js +++ /dev/null @@ -1,118 +0,0 @@ -main.floors.MT93= -{ - "floorId": "MT93", - "title": "苍蓝之殿-右上", - "name": "93", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "0,7": { - "floorId": "MT91", - "loc": [ - 14, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": { - "10,7": [ - { - "type": "setValue", - "name": "flag:door_palace", - "operator": "+=", - "value": "1" - }, - { - "type": "if", - "condition": "(flag:door_palace===4)", - "true": [ - { - "type": "openDoor", - "loc": [ - 7, - 4 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 4, - 7 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 7, - 10 - ], - "floorId": "MT72" - }, - { - "type": "openDoor", - "loc": [ - 10, - 7 - ], - "floorId": "MT72" - }, - { - "type": "setValue", - "name": "flag:door_palace", - "value": "null" - }, - "苍蓝之殿中心处的机关门已经开启,进入后会到达本章最后一个小区域" - ] - } - ] - }, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 0, 34, 0,648, 0,648, 0,484, 0,648, 0,484, 0,648], - [648, 28, 0, 29,578, 33,648,378, 0,381,648,381, 0,376,648], - [648,648,648,648,648, 0,648,648,648,232,648,648,648,671,648], - [648, 27, 0, 29,249, 33,648, 27, 0, 28, 0, 0, 0, 0,648], - [648, 0, 34, 0,648, 0,648, 0, 33, 0,648,648,648,648,648], - [648,648,648,648,648,682,648,648,648,677,648,466, 0,467,648], - [ 92, 0, 0, 0, 0, 0,513, 0,491, 0,693, 0,665, 0,648], - [648,648,648,648,648,682,648,648,648,677,648,468, 0,695,648], - [648, 0, 34, 0,648, 0,648, 0, 33, 0,648,648,648,648,648], - [648, 28, 0, 29,249, 33,648, 28, 0, 27, 0, 0, 0, 0,648], - [648,648,648,648,648, 0,648,648,648,232,648,648,648,671,648], - [648, 27, 0, 29,578, 33,648,376, 0,381,648,381, 0,378,648], - [648, 0, 34, 0,648, 0,648, 0,484, 0,648, 0,484, 0,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT94.js b/public/project/floors/MT94.js deleted file mode 100644 index 20f36f1..0000000 --- a/public/project/floors/MT94.js +++ /dev/null @@ -1,101 +0,0 @@ -main.floors.MT94= -{ - "floorId": "MT94", - "title": "苍蓝之殿-核心", - "name": "94", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "7,2": [ - "这里是漏怪检测,会检测\r[gold]第二章所有\r[]区域是否有遗漏怪物", - { - "type": "function", - "function": "function(){\nconst enemy = Mota.require('@user/legacy-plugin-data').getRemainEnemyString(core.floorIds.slice(40, 107));\nif (enemy.length === 0) {\n\tcore.insertAction(['当前无剩余怪物!', { \"type\": \"hide\", \"remove\": true }, ]);\n} else {\n\tcore.insertAction(enemy);\n}\n}" - } - ], - "2,5": [ - { - "type": "function", - "async": true, - "function": "function(){\nMota.require('@user/data-state').Mechanism.BluePalace.doorConvert(2, 5);\n}" - } - ] - }, - "changeFloor": { - "7,7": { - "floorId": "MT72", - "loc": [ - 7, - 7 - ] - }, - "14,7": { - "floorId": "MT95", - "loc": [ - 0, - 7 - ] - }, - "7,14": { - "floorId": "MT96", - "loc": [ - 7, - 0 - ] - }, - "0,7": { - "floorId": "MT97", - "loc": [ - 14, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 0,378,484,376,648, 34, 34, 34,648,381,491,675, 0,648], - [648,669,648,648,648,648,648,516,648,648,378,376,648, 0,648], - [648, 0,482,671, 0,691, 0,381, 0,648,648,648,648,700,648], - [648,494,648,648,378,648,376, 0,482,677,484, 0,492, 0,648], - [648,484,660,648,482,648,648,618,648,648, 0,381,648, 0,648], - [648,699,648,648,494,648,484, 0,484,648,644,648,648,491,648], - [ 92, 0,482,376, 0,671,103, 87,103,671,484,378,669, 0, 94], - [648,699,648,648,492,648,484, 0,484,648,618,648,648,648,648], - [648,376, 0,484, 0,648,648,494,648,648,482, 0,677, 0,648], - [648,492,648,648,599,648, 0, 0,482,648,648,648,648,484,648], - [648, 0,482, 0,378,648,671,648, 0,675,484,381,648, 0,648], - [648,671,648,648,492,648, 0,648,648,648,492,648,648,675,648], - [648,381, 0,482, 0,644,381, 0,484,648,376,491,378, 0,648], - [648,648,648,648,648,648,648, 93,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT95.js b/public/project/floors/MT95.js deleted file mode 100644 index f4e6341..0000000 --- a/public/project/floors/MT95.js +++ /dev/null @@ -1,73 +0,0 @@ -main.floors.MT95= -{ - "floorId": "MT95", - "title": "苍蓝之殿-核心", - "name": "95", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "3,8": [ - { - "type": "function", - "async": true, - "function": "function(){\nMota.require('@user/data-state').Mechanism.BluePalace.doorConvert(3, 8);\n}" - } - ] - }, - "changeFloor": { - "0,7": { - "floorId": "MT94", - "loc": [ - 14, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 0,378, 0,491,648, 0,648, 0,381, 0,669,381, 0,648], - [648,492,648,648,675,648, 0,648,378,484,390,648, 0,376,648], - [648, 0,482,648, 0,648,669,648,492,648,648,648,648,648,648], - [648,376, 0,677, 0,494, 0,484, 0,648, 0,700, 0,376,648], - [648,648,648,648,671,648,648,648,703,648,491,648,484, 0,648], - [648, 0,677, 0,381, 0, 0,482, 0,699, 0,494, 0,378,648], - [ 92, 0,648,648,648,648,492,648,648,648,492,648,648,648,648], - [648, 0,648,660,381,482, 0,648,403, 0,378,484, 0,376,648], - [648,618,648,648,648,644,648,648,691,648,648,648,648,699,648], - [648, 0,484, 0,675, 0,376,648, 0,648, 0,484,648,378,648], - [648,492,648,648,648,484, 0,677, 0,671,378, 0,494, 0,648], - [648, 0,381, 0,648,618,648,648,648,648,648,674,648,482,648], - [648,378,491,376,669, 0,648, 0,378,484,376, 0,648, 0,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT96.js b/public/project/floors/MT96.js deleted file mode 100644 index 3c254ff..0000000 --- a/public/project/floors/MT96.js +++ /dev/null @@ -1,73 +0,0 @@ -main.floors.MT96= -{ - "floorId": "MT96", - "title": "苍蓝之殿-核心", - "name": "96", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "13,9": [ - { - "type": "function", - "async": true, - "function": "function(){\nMota.require('@user/data-state').Mechanism.BluePalace.doorConvert(13, 9);\n}" - } - ] - }, - "changeFloor": { - "7,0": { - "floorId": "MT94", - "loc": [ - 7, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648, 91,648,648,648,648,648,648,648], - [648, 0,675,482,378,648,482, 0,648, 0,491,648,482,482,648], - [648,484,648,376,482,494, 0, 0,648,381, 0,492,482,482,648], - [648, 0,648,648,648,648,482, 0,648,677,648,648,648,648,648], - [648,484, 0,677,376,648,648,618,648,381, 0,669, 0,376,648], - [648,492,648,648, 0,381,691, 0, 33, 0,482,648,381,484,648], - [648, 0,484,648,644,648,648,648,699,648,700,648, 0,396,648], - [648,403, 0,671,484,648, 21,648, 0,648, 0,648,648,492,648], - [648,494,648,648,648,648,691,648,491,648,376,378,381, 0,648], - [648,381, 0,492, 0,482, 0,648,671,648,492,648,648,660,648], - [648,484,378,648,376,482,378,699, 0,403, 0,648,491, 0,648], - [648,675,648,648,671,648,648,648,484, 0,484,648,699,648,648], - [648,491, 0,669,491,648, 0,648,648,648,618,648, 0,381,648], - [648, 0,491,648, 0,648,378,403,376,675, 0,494,376, 0,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/MT97.js b/public/project/floors/MT97.js deleted file mode 100644 index 96bab0b..0000000 --- a/public/project/floors/MT97.js +++ /dev/null @@ -1,65 +0,0 @@ -main.floors.MT97= -{ - "floorId": "MT97", - "title": "苍蓝之殿-核心", - "name": "97", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T650", - "bgm": "palaceNorth.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "14,7": { - "floorId": "MT94", - "loc": [ - 0, - 7 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648], - [648, 0,482, 0,376,648,381,648, 0,378,669,376, 0,484,648], - [648,648,648,648,675,648, 0,648,381, 0,648,648,648,671,648], - [648,403, 0,482, 0,492,484,648, 0,376,648,484, 0,378,648], - [648,671,648,648,648,648,677,648,677,648,648,648,599,648,648], - [648, 0,491,702, 0,403, 0,492,491, 0,494,381, 0,484,648], - [648,648,648,648,376, 0,378,648,648,644,648,618,648,648,648], - [648,376, 0,492, 0,491, 0,671, 0,482,648, 0, 0, 0, 94], - [648, 0,491,648,648,648,618,648,648,648,648,494,648,648,648], - [648,378, 0,699, 0,648, 0,484,648, 0,378, 0,491, 0,648], - [648,648,648,648,677,648,648,691,648,648,648,648,648,669,648], - [648,491,487,492, 0,376, 0,491, 0,378, 0,492, 0,491,648], - [648,699,648,648,648,644,648,648,648,671,648,648,648,675,648], - [648,484,403,675, 0,381, 0,376,492, 0,381, 0,484, 0,648], - [648,648,648,648,648,648,648,648,648,648,648,648,648,648,648] -], - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/empty.js b/public/project/floors/empty.js index 56dad5b..ae6e75b 100644 --- a/public/project/floors/empty.js +++ b/public/project/floors/empty.js @@ -1,22 +1,17 @@ main.floors.empty= { "floorId": "empty", - "title": "山脚", - "name": "13", - "width": 15, - "height": 15, + "title": "样板 0 层", + "name": "0", + "width": 13, + "height": 13, "canFlyTo": false, "canFlyFrom": false, "canUseQuickShop": false, - "cannotViewMap": true, "images": [], "ratio": 1, - "defaultGround": "grass", - "bgm": "mount.opus", - "weather": [ - "sun", - 8 - ], + "defaultGround": "ground", + "bgm": "bgm.mp3", "firstArrive": [], "eachArrive": [], "parallelDo": "", @@ -30,21 +25,19 @@ main.floors.empty= "cannotMove": {}, "cannotMoveIn": {}, "map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ], "bgmap": [ @@ -58,5 +51,5 @@ main.floors.empty= "fg2map": [ ], - "cannotMoveDirectly": false + "cannotViewMap": true } \ No newline at end of file diff --git a/public/project/floors/sample0.js b/public/project/floors/sample0.js index 11b6df9..1c9f095 100644 --- a/public/project/floors/sample0.js +++ b/public/project/floors/sample0.js @@ -8,7 +8,7 @@ main.floors.sample0= "canUseQuickShop": true, "defaultGround": "ground", "images": [], - "bgm": "bgm.opus", + "bgm": "bgm.mp3", "ratio": 1, "map": [ [ 0, 0,220, 0, 0, 20, 87, 3, 58, 59, 60, 61, 64], @@ -255,5 +255,11 @@ main.floors.sample0= "height": 13, "autoEvent": {}, "beforeBattle": {}, - "cannotMoveIn": {} + "cannotMoveIn": {}, + "bg2map": [ + +], + "fg2map": [ + +] } \ No newline at end of file diff --git a/public/project/floors/snowShop.js b/public/project/floors/snowShop.js deleted file mode 100644 index c62880a..0000000 --- a/public/project/floors/snowShop.js +++ /dev/null @@ -1,120 +0,0 @@ -main.floors.snowShop= -{ - "floorId": "snowShop", - "title": "冰封小镇", - "name": "冰封雪原", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T640", - "bgm": "winterTown.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "2,12": [ - "这里的装备理论上是需要全部购买的,因为这些装备之后都会有向上合成", - "而且,一共就只有三件装备(" - ], - "7,5": [ - "\t[商店老板]请随意挑选", - { - "type": "openShop", - "id": "snowShop", - "open": true - } - ] - }, - "changeFloor": { - "7,13": { - "floorId": "snowTown", - "loc": [ - 19, - 35 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [148,148,148,148,148,148,148,148,148,148,148,148,148,148,148], - [148,148,148,148,148,148,148,148,148,148,148,148,148,148,148], - [148,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,148], - [148,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,148], - [148,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,148], - [148,148,90145,90146,90146,90146,90146,90146,90146,90146,90146,90146,90147,148,148], - [148,148,90153,90154,90154,90154,90154,90154,90154,90154,90154,90154,90155,148,148], - [148,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,148], - [148,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,148], - [148,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,148], - [148,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,148], - [148,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,148], - [148,148,129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,148,148], - [148,148,148,148,148,148,148,540,148,148,148,148,148,148,148], - [148,148,148,148,148,148,148,148,148,148,148,148,148,148,148] -], - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,90016,90017,90017,90017,90017,90017,90017,90017,90017,90017,90018, 0, 0], - [ 0, 0,90024,90025,90025,90025,90025,90025,90025,90025,90025,90025,90026, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,90104, 0, 0, 0,90106, 0,90108,90109,90092,90093,90095, 0, 0], - [ 0, 0,90112, 0, 0, 0,90114, 0,90116,90117,90100,90101,90103, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0,90038, 0, 0, 0, 0, 0,90038, 0, 0, 0, 0], - [ 0, 0, 0, 0,90046, 0, 0, 0, 0, 0,90046, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,636, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/snowTown.js b/public/project/floors/snowTown.js deleted file mode 100644 index b80e07d..0000000 --- a/public/project/floors/snowTown.js +++ /dev/null @@ -1,333 +0,0 @@ -main.floors.snowTown= -{ - "floorId": "snowTown", - "title": "冰封小镇", - "name": "冰封雪原", - "width": 45, - "height": 45, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 8, - "defaultGround": "T580", - "bgm": "winterTown.opus", - "firstArrive": null, - "eachArrive": [], - "parallelDo": "", - "events": { - "10,20": [ - { - "type": "animate", - "name": "amazed", - "loc": [ - 10, - 20 - ] - }, - "\t[小镇居民,youngMan]\b[up,10,20]嗯?不是怪物。", - "\t[小镇居民,youngMan]\b[up,10,20]请问你来这里干什么?", - "\t[低级智人]\b[up,hero](我最好还是不要透露我的目的吧)", - "\t[低级智人]\b[up,hero]最近我的家那边发生了一些事故,不能居住了。", - "\t[低级智人]\b[up,hero]然后我离开了那里,四处探险,发现了这里有个小镇。", - "\t[小镇居民,youngMan]\b[up,10,20](应该就是他了)", - "\t[小镇居民,youngMan]\b[up,10,20]欢迎你来到这里。", - "\t[小镇居民,youngMan]\b[up,10,20]我们小镇很欢迎外来人士。", - "\t[低级智人]\b[up,hero](这里竟然这么先进,比我那里先进了好多,感觉根本就不是同一时期的人)", - "\t[低级智人]\b[up,hero](而且居民也很热情)", - "\t[小镇居民,youngMan]\b[up,10,20]那么就请进吧。", - { - "type": "move", - "loc": [ - 10, - 20 - ], - "time": 250, - "keep": true, - "steps": [ - "down:1", - "left:1" - ] - } - ], - "9,21": [ - "\t[小镇居民,youngMan]\b[up,9,21]欢迎来到这里!" - ], - "18,35": [ - "商店" - ], - "9,19": [ - "↓ 冰封小镇\n← 冰封高原" - ], - "11,21": [ - "本小镇中只有商店有用,其余的房屋均没有用。" - ], - "13,24": [ - "\t[小镇居民,N632]\b[up,13,24]树上的雪好美啊", - "\t[小镇居民,N632]\b[up,13,24]虽然每年都能见到很多次,但是每次都感觉从来没见过", - "\t[小镇居民,N632]\b[up,13,24]这就是时间的力量啊" - ], - "8,26": [ - "一个看起来做的很不错的雪人" - ], - "7,18": [ - "\t[低级智人]\b[down,hero]这里竟然有个小镇", - "\t[低级智人]\b[down,hero]而且,看起来并不像这个时代的东西", - "\t[低级智人]\b[down,hero]这里的东西都很先进,难道又是智慧之神吗", - { - "type": "hide", - "remove": true - } - ], - "39,40": [ - "\t[小镇居民,npc0]\b[up,39,40]山顶的风景真是看不厌啊", - "\t[小镇居民,npc0]\b[up,39,40]真不希望会有人破坏这美好的大自然" - ], - "37,24": [ - "\t[低级智人]\b[up,hero]没必要进这里面" - ] - }, - "changeFloor": { - "0,10": { - "floorId": "MT40", - "loc": [ - 14, - 10 - ] - }, - "0,18": { - "floorId": "MT38", - "loc": [ - 14, - 3 - ] - }, - "0,4": { - "floorId": "MT40", - "loc": [ - 14, - 4 - ] - }, - "19,34": { - "floorId": "snowShop", - "loc": [ - 7, - 13 - ] - }, - "7,0": { - "floorId": "MT44", - "loc": [ - 7, - 14 - ] - }, - "18,0": { - "floorId": "MT45", - "loc": [ - 3, - 14 - ] - } - }, - "beforeBattle": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "cannotMoveIn": {}, - "map": [ - [ 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0,70187, 91,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70187, 0,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [604,381, 27, 33,611, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70195, 0,70197, 0, 0, 0,70160,70161,70162,70163, 0, 0, 0, 0, 0,80296,80297,80298,80299,80300, 0, 0, 0, 0, 0, 0, 0, 0], - [604,595,584,584,584,274,604,604, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70019,70168,70169,70170,70171, 0, 0, 0, 0, 0,80304,80305,80306,80307,80308, 0, 0, 0, 0, 0, 0, 0, 0], - [ 92, 0,492,484,584, 33, 28,381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80312,80313,80314,80315,80316, 0, 0, 0, 0, 0, 0, 0, 0], - [584,584,584,584,584,584,584,584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70019, 0, 0, 0, 0,80320,80321,80325,80326,80327, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70014,80328,80329,80333,80334,80335, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584,584,584,584,584,584,584,584,584, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80160,80161,80162,80163, 0, 0,70003,70003,70003, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [584,584, 0, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80168,80169,80170,80171, 0, 0, 0, 0, 0, 0,70179, 0, 0,70181, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 92,617,381,484, 0, 0, 0, 0, 0, 0, 0, 0, 0,584,584,584,584,584,584,584,584,584,584,584,70187, 0, 0,70189,584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [584,584, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70187, 0, 0,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [584,584,584,584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70187, 0, 0,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70187, 0, 0,70189, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70195, 0, 0,70197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0,376, 0,381, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80241,80242, 0, 0,80256,80257,80258,80259,80260, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,482, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80249,80250, 0, 0,80264,80265,80266,80267,80268, 0, 0, 0, 0, 0, 0], - [70177,70177,70177,70177,70177,70177,70177,70178, 0,381, 0,378, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80272,80273,80274,80275,80276, 0, 0, 0, 0, 0, 0], - [ 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80280,80281,80282,80283,80284, 0, 0, 0, 0, 0, 0], - [70209,70209,70209,70209,70209,70209,70209,70210, 0,630, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584,584,584,584,584,584, 0, 0, 0, 0, 0,80288,80289,80290,80291,80292,80241,80242, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,585,585,585,128,585,585,585, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584, 0, 0, 0, 0, 0,80296,80297,80298,80299,80300,80249,80250, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 0, 0,584,70152,70153,70154,70155, 0, 0, 0, 0, 0, 0, 0, 0, 0,584, 0, 0, 0, 0, 0,80304,80305,80306,80307,80308, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584,70160,70161,70162,70163,70140,70141,70142,70143, 0,80160,80161,80162,80163,584,588, 0, 0, 0, 0,80312,80313,80314,80315,80316, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584,70168,70169,70170,70171,70148,70149,70150,70151, 0,80168,80169,80170,80171,584, 0, 0, 0, 0,588,80320,80321,80325,80326,80327, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,634,584,80176,80177,80178, 0,70156,70157,70158,70159,584,584,584,584,584,584, 0, 0, 0, 0, 0,80328,80329,80333,80334,80335, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584,80184,80185,80186, 0,70164,70165,70166,70167,584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,70014, 0, 0, 0, 0, 0,584,80192,80193,80194, 0,70172,70173,70174,70175,584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80241,80242, 0,80337,80338,80339,80340,80341,80342,80343,584,584,584, 0, 0, 0, 0, 0, 0, 0, 0, 0,80217,80218, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80249,80250, 0,80345,80346,80347,80348,80349,80350,80351, 0, 0, 0, 0, 0, 0, 0,70017, 0, 0, 0, 0,80225,80226,70003,70003,70011, 0, 0,582, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,80241,80242, 0, 0, 0, 0,80353,80354,80355,80356,80357,80358,80359, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80233,80234, 0, 0,70011, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,80249,80250, 0, 0, 0, 0,80361,80362,80363,80364,80365,80366,80367, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584,584,584,584,584,584, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80369,80370,80371,80372,80373,80374,80375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70019, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80377,80378,80379,80380,80381,80382,80383, 0,70160,70161,70162,70163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80176,80177,80178,80385,80386,80387,80388,80325,80326,80327, 0,70168,70169,70170,70171, 0, 0,70014, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70014, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80184,80185,80186,80393,80394,80395,80396,80333,80334,80335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80192,80193,80194, 0, 0, 0, 0,129, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70176,70177,70177,70177,70177,70177,70177,70178, 0, 0,70019, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,80160,80161,80162,80163, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70019, 0, 0, 0, 0, 0, 0, 0,70208,70209,70209,70209,70209,70209,70209,70210, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,80168,80169,80170,80171, 0, 0, 0, 0, 0, 0, 0,70019, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584,584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584,584,584,584,584, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bgmap": [ - [70073,70073,70073,70073,70073,70073,70074,70058,70086,70086,70086,70086,70087,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067], - [70081,70081,70081,70081,70081,70081,70082,70058,70094,70094,70094,70094,70095,70067,70067,70067,70067,70067,145,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067,70067], - [ 0, 0, 0, 0, 0, 0, 0,70058,70102,70102,70102,70102,70103,70067,70067,70067,70049,70049,145,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70067,70067,70067,70067,70067,70067,70067,70067], - [ 0, 0, 0, 0, 0, 0, 0,70058,70110,70110,70110,70110,70111,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067,70067,70067,70067,70067], - [ 0, 0, 0, 0, 0, 0, 0,70058,70118,70118,70118,70118,70119,70067,70067,70056, 0, 0,145,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067,70067,70067,70067,70067], - [70065,70065,70065,70065,70065,70065,70065,70066,70067,70067,70067,70067,70067,70067,70049,70051, 0, 0,145,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067,70067,70067,70067,70067], - [70070,70070,70070,70070,70070,70070,70070,70071,70067,70067,70067,70067,70067,70056, 0, 0, 0, 0,145,145,145,145,145,145,145,145,145,145,145,145,145, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067,70067,70067,70067,70067], - [70078,70078,70078,70078,70078,70078,70078,70079,70067,70067,70067,70067,70067,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145,145, 0,70060,70065,70065,70065,70065,70065,70065,70065,70065,70066,70067,70067,70067,70067,70067,70067,70067], - [70086,70086,70086,70086,70086,70086,70086,70087,70067,70067,70067,70067,70067,70056, 0, 0, 0, 0, 0,146, 0, 0, 0, 0, 0,145,145, 0,70058,70070,70070,70070,70070,70070,70070,70070,70070,70071,70067,70067,70067,70067,70067,70067,70067], - [70094,70094,70094,70094,70094,70094,70094,70095,70067,70067,70067,70067,70067,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145,145, 0,70058,70078,70078,70078,70078,70078,70078,70078,70078,70079,70067,70067,70067,70067,70067,70067,70067], - [ 0, 0, 0,70058,70102,70102,70102,70103,70067,70067,70067,70067,70067,70064,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,145,145,70065,70066,70086,70086,70086,70086,70086,70086,70086,70086,70087,70067,70067,70067,70067,70067,70067,70067], - [ 0, 0, 0,70058,70110,70110,70110,70111,70067,70067,70067,70067,70067,70069,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70071,70094,70094,70094,70094,70094,70094,70094,70094,70095,70067,70067,70067,70067,70067,70067,70067], - [70065,70065,70065,70066,70118,70118,70118,70119,70067,70067,70067,70067,70067,70077,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70079,70102,70102,70102,70102,70102,70102,70102,70102,70103,70067,70067,70067,70067,70067,70067,70067], - [70070,70070,70070,70071,70067,70067,70067,70067,70067,70067,70067,70067,70067,70085,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,145,145,70086,70087,70110,70110,70110,70110,70110,70110,70110,70110,70111,70067,70067,70067,70067,70067,70067,70067], - [70078,70078,70078,70079,70067,70067,70067,70067,70067,70067,70067,70067,70067,70093,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70049,145,145,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70049,70067,70067,70067,70067], - [70086,70086,70086,70087,70067,70067,70067,70056, 0, 0, 0, 0, 0,70058,70102,70102,70102,70102,70102,70102,70102,70102,70102,70056, 0,145,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067], - [70094,70094,70094,70095,70067,70067,70067,70056, 0, 0, 0, 0, 0,70058,70110,70110,70110,70110,70110,70110,70110,70110,70110,70056, 0,145,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067], - [70102,70102,70102,70103,70067,70067,70067,70056, 0, 0, 0, 0, 0,70058,70118,70118,70118,70118,70118,70118,70118,70118,70118,70056, 0,145,145,145,145,145,145,145, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067], - [70110,70110,70110,70111,70067,70067,70067, 0, 0, 0,145, 0, 0,70058,70067,70067,70067,70067,70067,70067,70067,70067,70067,70056, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067], - [70118,70118,70118,70119,70067,70067,70067,70056, 0, 0,145, 0, 0,70058,70067,70067,70067,70067,70067,70067,70067,70067,70067,70056, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0,70058,70067,70067,70067,70067,70067,70067,70067,70067,70067,70056, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0,70052,70049,70049,70049,70049,70049,70049,70049,70049,70049,70051, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0,145, 0, 0, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145,145,145,145,145,145,145,145,145,145,145,145,145,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145,146,146,146, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0,70060,70065,70065,70065,70065,70065,70065,70059, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0,70058,70070,70070,70070,70070,70070,70070,70056, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0,70058,70078,70078,70078,70078,70078,70078,70056, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0,70058,70086,70086,70086,70086,70086,70086,70056, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0,70058,70094,70094,70094,70094,70094,70094,70056, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0,145, 0, 0, 0, 0, 0, 0,145, 0, 0, 0,70058,70102,70102,70102,70102,70102,70102,70056, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,145,70110,70110,70110,70110,70110,70110,145,145,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70118,70118,70118,70118,70118,70118,70056, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70058,70067,70067,70067,70067,70067,70067,70056, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70064,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70065,70066,70067,70067,70067,70067,70067,70067,70056, 0,145, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70069,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70070,70071,70067,70067,70067,70067,70067,70067,70056, 0, 0, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70077,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70078,70079,70067,70067,70067,70067,70067,70067,70056, 0, 0, 0,70058,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70085,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70086,70087,70067,70067,70067,70067,70067,70067,70064,70065,70065,70065,70066,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70093,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70094,70095,70067,70067,70067,70067,70067,70067,70069,70070,70070,70070,70071,70067,70067,70067], - [70067,70067,70067,70067,70067,70067,70067,70101,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70102,70103,70067,70067,70067,70067,70067,70067,70077,70078,70078,70078,70079,70067,70067,70067] -], - "fgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70144,70145,70146,70147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70152,70153,70154,70155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80128,80129,80130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80136,80137,80138,80139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80144,80145,80146,80147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80152,80153,80154,80155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70201,70201,70201,70201,70201,70201,70201,70202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80128,80129,80130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80136,80137,80138,80139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80144,80145,80146,80147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80152,80153,80154,80155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,70006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70136,70137,70138,70139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70144,70145,70146,70147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70152,70153,70154,70155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70006, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70006, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,80128,80129,80130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,80136,80137,80138,80139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,80144,80145,80146,80147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,80152,80153,80154,80155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70200,70201,70201,70201,70201,70201,70201,70202, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80280,80281,80282,80283,80284, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,80288,80289,80290,80291,80292, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70048, 0, 0,70196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70050, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,145, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70049,70049,70049,70050, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70180,70180, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70188,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70188,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70188,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70188,70188, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,70048,70049,70049,70049,70049,70049,70050, 0, 0, 0, 0, 0, 0, 0, 0, 0,70048, 0,70196,70196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70050, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70185,70185,70185,70185,70185,70185,70185,70186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [70193,70193,70193,70193,70193,70193,70193,70194, 0, 0, 0, 0, 0, 0, 0,70136,70137,70138,70139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70144,70145,70146,70147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,582, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,584,584,584,584,584,584,584, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,582, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70184,70185,70185,70185,70185,70185,70185,70186, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,70192,70193,70193,70193,70193,70193,70193,70194, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,146,146,146, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,146,146,146, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,146,146,146, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -] -} \ No newline at end of file diff --git a/public/project/floors/tower1.js b/public/project/floors/tower1.js deleted file mode 100644 index 17cf16c..0000000 --- a/public/project/floors/tower1.js +++ /dev/null @@ -1,246 +0,0 @@ -main.floors.tower1= -{ - "floorId": "tower1", - "title": "智慧之塔", - "name": "1", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "T526", - "bgm": "tower.opus", - "firstArrive": [ - "\t[野蛮人]\b[up,hero]这里,便是智慧之塔了", - "注意破墙镐在本区结束后会全部删除,请在本区域全部用完" - ], - "eachArrive": [], - "parallelDo": "", - "events": { - "7,9": [ - { - "type": "if", - "condition": "(flag:tower1===true)", - "true": [ - { - "type": "choices", - "text": "\t[智慧精灵,N532]有什么想问的?", - "choices": [ - { - "text": "这座塔为什么会出现在这里?", - "action": [ - "\t[智慧精灵,N532]\b[up,7,9]说实话,我也不知道", - "\t[智慧精灵,N532]\b[up,7,9]这是上级的绝密情报,只有登上塔顶者才有权利知晓", - "\t[野蛮人]\b[up,hero]那你去塔顶不是随随便便的事吗,为啥你不知道", - { - "type": "animate", - "name": "angry", - "loc": [ - 7, - 9 - ] - }, - "\t[智慧精灵,N532]\b[up,7,9]哼!人家只是一个助手啦,又不是什么挑战者", - { - "type": "animate", - "name": "sweat", - "loc": "hero" - } - ] - }, - { - "text": "这座塔为什么叫做智慧之塔?", - "action": [ - "\t[智慧精灵,N532]\b[up,7,9]为啥你老是问人家不会回答的问题啊!QAQ" - ] - }, - { - "text": "这座塔里面的怪物有多强?", - "action": [ - "\t[智慧精灵,N532]\b[up,7,9]这个嘛...", - "\t[智慧精灵,N532]\b[up,7,9]根据你进入塔时的实力不同,怪物强度也会不同", - "\t[智慧精灵,N532]\b[up,7,9]玩家千万不要认为进塔的时候能力越低怪物越弱,这个塔里面的怪物属性是确定的", - "\t[野蛮人]\b[up,hero]玩家?玩家是啥?", - "\t[智慧精灵,N532]\b[up,7,9]就是坐在电脑前面或躺在被窝里面看手机的地球人", - "\t[野蛮人]\b[up,hero]??????" - ] - }, - { - "text": "这座塔有几层?", - "action": [ - "\t[智慧精灵,N532]\b[up,7,9]6层", - { - "type": "sleep", - "time": 500 - }, - "\t[野蛮人]\b[up,hero]没了?", - "\t[智慧精灵,N532]\b[up,7,9]你还想让我回答啥?这不是你的问题吗", - { - "type": "animate", - "name": "fret", - "loc": "hero" - } - ] - }, - { - "text": "为啥我会在外面见到很多与智慧有关的东西?", - "action": [ - "\t[智慧精灵,N532]\b[up,7,9]因为未来的人类想要拯救过去的人类", - "\t[野蛮人]\b[up,hero]?????" - ] - } - ] - } - ], - "false": [ - "\t[智慧精灵,N532]\b[up,7,9]你好呀,我是智慧之塔的小助手,智慧精灵", - "\t[野蛮人(内心)]\b[up,hero]卧槽,这塔里面怎么还有这玩意", - "\t[智慧精灵,N532]\b[up,7,9]只要你有什么问题都可以问我哟,我会尽力想你解答", - "\t[野蛮人]\b[up,hero]啊这,你为啥会在塔里面啊", - "\t[智慧精灵,N532]\b[up,7,9]我一生下来就在塔里,被赋予助手的职位", - "\t[野蛮人]\b[up,hero]那你就一直当助手吗?", - "\t[智慧精灵,N532]\b[up,7,9]对呀,在这里面还能和帅气的哥哥一起玩,天天都特别开心", - { - "type": "animate", - "name": "sweat", - "loc": "hero" - }, - "\t[智慧精灵,N532]\b[up,7,9]嗨呀,不说了,不知不觉说这么多没用的东西", - "\t[智慧精灵,N532]\b[up,7,9]赶紧的,有什么问题赶紧问,问完我还要去玩呢!", - "\t[智慧精灵,N532]\b[up,7,9]另外提醒一句,这里面不能用你的2技能哟(我是怎么知道他的2技能的)塔里面按2键可以使用破墙镐", - { - "type": "setValue", - "name": "flag:tower1", - "value": "true" - }, - "\t[智慧精灵,N532]\b[up,7,9]什么?你让我让一下?", - "\t[智慧精灵,N532]\b[up,7,9]不行!我的职责就是站在这个地方!" - ] - } - ], - "6,6": [ - { - "type": "jumpHero", - "dxy": [ - 2, - 0 - ], - "time": 500 - } - ], - "8,6": [ - { - "type": "jumpHero", - "dxy": [ - -2, - 0 - ], - "time": 500 - } - ], - "7,14": [ - { - "type": "changeFloor", - "floorId": "MT20", - "loc": [ - 7, - 8 - ] - } - ] - }, - "afterBattle": {}, - "afterGetItem": { - "12,3": [ - "你需要按Q或双击道具栏打开装备栏后装备上该装备才行" - ] - }, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [527,527,527,527,527,527,527,527,527,527,527,527,527,527,527], - [527, 32,381,381,381,492, 0, 87, 0,492, 0,484,528, 0,527], - [527,528,492,528,546,528,528,536,528,528, 0, 0,548, 29,527], - [527, 32,381,537, 0, 32,550, 0, 21, 0, 29, 0, 35, 0,527], - [527,494,528,381,528,550,528,528,528,528,528,549,378,484,527], - [527,484,547, 0,492, 0, 0, 27,381, 0, 0, 0,484, 29,527], - [527,390,482, 0,536, 28, 94,544, 92, 29,482, 29,547, 0,527], - [541,441,381,530,530,530,530, 27,530,530,530,530,403, 0,542], - [527,396, 0,376, 0,381, 0,482,528, 21, 32, 0,403,548,527], - [527,528,546, 0,528,528,492,532,528,537,528,528,530, 0,527], - [527,484, 0,530,376, 33,549, 33,492, 27, 33,544, 0,381,527], - [527, 0, 0,544, 33,381,492, 33,536, 33,381,492, 28,484,527], - [527,537, 0,381,528,527,527,497,527,527, 0,528,528,528,527], - [527, 0, 28, 0,482,527, 47, 0, 47,527,537, 0, 32, 0,527], - [527,527,527,527,527,527,527, 93,527,527,527,527,527,527,527] -], - "beforeBattle": {}, - "bgmap": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,316, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,314, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,314, 0, 0], - [ 0, 0,306,312,312,312,317, 0,318,312,312,312,303, 0, 0], - [ 0, 0,314, 0, 0, 0, 0, 0, 0, 0, 0, 0,314, 0, 0], - [ 0, 0,302,309, 0, 0, 0, 0, 0, 0, 0, 0,315, 0, 0], - [ 0, 0,302,307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,314, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,531, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,529, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,529, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,529, 0, 0], - [ 0, 0,529,529,529,529,529, 0,529,529,529,529,529, 0, 0], - [ 0, 0,529, 0, 0, 0, 0, 0, 0, 0, 0, 0,529, 0, 0], - [ 0, 0,529,529, 0, 0, 0, 0, 0, 0, 0, 0,529, 0, 0], - [ 0, 0,529,529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,529, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -], - "cannotMoveIn": {}, - "changeFloor": { - "0,7": { - "floorId": "tower6", - "loc": [ - 24, - 58 - ] - }, - "14,7": { - "floorId": "tower6", - "loc": [ - 12, - 58 - ] - }, - "7,1": { - "floorId": "tower2", - "loc": [ - 7, - 1 - ] - } - } -} \ No newline at end of file diff --git a/public/project/floors/tower2.js b/public/project/floors/tower2.js deleted file mode 100644 index 351b36c..0000000 --- a/public/project/floors/tower2.js +++ /dev/null @@ -1,87 +0,0 @@ -main.floors.tower2= -{ - "floorId": "tower2", - "title": "智慧之塔", - "name": "2", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "T526", - "bgm": "tower.opus", - "firstArrive": null, - "eachArrive": [], - "parallelDo": "", - "events": { - "13,6": [ - "\t[智慧精灵,N532]\b[down,13,6]这个区域是第一章的最后一个区域了,也是该版本的最后一个区域" - ] - }, - "afterBattle": {}, - "afterGetItem": { - "2,8": [ - "你需要按Q或双击道具栏打开装备栏后装备上该装备才行" - ] - }, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [527,527,527,527,527,527,527,527,527,527,527,527,527,527,527], - [527, 32, 0,528, 27, 33,537, 88,403,482,528, 33, 28, 33,527], - [527,528,537,528,528,528, 33,528,482,548,528,549,528,528,527], - [527, 27, 32,528,482,528, 29,528,528,381,492, 0,381, 0,527], - [527, 32, 28,492,378, 0,550, 0,528,482,536, 27,482, 28,527], - [527,546,528,528,528,528,528, 0,528,492,528,548,528,528,527], - [527, 0, 0, 28, 0, 34, 0,544,528, 0, 27, 21, 0,533,527], - [527,528,528,528,536,528,528, 0,482, 0,528,537,528,528,527], - [527,390, 36,494,376, 32,528,528,528,528,528, 0,548, 31,527], - [527,403,484,528, 32,381,492, 0, 31,544,528, 32,528,528,527], - [527,547,528,528,528,528,528,492,528, 0, 0,537, 32, 0,527], - [527,376, 31, 0,381,528, 27, 32,528, 32,528,528,492,528,527], - [527,492,528,528,546,528, 32, 28,550, 0,528,378, 32, 0,527], - [527, 0, 22, 31, 0,544, 21,549,528, 0,546, 32,381, 87,527], - [527,527,527,527,527,527,527,540,527,527,527,527,527,527,527] -], - "beforeBattle": {}, - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -], - "cannotMoveIn": {}, - "changeFloor": { - "7,1": { - "floorId": "tower1", - "loc": [ - 7, - 1 - ] - }, - "7,14": { - "floorId": "tower6", - "loc": [ - 18, - 42 - ] - }, - "13,13": { - "floorId": "tower3", - "loc": [ - 13, - 13 - ] - } - } -} \ No newline at end of file diff --git a/public/project/floors/tower3.js b/public/project/floors/tower3.js deleted file mode 100644 index fdb388c..0000000 --- a/public/project/floors/tower3.js +++ /dev/null @@ -1,68 +0,0 @@ -main.floors.tower3= -{ - "floorId": "tower3", - "title": "智慧之塔", - "name": "3", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "T526", - "bgm": "tower.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "5,8": { - "floorId": "tower4", - "loc": [ - 5, - 8 - ] - }, - "13,13": { - "floorId": "tower2", - "loc": [ - 13, - 13 - ] - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [527,527,527,527,527,527,527,527,527,527,527,527,527,527,527], - [527, 0, 0, 0,528, 0, 32, 0,537,528,376,528,528,403,527], - [527,528,528,537,528,528,528,528, 0,547,403,556, 33,390,527], - [527, 0, 32, 0,528, 0, 28, 0, 32,528,378,492,528,492,527], - [527,537,528,528,528,492,528,536,528,528,556, 33,403,396,527], - [527, 0, 28, 0,546, 32,528, 0, 28,528,528,494,528,528,527], - [527, 32, 27, 32,528, 0,544, 27, 0,528, 34, 0, 28, 0,527], - [527,528,528,556,528,528,492,528, 32,550, 0,528,528,556,527], - [527,403,376, 32,492, 87, 0,528,528,528,544,528, 0,376,527], - [527,556,528,528,528,528, 32,492, 0, 27, 0,537, 31, 0,527], - [527, 32,403,378, 32,528,536, 0, 32, 28, 32,492, 0,381,527], - [527,528,528,528,492,528, 32,528,547,528,528,528,550,528,527], - [527, 0, 32,537, 0,528, 0,492,376, 32,378,494, 0, 0,527], - [527, 0, 0,528,546, 0, 27,528, 0,403, 0,528, 0, 88,527], - [527,527,527,527,527,527,527,527,527,527,527,527,527,527,527] -], - "beforeBattle": {}, - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [], - "fg2map": [], - "cannotMoveIn": {} -} \ No newline at end of file diff --git a/public/project/floors/tower4.js b/public/project/floors/tower4.js deleted file mode 100644 index 5a9153c..0000000 --- a/public/project/floors/tower4.js +++ /dev/null @@ -1,86 +0,0 @@ -main.floors.tower4= -{ - "floorId": "tower4", - "title": "智慧之塔", - "name": "4", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "T526", - "bgm": "tower.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [527,527,527,527,527,527,527,543,527,527,527,527,527,527,527], - [527, 31, 31,536, 0,528, 0,547, 0, 31, 0,544, 0,381,527], - [527, 31, 31,528, 28,492, 29,528,528, 0, 28,528, 0,528,527], - [527,528,528,528, 0,528, 28, 34,492,492,528,528,547, 0,527], - [527,381, 0,550, 0,528,528,528,528, 0, 31,528, 0,528,527], - [527, 0,528, 0,528,528, 31, 0,536, 27, 0,556,381,378,527], - [527, 0,528, 27, 0,544, 0,403, 0,528,528, 0,528,528,527], - [527,550,528,528,528,528,492,528,550,528, 34,381,556,376,527], - [527, 0, 0, 31,492, 88,403,528, 31,528, 27, 32,528, 0,527], - [527,528,528, 0,528,403, 34,547, 0,492,492,528,528,556,527], - [527, 0,528,546,528,528,546,528,528,528, 0, 28, 0, 0,527], - [527, 0,544, 32, 0,536, 32,528, 32, 0,536,528,528,556,527], - [527, 27,492, 0, 27,528, 27,492, 0,528,528,528, 0, 0,527], - [527, 31,528, 32, 0,528, 32,546, 0,494, 87,381, 28, 0,527], - [527,527,527,527,527,527,527,540,527,527,527,527,527,527,527] -], - "beforeBattle": {}, - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -], - "cannotMoveIn": {}, - "changeFloor": { - "5,8": { - "floorId": "tower3", - "loc": [ - 5, - 8 - ] - }, - "7,0": { - "floorId": "tower6", - "loc": [ - 7, - 15 - ] - }, - "7,14": { - "floorId": "tower6", - "loc": [ - 18, - 15 - ] - }, - "10,13": { - "floorId": "tower5", - "loc": [ - 10, - 13 - ] - } - } -} \ No newline at end of file diff --git a/public/project/floors/tower5.js b/public/project/floors/tower5.js deleted file mode 100644 index ba96baa..0000000 --- a/public/project/floors/tower5.js +++ /dev/null @@ -1,87 +0,0 @@ -main.floors.tower5= -{ - "floorId": "tower5", - "title": "智慧之塔", - "name": "5", - "width": 15, - "height": 15, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": [], - "ratio": 2, - "defaultGround": "T526", - "bgm": "tower.opus", - "firstArrive": [], - "eachArrive": [], - "parallelDo": "", - "events": { - "8,5": [ - "这里是漏怪检测,会检测\r[gold]智慧之塔\r[]区域是否有遗漏怪物", - { - "type": "function", - "function": "function(){\nconst enemy = Mota.require('@user/legacy-plugin-data').getRemainEnemyString([\"tower1\", \"tower2\", \"tower3\", \"tower4\", \"tower5\", \"tower6\"]);\nif (enemy.length === 0) {\n\tcore.insertAction(['当前无剩余怪物!', { \"type\": \"hide\", \"remove\": true }, ]);\n} else {\n\tcore.insertAction(enemy);\n}\n}" - } - ] - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [527,527,527,527,527,527,527,527,527,527,527,527,527,527,527], - [527,376, 0,381,528, 0,378,528, 0, 27, 28, 0,528, 0,527], - [527, 0, 32,279, 0,381, 0,546, 0,528, 0, 32,547, 0,527], - [527,528,528, 0,528,528,492,528,527,528,492,528,528, 28,527], - [527, 0,492,381,528, 0,376,527, 87,527,376, 32,528, 27,527], - [527,376,528, 27,556, 32, 0,528,516,528, 32,378,492, 32,527], - [527, 32,556, 28,528,550,528,528, 0,528,528,279,528,528,527], - [527, 0,528, 32,528, 0, 0, 0, 0,536, 0, 27, 32, 0,542], - [527,492,528,528,528,528,547,528,528,528,556,528,556,528,527], - [527, 27, 0,528, 0, 0, 0,550, 0, 27, 0,492,441, 32,527], - [527, 0, 32,492, 0, 28, 0,528,528,528,544,528,528,528,527], - [527,528,547,528,546,528,492,528, 0, 28, 0, 0,546, 0,527], - [527, 0, 32,536, 0, 28, 0,528,550,528,528,528, 0,528,527], - [527, 27, 0,528, 32, 0, 0,492, 27, 0, 88, 0, 28, 0,527], - [527,527,527,527,527,527,527,527,527,527,527,527,527,527,527] -], - "beforeBattle": {}, - "bgmap": [ - -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -], - "cannotMoveIn": {}, - "changeFloor": { - "10,13": { - "floorId": "tower4", - "loc": [ - 10, - 13 - ] - }, - "14,7": { - "floorId": "tower6", - "loc": [ - 24, - 2 - ] - }, - "8,4": { - "floorId": "tower7", - "loc": [ - 7, - 7 - ] - } - } -} \ No newline at end of file diff --git a/public/project/floors/tower6.js b/public/project/floors/tower6.js deleted file mode 100644 index 5708009..0000000 --- a/public/project/floors/tower6.js +++ /dev/null @@ -1,270 +0,0 @@ -main.floors.tower6= -{ - "floorId": "tower6", - "title": "智慧之塔", - "name": "1", - "width": 25, - "height": 60, - "canFlyTo": true, - "canFlyFrom": true, - "canUseQuickShop": true, - "cannotViewMap": false, - "images": null, - "ratio": 2, - "defaultGround": "T526", - "bgm": "tower.opus", - "firstArrive": null, - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": { - "12,58": { - "floorId": "tower1", - "loc": [ - 14, - 7 - ], - "direction": "left" - }, - "24,58": { - "floorId": "tower1", - "loc": [ - 0, - 7 - ], - "direction": "right" - }, - "18,42": { - "floorId": "tower2", - "loc": [ - 7, - 14 - ], - "direction": "up" - }, - "18,15": { - "floorId": "tower4", - "loc": [ - 7, - 14 - ], - "direction": "up" - }, - "7,15": { - "floorId": "tower4", - "loc": [ - 7, - 0 - ], - "direction": "down" - }, - "24,2": { - "floorId": "tower5", - "loc": [ - 14, - 7 - ], - "direction": "left" - } - }, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17], - [ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17], - [ 0,556,556, 32, 0, 0, 0, 32,537, 32,537, 32,537, 32,537, 32, 0,376,378,381, 34,556,556, 0,543], - [527,527,527,527,527,527,527,527,527,527,527,527,527,527,527,279,527,527,527,527,527,527,527,527,527], - [ 32, 0,537, 17, 0, 0, 17, 17, 0, 0, 17, 17, 0, 32, 0,376,550, 0, 17, 17, 17, 17, 17, 17, 17], - [527,527, 0, 17,527, 32, 0,537, 0,527, 17, 17,527,527,527, 0,527, 27, 32, 17, 17, 17, 17, 17, 17], - [ 17, 0, 27, 0,527,527,527,527, 0,546, 27, 32, 29, 17, 17, 0, 17,527, 28, 0, 17, 17, 17, 17, 17], - [ 32,547,527, 32, 17, 17, 17, 17, 34,527,527,527,527, 17, 17, 0, 17, 17,527,556, 0, 17, 17, 17, 17], - [ 32,527, 17,381,381, 0,544, 0, 0, 0, 27, 32, 32, 28,492,536, 17, 17, 17,527,378,376,381, 32, 17], - [527, 17, 17, 17,527,527,527,527,527,527,527,527,527,527,527, 0, 17, 17, 17, 17,527,527,527,527, 17], - [556, 32,381, 32, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,376,550, 0, 27, 32,381, 0, 0,556,556], - [527,527,527,527, 17, 17, 0, 32,547, 32, 0, 17, 17, 17, 17, 33,527,527,527,527,527,527,527,527,527], - [ 17, 17, 17, 17, 17, 0, 28,527,527,527,381, 0, 17, 17, 17, 0, 17,527, 32, 0,544, 0, 27, 32, 28], - [ 0, 17, 17, 17, 0, 27,527, 17, 17, 17,527,376,381, 32, 0,279,378,527,527,527,492,527,527,527,527], - [ 0, 27,381, 32,550,527, 17, 17, 17, 17, 17,527,527,527,527, 0,527, 17, 17, 17, 32, 17, 17, 17, 17], - [527,527,527,527,527, 0, 0,543, 0, 27,381, 32, 0, 17, 0, 32, 27, 0,543, 0,381, 0, 17, 17, 17], - [ 17, 17, 0,550, 32, 0,527,527,527,527, 0,527,527, 0,550,527,527,527,527,527,527,556, 17, 17, 17], - [ 28, 27, 32,527,527,527, 17, 17, 17, 0,546, 32,378,381,527, 17,378,381, 32,556, 32, 32, 17, 17, 17], - [527,527,527,527, 17, 17, 17, 17, 0, 32,527,527,527,527, 17, 0,381,527,527,527,527,556, 17, 17, 17], - [ 0, 17, 17, 17, 17, 17, 17, 0,376,527, 0, 27,381, 32, 0,546,527, 17, 0, 0,390,403,396, 0, 0], - [ 29, 0,537, 0, 17, 17, 0,547,527, 17,527,527,527,527, 0,527, 17, 17,527,527,527,279,527,527,527], - [527,527,527, 32,492, 29, 0,527, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,378, 17, 17, 17], - [ 17, 17,527,527,527, 0,527, 0, 32,544, 0, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 17, 17, 17], - [ 32,556, 32, 29, 32,537,492, 27,527,527,527, 0, 0, 0, 17, 28, 0,536, 0, 27, 0,556, 17,376,556], - [527,527,527,527,527,527,527,381, 17, 17, 17,381,527,527, 17,527,492,527,527,527,527, 0, 17, 32,527], - [ 17, 17, 17, 17, 0, 0, 17, 28, 0,536, 32, 0, 0, 0, 17, 17,550, 17, 17, 17, 17, 17, 17,556, 17], - [ 0,381, 0,537,527,527, 17,527,527,527,527,527,537,527, 0, 0, 0,381, 32, 0, 17, 17, 28, 0, 0], - [527,527,527, 32, 0, 27, 0,544, 0, 0, 0, 17,492, 17, 28,527,527,527,527,527, 17, 32, 0,527,527], - [ 17, 17,527,527,527,527,527,527, 0,527,527, 17, 27, 34,550, 17, 17, 17, 17, 17, 17,527,527,527, 17], - [ 0, 17, 17, 17, 17, 17, 17, 0, 0, 28, 17, 17, 0,527,527, 0, 32, 0,546, 28, 17, 0,546, 0,381], - [381, 33, 17,441, 33,547, 0, 33,527,527, 17, 0,550, 0, 32,381,527,527,527, 0, 17, 0,527,527,527], - [527,527, 17,527,527,527,527,279,403,390, 17,527,527,527,527,527,527, 17, 17, 0, 17, 0, 17, 17, 17], - [ 17, 17, 17, 0, 0, 0, 17, 0,527,527, 17, 17, 17, 17, 17, 17, 17, 32, 0, 27,546, 0, 34,376, 0], - [ 17, 17, 17,527,537, 0, 32, 0,536, 0, 34,378, 32, 0, 17, 0,556,403,527,527,527,527,527,527, 0], - [381, 34, 28,547, 0,527,527,527,527,527,381,527,527,527, 17,527, 0,527, 17, 0, 0,544, 0, 32, 0], - [527,527,527,527, 0, 0,381, 0, 17, 0, 0, 0, 17, 0, 0, 32,381,376, 32,550,527,527,527,527,527], - [ 17, 17, 17,527,527,527,527,527, 17,527,527,527, 17,527,527,527,527,527,527, 0, 17, 17, 17, 17, 17], - [ 0,536, 34, 17, 32,537,381,537, 32, 29, 32,556, 0, 17, 0, 27, 32, 28, 0,550, 0, 32,378, 34, 0], - [527,492,527, 17,527, 0,527, 0,527,527,527,527,527, 17,527,527, 0,527,527,527,527,527,527,527,527], - [ 17, 34, 17, 17, 17, 0, 17, 0, 0,556,390,441,396,556, 0, 0,546, 34,376, 32,549, 0, 17, 17, 17], - [ 0,537, 0, 32, 28, 27,492, 32,527,527,527, 0,527,527,527,492,527,527,527,527,527, 0, 32, 0, 0], - [527,527,527,527,527,527,527,537,492, 0, 32,556, 0, 0, 0, 0, 0, 17, 17, 17,527,527,527,527,527], - [ 0, 17, 17, 17, 17, 17, 17, 34,527,527,527,527, 28,527,527,527,536,376,543,378,381,547, 0, 32, 32], - [550, 31, 31, 17, 0, 27, 34,381,556,492, 0, 0, 32, 17, 17,527,527,527,527,527,492,527,527,527,527], - [527,527,527, 17,527,527,527, 17,527,527,527,527, 0, 17, 17, 17, 17, 17, 17, 17,546, 17, 17, 17,527], - [ 17, 17, 17, 17, 17, 17, 17,494,556, 33, 27, 0,381, 0,547, 0,492, 33, 28, 33, 0, 17, 17, 17, 17], - [ 0, 27, 34,549, 34,376,381,378,527,527,527,527, 0,527,527,527,527,527,527,527, 0, 29, 0, 0, 0], - [527,527,527,527,527,527,527,527,527, 17, 17, 17,544, 0, 27, 33,381, 0,547,527,527,527,527, 0,527], - [ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0,527,527,527,527,527, 0, 28, 33,381, 0,544, 17], - [ 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 29, 17, 17, 17, 17,527,527,527,527,527,527,492, 17], - [ 34,537, 34,381, 27,381, 34,550,492, 0, 34, 29, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 17], - [381,527,527,527,527,527,527,527,527,527,527,527,546, 34, 29, 27, 29, 34, 17, 17, 17, 17, 17, 0, 17], - [ 0,527, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,492,527,527,527,527,536, 0, 34, 28, 27,381, 34, 0], - [527,527, 0,381,378, 33,381, 0, 17, 17, 17, 17, 0, 17, 17, 17,527,527,527,527,527,527,527,547,527], - [ 0, 0,550,527,527,527,527,549, 0, 33, 0, 17, 0, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 0, 0], - [527,527,527,527, 17, 17,527,527,527,527,527, 17,537, 0,381, 0,536, 34,376, 0,537, 0, 34,381, 34], - [527, 0,537, 0, 0, 34,492, 0, 27, 34, 0, 17, 0,527,527,527, 0,527,527,527,527,527,527,527,527], - [ 17,527, 0,527,527,527,527,550,527,527,527, 17, 17, 17, 17, 17, 0,546, 34, 17, 17, 17, 17, 17, 17], - [ 0,548, 34,537,381, 0, 34, 0, 27, 34,549, 0,543, 0, 33, 28, 0,527,378,381, 33,544, 27,494,543], - [528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528,528] -], - "bgmap": [ - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50057,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50057,50057], - [50057,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50057,50057], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50057,50057,50057,50041,50041,50041,50041,50041,50041,50041,50041,50057,50057,50057,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50057,50057,50057,50041,50041,50041,50041,50041,50041,50041,50041,50057,50057,50057,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50057,50057,50057,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50057,50057,50057,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,306], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041], - [50057,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50057,50057,50057,50041,50041,50041,50041,50041,50041,50041,50041,50041,50057,50057], - [50057,50041,50041,50041,50041,50041,50041,50041,50041,50041,50041,50057,50057,50057,50041,50041,50041,50041,50041,50041,50041,50041,50041,50057,50057], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fgmap": [ - -], - "bg2map": [ - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [50146, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,50144,50145], - [50154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,50152,50153], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,552, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,552, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0,552, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,552, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0,552, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0,552, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50144,50145,50146, 0, 0, 0, 0, 0, 0,552, 0,50144,50145,50146,552, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0,50152,50153,50154, 0, 0, 0, 0, 0, 0,552, 0,50152,50153,50154,552, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0,552, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0,552, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0], - [ 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0], - [ 0, 0, 0, 0, 0,552, 0,552, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0,552, 0, 0, 0, 0,552, 0, 0, 0, 0,552, 0,552, 0], - [ 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0,552, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0,552, 0], - [ 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0,552, 0, 0, 0, 0, 0, 0,552, 0], - [ 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0,552, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0,552, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0,552, 0,552, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0,552, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0,552, 0, 0, 0], - [ 0, 0, 0, 0,552, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552], - [ 0, 0, 0, 0,552, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0,552], - [ 0, 0, 0, 0,552, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0,552, 0, 0,552, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0], - [ 0,552, 0, 0, 0,552, 0,552, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,552, 0, 0, 0,552, 0,552, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0,552, 0, 0, 0,552, 0,552, 0, 0, 0,552, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0,552, 0, 0, 0,552, 0,50144,50145,50146, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0,552, 0, 0, 0, 0,50152,50153,50154, 0, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0,552, 0, 0,552, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0], - [552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0], - [552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552,50041], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,552, 0, 0, 0,552, 0, 0, 0, 0, 0, 0, 0, 0], - [50146, 0,552, 0, 0, 0, 0,552, 0, 0, 0,50144,50145,50146, 0, 0,552, 0, 0, 0, 0, 0, 0,50144,50145], - [50154, 0,552, 0, 0, 0, 0,552, 0, 0, 0,50152,50153,50154, 0, 0,552, 0, 0, 0, 0, 0, 0,50152,50153], - [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] -], - "fg2map": [ - -], - "beforeBattle": {}, - "cannotMoveDirectly": true, - "cannotMoveIn": {} -} \ No newline at end of file diff --git a/public/project/floors/tower7.js b/public/project/floors/tower7.js deleted file mode 100644 index 9575239..0000000 --- a/public/project/floors/tower7.js +++ /dev/null @@ -1,239 +0,0 @@ -main.floors.tower7= -{ - "floorId": "tower7", - "title": "智慧之塔", - "name": "5", - "width": 15, - "height": 15, - "canFlyTo": false, - "canFlyFrom": false, - "canUseQuickShop": true, - "cannotViewMap": true, - "images": [ - { - "name": "tower7.webp", - "canvas": "bg", - "x": 0, - "y": 0 - } - ], - "ratio": 2, - "defaultGround": "T526", - "bgm": "tower.opus", - "firstArrive": [ - { - "type": "hideStatusBar", - "toolbox": true - }, - { - "type": "loadBgm", - "name": "beforeBoss.opus" - }, - { - "type": "loadBgm", - "name": "towerBoss.opus" - }, - { - "type": "loadBgm", - "name": "towerBoss2.opus" - }, - { - "type": "loadBgm", - "name": "towerBoss3.opus" - }, - { - "type": "pauseBgm" - }, - { - "type": "sleep", - "time": 1000, - "noSkip": true - }, - "\t[智慧之神,E557]\b[down,7,2]哟,又来了一位挑战者啊", - "\t[智慧之神,E557]\b[down,7,2]曾经也有无数的挑战者来过这里", - "\t[智慧之神,E557]\b[down,7,2]但是,他们的低下智慧,却让他们在我这里败下阵来", - { - "type": "playBgm", - "name": "beforeBoss.opus" - }, - "\t[智慧之神,E557]\b[down,7,2]愚蠢的他们只会一头冲向我这", - "\t[智慧之神,E557]\b[down,7,2]在我面前变成一滩肉泥", - "\t[智慧之神,E557]\b[down,7,2]我不由得感叹,这里的人们都是如此野蛮之人吗", - "\t[智慧之神,E557]\b[down,7,2]连年不断的战争让那里的人们变得生性暴戾", - "\t[智慧之神,E557]\b[down,7,2]那里已经变成了人间炼狱", - "\t[智慧之神,E557]\b[down,7,2]而唯一能够拯救那里的方法就是改变历史", - "\t[智慧之神,E557]\b[down,7,2]但这可能吗?", - "\t[智慧之神,E557]\b[down,7,2]人们陷入无尽的恐惧当中", - "\t[智慧之神,E557]\b[down,7,2]只能眼睁睁地看着自己的爱人被杀", - "\t[智慧之神,E557]\b[down,7,2]只能任凭刀刃穿过自己的心脏", - "\t[智慧之神,E557]\b[down,7,2]只能让自己干过的那些卑劣的事不断增多", - "\t[智慧之神,E557]\b[down,7,2]只能让那些曾经被人类欺凌、被人类践踏过的生物反击", - "\t[智慧之神,E557]\b[down,7,2]人类的防线一夜溃败", - "\t[智慧之神,E557]\b[down,7,2]而到了那时,他们才意识到了问题的严重性", - "\t[智慧之神,E557]\b[down,7,2]可这一切不都晚了吗?", - "\t[智慧之神,E557]\b[down,7,2]这就是未来的人所做的一切", - "\t[智慧之神,E557]\b[down,7,2]只会野蛮地向大自然索求,却丝毫不回报自然", - "\t[智慧之神,E557]\b[down,7,2]他们虽拥有智慧,却将智慧用在了掠夺上面", - "\t[智慧之神,E557]\b[down,7,2]因此,人们建造出了这座高塔", - "\t[智慧之神,E557]\b[down,7,2]用唯一的时空穿梭技术将这座高塔传送到了10000年前", - "\t[智慧之神,E557]\b[down,7,2]企图用改变历史的方式来获得解脱", - "\t[智慧之神,E557]\b[down,7,2]但他们会成功吗", - "\t[智慧之神,E557]\b[down,7,2]哼,谁知道呢", - "\t[智慧之神,E557]\b[down,7,2]现在,你应该知道这座塔的来源了吧?", - { - "type": "playBgm", - "name": "towerBoss.opus" - }, - "\t[智慧之神,E557]\b[down,7,2]就让我来看一看你是不是能够改变历史的人吧!", - { - "type": "confirm", - "text": "是否要跳过该特殊战", - "yes": [ - { - "type": "setValue", - "name": "flag:boss1", - "value": "true" - }, - { - "type": "changeFloor", - "floorId": "MT20", - "loc": [ - 7, - 9 - ] - }, - { - "type": "openDoor", - "loc": [ - 13, - 6 - ], - "floorId": "MT19" - }, - "现在前往东边", - { - "type": "showStatusBar" - }, - { - "type": "exit" - } - ], - "no": [ - "屏幕上方有boss血条和提示等,请注意阅读", - "下面,就让我们开始吧!", - { - "type": "function", - "function": "function(){\nMota.require('@user/legacy-plugin-data').readyClip();\n}" - } - ] - }, - { - "type": "move", - "loc": [ - 7, - 2 - ], - "time": 1000, - "keep": true, - "steps": [ - "up:1" - ] - }, - { - "type": "hide", - "loc": [ - [ - 7, - 8 - ] - ], - "floorId": "MT20", - "remove": true - }, - { - "type": "autoSave" - }, - { - "type": "forbidSave", - "forbid": true - }, - { - "type": "function", - "function": "function(){\n// core.drawWarning(7, 2, \"智慧之神\");\n}" - }, - { - "type": "sleep", - "time": 3000, - "noSkip": true - }, - { - "type": "function", - "function": "function(){\nMota.require('boss_r').startTowerBoss();\n}" - } - ], - "eachArrive": [], - "parallelDo": "", - "events": {}, - "changeFloor": {}, - "afterBattle": {}, - "afterGetItem": {}, - "afterOpenDoor": {}, - "autoEvent": {}, - "cannotMove": {}, - "map": [ - [527,527,527,527,527,527,527,527,527,527,527,527,527,527,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0,557, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,527], - [527,527,527,527,527,527,527,527,527,527,527,527,527,527,527] -], - "bgmap": [ - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526], - [526,526,526,526,526,526,526,526,526,526,526,526,526,526,526] -], - "fgmap": [ - -], - "bg2map": [ - -], - "fg2map": [ - -], - "beforeBattle": {}, - "color": [ - 0, - 0, - 0, - 0.1 - ], - "weather": [ - "fog", - 2 - ], - "cannotMoveIn": {}, - "cannotMoveDirectly": true -} \ No newline at end of file diff --git a/public/project/functions.js b/public/project/functions.js index 624acac..5c02286 100644 --- a/public/project/functions.js +++ b/public/project/functions.js @@ -77,11 +77,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = { delete flags[v]; }); } - - const { NightSpecial, HeroSkill } = - Mota.require('@user/data-state'); - NightSpecial.clearNight(core.floorIds); - HeroSkill.clearSkill(); }, win: function (reason, norank, noexit) { // 游戏获胜事件 @@ -268,9 +263,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = { values[key] = core.clone(core.values[key]); } - const { NightSpecial, HeroSkill } = - Mota.require('@user/data-state'); - // 要存档的内容 var data = { floorId: core.status.floorId, @@ -281,10 +273,7 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = { values: values, version: core.firstData.version, guid: core.getGuid(), - time: new Date().getTime(), - skills: Mota.require('@user/data-state').saveSkillTree(), - night: [...NightSpecial.saveNight()], - skill: HeroSkill.saveSkill() + time: new Date().getTime() }; return structuredClone(data); @@ -328,52 +317,6 @@ var functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a = { } core.setFlag('__fromLoad__', true); - Mota.require('@user/data-state').loadSkillTree(data.skills); - const { NightSpecial, HeroSkill } = - Mota.require('@user/data-state'); - - if (!data.night) { - // 兼容旧版 - NightSpecial.loadNight([]); - for (const [key, value] of Object.entries(data.hero.flags)) { - if (key.startsWith('night_')) { - const [, floorId] = key.split('_'); - NightSpecial.addNight(floorId, value); - delete data.hero.flags[key]; - } - } - } else { - NightSpecial.loadNight(data.night); - } - - if (!data.skill) { - HeroSkill.loadSkill({ autoSkill: true, learned: [] }); - if (flags.bladeOn) { - HeroSkill.learnSkill(HeroSkill.Blade); - if (flags.blade) { - HeroSkill.enableSkill(HeroSkill.Blade); - } - delete flags.bladeOn; - delete flags.blade; - } - if (flags.shieldOn) { - HeroSkill.learnSkill(HeroSkill.Shield); - if (flags.shield) { - HeroSkill.enableSkill(HeroSkill.Shield); - } - delete flags.shieldOn; - delete flags.shield; - } - if (flags.skill2) { - HeroSkill.learnSkill(HeroSkill.Jump); - delete flags.skill2; - } - HeroSkill.setAutoSkill(!!flags.autoSkill); - delete flags.autoSkill; - } else { - HeroSkill.loadSkill(data.skill); - } - // 切换到对应的楼层 core.changeFloor(data.floorId, null, data.hero.loc, 0, function () { if (core.hasFlag('__bgm__')) { diff --git a/public/project/icons.js b/public/project/icons.js index 7c8ce9c..c0d6eae 100644 --- a/public/project/icons.js +++ b/public/project/icons.js @@ -30,119 +30,45 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = }, "terrains": { "ground": 0, - "sWallT": 1, - "sWallL": 2, - "sWallR": 3, - "sWallB": 4, - "grass": 5, - "sWallTL": 6, - "sWallBR": 7, - "grass2": 8, - "sWallTR": 9, - "sWallBL": 10, - "ground2": 11, - "sWallTB": 12, - "ground3": 13, - "sWallLR": 14, - "blueShopLeft": 15, - "sWallBLR": 16, - "pinkShopLeft": 17, - "sWallTLR": 18, - "ice": 19, - "downFloor": 20, - "upFloor": 21, - "sWallTBR": 22, - "blueShopRight": 23, - "sWallTBL": 24, - "pinkShopRight": 25, - "arrowUp": 26, - "arrowDown": 27, - "arrowLeft": 28, - "arrowRight": 29, - "light": 30, - "darkLight": 31, - "ski": 32, - "flower": 33, - "box": 34, - "boxed": 35, - "T331": 36, - "T332": 36, - "T333": 37, - "T334": 36, - "T335": 37, - "T336": 38, - "T337": 36, - "T338": 37, - "T339": 38, - "T340": 39, - "T341": 36, - "T342": 37, - "T343": 38, - "T344": 39, - "T345": 40, - "T346": 36, - "T347": 37, - "T348": 38, - "T349": 39, - "T350": 40, - "T351": 41, - "T352": 36, - "T353": 37, - "T354": 38, - "T355": 39, - "T356": 40, - "T357": 41, - "T358": 42, - "T359": 36, - "T360": 37, - "T361": 38, - "T362": 39, - "T363": 40, - "T364": 41, - "T365": 42, - "T366": 43, - "T516": 44, - "T526": 45, - "T527": 46, - "T528": 47, - "T529": 48, - "T530": 49, - "T531": 50, - "T551": 51, - "T552": 52, - "T553": 53, - "T554": 54, - "T555": 55, - "T580": 56, - "T581": 57, - "T582": 58, - "T583": 59, - "T584": 60, - "T585": 61, - "T586": 62, - "T587": 63, - "T588": 64, - "T604": 65, - "T627": 66, - "T628": 67, - "T629": 68, - "T640": 69, - "T648": 70, - "T649": 71, - "T650": 72, - "T651": 73, - "T652": 74, - "T653": 75, - "T654": 76, - "T655": 77, - "T660": 78, - "T661": 79, - "T706": 80 + "grass": 1, + "grass2": 2, + "ground2": 3, + "ground3": 4, + "downFloor": 5, + "upFloor": 6, + "blueShopLeft": 7, + "pinkShopLeft": 8, + "blueShopRight": 9, + "pinkShopRight": 10, + "arrowUp": 11, + "arrowDown": 12, + "arrowLeft": 13, + "arrowRight": 14, + "light": 15, + "darkLight": 16, + "ski": 17, + "flower": 18, + "box": 19, + "boxed": 20, + "sWallT": 21, + "sWallL": 22, + "sWallR": 23, + "sWallB": 24, + "sWallTL": 25, + "sWallBR": 26, + "sWallTR": 27, + "sWallBL": 28, + "sWallTB": 29, + "sWallLR": 30, + "sWallBLR": 31, + "sWallTLR": 32, + "sWallTBR": 33, + "sWallTBL": 34 }, "animates": { "star": 0, "lava": 1, - "blueWater": 2, + "blueLava": 2, "water": 3, "yellowDoor": 4, "blueDoor": 5, @@ -167,26 +93,8 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "leftPortal": 24, "rightPortal": 25, "upPortal": 26, - "steelDoor2": 27, - "steelDoor3": 28, - "iceDoor": 29, - "iceDoor2": 30, - "magentaWall": 31, - "A492": 32, - "A493": 32, - "A494": 33, - "A495": 32, - "A496": 33, - "A497": 34, - "A506": 35, - "A507": 36, - "A508": 37, - "A509": 38, - "A510": 39, - "A540": 40, - "A541": 41, - "A542": 42, - "A543": 43 + "ice": 27, + "magentaWall": 28 }, "npcs": { "man": 0, @@ -201,55 +109,20 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "expShop": 9, "moneyShop": 10, "princess": 11, - "greenMan": 28, - "blueTrader": 29, - "redMSNpc": 30, - "blackTrader": 31, - "octopusLeftTop": 12, - "octopusTop": 13, - "octopusRightTop": 14, - "octopusLeft": 15, - "octopusCenter": 16, - "octopusRight": 17, - "octopusLeftBottom": 18, - "octopusRightBottom": 19, - "dragonLeftTop": 20, - "dragonTop": 21, - "dragonRightTop": 22, - "dragonLeft": 23, - "dragonCenter": 24, - "dragonRight": 25, - "dragonLeftBottom": 26, - "dragonRightBottom": 27, - "N532": 32, - "N533": 33, - "N534": 34, - "N535": 35, - "N619": 36, - "N620": 37, - "N621": 38, - "N622": 39, - "N623": 40, - "N624": 41, - "N625": 42, - "N626": 43 + "greenMan": 12, + "blueTrader": 13 }, "npc48": { "npc0": 0, "npc1": 1, "npc2": 2, "npc3": 3, - "N367": 4, - "N630": 5, - "N631": 6, - "N632": 7, - "N633": 8, - "N634": 9, - "N635": 10, - "N636": 11, - "N637": 12, - "N638": 13, - "N639": 14 + "tallYellowDoor": 4, + "tallBlueDoor": 5, + "tallRedDoor": 6, + "tallGreenDoor": 7, + "tallSpecialDoor": 8, + "tallSteelDoor": 9 }, "enemys": { "greenSlime": 0, @@ -289,7 +162,6 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "octopus": 57, "princessEnemy": 59, "skeletonWarrior": 9, - "frozenSkeleton": 69, "silverSlimelord": 60, "goldSlimelord": 61, "whiteSlimeman": 54, @@ -309,18 +181,13 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "evilPrincess": 50, "blademaster": 48, "evilFairy": 51, - "blueRock": 63, - "skeletonLite": 64, - "greenKnight": 65, - "bowman": 66, - "liteBowman": 67, - "crimsonZombie": 68, - "watcherSlime": 70, - "mutantSlimeman": 71, - "frostBat": 72, - "devilKnight": 73, - "grayPriest": 74, - "greenGateKeeper": 75, + "greenKnight": 63, + "bowman": 64, + "watcherSlime": 66, + "frostBat": 67, + "devilKnight": 68, + "grayPriest": 69, + "greenGateKeeper": 70, "ghostSoldier": 11, "evilHero": 40, "blackKing": 28, @@ -328,148 +195,19 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "greenKing": 30, "redKing": 44, "blueKing": 45, - "E368": 76, - "E369": 77, - "E370": 78, - "E371": 79, - "E372": 80, - "E373": 81, - "E374": 82, - "E375": 83, - "E498": 84, - "E499": 85, - "E500": 86, - "E501": 87, - "E502": 88, - "E503": 89, - "E504": 90, - "E505": 91, - "E511": 92, - "E512": 93, - "E513": 94, - "E514": 95, - "E515": 96, - "E517": 97, - "E518": 98, - "E519": 99, - "E520": 100, - "E521": 101, - "E522": 102, - "E523": 103, - "E524": 104, - "E525": 105, - "E536": 106, - "E537": 107, - "E538": 108, - "E539": 109, - "E544": 110, - "E545": 111, - "E546": 112, - "E547": 113, - "E548": 114, - "E549": 115, - "E550": 116, - "E556": 117, - "E557": 118, - "E561": 119, - "E562": 120, - "E563": 121, - "E564": 122, - "E566": 123, - "E567": 124, - "E568": 125, - "E569": 126, - "E570": 127, - "E571": 128, - "E572": 129, - "E573": 130, - "E576": 131, - "E577": 132, - "E578": 133, - "E579": 134, - "E590": 135, - "E591": 136, - "E592": 137, - "E593": 138, - "E594": 139, - "E595": 140, - "E596": 141, - "E597": 142, - "E598": 143, - "E599": 144, - "E600": 145, - "E601": 146, - "E602": 147, - "E603": 148, - "E605": 149, - "E606": 150, - "E607": 151, - "E608": 152, - "E609": 153, - "E610": 154, - "E611": 155, - "E612": 156, - "E613": 157, - "E614": 158, - "E615": 159, - "E616": 160, - "E617": 161, - "E618": 162, - "E643": 163, - "E644": 164, - "E645": 165, - "E646": 166, - "E647": 167, - "E656": 168, - "E657": 169, - "E658": 170, - "E659": 171, - "E666": 172, - "E667": 173, - "E668": 174, - "E669": 175, - "E670": 176, - "E671": 177, - "E672": 178, - "E673": 179, - "E674": 180, - "E675": 181, - "E676": 182, - "E677": 183, - "E678": 184, - "E679": 185, - "E680": 186, - "E681": 187, - "E682": 188, - "E683": 189, - "E684": 190, - "E685": 191, - "E686": 192, - "E687": 193, - "E688": 194, - "E689": 195, - "E690": 196, - "E691": 197, - "E692": 198, - "E693": 199, - "E698": 200, - "E699": 201, - "E700": 202, - "E701": 203, - "E702": 204, - "E703": 205, - "E704": 206, - "E705": 207, - "E707": 208, - "E708": 209, - "E709": 210, - "E710": 211 + "keiskeiFairy": 71, + "tulipFairy": 72, + "purpleBowman": 65 }, "enemy48": { "angel": 0, "elemental": 1, "steelGuard": 2, - "evilBat": 3 + "evilBat": 3, + "bearDown": 4, + "bearLeft": 5, + "bearRight": 6, + "bearUp": 7 }, "items": { "yellowKey": 0, @@ -517,170 +255,17 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "curseWine": 27, "superWine": 28, "dagger": 42, - "silverCoin": 46, "amulet": 47, "hammer": 48, "jumpShoes": 49, "skill1": 30, "wand": 10, - "I319": 5, - "I320": 7, - "I321": 26, - "I322": 31, - "I323": 32, - "I324": 34, - "I325": 35, - "I326": 36, - "I327": 37, - "I328": 38, - "I329": 39, - "I330": 62, - "I376": 63, - "I377": 63, - "I378": 64, - "I379": 63, - "I380": 64, - "I381": 65, - "I382": 63, - "I383": 64, - "I384": 65, - "I385": 66, - "I386": 63, - "I387": 64, - "I388": 65, - "I389": 66, - "I390": 67, - "I391": 63, - "I392": 64, - "I393": 65, - "I394": 66, - "I395": 67, - "I396": 68, - "I397": 63, - "I398": 64, - "I399": 65, - "I400": 66, - "I401": 67, - "I402": 68, - "I403": 69, - "I404": 63, - "I405": 64, - "I406": 65, - "I407": 66, - "I408": 67, - "I409": 68, - "I410": 69, - "I411": 70, - "I412": 63, - "I413": 64, - "I414": 65, - "I415": 66, - "I416": 67, - "I417": 68, - "I418": 69, - "I419": 70, - "I420": 71, - "I421": 63, - "I422": 64, - "I423": 65, - "I424": 66, - "I425": 67, - "I426": 68, - "I427": 69, - "I428": 70, - "I429": 71, - "I430": 72, - "I431": 63, - "I432": 64, - "I433": 65, - "I434": 66, - "I435": 67, - "I436": 68, - "I437": 69, - "I438": 70, - "I439": 71, - "I440": 72, - "I441": 73, - "I442": 63, - "I443": 64, - "I444": 65, - "I445": 66, - "I446": 67, - "I447": 68, - "I448": 69, - "I449": 70, - "I450": 71, - "I451": 72, - "I452": 73, - "I453": 74, - "I454": 63, - "I455": 64, - "I456": 65, - "I457": 66, - "I458": 67, - "I459": 68, - "I460": 69, - "I461": 70, - "I462": 71, - "I463": 72, - "I464": 73, - "I465": 74, - "I466": 75, - "I467": 76, - "I468": 77, - "I469": 78, - "I470": 79, - "I471": 80, - "I472": 81, - "I473": 82, - "I474": 83, - "I475": 84, - "I476": 85, - "I477": 86, - "I478": 87, - "I479": 88, - "I480": 89, - "I481": 90, - "I482": 91, - "I483": 91, - "I484": 92, - "I485": 91, - "I486": 92, - "I487": 93, - "I488": 91, - "I489": 92, - "I490": 93, - "I491": 94, - "I558": 95, - "I559": 96, - "I560": 97, - "I565": 98, - "I574": 99, - "I575": 100, - "I589": 101, - "I641": 102, - "I642": 103, - "I662": 104, - "I663": 105, - "I664": 106, - "I665": 107, - "I694": 108, - "I695": 109, - "I696": 110, - "I697": 111 + "pack": 46 }, "autotile": { "autotile": 0, "autotile1": 0, "autotile2": 0, - "autotile3": 0, - "autotile4": 0, - "autotile5": 0, - "autotile6": 0, - "autotile7": 0, - "autotile8": 0, - "autotile9": 0, - "autotile10": 0, - "autotile11": 0 + "autotile3": 0 } } \ No newline at end of file diff --git a/public/project/images/IQ.png b/public/project/images/IQ.png deleted file mode 100644 index 2302c8f..0000000 Binary files a/public/project/images/IQ.png and /dev/null differ diff --git a/public/project/images/arrow.png b/public/project/images/arrow.png deleted file mode 100644 index f61e08e..0000000 Binary files a/public/project/images/arrow.png and /dev/null differ diff --git a/public/project/images/atk.png b/public/project/images/atk.png deleted file mode 100644 index 311abb5..0000000 Binary files a/public/project/images/atk.png and /dev/null differ diff --git a/public/project/images/bg.jpg b/public/project/images/bg.jpg index edc1fdb..3fbf4d1 100644 Binary files a/public/project/images/bg.jpg and b/public/project/images/bg.jpg differ diff --git a/public/project/images/bg.webp b/public/project/images/bg.webp deleted file mode 100644 index bf4b590..0000000 Binary files a/public/project/images/bg.webp and /dev/null differ diff --git a/public/project/images/boom.png b/public/project/images/boom.png deleted file mode 100644 index d892d6b..0000000 Binary files a/public/project/images/boom.png and /dev/null differ diff --git a/public/project/images/botton.png b/public/project/images/botton.png deleted file mode 100644 index 290c82b..0000000 Binary files a/public/project/images/botton.png and /dev/null differ diff --git a/public/project/images/brave.png b/public/project/images/brave.png index c5e901d..9855ef6 100644 Binary files a/public/project/images/brave.png and b/public/project/images/brave.png differ diff --git a/public/project/images/cloud.png b/public/project/images/cloud.png deleted file mode 100644 index 9e293de..0000000 Binary files a/public/project/images/cloud.png and /dev/null differ diff --git a/public/project/images/def.png b/public/project/images/def.png deleted file mode 100644 index a50e410..0000000 Binary files a/public/project/images/def.png and /dev/null differ diff --git a/public/project/images/exp.png b/public/project/images/exp.png deleted file mode 100644 index 77f1b0a..0000000 Binary files a/public/project/images/exp.png and /dev/null differ diff --git a/public/project/images/fog.png b/public/project/images/fog.png deleted file mode 100644 index 92d3484..0000000 Binary files a/public/project/images/fog.png and /dev/null differ diff --git a/public/project/images/hero1.png b/public/project/images/hero1.png deleted file mode 100644 index 868145d..0000000 Binary files a/public/project/images/hero1.png and /dev/null differ diff --git a/public/project/images/hero2.png b/public/project/images/hero2.png deleted file mode 100644 index 890cc03..0000000 Binary files a/public/project/images/hero2.png and /dev/null differ diff --git a/public/project/images/hp.png b/public/project/images/hp.png deleted file mode 100644 index e03284d..0000000 Binary files a/public/project/images/hp.png and /dev/null differ diff --git a/public/project/images/money.png b/public/project/images/money.png deleted file mode 100644 index b2c1155..0000000 Binary files a/public/project/images/money.png and /dev/null differ diff --git a/public/project/images/skill.png b/public/project/images/skill.png deleted file mode 100644 index d7afaea..0000000 Binary files a/public/project/images/skill.png and /dev/null differ diff --git a/public/project/images/skill0.png b/public/project/images/skill0.png deleted file mode 100644 index e36702b..0000000 Binary files a/public/project/images/skill0.png and /dev/null differ diff --git a/public/project/images/skill1.png b/public/project/images/skill1.png deleted file mode 100644 index 45dde90..0000000 Binary files a/public/project/images/skill1.png and /dev/null differ diff --git a/public/project/images/skill10.png b/public/project/images/skill10.png deleted file mode 100644 index 711c0df..0000000 Binary files a/public/project/images/skill10.png and /dev/null differ diff --git a/public/project/images/skill11.png b/public/project/images/skill11.png deleted file mode 100644 index 43549d1..0000000 Binary files a/public/project/images/skill11.png and /dev/null differ diff --git a/public/project/images/skill12.png b/public/project/images/skill12.png deleted file mode 100644 index 657eea6..0000000 Binary files a/public/project/images/skill12.png and /dev/null differ diff --git a/public/project/images/skill13.png b/public/project/images/skill13.png deleted file mode 100644 index 7e22e5a..0000000 Binary files a/public/project/images/skill13.png and /dev/null differ diff --git a/public/project/images/skill14.png b/public/project/images/skill14.png deleted file mode 100644 index faf8849..0000000 Binary files a/public/project/images/skill14.png and /dev/null differ diff --git a/public/project/images/skill2.png b/public/project/images/skill2.png deleted file mode 100644 index c95423a..0000000 Binary files a/public/project/images/skill2.png and /dev/null differ diff --git a/public/project/images/skill3.png b/public/project/images/skill3.png deleted file mode 100644 index f67a754..0000000 Binary files a/public/project/images/skill3.png and /dev/null differ diff --git a/public/project/images/skill4.png b/public/project/images/skill4.png deleted file mode 100644 index ec25679..0000000 Binary files a/public/project/images/skill4.png and /dev/null differ diff --git a/public/project/images/skill5.png b/public/project/images/skill5.png deleted file mode 100644 index cc2eb74..0000000 Binary files a/public/project/images/skill5.png and /dev/null differ diff --git a/public/project/images/skill6.png b/public/project/images/skill6.png deleted file mode 100644 index f24f6e7..0000000 Binary files a/public/project/images/skill6.png and /dev/null differ diff --git a/public/project/images/skill7.png b/public/project/images/skill7.png deleted file mode 100644 index a2cdcf5..0000000 Binary files a/public/project/images/skill7.png and /dev/null differ diff --git a/public/project/images/skill8.png b/public/project/images/skill8.png deleted file mode 100644 index 2cb650f..0000000 Binary files a/public/project/images/skill8.png and /dev/null differ diff --git a/public/project/images/skill9.png b/public/project/images/skill9.png deleted file mode 100644 index b34d4d8..0000000 Binary files a/public/project/images/skill9.png and /dev/null differ diff --git a/public/project/images/sun.png b/public/project/images/sun.png deleted file mode 100644 index 6c3c585..0000000 Binary files a/public/project/images/sun.png and /dev/null differ diff --git a/public/project/images/tower7.jpg b/public/project/images/tower7.jpg deleted file mode 100644 index be26022..0000000 Binary files a/public/project/images/tower7.jpg and /dev/null differ diff --git a/public/project/images/tower7.webp b/public/project/images/tower7.webp deleted file mode 100644 index 4ae48d1..0000000 Binary files a/public/project/images/tower7.webp and /dev/null differ diff --git a/public/project/images/winskin2.png b/public/project/images/winskin2.png deleted file mode 100644 index 90a5ba7..0000000 Binary files a/public/project/images/winskin2.png and /dev/null differ diff --git a/public/project/images/winskin3.png b/public/project/images/winskin3.png deleted file mode 100644 index 1b1ec0f..0000000 Binary files a/public/project/images/winskin3.png and /dev/null differ diff --git a/public/project/items.js b/public/project/items.js index c3fb032..d7ba487 100644 --- a/public/project/items.js +++ b/public/project/items.js @@ -20,28 +20,28 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = }, "redGem": { "cls": "items", - "name": "小红宝石", + "name": "红宝石", "text": "攻击+${core.values.redGem}", - "itemEffect": "core.status.hero.atk += 1 * core.status.thisMap.ratio", - "itemEffectTip": ",攻击+${1 * core.status.thisMap.ratio}", + "itemEffect": "core.status.hero.atk += core.values.redGem * core.status.thisMap.ratio", + "itemEffectTip": ",攻击+${core.values.redGem * core.status.thisMap.ratio}", "useItemEffect": "core.status.hero.atk += core.values.redGem", "canUseItemEffect": "true" }, "blueGem": { "cls": "items", - "name": "小蓝宝石", + "name": "蓝宝石", "text": ",防御+${core.values.blueGem}", - "itemEffect": "core.status.hero.def += 1 * core.status.thisMap.ratio", - "itemEffectTip": ",防御+${1 * core.status.thisMap.ratio}", + "itemEffect": "core.status.hero.def += core.values.blueGem * core.status.thisMap.ratio", + "itemEffectTip": ",防御+${core.values.blueGem * core.status.thisMap.ratio}", "useItemEffect": "core.status.hero.def += core.values.blueGem", "canUseItemEffect": "true" }, "greenGem": { "cls": "items", - "name": "小绿宝石", + "name": "绿宝石", "text": ",护盾+${core.values.greenGem}", - "itemEffect": "core.status.hero.mdef += Math.round(20 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))", - "itemEffectTip": ",智慧+${Math.round(20 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))}", + "itemEffect": "core.status.hero.mdef += core.values.greenGem * core.status.thisMap.ratio", + "itemEffectTip": ",护盾+${core.values.greenGem * core.status.thisMap.ratio}", "useItemEffect": "core.status.hero.mdef += core.values.greenGem", "canUseItemEffect": "true" }, @@ -97,8 +97,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "items", "name": "红血瓶", "text": ",生命+${core.values.redPotion}", - "itemEffect": "core.status.hero.hp += Math.round(100 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(100 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}", + "itemEffect": "core.status.hero.hp += core.values.redPotion * core.status.thisMap.ratio", + "itemEffectTip": ",生命+${core.values.redPotion * core.status.thisMap.ratio}", "useItemEffect": "core.status.hero.hp += core.values.redPotion", "canUseItemEffect": "true" }, @@ -106,8 +106,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "items", "name": "蓝血瓶", "text": ",生命+${core.values.bluePotion}", - "itemEffect": "core.status.hero.hp += Math.round(200 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(200 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}", + "itemEffect": "core.status.hero.hp += core.values.bluePotion * core.status.thisMap.ratio", + "itemEffectTip": ",生命+${core.values.bluePotion * core.status.thisMap.ratio}", "useItemEffect": "core.status.hero.hp += core.values.bluePotion", "canUseItemEffect": "true" }, @@ -115,8 +115,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "items", "name": "黄血瓶", "text": ",生命+${core.values.yellowPotion}", - "itemEffect": "core.status.hero.hp += Math.round(400 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(400 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}", + "itemEffect": "core.status.hero.hp += core.values.yellowPotion * core.status.thisMap.ratio", + "itemEffectTip": ",生命+${core.values.yellowPotion * core.status.thisMap.ratio}", "useItemEffect": "core.status.hero.hp += core.values.yellowPotion", "canUseItemEffect": "true" }, @@ -124,8 +124,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "items", "name": "绿血瓶", "text": ",生命+${core.values.greenPotion}", - "itemEffect": "core.status.hero.hp += Math.round(800 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(800 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}", + "itemEffect": "core.status.hero.hp += core.values.greenPotion * core.status.thisMap.ratio", + "itemEffectTip": ",生命+${core.values.greenPotion * core.status.thisMap.ratio}", "useItemEffect": "core.status.hero.hp += core.values.greenPotion", "canUseItemEffect": "true" }, @@ -144,33 +144,29 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "itemEffectTip": ",攻击+0" }, "sword1": { - "cls": "equips", - "name": "智慧之剑", - "text": "借助曾经闯入此塔的智慧挑战者的智慧锻造而成,攻击+15,额外攻击+10", + "cls": "items", + "name": "铁剑", + "text": "一把很普通的铁剑", "equip": { - "type": "武器", - "animate": "jianji", + "type": 0, + "animate": "sword", "value": { - "atk": 15, - "mana": 10 - }, - "percentage": {} + "atk": 10 + } }, - "itemEffect": "", + "itemEffect": "core.status.hero.atk += 10", "itemEffectTip": ",攻击+10" }, "sword2": { - "cls": "equips", - "name": "铁剑", - "text": "真的是一把很普通的银剑,哦不,铁剑。攻击+180,额外攻击+50", + "cls": "items", + "name": "银剑", + "text": "一把很普通的银剑", "equip": { "type": 0, - "animate": "jianji", + "animate": "sword", "value": { - "mana": 50, - "atk": 180 - }, - "percentage": {} + "atk": 20 + } }, "itemEffect": "core.status.hero.atk += 20", "itemEffectTip": ",攻击+20" @@ -231,31 +227,27 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "itemEffectTip": ",防御+0" }, "shield1": { - "cls": "equips", - "name": "智慧之盾", - "text": "借助曾经闯入此塔的智慧挑战者的智慧锻造而成,防御+15,生命回复+15", - "equip": { - "type": "盾牌", - "value": { - "hpmax": 15, - "def": 15 - }, - "percentage": {} - }, - "itemEffect": "", - "itemEffectTip": ",防御+10" - }, - "shield2": { - "cls": "equips", + "cls": "items", "name": "铁盾", - "text": "一个真的很普通的铁盾,这次没错了,就是铁盾!防御+120,生命回复+30", + "text": "一个很普通的铁盾", "equip": { "type": 1, "value": { - "hpmax": 30, - "def": 120 - }, - "percentage": {} + "def": 10 + } + }, + "itemEffect": "core.status.hero.def += 10", + "itemEffectTip": ",防御+10" + }, + "shield2": { + "cls": "items", + "name": "银盾", + "text": "一个很普通的银盾", + "equip": { + "type": 1, + "value": { + "def": 20 + } }, "itemEffect": "core.status.hero.def += 20", "itemEffectTip": ",防御+20" @@ -305,16 +297,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "name": "圣水", "itemEffect": "core.status.hero.hp *= 2", "itemEffectTip": ",生命值翻倍", - "useItemEffect": "core.status.hero.hp *= 2;", + "useItemEffect": "core.status.hero.hp *= 2;core.playSound('回血');", "canUseItemEffect": "true", "text": "生命值翻倍" }, - "silverCoin": { - "cls": "items", - "name": "银币", - "itemEffect": "core.status.hero.money += 500", - "itemEffectTip": ",金币+500" - }, "book": { "cls": "constants", "name": "怪物手册", @@ -329,8 +315,8 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "text": "可以自由往来去过的楼层", "hideInReplay": true, "hideInToolbox": true, - "useItemEffect": "core.ui.drawFly();", - "canUseItemEffect": "(function () {\n\treturn core.status.maps[core.status.floorId].canFlyFrom;\n})();" + "useItemEffect": "core.ui.drawFly(core.floorIds.indexOf(core.status.floorId));", + "canUseItemEffect": "(function () {\n\tif (core.flags.flyNearStair && !core.nearStair()) return false;\n\treturn core.status.maps[core.status.floorId].canFlyFrom;\n})();" }, "coin": { "cls": "constants", @@ -341,15 +327,13 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "constants", "name": "冰冻徽章", "text": "可以将面前的熔岩变成平地", - "useItemEffect": "(function () {\n\tvar success = false;\n\n\tvar snowFourDirections = false; // 是否四方向雪花;如果是将其改成true\n\tif (snowFourDirections) {\n\t\t// 四方向雪花\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (core.getBlockId(nx, ny) == 'lava') {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (core.getBlockId(core.nextX(), core.nextY()) == 'lava') {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();", + "useItemEffect": "(function () {\n\tvar success = false;\n\n\tvar snowFourDirections = false; // 是否多方向雪花;如果是将其改成true\n\tif (snowFourDirections) {\n\t\t// 多方向雪花\n\t\tfor (var direction in core.utils.scan) { // 多方向雪花默认四方向,如需改为八方向请将这两个scan改为scan2\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (core.getBlockId(nx, ny) == 'lava') {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (core.getBlockId(core.nextX(), core.nextY()) == 'lava') {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.playSound('打开界面');\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功', itemId);\n\t} else {\n\t\tcore.playSound('操作失败');\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name, itemId);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();", "canUseItemEffect": "true" }, "cross": { "cls": "constants", - "name": "查看技能", - "text": "查看勇士的技能", - "canUseItemEffect": true, - "useItemEffect": "Mota.require('@motajs/legacy-ui').mainUi.open('skill');" + "name": "十字架", + "text": "持有后无视怪物的无敌属性" }, "dagger": { "cls": "constants", @@ -384,35 +368,29 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "tools", "name": "破墙镐", "text": "可以破坏勇士面前的墙", - "useItemEffect": "(function () {\n\tvar canBreak = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.disable) return false;\n\t\treturn block.event.canBreak;\n\t};\n\n\tvar success = false;\n\tvar pickaxeFourDirections = false; // 是否四方向破;如果是将其改成true\n\tif (pickaxeFourDirections) {\n\t\t// 四方向破\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (canBreak(nx, ny)) {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅破当前\n\t\tif (canBreak(core.nextX(), core.nextY())) {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.playSound('pickaxe.opus');\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\t// 无法使用\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();", + "useItemEffect": "(function () {\n\tvar canBreak = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.disable) return false;\n\t\treturn block.event.canBreak;\n\t};\n\n\tvar success = false;\n\tvar pickaxeFourDirections = false; // 是否多方向破;如果是将其改成true\n\tif (pickaxeFourDirections) {\n\t\t// 多方向破\n\t\tfor (var direction in core.utils.scan) { // 多方向破默认四方向,如需改成八方向请将这两个scan改为scan2\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (canBreak(nx, ny)) {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅破当前\n\t\tif (canBreak(core.nextX(), core.nextY())) {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.playSound('破墙镐');\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功', itemId);\n\t} else {\n\t\t// 无法使用\n\t\tcore.playSound('操作失败');\n\t\tcore.drawTip(\"当前无法使用\" + core.material.items[itemId].name, itemId);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();", "canUseItemEffect": "true" }, "icePickaxe": { "cls": "tools", "name": "破冰镐", "text": "可以破坏勇士面前的一堵冰墙", - "useItemEffect": "(function () {\n\tcore.removeBlock(core.nextX(), core.nextY());\n\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n})();", + "useItemEffect": "(function () {\n\tcore.drawTip(core.material.items[itemId].name + '使用成功', itemId);\n\tcore.insertAction({ \"type\": \"openDoor\", \"loc\": [\"core.nextX()\", \"core.nextY()\"] });\n})();", "canUseItemEffect": "(function () {\n\treturn core.getBlockId(core.nextX(), core.nextY()) == 'ice';\n})();" }, "bomb": { "cls": "tools", "name": "炸弹", "text": "可以炸掉勇士面前的怪物", - "useItemEffect": "(function () {\n\tvar canBomb = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.disable || block.event.cls.indexOf('enemy') != 0) return false;\n\t\tvar enemy = core.material.enemys[block.event.id];\n\t\treturn enemy && !enemy.notBomb;\n\t};\n\n\tvar bombList = []; // 炸掉的怪物坐标列表\n\tvar bombFourDirections = false; // 是否四方向可炸;如果是将其改成true。\n\tif (bombFourDirections) {\n\t\t// 四方向炸\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc('x') + delta.x,\n\t\t\t\tny = core.getHeroLoc('y') + delta.y;\n\t\t\tif (canBomb(nx, ny)) {\n\t\t\t\tbombList.push([nx, ny]);\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅炸当前\n\t\tif (canBomb(core.nextX(), core.nextY())) {\n\t\t\tbombList.push([core.nextX(), core.nextY()]);\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t}\n\t}\n\n\tif (bombList.length > 0) {\n\t\tcore.playSound('bomb.opus');\n\t\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n\t} else {\n\t\tcore.drawTip('当前无法使用' + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n\n\t// 炸弹后事件\n\t// 这是一个使用炸弹也能开门的例子\n\t/*\n\tif (core.status.floorId=='xxx' && core.terrainExists(x0,y0,'specialDoor') // 某个楼层,该机关门存在\n\t\t&& !core.enemyExists(x1,y1) && !core.enemyExists(x2,y2)) // 且守门的怪物都不存在\n\t{\n\t\tcore.insertAction([ // 插入事件\n\t\t\t{\"type\": \"openDoor\", \"loc\": [x0,y0]} // 开门\n\t\t])\n\t}\n\t*/\n})();", + "useItemEffect": "(function () {\n\tvar bombList = []; // 炸掉的怪物坐标列表\n\tvar todo = []; // 炸弹后事件\n\tvar money = 0,\n\t\texp = 0; // 炸弹获得的金币和经验\n\n\tvar canBomb = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.disable || block.event.cls.indexOf('enemy') != 0) return false;\n\t\tvar enemy = core.material.enemys[block.event.id];\n\t\treturn enemy && !enemy.notBomb;\n\t};\n\n\tvar bomb = function (x, y) {\n\t\tif (!canBomb(x, y)) return;\n\t\tbombList.push([x, y]);\n\t\tvar id = core.getBlockId(x, y),\n\t\t\tenemy = core.material.enemys[id];\n\t\tmoney += core.getEnemyValue(enemy, 'money', x, y) || 0;\n\t\texp += core.getEnemyValue(enemy, 'exp', x, y) || 0;\n\t\tcore.push(todo, core.floors[core.status.floorId].afterBattle[x + \",\" + y]);\n\t\tcore.push(todo, enemy.afterBattle);\n\t\tcore.removeBlock(x, y);\n\t}\n\n\t// 如果要多方向可炸,把这里的false改成true\n\tif (false) {\n\t\tvar scan = core.utils.scan; // 多方向炸时默认四方向,如果要改成八方向炸可以改成 core.utils.scan2\n\t\tfor (var direction in scan) {\n\t\t\tvar delta = scan[direction];\n\t\t\tbomb(core.getHeroLoc('x') + delta.x, core.getHeroLoc('y') + delta.y);\n\t\t}\n\t} else {\n\t\t// 仅炸当前\n\t\tbomb(core.nextX(), core.nextY());\n\t}\n\n\tif (bombList.length == 0) {\n\t\tcore.playSound('操作失败');\n\t\tcore.drawTip('当前无法使用' + core.material.items[itemId].name, itemId);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n\n\tcore.playSound('炸弹');\n\tcore.drawTip(core.material.items[itemId].name + '使用成功', itemId);\n\n\t// 取消这里的注释可以炸弹后获得金币和经验\n\t// core.status.hero.money += money;\n\t// core.status.hero.exp += exp;\n\n\t// 取消这里的注释可以炸弹引发战后事件\n\t// if (todo.length > 0) core.insertAction(todo);\n\n})();", "canUseItemEffect": "true" }, "centerFly": { - "cls": "constants", - "name": "快捷键查看器", - "text": "可以查看本塔里面的所有快捷键", - "useItemEffect": "", - "canUseItemEffect": "true", - "useItemEvent": [ - "8:打开定点查看界面,如果开启了定点查看代替怪物手册,也可以按X打开定点查看界面\nJ:打开技能树界面\n1:开关断灭之刃技能\n2:使用跳跃技能/破墙镐", - "平面楼传界面:\n上下左右:移动地图\n,:前移10层\n.:后移10层\nPgUp:上楼\nPgDn:下楼\nB:显隐地图名\nZ:开关3D模式", - "浏览地图界面(2.8.1新增):\nG:传送至该地图", - "手机端:点击右下角难度可以切换至数字键盘" - ] + "cls": "tools", + "name": "中心对称飞行器", + "text": "可以飞向当前楼层中心对称的位置", + "useItemEffect": "core.playSound('centerFly.mp3');\ncore.clearMap('hero');\ncore.setHeroLoc('x', core.bigmap.width - 1 - core.getHeroLoc('x'));\ncore.setHeroLoc('y', core.bigmap.height - 1 - core.getHeroLoc('y'));\ncore.drawHero();\ncore.drawTip(core.material.items[itemId].name + '使用成功');", + "canUseItemEffect": "(function () {\n\tvar toX = core.bigmap.width - 1 - core.getHeroLoc('x'),\n\t\ttoY = core.bigmap.height - 1 - core.getHeroLoc('y');\n\tvar id = core.getBlockId(toX, toY);\n\treturn id == null;\n})();" }, "upFly": { "cls": "tools", @@ -432,35 +410,35 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "tools", "name": "地震卷轴", "text": "可以破坏当前层的所有墙", - "useItemEffect": "(function () {\n\tvar indexes = [];\n\tfor (var index in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[index];\n\t\tif (!block.disable && block.event.canBreak) {\n\t\t\tindexes.push(index);\n\t\t}\n\t}\n\tcore.removeBlockByIndexes(indexes);\n\tcore.drawMap();\n\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n})();", + "useItemEffect": "(function () {\n\tvar indexes = [];\n\tfor (var index in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[index];\n\t\tif (!block.disable && block.event.canBreak) {\n\t\t\tindexes.push(index);\n\t\t}\n\t}\n\tcore.removeBlockByIndexes(indexes);\n\tcore.redrawMap();\n\tcore.playSound('炸弹');\n\tcore.drawTip(core.material.items[itemId].name + '使用成功');\n})();", "canUseItemEffect": "(function () {\n\treturn core.status.thisMap.blocks.filter(function (block) {\n\t\treturn !block.disable && block.event.canBreak;\n\t}).length > 0;\n})();" }, "poisonWine": { "cls": "tools", "name": "解毒药水", "text": "可以解除中毒状态", - "useItemEffect": "", + "useItemEffect": "core.triggerDebuff('remove', 'poison');", "canUseItemEffect": "core.hasFlag('poison');" }, "weakWine": { "cls": "tools", "name": "解衰药水", "text": "可以解除衰弱状态", - "useItemEffect": "", + "useItemEffect": "core.triggerDebuff('remove', 'weak');", "canUseItemEffect": "core.hasFlag('weak');" }, "curseWine": { "cls": "tools", "name": "解咒药水", "text": "可以解除诅咒状态", - "useItemEffect": "", + "useItemEffect": "core.triggerDebuff('remove', 'curse');", "canUseItemEffect": "core.hasFlag('curse');" }, "superWine": { "cls": "tools", "name": "万能药水", "text": "可以解除所有不良状态", - "useItemEffect": "", + "useItemEffect": "core.triggerDebuff('remove', ['poison', 'weak', 'curse']);", "canUseItemEffect": "(function() {\n\treturn core.hasFlag('poison') || core.hasFlag('weak') || core.hasFlag('curse');\n})();" }, "hammer": { @@ -481,10 +459,18 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "type": "function", "function": "function(){\ncore.addItem('lifeWand', 1);\n}" }, + { + "type": "playSound", + "name": "打开界面" + }, { "type": "input", "text": "请输入生命魔杖使用次数:(0-${item:lifeWand})" }, + { + "type": "comment", + "text": "【接受用户输入】弹窗输入的结果将会保存在“flag:input”中\n如果需要更多帮助,请查阅帮助文档" + }, { "type": "if", "condition": "flag:input<=item:lifeWand", @@ -501,9 +487,17 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "operator": "+=", "value": "flag:input*100" }, + { + "type": "playSound", + "name": "回血" + }, "成功使用${flag:input}次生命魔杖,恢复${flag:input*100}点生命。" ], "false": [ + { + "type": "playSound", + "name": "操作失败" + }, "输入不合法!" ] } @@ -514,809 +508,25 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "cls": "tools", "name": "跳跃靴", "text": "能跳跃到前方两格处", - "useItemEffect": "core.playSound(\"jump.opus\"); core.insertAction({ \"type\": \"jumpHero\", \"loc\": [core.nextX(2), core.nextY(2)] });", + "useItemEffect": "core.playSound(\"跳跃\");\ncore.insertAction({ \"type\": \"jumpHero\", \"loc\": [core.nextX(2), core.nextY(2)] });", "canUseItemEffect": "(function () {\n\tvar nx = core.nextX(2),\n\t\tny = core.nextY(2);\n\treturn nx >= 0 && nx < core.bigmap.width && ny >= 0 && ny < core.bigmap.height && core.getBlockId(nx, ny) == null;\n})();" }, "skill1": { "cls": "constants", - "name": "技能树", - "text": "打开技能树", + "name": "技能:二倍斩", + "text": "可以打开或关闭主动技能二倍斩", "hideInReplay": true, - "useItemEffect": "Mota.require('@user/data-state').openTree();", + "useItemEffect": "(function () {\n\tvar skillValue = 1; // 技能的flag:skill值,可用于当前开启技能的判定;对于新技能可以依次改成2,3等等\n\tvar skillNeed = 5; // 技能的需求\n\tvar skillName = '二倍斩'; // 技能的名称\n\n\tif (core.getFlag('skill', 0) != skillValue) { // 判断当前是否已经开了技能\n\t\tif (core.getStatus('mana') >= skillNeed) { // 这里要写当前能否开技能的条件判断,比如魔力值至少要多少\n\t\t\tcore.playSound('打开界面');\n\t\t\tcore.setFlag('skill', skillValue); // 开技能1\n\t\t\tcore.setFlag('skillName', skillName); // 设置技能名\n\t\t} else {\n\t\t\tcore.playSound('操作失败');\n\t\t\tcore.drawTip('魔力不足,无法开启技能');\n\t\t}\n\t} else { // 关闭技能\n\t\tcore.setFlag('skill', 0); // 关闭技能状态\n\t\tcore.setFlag('skillName', '无');\n\t}\n})();", "canUseItemEffect": "true" }, "wand": { - "cls": "constants", - "name": "定点查看", - "text": "可以定点查看怪物属性", - "canUseItemEffect": true, - "useItemEffect": "core.openFixed();" - }, - "I319": { - "cls": "items", - "name": "新物品" - }, - "I320": { - "cls": "items", - "name": "新物品" - }, - "I321": { - "cls": "items", - "name": "新物品" - }, - "I322": { - "cls": "constants", - "name": "快捷键查看器", - "text": "可以查看本塔里面的所有快捷键", - "useItemEffect": "", - "canUseItemEffect": "true", - "useItemEvent": [ - "8:打开定点查看界面,如果开启了定点查看代替怪物手册,也可以按X打开定点查看界面\nJ:打开技能树界面\n1:开关断灭之刃技能\n2:使用跳跃技能/破墙镐", - "平面楼传界面:\n上下左右:移动地图\n,:前移10层\n.:后移10层\nPgUp:上楼\nPgDn:下楼\nB:显隐地图名\nZ:开关3D模式", - "浏览地图界面(2.8.1新增):\nG:传送至该地图", - "手机端:点击右下角难度可以切换至数字键盘" - ] - }, - "I323": { - "cls": "items", - "name": "新物品" - }, - "I324": { - "cls": "items", - "name": "新物品" - }, - "I325": { - "cls": "items", - "name": "新物品" - }, - "I326": { - "cls": "items", - "name": "新物品" - }, - "I327": { - "cls": "items", - "name": "新物品" - }, - "I328": { - "cls": "items", - "name": "新物品" - }, - "I329": { - "cls": "items", - "name": "新物品" - }, - "I330": { - "cls": "constants", - "name": "系统设置", - "text": "可以修改一些本塔的设置", - "canUseItemEffect": true, - "useItemEvent": null - }, - "I376": { - "cls": "items", - "name": "中红宝石", - "text": "攻击+${core.values.redGem}", - "itemEffect": "core.status.hero.atk += 2 * core.status.thisMap.ratio", - "itemEffectTip": ",攻击+${2 * core.status.thisMap.ratio}", - "useItemEffect": "core.status.hero.atk += core.values.redGem", - "canUseItemEffect": "true" - }, - "I377": { - "cls": "items", - "name": "新物品" - }, - "I378": { - "cls": "items", - "name": "中蓝宝石", - "text": ",防御+${core.values.blueGem}", - "itemEffect": "core.status.hero.def += 2 * core.status.thisMap.ratio", - "itemEffectTip": ",防御+${2 * core.status.thisMap.ratio}", - "useItemEffect": "core.status.hero.def += core.values.blueGem", - "canUseItemEffect": "true" - }, - "I379": { - "cls": "items", - "name": "新物品" - }, - "I380": { - "cls": "items", - "name": "新物品" - }, - "I381": { - "cls": "items", - "name": "中绿宝石", - "text": ",护盾+${core.values.greenGem}", - "itemEffect": "core.status.hero.mdef += Math.round(40 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))", - "itemEffectTip": ",智慧+${Math.round(40 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))}", - "useItemEffect": "core.status.hero.mdef += core.values.greenGem", - "canUseItemEffect": "true" - }, - "I382": { - "cls": "items", - "name": "新物品" - }, - "I383": { - "cls": "items", - "name": "新物品" - }, - "I384": { - "cls": "items", - "name": "新物品" - }, - "I385": { - "cls": "items", - "name": "新物品" - }, - "I386": { - "cls": "items", - "name": "新物品" - }, - "I387": { - "cls": "items", - "name": "新物品" - }, - "I388": { - "cls": "items", - "name": "新物品" - }, - "I389": { - "cls": "items", - "name": "新物品" - }, - "I390": { - "cls": "items", - "name": "大红宝石", - "text": "攻击+${core.values.redGem}", - "itemEffect": "core.status.hero.atk += 4 * core.status.thisMap.ratio", - "itemEffectTip": ",攻击+${4 * core.status.thisMap.ratio}", - "useItemEffect": "core.status.hero.atk += core.values.redGem", - "canUseItemEffect": "true" - }, - "I391": { - "cls": "items", - "name": "新物品" - }, - "I392": { - "cls": "items", - "name": "新物品" - }, - "I393": { - "cls": "items", - "name": "新物品" - }, - "I394": { - "cls": "items", - "name": "新物品" - }, - "I395": { - "cls": "items", - "name": "新物品" - }, - "I396": { - "cls": "items", - "name": "大蓝宝石", - "text": ",防御+${core.values.blueGem}", - "itemEffect": "core.status.hero.def += 4 * core.status.thisMap.ratio", - "itemEffectTip": ",防御+${4 * core.status.thisMap.ratio}", - "useItemEffect": "core.status.hero.def += core.values.blueGem", - "canUseItemEffect": "true" - }, - "I397": { - "cls": "items", - "name": "新物品" - }, - "I398": { - "cls": "items", - "name": "新物品" - }, - "I399": { - "cls": "items", - "name": "新物品" - }, - "I400": { - "cls": "items", - "name": "新物品" - }, - "I401": { - "cls": "items", - "name": "新物品" - }, - "I402": { - "cls": "items", - "name": "新物品" - }, - "I403": { - "cls": "items", - "name": "大绿宝石", - "text": ",护盾+${core.values.greenGem}", - "itemEffect": "core.status.hero.mdef += Math.round(80 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))", - "itemEffectTip": ",智慧+${Math.round(80 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))}", - "useItemEffect": "core.status.hero.mdef += core.values.greenGem", - "canUseItemEffect": "true" - }, - "I404": { - "cls": "items", - "name": "新物品" - }, - "I405": { - "cls": "items", - "name": "新物品" - }, - "I406": { - "cls": "items", - "name": "新物品" - }, - "I407": { - "cls": "items", - "name": "新物品" - }, - "I408": { - "cls": "items", - "name": "新物品" - }, - "I409": { - "cls": "items", - "name": "新物品" - }, - "I410": { - "cls": "items", - "name": "新物品" - }, - "I411": { - "cls": "items", - "name": "新物品" - }, - "I412": { - "cls": "items", - "name": "新物品" - }, - "I413": { - "cls": "items", - "name": "新物品" - }, - "I414": { - "cls": "items", - "name": "新物品" - }, - "I415": { - "cls": "items", - "name": "新物品" - }, - "I416": { - "cls": "items", - "name": "新物品" - }, - "I417": { - "cls": "items", - "name": "新物品" - }, - "I418": { - "cls": "items", - "name": "新物品" - }, - "I419": { - "cls": "items", - "name": "新物品" - }, - "I420": { - "cls": "items", - "name": "超大红宝石", - "text": "攻击+${core.values.redGem}", - "itemEffect": "core.status.hero.atk += 8 * core.status.thisMap.ratio", - "itemEffectTip": ",攻击+${8 * core.status.thisMap.ratio}", - "useItemEffect": "core.status.hero.atk += core.values.redGem", - "canUseItemEffect": "true" - }, - "I421": { - "cls": "items", - "name": "新物品" - }, - "I422": { - "cls": "items", - "name": "新物品" - }, - "I423": { - "cls": "items", - "name": "新物品" - }, - "I424": { - "cls": "items", - "name": "新物品" - }, - "I425": { - "cls": "items", - "name": "新物品" - }, - "I426": { - "cls": "items", - "name": "新物品" - }, - "I427": { - "cls": "items", - "name": "新物品" - }, - "I428": { - "cls": "items", - "name": "新物品" - }, - "I429": { - "cls": "items", - "name": "新物品" - }, - "I430": { - "cls": "items", - "name": "超大蓝宝石", - "text": ",防御+${core.values.blueGem}", - "itemEffect": "core.status.hero.def += 8 * core.status.thisMap.ratio", - "itemEffectTip": ",防御+${8 * core.status.thisMap.ratio}", - "useItemEffect": "core.status.hero.def += core.values.blueGem", - "canUseItemEffect": "true" - }, - "I431": { - "cls": "items", - "name": "新物品" - }, - "I432": { - "cls": "items", - "name": "新物品" - }, - "I433": { - "cls": "items", - "name": "新物品" - }, - "I434": { - "cls": "items", - "name": "新物品" - }, - "I435": { - "cls": "items", - "name": "新物品" - }, - "I436": { - "cls": "items", - "name": "新物品" - }, - "I437": { - "cls": "items", - "name": "新物品" - }, - "I438": { - "cls": "items", - "name": "新物品" - }, - "I439": { - "cls": "items", - "name": "新物品" - }, - "I440": { - "cls": "items", - "name": "新物品" - }, - "I441": { - "cls": "items", - "name": "超大绿宝石", - "text": ",护盾+${core.values.greenGem}", - "itemEffect": "core.status.hero.mdef += Math.round(160 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))", - "itemEffectTip": ",智慧+${Math.round(160 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))}", - "useItemEffect": "core.status.hero.mdef += core.values.greenGem", - "canUseItemEffect": "true" - }, - "I442": { - "cls": "items", - "name": "新物品" - }, - "I443": { - "cls": "items", - "name": "新物品" - }, - "I444": { - "cls": "items", - "name": "新物品" - }, - "I445": { - "cls": "items", - "name": "新物品" - }, - "I446": { - "cls": "items", - "name": "新物品" - }, - "I447": { "cls": "items", "name": "新物品" }, - "I448": { - "cls": "items", - "name": "新物品" - }, - "I449": { - "cls": "items", - "name": "新物品" - }, - "I450": { - "cls": "items", - "name": "新物品" - }, - "I451": { - "cls": "items", - "name": "新物品" - }, - "I452": { - "cls": "items", - "name": "新物品" - }, - "I453": { - "cls": "items", - "name": "新物品" - }, - "I454": { - "cls": "items", - "name": "新物品" - }, - "I455": { - "cls": "items", - "name": "新物品" - }, - "I456": { - "cls": "items", - "name": "新物品" - }, - "I457": { - "cls": "items", - "name": "新物品" - }, - "I458": { - "cls": "items", - "name": "新物品" - }, - "I459": { - "cls": "items", - "name": "新物品" - }, - "I460": { - "cls": "items", - "name": "新物品" - }, - "I461": { - "cls": "items", - "name": "新物品" - }, - "I462": { - "cls": "items", - "name": "新物品" - }, - "I463": { - "cls": "items", - "name": "新物品" - }, - "I464": { - "cls": "items", - "name": "新物品" - }, - "I465": { - "cls": "items", - "name": "新物品" - }, - "I466": { - "cls": "items", - "name": "璀璨红宝石", - "text": "攻击+${core.values.redGem}", - "itemEffect": "core.status.hero.atk += 16 * core.status.thisMap.ratio", - "itemEffectTip": ",攻击+${16 * core.status.thisMap.ratio}", - "useItemEffect": "core.status.hero.atk += core.values.redGem", - "canUseItemEffect": "true" - }, - "I467": { - "cls": "items", - "name": "璀璨蓝宝石", - "text": ",防御+${core.values.blueGem}", - "itemEffect": "core.status.hero.def += 16 * core.status.thisMap.ratio", - "itemEffectTip": ",防御+${16 * core.status.thisMap.ratio}", - "useItemEffect": "core.status.hero.def += core.values.blueGem", - "canUseItemEffect": "true" - }, - "I468": { - "cls": "items", - "name": "璀璨绿宝石", - "text": ",护盾+${core.values.greenGem}", - "itemEffect": "core.status.hero.mdef += Math.round(320 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))", - "itemEffectTip": ",智慧+${Math.round(320 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))}", - "useItemEffect": "core.status.hero.mdef += core.values.greenGem", - "canUseItemEffect": "true" - }, - "I469": { - "cls": "items", - "name": "新物品" - }, - "I470": { - "cls": "items", - "name": "新物品", - "text": "攻击+${core.values.redGem}", - "itemEffect": "core.status.hero.atk += 32 * core.status.thisMap.ratio", - "itemEffectTip": ",攻击+${32 * core.status.thisMap.ratio}", - "useItemEffect": "core.status.hero.atk += core.values.redGem", - "canUseItemEffect": "true" - }, - "I471": { - "cls": "items", - "name": "新物品", - "text": ",防御+${core.values.blueGem}", - "itemEffect": "core.status.hero.def += 32 * core.status.thisMap.ratio", - "itemEffectTip": ",防御+${32 * core.status.thisMap.ratio}", - "useItemEffect": "core.status.hero.def += core.values.blueGem", - "canUseItemEffect": "true" - }, - "I472": { - "cls": "items", - "name": "传奇绿宝石", - "text": ",防御+${core.values.blueGem}", - "itemEffect": "core.status.hero.mdef += Math.round(640 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))", - "itemEffectTip": ",智慧+${Math.round(640 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))}", - "useItemEffect": "core.status.hero.def += core.values.blueGem", - "canUseItemEffect": "true" - }, - "I473": { - "cls": "items", - "name": "新物品" - }, - "I474": { - "cls": "items", - "name": "新物品" - }, - "I475": { - "cls": "items", - "name": "新物品" - }, - "I476": { - "cls": "items", - "name": "史诗绿宝石", - "text": ",护盾+${core.values.greenGem}", - "itemEffect": "core.status.hero.mdef += Math.round(1280 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))", - "itemEffectTip": ",智慧+${Math.round(1280 * core.status.thisMap.ratio / (core.getFlag('hard')) * (Mota.require('@user/data-state').getSkillLevel(12) / 20 + 1))}", - "useItemEffect": "core.status.hero.mdef += core.values.greenGem", - "canUseItemEffect": "true" - }, - "I477": { - "cls": "items", - "name": "新物品" - }, - "I478": { - "cls": "items", - "name": "新物品" - }, - "I479": { - "cls": "items", - "name": "新物品" - }, - "I480": { - "cls": "items", - "name": "新物品" - }, - "I481": { - "cls": "items", - "name": "新物品" - }, - "I482": { - "cls": "items", - "name": "大红血瓶", - "text": ",生命+${core.values.redPotion}", - "itemEffect": "core.status.hero.hp += Math.round(1000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(1000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}", - "useItemEffect": "core.status.hero.hp += core.values.redPotion", - "canUseItemEffect": "true" - }, - "I483": { - "cls": "items", - "name": "新物品" - }, - "I484": { - "cls": "items", - "name": "大蓝血瓶", - "text": ",生命+${core.values.redPotion}", - "itemEffect": "core.status.hero.hp += Math.round(2000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(2000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}", - "useItemEffect": "core.status.hero.hp += core.values.redPotion", - "canUseItemEffect": "true" - }, - "I485": { - "cls": "items", - "name": "新物品" - }, - "I486": { - "cls": "items", - "name": "新物品" - }, - "I487": { - "cls": "items", - "name": "大绿血瓶", - "text": ",生命+${core.values.redPotion}", - "itemEffect": "core.status.hero.hp += Math.round(8000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(8000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}", - "useItemEffect": "core.status.hero.hp += core.values.redPotion", - "canUseItemEffect": "true" - }, - "I488": { - "cls": "items", - "name": "新物品" - }, - "I489": { - "cls": "items", - "name": "新物品" - }, - "I490": { - "cls": "items", - "name": "新物品" - }, - "I491": { - "cls": "items", - "name": "大黄血瓶", - "text": ",生命+${core.values.redPotion}", - "itemEffect": "core.status.hero.hp += Math.round(4000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(4000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}", - "useItemEffect": "core.status.hero.hp += core.values.redPotion", - "canUseItemEffect": "true" - }, - "I558": { - "cls": "constants", - "name": "bgm查看器", - "canUseItemEffect": "true", - "text": "可以查看游戏内你已经听过的bgm,歌曲名格式:歌手——歌曲名。未完工。", - "useItemEffect": "//mota.plugin.utils.tip('warn', '当前道具还未制作完成!');\n// mota.ui.main.open('bgm');" - }, - "I559": { - "cls": "constants", - "name": "系统设置", - "canUseItemEffect": "true", - "text": "内含所有系统设置项", - "useItemEffect": "if (!core.isReplaying()) Mota.require('@motajs/legacy-ui').mainUi.open('settings');" - }, - "I560": { - "cls": "constants", - "name": "百科全书", - "canUseItemEffect": "true", - "text": "一个包含游戏中所有功能详细说明的百科全书,可以查看游戏中所有的功能", - "useItemEffect": "if (!core.isReplaying()) Mota.require('@motajs/legacy-ui').mainUi.open('desc');" - }, - "I565": { - "cls": "constants", - "name": "学习", - "canUseItemEffect": "true", - "text": "可以学习怪物的技能,学习后持续${Mota.require('@user/data-state').getSkillLevel(11) * 3 + 2}场战斗" - }, - "I574": { - "cls": "items", - "name": "新物品", - "canUseItemEffect": "true" - }, - "I575": { - "cls": "equips", - "name": "智慧之靴", - "canUseItemEffect": "true", - "text": "用智慧制作出的靴子,穿上后增加10%的攻击力和10%的防御", - "equip": { - "type": "鞋子", - "value": {}, - "percentage": { - "def": 10, - "atk": 10 - } - } - }, - "I589": { - "cls": "equips", - "name": "杰克的衣服", - "canUseItemEffect": "true", - "text": "杰克为主角留下的衣服,可以抵御寒冷。防御+25,免疫怪物的霜冻属性。", - "equip": { - "type": "衣服", - "value": { - "def": 25 - }, - "percentage": {} - } - }, - "I641": { - "cls": "equips", - "name": "寒冰护符", - "canUseItemEffect": "true", - "text": "!!html饰品。与寒冰没有任何关系,但是为什么叫寒冰护符呢?攻击和额外攻击各增加5%", - "equip": { - "type": "首饰", - "value": {}, - "percentage": { - "mana": 5, - "atk": 5 - } - } - }, - "I642": { - "cls": "constants", - "name": "成就", - "canUseItemEffect": "true", - "useItemEffect": "Mota.require('@motajs/legacy-ui').mainUi.open('achievement');", - "text": "可以查看成就" - }, - "I662": { - "cls": "equips", - "name": "天蓝石", - "canUseItemEffect": "true", - "equip": { - "type": "首饰", - "value": {}, - "percentage": { - "hpmax": 10 - } - }, - "text": "或许是苍蓝之灵的杰作,可以让使用者的恢复能力增强。生命回复增加10%" - }, - "I663": { - "cls": "equips", - "name": "地灵华", - "canUseItemEffect": "true", - "text": "一个用大地之力制造出的饰品,貌似对魔法攻击有抵抗作用。装备后,对魔攻怪会有500点防御力", - "equip": { - "type": "首饰", - "value": { - "magicDef": 500 - }, - "percentage": {} - } - }, - "I664": { - "cls": "equips", - "name": "极昼剑", - "canUseItemEffect": "true", - "text": "吸收白日之精华锻造而成。攻击+500,额外攻击+50", - "equip": { - "type": "武器", - "animate": "jianji", - "value": { - "mana": 50, - "atk": 500 - }, - "percentage": {} - } - }, - "I665": { - "cls": "equips", - "name": "永夜盾", - "canUseItemEffect": "true", - "text": "集月光之精华锻造而成。防御+400,生命回复+40。", - "equip": { - "type": "盾牌", - "value": { - "hpmax": 40, - "def": 400 - }, - "percentage": {} - } - }, - "I694": { - "cls": "items", - "name": "高级红血瓶", - "canUseItemEffect": "true", - "itemEffect": "core.status.hero.hp += Math.round(10000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(10000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}" - }, - "I695": { - "cls": "items", - "name": "高级蓝血瓶", - "canUseItemEffect": "true", - "itemEffect": "core.status.hero.hp += Math.round(20000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(20000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}" - }, - "I696": { - "cls": "items", - "name": "高级绿血瓶", - "canUseItemEffect": "true", - "itemEffect": "core.status.hero.hp += Math.round(40000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(40000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}" - }, - "I697": { + "pack": { "cls": "items", - "name": "高级紫血瓶", - "canUseItemEffect": "true", - "itemEffect": "core.status.hero.hp += Math.round(80000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))", - "itemEffectTip": ",生命+${Math.round(80000 * core.status.thisMap.ratio * (1 + Mota.require('@user/data-state').getSkillLevel(13) / 50))}" + "name": "钱袋", + "itemEffect": "core.status.hero.money += 500", + "itemEffectTip": ",金币+500" } } \ No newline at end of file diff --git a/public/project/maps.js b/public/project/maps.js index b989229..fbf881c 100644 --- a/public/project/maps.js +++ b/public/project/maps.js @@ -1,20 +1,20 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = { - "1": {"cls":"animates","id":"yellowWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}}}, - "2": {"cls":"animates","id":"whiteWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}}}, - "3": {"cls":"animates","id":"blueWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}}}, + "1": {"cls":"animates","id":"yellowWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, + "2": {"cls":"animates","id":"whiteWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, + "3": {"cls":"animates","id":"blueWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, "4": {"cls":"animates","id":"star","name":"星空"}, "5": {"cls":"animates","id":"lava","name":"岩浆"}, - "6": {"cls":"terrains","id":"ice"}, + "6": {"cls":"animates","id":"ice","doorInfo":{"time":160,"openSound":"破冰镐","closeSound":"door.mp3","keys":{"icePickaxe":1}},"animate":1}, "7": {"cls":"terrains","id":"blueShopLeft"}, "8": {"cls":"terrains","id":"blueShopRight"}, "9": {"cls":"terrains","id":"pinkShopLeft"}, "10": {"cls":"terrains","id":"pinkShopRight"}, "11": {"cls":"animates","id":"lavaNet","canPass":true,"trigger":"null","script":"(function () {\n\t// 血网的伤害效果移动到 checkBlock 中处理\n\n\t// 如果要做一次性血网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})();","name":"血网"}, - "12": {"cls":"animates","id":"poisonNet","canPass":true,"trigger":"null","script":"","name":"毒网"}, - "13": {"cls":"animates","id":"weakNet","canPass":true,"trigger":"null","script":"","name":"衰网"}, - "14": {"cls":"animates","id":"curseNet","canPass":true,"trigger":"null","script":"","name":"咒网"}, - "15": {"cls":"animates","id":"blueWater"}, + "12": {"cls":"animates","id":"poisonNet","canPass":true,"trigger":"null","script":"(function () {\n\tif (!core.hasItem('amulet')) {\n\t\tcore.triggerDebuff('get', 'poison');\n\t\tcore.updateStatusBar();\n\t}\n\n\t// 如果要做一次性毒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"毒网"}, + "13": {"cls":"animates","id":"weakNet","canPass":true,"trigger":"null","script":"(function () {\n\tif (!core.hasItem('amulet')) {\n\t\tcore.triggerDebuff('get', 'weak');\n\t\tcore.updateStatusBar();\n\t}\n\n\t// 如果要做一次性衰网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"衰网"}, + "14": {"cls":"animates","id":"curseNet","canPass":true,"trigger":"null","script":"(function () {\n\tif (!core.hasItem('amulet')) {\n\t\tcore.triggerDebuff('get', 'curse');\n\t\tcore.updateStatusBar();\n\t}\n\n\t// 如果要做一次性咒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc('x'), core.getHeroLoc('y'));\n})()","name":"咒网"}, + "15": {"cls":"animates","id":"blueLava"}, "16": {"cls":"animates","id":"water"}, "20": {"cls":"autotile","id":"autotile"}, "21": {"cls":"items","id":"yellowKey"}, @@ -59,7 +59,7 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "60": {"cls":"items","id":"curseWine"}, "61": {"cls":"items","id":"superWine"}, "62": {"cls":"items","id":"dagger"}, - "63": {"cls":"items","id":"silverCoin"}, + "63": {"cls":"items","id":"pack"}, "64": {"cls":"items","id":"amulet"}, "65": {"cls":"items","id":"hammer"}, "68": {"cls":"items","id":"lifeWand"}, @@ -68,12 +68,12 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "71": {"cls":"items","id":"shield0"}, "72": {"cls":"items","id":"skill1"}, "73": {"cls":"items","id":"wand"}, - "81": {"cls":"animates","id":"yellowDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"yellowKey":1}},"name":"黄门"}, - "82": {"cls":"animates","id":"blueDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"blueKey":1}},"name":"蓝门"}, - "83": {"cls":"animates","id":"redDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"redKey":1}},"name":"红门"}, - "84": {"cls":"animates","id":"greenDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"greenKey":1}},"name":"绿门"}, - "85": {"cls":"animates","id":"specialDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"specialKey":1}},"name":"机关门"}, - "86": {"cls":"animates","id":"steelDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"steelKey":1}},"name":"铁门","bigImage":null}, + "81": {"cls":"animates","id":"yellowDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"yellowKey":1}},"name":"黄门"}, + "82": {"cls":"animates","id":"blueDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"blueKey":1}},"name":"蓝门"}, + "83": {"cls":"animates","id":"redDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"redKey":1}},"name":"红门"}, + "84": {"cls":"animates","id":"greenDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"greenKey":1}},"name":"绿门"}, + "85": {"cls":"animates","id":"specialDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"specialKey":1}},"name":"机关门"}, + "86": {"cls":"animates","id":"steelDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"steelKey":1}},"name":"铁门"}, "87": {"cls":"terrains","id":"upFloor","canPass":true}, "88": {"cls":"terrains","id":"downFloor","canPass":true}, "89": {"cls":"animates","id":"portal","canPass":true}, @@ -84,13 +84,9 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "94": {"cls":"animates","id":"rightPortal","canPass":true}, "101": {"cls":"animates","id":"crystalUp"}, "102": {"cls":"animates","id":"crystalBottom"}, - "103": {"cls":"animates","id":"fire","canPass":true,"cannotIn":[]}, + "103": {"cls":"animates","id":"fire"}, "104": {"cls":"animates","id":"switch"}, - "105": {"cls":"animates","id":"steelDoor2","doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}},"animate":1,"trigger":"openDoor"}, - "106": {"cls":"animates","id":"steelDoor3","doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}},"animate":1,"trigger":"openDoor"}, - "107": {"cls":"animates","id":"iceDoor","doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}},"animate":1,"trigger":"openDoor"}, - "108": {"cls":"animates","id":"iceDoor2","doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}},"animate":1,"trigger":"openDoor"}, - "109": {"cls":"animates","id":"magentaWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}}}, + "109": {"cls":"animates","id":"magentaWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, "121": {"cls":"npcs","id":"man"}, "122": {"cls":"npcs","id":"trader"}, "123": {"cls":"npcs","id":"thief"}, @@ -108,17 +104,7 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "135": {"cls":"npc48","id":"npc2","faceIds":{"down":"npc0","left":"npc1","right":"npc2","up":"npc3"},"animate":1}, "136": {"cls":"npc48","id":"npc3","faceIds":{"down":"npc0","left":"npc1","right":"npc2","up":"npc3"},"animate":1}, "137": {"cls":"npcs","id":"greenMan"}, - "138": {"cls":"npcs","id":"blueTrader","faceIds":{"down":"blueTrader","left":"redMSNpc","right":"blackTrader","up":"N532"}}, - "139": {"cls":"npcs","id":"redMSNpc","faceIds":{"down":"blueTrader","left":"redMSNpc","right":"blackTrader","up":"N532"}}, - "140": {"cls":"npcs","id":"blackTrader","faceIds":{"down":"blueTrader","left":"redMSNpc","right":"blackTrader","up":"N532"}}, - "141": {"cls":"autotile","id":"autotile4","script":1}, - "142": {"cls":"autotile","id":"autotile5"}, - "143": {"cls":"autotile","id":"autotile6","autotileConnection":["A492","A494","A497"]}, - "144": {"cls":"autotile","id":"autotile7"}, - "145": {"cls":"autotile","id":"autotile8"}, - "146": {"cls":"autotile","id":"autotile9","canPass":true}, - "147": {"cls":"autotile","id":"autotile10"}, - "148": {"cls":"autotile","id":"autotile11"}, + "138": {"cls":"npcs","id":"blueTrader"}, "151": {"cls":"autotile","id":"autotile1"}, "152": {"cls":"autotile","id":"autotile2"}, "153": {"cls":"autotile","id":"autotile3"}, @@ -132,22 +118,6 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "168": {"cls":"terrains","id":"flower","canPass":true}, "169": {"cls":"terrains","id":"box","trigger":"pushBox"}, "170": {"cls":"terrains","id":"boxed","trigger":"pushBox"}, - "181": {"cls":"npcs","id":"octopusLeftTop"}, - "182": {"cls":"npcs","id":"octopusTop"}, - "183": {"cls":"npcs","id":"octopusRightTop"}, - "184": {"cls":"npcs","id":"octopusLeft"}, - "185": {"cls":"npcs","id":"octopusCenter"}, - "186": {"cls":"npcs","id":"octopusRight"}, - "187": {"cls":"npcs","id":"octopusLeftBottom"}, - "188": {"cls":"npcs","id":"octopusRightBottom"}, - "189": {"cls":"npcs","id":"dragonLeftTop"}, - "190": {"cls":"npcs","id":"dragonTop"}, - "191": {"cls":"npcs","id":"dragonRightTop"}, - "192": {"cls":"npcs","id":"dragonLeft"}, - "193": {"cls":"npcs","id":"dragonCenter"}, - "194": {"cls":"npcs","id":"dragonRight"}, - "195": {"cls":"npcs","id":"dragonLeftBottom"}, - "196": {"cls":"npcs","id":"dragonRightBottom"}, "201": {"cls":"enemys","id":"greenSlime"}, "202": {"cls":"enemys","id":"redSlime"}, "203": {"cls":"enemys","id":"blackSlime"}, @@ -215,15 +185,10 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "265": {"cls":"enemys","id":"silverSlimelord"}, "266": {"cls":"enemys","id":"goldSlimelord"}, "267": {"cls":"enemys","id":"grayRock"}, - "268": {"cls":"enemys","id":"blueRock"}, - "269": {"cls":"enemys","id":"skeletonLite"}, "270": {"cls":"enemys","id":"greenKnight"}, "271": {"cls":"enemys","id":"bowman"}, - "272": {"cls":"enemys","id":"liteBowman"}, - "273": {"cls":"enemys","id":"crimsonZombie"}, - "274": {"cls":"enemys","id":"frozenSkeleton"}, + "272": {"cls":"enemys","id":"purpleBowman"}, "275": {"cls":"enemys","id":"watcherSlime"}, - "276": {"cls":"enemys","id":"mutantSlimeman"}, "277": {"cls":"enemys","id":"frostBat"}, "278": {"cls":"enemys","id":"devilKnight"}, "279": {"cls":"enemys","id":"grayPriest"}, @@ -247,478 +212,16 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "316": {"cls":"terrains","id":"sWallTLR","name":"薄墙-上左右","cannotOut":["up","left","right"],"cannotIn":["up","left","right"]}, "317": {"cls":"terrains","id":"sWallTBR","name":"薄墙-上下右","cannotOut":["up","down","right"],"cannotIn":["up","down","right"]}, "318": {"cls":"terrains","id":"sWallTBL","name":"薄墙-上下左","cannotOut":["up","down","left"],"cannotIn":["up","down","left"]}, - "319": {"cls":"items","id":"I319"}, - "320": {"cls":"items","id":"I320"}, - "321": {"cls":"items","id":"I321"}, - "322": {"cls":"items","id":"I322"}, - "323": {"cls":"items","id":"I323"}, - "324": {"cls":"items","id":"I324"}, - "325": {"cls":"items","id":"I325"}, - "326": {"cls":"items","id":"I326"}, - "327": {"cls":"items","id":"I327"}, - "328": {"cls":"items","id":"I328"}, - "329": {"cls":"items","id":"I329"}, - "330": {"cls":"items","id":"I330"}, - "331": {"cls":"terrains","id":"T331"}, - "332": {"cls":"terrains","id":"T332"}, - "333": {"cls":"terrains","id":"T333"}, - "334": {"cls":"terrains","id":"T334"}, - "335": {"cls":"terrains","id":"T335"}, - "336": {"cls":"terrains","id":"T336"}, - "337": {"cls":"terrains","id":"T337"}, - "338": {"cls":"terrains","id":"T338"}, - "339": {"cls":"terrains","id":"T339"}, - "340": {"cls":"terrains","id":"T340"}, - "341": {"cls":"terrains","id":"T341"}, - "342": {"cls":"terrains","id":"T342"}, - "343": {"cls":"terrains","id":"T343"}, - "344": {"cls":"terrains","id":"T344"}, - "345": {"cls":"terrains","id":"T345"}, - "346": {"cls":"terrains","id":"T346"}, - "347": {"cls":"terrains","id":"T347"}, - "348": {"cls":"terrains","id":"T348"}, - "349": {"cls":"terrains","id":"T349"}, - "350": {"cls":"terrains","id":"T350"}, - "351": {"cls":"terrains","id":"T351"}, - "352": {"cls":"terrains","id":"T352"}, - "353": {"cls":"terrains","id":"T353"}, - "354": {"cls":"terrains","id":"T354"}, - "355": {"cls":"terrains","id":"T355"}, - "356": {"cls":"terrains","id":"T356"}, - "357": {"cls":"terrains","id":"T357"}, - "358": {"cls":"terrains","id":"T358"}, - "359": {"cls":"terrains","id":"T359"}, - "360": {"cls":"terrains","id":"T360"}, - "361": {"cls":"terrains","id":"T361"}, - "362": {"cls":"terrains","id":"T362"}, - "363": {"cls":"terrains","id":"T363"}, - "364": {"cls":"terrains","id":"T364"}, - "365": {"cls":"terrains","id":"T365"}, - "366": {"cls":"terrains","id":"T366"}, - "367": {"cls":"npc48","id":"N367"}, - "368": {"cls":"enemys","id":"E368"}, - "369": {"cls":"enemys","id":"E369"}, - "370": {"cls":"enemys","id":"E370"}, - "371": {"cls":"enemys","id":"E371"}, - "372": {"cls":"enemys","id":"E372"}, - "373": {"cls":"enemys","id":"E373"}, - "374": {"cls":"enemys","id":"E374"}, - "375": {"cls":"enemys","id":"E375"}, - "376": {"cls":"items","id":"I376"}, - "377": {"cls":"items","id":"I377"}, - "378": {"cls":"items","id":"I378"}, - "379": {"cls":"items","id":"I379"}, - "380": {"cls":"items","id":"I380"}, - "381": {"cls":"items","id":"I381"}, - "382": {"cls":"items","id":"I382"}, - "383": {"cls":"items","id":"I383"}, - "384": {"cls":"items","id":"I384"}, - "385": {"cls":"items","id":"I385"}, - "386": {"cls":"items","id":"I386"}, - "387": {"cls":"items","id":"I387"}, - "388": {"cls":"items","id":"I388"}, - "389": {"cls":"items","id":"I389"}, - "390": {"cls":"items","id":"I390"}, - "391": {"cls":"items","id":"I391"}, - "392": {"cls":"items","id":"I392"}, - "393": {"cls":"items","id":"I393"}, - "394": {"cls":"items","id":"I394"}, - "395": {"cls":"items","id":"I395"}, - "396": {"cls":"items","id":"I396"}, - "397": {"cls":"items","id":"I397"}, - "398": {"cls":"items","id":"I398"}, - "399": {"cls":"items","id":"I399"}, - "400": {"cls":"items","id":"I400"}, - "401": {"cls":"items","id":"I401"}, - "402": {"cls":"items","id":"I402"}, - "403": {"cls":"items","id":"I403"}, - "404": {"cls":"items","id":"I404"}, - "405": {"cls":"items","id":"I405"}, - "406": {"cls":"items","id":"I406"}, - "407": {"cls":"items","id":"I407"}, - "408": {"cls":"items","id":"I408"}, - "409": {"cls":"items","id":"I409"}, - "410": {"cls":"items","id":"I410"}, - "411": {"cls":"items","id":"I411"}, - "412": {"cls":"items","id":"I412"}, - "413": {"cls":"items","id":"I413"}, - "414": {"cls":"items","id":"I414"}, - "415": {"cls":"items","id":"I415"}, - "416": {"cls":"items","id":"I416"}, - "417": {"cls":"items","id":"I417"}, - "418": {"cls":"items","id":"I418"}, - "419": {"cls":"items","id":"I419"}, - "420": {"cls":"items","id":"I420"}, - "421": {"cls":"items","id":"I421"}, - "422": {"cls":"items","id":"I422"}, - "423": {"cls":"items","id":"I423"}, - "424": {"cls":"items","id":"I424"}, - "425": {"cls":"items","id":"I425"}, - "426": {"cls":"items","id":"I426"}, - "427": {"cls":"items","id":"I427"}, - "428": {"cls":"items","id":"I428"}, - "429": {"cls":"items","id":"I429"}, - "430": {"cls":"items","id":"I430"}, - "431": {"cls":"items","id":"I431"}, - "432": {"cls":"items","id":"I432"}, - "433": {"cls":"items","id":"I433"}, - "434": {"cls":"items","id":"I434"}, - "435": {"cls":"items","id":"I435"}, - "436": {"cls":"items","id":"I436"}, - "437": {"cls":"items","id":"I437"}, - "438": {"cls":"items","id":"I438"}, - "439": {"cls":"items","id":"I439"}, - "440": {"cls":"items","id":"I440"}, - "441": {"cls":"items","id":"I441"}, - "442": {"cls":"items","id":"I442"}, - "443": {"cls":"items","id":"I443"}, - "444": {"cls":"items","id":"I444"}, - "445": {"cls":"items","id":"I445"}, - "446": {"cls":"items","id":"I446"}, - "447": {"cls":"items","id":"I447"}, - "448": {"cls":"items","id":"I448"}, - "449": {"cls":"items","id":"I449"}, - "450": {"cls":"items","id":"I450"}, - "451": {"cls":"items","id":"I451"}, - "452": {"cls":"items","id":"I452"}, - "453": {"cls":"items","id":"I453"}, - "454": {"cls":"items","id":"I454"}, - "455": {"cls":"items","id":"I455"}, - "456": {"cls":"items","id":"I456"}, - "457": {"cls":"items","id":"I457"}, - "458": {"cls":"items","id":"I458"}, - "459": {"cls":"items","id":"I459"}, - "460": {"cls":"items","id":"I460"}, - "461": {"cls":"items","id":"I461"}, - "462": {"cls":"items","id":"I462"}, - "463": {"cls":"items","id":"I463"}, - "464": {"cls":"items","id":"I464"}, - "465": {"cls":"items","id":"I465"}, - "466": {"cls":"items","id":"I466"}, - "467": {"cls":"items","id":"I467"}, - "468": {"cls":"items","id":"I468"}, - "469": {"cls":"items","id":"I469"}, - "470": {"cls":"items","id":"I470"}, - "471": {"cls":"items","id":"I471"}, - "472": {"cls":"items","id":"I472"}, - "473": {"cls":"items","id":"I473"}, - "474": {"cls":"items","id":"I474"}, - "475": {"cls":"items","id":"I475"}, - "476": {"cls":"items","id":"I476"}, - "477": {"cls":"items","id":"I477"}, - "478": {"cls":"items","id":"I478"}, - "479": {"cls":"items","id":"I479"}, - "480": {"cls":"items","id":"I480"}, - "481": {"cls":"items","id":"I481"}, - "482": {"cls":"items","id":"I482"}, - "483": {"cls":"items","id":"I483"}, - "484": {"cls":"items","id":"I484"}, - "485": {"cls":"items","id":"I485"}, - "486": {"cls":"items","id":"I486"}, - "487": {"cls":"items","id":"I487"}, - "488": {"cls":"items","id":"I488"}, - "489": {"cls":"items","id":"I489"}, - "490": {"cls":"items","id":"I490"}, - "491": {"cls":"items","id":"I491"}, - "492": {"cls":"animates","id":"A492","trigger":"openDoor","doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"yellowKey":1}},"animate":1}, - "493": {"cls":"animates","id":"A493"}, - "494": {"cls":"animates","id":"A494","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"blueKey":1}}}, - "495": {"cls":"animates","id":"A495"}, - "496": {"cls":"animates","id":"A496"}, - "497": {"cls":"animates","id":"A497","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"redKey":1}}}, - "498": {"cls":"enemys","id":"E498"}, - "499": {"cls":"enemys","id":"E499"}, - "500": {"cls":"enemys","id":"E500"}, - "501": {"cls":"enemys","id":"E501"}, - "502": {"cls":"enemys","id":"E502"}, - "503": {"cls":"enemys","id":"E503"}, - "504": {"cls":"enemys","id":"E504"}, - "505": {"cls":"enemys","id":"E505"}, - "506": {"cls":"animates","id":"A506"}, - "507": {"cls":"animates","id":"A507"}, - "508": {"cls":"animates","id":"A508"}, - "509": {"cls":"animates","id":"A509"}, - "510": {"cls":"animates","id":"A510"}, - "511": {"cls":"enemys","id":"E511"}, - "512": {"cls":"enemys","id":"E512"}, - "513": {"cls":"enemys","id":"E513"}, - "514": {"cls":"enemys","id":"E514"}, - "515": {"cls":"enemys","id":"E515"}, - "516": {"cls":"terrains","id":"T516"}, - "517": {"cls":"enemys","id":"E517"}, - "518": {"cls":"enemys","id":"E518"}, - "519": {"cls":"enemys","id":"E519"}, - "520": {"cls":"enemys","id":"E520"}, - "521": {"cls":"enemys","id":"E521"}, - "522": {"cls":"enemys","id":"E522"}, - "523": {"cls":"enemys","id":"E523"}, - "524": {"cls":"enemys","id":"E524"}, - "525": {"cls":"enemys","id":"E525"}, - "526": {"cls":"terrains","id":"T526","canPass":true}, - "527": {"cls":"terrains","id":"T527"}, - "528": {"cls":"terrains","id":"T528","canBreak":true}, - "529": {"cls":"terrains","id":"T529","layer":null}, - "530": {"cls":"terrains","id":"T530"}, - "531": {"cls":"terrains","id":"T531","canPass":true,"cannotOut":["left","right"],"cannotIn":["left","right"]}, - "532": {"cls":"npcs","id":"N532","faceIds":{"down":"N532","left":"N533","right":"N534","up":"N535"}}, - "533": {"cls":"npcs","id":"N533","faceIds":{"down":"N532","left":"N533","right":"N534","up":"N535"}}, - "534": {"cls":"npcs","id":"N534","faceIds":{"down":"N532","left":"N533","right":"N534","up":"N535"}}, - "535": {"cls":"npcs","id":"N535","faceIds":{"down":"N532","left":"N533","right":"N534","up":"N535"}}, - "536": {"cls":"enemys","id":"E536"}, - "537": {"cls":"enemys","id":"E537"}, - "538": {"cls":"enemys","id":"E538"}, - "539": {"cls":"enemys","id":"E539"}, - "540": {"cls":"animates","id":"A540","canPass":true}, - "541": {"cls":"animates","id":"A541","canPass":true}, - "542": {"cls":"animates","id":"A542","canPass":true}, - "543": {"cls":"animates","id":"A543","canPass":true}, - "544": {"cls":"enemys","id":"E544"}, - "545": {"cls":"enemys","id":"E545"}, - "546": {"cls":"enemys","id":"E546"}, - "547": {"cls":"enemys","id":"E547"}, - "548": {"cls":"enemys","id":"E548"}, - "549": {"cls":"enemys","id":"E549"}, - "550": {"cls":"enemys","id":"E550"}, - "551": {"cls":"terrains","id":"T551"}, - "552": {"cls":"terrains","id":"T552","canPass":true}, - "553": {"cls":"terrains","id":"T553"}, - "554": {"cls":"terrains","id":"T554"}, - "555": {"cls":"terrains","id":"T555"}, - "556": {"cls":"enemys","id":"E556"}, - "557": {"cls":"enemys","id":"E557"}, - "558": {"cls":"items","id":"I558"}, - "559": {"cls":"items","id":"I559"}, - "560": {"cls":"items","id":"I560"}, - "561": {"cls":"enemys","id":"E561"}, - "562": {"cls":"enemys","id":"E562"}, - "563": {"cls":"enemys","id":"E563"}, - "564": {"cls":"enemys","id":"E564"}, - "565": {"cls":"items","id":"I565"}, - "566": {"cls":"enemys","id":"E566"}, - "567": {"cls":"enemys","id":"E567"}, - "568": {"cls":"enemys","id":"E568"}, - "569": {"cls":"enemys","id":"E569"}, - "570": {"cls":"enemys","id":"E570"}, - "571": {"cls":"enemys","id":"E571"}, - "572": {"cls":"enemys","id":"E572"}, - "573": {"cls":"enemys","id":"E573"}, - "574": {"cls":"items","id":"I574"}, - "575": {"cls":"items","id":"I575"}, - "576": {"cls":"enemys","id":"E576"}, - "577": {"cls":"enemys","id":"E577"}, - "578": {"cls":"enemys","id":"E578"}, - "579": {"cls":"enemys","id":"E579"}, - "580": {"cls":"terrains","id":"T580","canPass":true}, - "581": {"cls":"terrains","id":"T581"}, - "582": {"cls":"terrains","id":"T582"}, - "583": {"cls":"terrains","id":"T583"}, - "584": {"cls":"terrains","id":"T584"}, - "585": {"cls":"terrains","id":"T585"}, - "586": {"cls":"terrains","id":"T586"}, - "587": {"cls":"terrains","id":"T587"}, - "588": {"cls":"terrains","id":"T588"}, - "589": {"cls":"items","id":"I589"}, - "590": {"cls":"enemys","id":"E590"}, - "591": {"cls":"enemys","id":"E591"}, - "592": {"cls":"enemys","id":"E592"}, - "593": {"cls":"enemys","id":"E593"}, - "594": {"cls":"enemys","id":"E594"}, - "595": {"cls":"enemys","id":"E595"}, - "596": {"cls":"enemys","id":"E596"}, - "597": {"cls":"enemys","id":"E597"}, - "598": {"cls":"enemys","id":"E598"}, - "599": {"cls":"enemys","id":"E599"}, - "600": {"cls":"enemys","id":"E600"}, - "601": {"cls":"enemys","id":"E601"}, - "602": {"cls":"enemys","id":"E602"}, - "603": {"cls":"enemys","id":"E603"}, - "604": {"cls":"terrains","id":"T604"}, - "605": {"cls":"enemys","id":"E605"}, - "606": {"cls":"enemys","id":"E606"}, - "607": {"cls":"enemys","id":"E607"}, - "608": {"cls":"enemys","id":"E608"}, - "609": {"cls":"enemys","id":"E609"}, - "610": {"cls":"enemys","id":"E610"}, - "611": {"cls":"enemys","id":"E611"}, - "612": {"cls":"enemys","id":"E612"}, - "613": {"cls":"enemys","id":"E613"}, - "614": {"cls":"enemys","id":"E614"}, - "615": {"cls":"enemys","id":"E615"}, - "616": {"cls":"enemys","id":"E616"}, - "617": {"cls":"enemys","id":"E617"}, - "618": {"cls":"enemys","id":"E618"}, - "619": {"cls":"npcs","id":"N619"}, - "620": {"cls":"npcs","id":"N620"}, - "621": {"cls":"npcs","id":"N621"}, - "622": {"cls":"npcs","id":"N622"}, - "623": {"cls":"npcs","id":"N623"}, - "624": {"cls":"npcs","id":"N624"}, - "625": {"cls":"npcs","id":"N625"}, - "626": {"cls":"npcs","id":"N626"}, - "627": {"cls":"terrains","id":"T627"}, - "628": {"cls":"terrains","id":"T628"}, - "629": {"cls":"terrains","id":"T629"}, - "630": {"cls":"npc48","id":"N630"}, - "631": {"cls":"npc48","id":"N631"}, - "632": {"cls":"npc48","id":"N632","animate":1}, - "633": {"cls":"npc48","id":"N633"}, - "634": {"cls":"npc48","id":"N634","animate":1}, - "635": {"cls":"npc48","id":"N635"}, - "636": {"cls":"npc48","id":"N636","animate":1}, - "637": {"cls":"npc48","id":"N637"}, - "638": {"cls":"npc48","id":"N638"}, - "639": {"cls":"npc48","id":"N639"}, - "640": {"cls":"terrains","id":"T640","canPass":true}, - "641": {"cls":"items","id":"I641"}, - "642": {"cls":"items","id":"I642"}, - "643": {"cls":"enemys","id":"E643"}, - "644": {"cls":"enemys","id":"E644"}, - "645": {"cls":"enemys","id":"E645"}, - "646": {"cls":"enemys","id":"E646"}, - "647": {"cls":"enemys","id":"E647"}, - "648": {"cls":"terrains","id":"T648"}, - "649": {"cls":"terrains","id":"T649"}, - "650": {"cls":"terrains","id":"T650"}, - "651": {"cls":"terrains","id":"T651"}, - "652": {"cls":"terrains","id":"T652"}, - "653": {"cls":"terrains","id":"T653"}, - "654": {"cls":"terrains","id":"T654"}, - "655": {"cls":"terrains","id":"T655"}, - "656": {"cls":"enemys","id":"E656"}, - "657": {"cls":"enemys","id":"E657"}, - "658": {"cls":"enemys","id":"E658"}, - "659": {"cls":"enemys","id":"E659"}, - "660": {"cls":"terrains","id":"T660"}, - "661": {"cls":"terrains","id":"T661"}, - "662": {"cls":"items","id":"I662"}, - "663": {"cls":"items","id":"I663"}, - "664": {"cls":"items","id":"I664"}, - "665": {"cls":"items","id":"I665"}, - "666": {"cls":"enemys","id":"E666"}, - "667": {"cls":"enemys","id":"E667"}, - "668": {"cls":"enemys","id":"E668"}, - "669": {"cls":"enemys","id":"E669"}, - "670": {"cls":"enemys","id":"E670"}, - "671": {"cls":"enemys","id":"E671"}, - "672": {"cls":"enemys","id":"E672"}, - "673": {"cls":"enemys","id":"E673"}, - "674": {"cls":"enemys","id":"E674"}, - "675": {"cls":"enemys","id":"E675"}, - "676": {"cls":"enemys","id":"E676"}, - "677": {"cls":"enemys","id":"E677"}, - "678": {"cls":"enemys","id":"E678"}, - "679": {"cls":"enemys","id":"E679"}, - "680": {"cls":"enemys","id":"E680"}, - "681": {"cls":"enemys","id":"E681"}, - "682": {"cls":"enemys","id":"E682"}, - "683": {"cls":"enemys","id":"E683"}, - "684": {"cls":"enemys","id":"E684"}, - "685": {"cls":"enemys","id":"E685"}, - "686": {"cls":"enemys","id":"E686"}, - "687": {"cls":"enemys","id":"E687"}, - "688": {"cls":"enemys","id":"E688"}, - "689": {"cls":"enemys","id":"E689"}, - "690": {"cls":"enemys","id":"E690"}, - "691": {"cls":"enemys","id":"E691"}, - "692": {"cls":"enemys","id":"E692"}, - "693": {"cls":"enemys","id":"E693"}, - "694": {"cls":"items","id":"I694"}, - "695": {"cls":"items","id":"I695"}, - "696": {"cls":"items","id":"I696"}, - "697": {"cls":"items","id":"I697"}, - "698": {"cls":"enemys","id":"E698"}, - "699": {"cls":"enemys","id":"E699"}, - "700": {"cls":"enemys","id":"E700"}, - "701": {"cls":"enemys","id":"E701"}, - "702": {"cls":"enemys","id":"E702"}, - "703": {"cls":"enemys","id":"E703"}, - "704": {"cls":"enemys","id":"E704"}, - "705": {"cls":"enemys","id":"E705"}, - "706": {"cls":"terrains","id":"T706"}, - "707": {"cls":"enemys","id":"E707"}, - "708": {"cls":"enemys","id":"E708"}, - "709": {"cls":"enemys","id":"E709"}, - "710": {"cls":"enemys","id":"E710"}, - "20032": {"cls":"tileset","id":"X20032","cannotOut":["up","left"],"cannotIn":["up","left"]}, - "20033": {"cls":"tileset","id":"X20033","cannotOut":["up"],"cannotIn":["up"]}, - "20034": {"cls":"tileset","id":"X20034","cannotOut":["up","right"],"cannotIn":["up","right"]}, - "20037": {"cls":"tileset","id":"X20037","cannotOut":["up","left"],"cannotIn":["up","left"]}, - "20038": {"cls":"tileset","id":"X20038","cannotOut":["up"],"cannotIn":["up"]}, - "20039": {"cls":"tileset","id":"X20039","cannotOut":["up","right"],"cannotIn":["up","right"]}, - "20040": {"cls":"tileset","id":"X20040","cannotIn":["left"],"cannotOut":["left"]}, - "20041": {"cls":"tileset","id":"X20041","cannotOut":[],"cannotIn":["up","down","left","right"]}, - "20042": {"cls":"tileset","id":"X20042","cannotIn":["right"],"cannotOut":["right"]}, - "20045": {"cls":"tileset","id":"X20045","cannotOut":["left"],"cannotIn":["left"]}, - "20047": {"cls":"tileset","id":"X20047","cannotOut":["right"],"cannotIn":["right"]}, - "20048": {"cls":"tileset","id":"X20048","cannotOut":["down","left"],"cannotIn":["down","left"]}, - "20049": {"cls":"tileset","id":"X20049","cannotIn":["down"],"cannotOut":["down"]}, - "20050": {"cls":"tileset","id":"X20050","cannotOut":["down","right"],"cannotIn":["down","right"]}, - "20053": {"cls":"tileset","id":"X20053","cannotOut":["down","left"],"cannotIn":["down","left"],"canPass":false}, - "20054": {"cls":"tileset","id":"X20054","cannotOut":["down"],"cannotIn":["down"],"canPass":false}, - "20055": {"cls":"tileset","id":"X20055","cannotOut":["down","right"],"cannotIn":["down","right"]}, - "20056": {"cls":"tileset","id":"X20056","cannotIn":["up","down","left","right"]}, - "20057": {"cls":"tileset","id":"X20057","cannotOut":[],"cannotIn":["up","down","left","right"]}, - "20058": {"cls":"tileset","id":"X20058","cannotIn":["up","down","left","right"]}, - "20064": {"cls":"tileset","id":"X20064","cannotIn":["up","down","left","right"]}, - "20065": {"cls":"tileset","id":"X20065","cannotIn":["up","down","left","right"]}, - "20066": {"cls":"tileset","id":"X20066","cannotIn":["up","down","left","right"]}, - "20074": {"cls":"tileset","id":"X20074","cannotIn":["up","down","left","right"]}, - "20152": {"cls":"tileset","id":"X20152","cannotOut":["left"],"cannotIn":["left"]}, - "20153": {"cls":"tileset","id":"X20153","cannotIn":["right"],"cannotOut":["right"]}, - "30040": {"cls":"tileset","id":"X30040","cannotOut":["up","left"],"cannotIn":["up","left"]}, - "30041": {"cls":"tileset","id":"X30041","cannotOut":["up"],"cannotIn":["up"]}, - "30042": {"cls":"tileset","id":"X30042","cannotOut":["up","right"],"cannotIn":["up","right"]}, - "30048": {"cls":"tileset","id":"X30048","cannotOut":["left"],"cannotIn":["left"]}, - "30050": {"cls":"tileset","id":"X30050","cannotOut":["right"],"cannotIn":["right"]}, - "30056": {"cls":"tileset","id":"X30056","cannotOut":["up","down","left","right"],"cannotIn":["up","down","left","right"]}, - "30057": {"cls":"tileset","id":"X30057","cannotOut":["up","down","left","right"],"cannotIn":["up","down","left","right"]}, - "30058": {"cls":"tileset","id":"X30058","cannotOut":["up","down","left","right"],"cannotIn":["up","down","left","right"]}, - "30105": {"cls":"tileset","id":"X30105","canPass":true}, - "30112": {"cls":"tileset","id":"X30112","canPass":false}, - "30113": {"cls":"tileset","id":"X30113","canPass":true}, - "30121": {"cls":"tileset","id":"X30121","canPass":true}, - "30196": {"cls":"tileset","id":"X30196","canPass":true}, - "30204": {"cls":"tileset","id":"X30204","canPass":true}, - "70019": {"cls":"tileset","id":"X70019","canPass":true}, - "70048": {"cls":"tileset","id":"X70048","cannotOut":["up","left"],"cannotIn":["up","left"]}, - "70049": {"cls":"tileset","id":"X70049","cannotOut":["up"],"cannotIn":["up"]}, - "70050": {"cls":"tileset","id":"X70050","cannotOut":["up","right"],"cannotIn":["up","right"]}, - "70056": {"cls":"tileset","id":"X70056","cannotOut":["left"],"cannotIn":["left"]}, - "70058": {"cls":"tileset","id":"X70058","cannotOut":["right"],"cannotIn":["right"]}, - "70059": {"cls":"tileset","id":"X70059","cannotOut":["left"],"cannotIn":["left"]}, - "70060": {"cls":"tileset","id":"X70060","cannotOut":["right"],"cannotIn":["right"]}, - "70064": {"cls":"tileset","id":"X70064","cannotOut":["down","left"],"cannotIn":["up","down","left","right"]}, - "70065": {"cls":"tileset","id":"X70065","cannotIn":["up","down","left","right"],"cannotOut":["up","down","left","right"]}, - "70066": {"cls":"tileset","id":"X70066","cannotOut":["down","right"],"cannotIn":["up","down","left","right"]}, - "70072": {"cls":"tileset","id":"X70072","cannotIn":["up","down","left","right"]}, - "70073": {"cls":"tileset","id":"X70073","cannotIn":["up","down","left","right"]}, - "70074": {"cls":"tileset","id":"X70074","cannotIn":["up","down","left","right"]}, - "70080": {"cls":"tileset","id":"X70080","cannotOut":[],"cannotIn":["up","down","left","right"]}, - "70081": {"cls":"tileset","id":"X70081","cannotIn":["up","down","left","right"]}, - "70082": {"cls":"tileset","id":"X70082","cannotIn":["up","down","left","right"]}, - "70083": {"cls":"tileset","id":"X70083","cannotIn":["left"],"cannotOut":["left"]}, - "70084": {"cls":"tileset","id":"X70084","cannotIn":["right"],"cannotOut":["right"]}, - "70090": {"cls":"tileset","id":"X70090","cannotOut":["left"],"cannotIn":["left"]}, - "70091": {"cls":"tileset","id":"X70091","cannotIn":["right"],"cannotOut":["right"]}, - "70098": {"cls":"tileset","id":"X70098","cannotIn":["left"],"cannotOut":["left"]}, - "70099": {"cls":"tileset","id":"X70099","cannotIn":["right"],"cannotOut":["right"]}, - "70112": {"cls":"tileset","id":"X70112","cannotIn":["down"],"cannotOut":["down"]}, - "70114": {"cls":"tileset","id":"X70114","cannotIn":["down"],"cannotOut":["down"]}, - "70116": {"cls":"tileset","id":"X70116","canPass":true,"cannotOut":["left","right"],"cannotIn":["left","right"]}, - "70120": {"cls":"tileset","id":"X70120","cannotIn":["up","down","left","right"]}, - "70122": {"cls":"tileset","id":"X70122","cannotIn":["up","down","left","right"]}, - "70124": {"cls":"tileset","id":"X70124","cannotOut":["left","right"],"cannotIn":["left","right"]}, - "70128": {"cls":"tileset","id":"X70128","cannotIn":[]}, - "70130": {"cls":"tileset","id":"X70130","cannotIn":[]}, - "70131": {"cls":"tileset","id":"X70131","cannotOut":["left","right"],"cannotIn":["left","right"]}, - "70132": {"cls":"tileset","id":"X70132","cannotOut":[],"cannotIn":[]}, - "70184": {"cls":"tileset","id":"X70184","canPass":true}, - "70185": {"cls":"tileset","id":"X70185","canPass":true}, - "70186": {"cls":"tileset","id":"X70186","canPass":true}, - "70200": {"cls":"tileset","id":"X70200","canPass":true}, - "70201": {"cls":"tileset","id":"X70201","canPass":true}, - "70202": {"cls":"tileset","id":"X70202","canPass":true}, - "90153": {"cls":"tileset","id":"X90153","canPass":true}, - "90154": {"cls":"tileset","id":"X90154","canPass":true}, - "90155": {"cls":"tileset","id":"X90155","canPass":true} + "319": {"cls":"npc48","id":"tallYellowDoor","trigger":"openDoor","name":"高黄门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"yellowKey":1}}}, + "320": {"cls":"npc48","id":"tallBlueDoor","trigger":"openDoor","name":"高蓝门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"blueKey":1}}}, + "321": {"cls":"npc48","id":"tallRedDoor","trigger":"openDoor","name":"高红门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"redKey":1}}}, + "322": {"cls":"npc48","id":"tallGreenDoor","trigger":"openDoor","name":"高绿门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"greenKey":1}}}, + "323": {"cls":"npc48","id":"tallSpecialDoor","trigger":"openDoor","name":"高机关门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"specialKey":1}}}, + "324": {"cls":"npc48","id":"tallSteelDoor","trigger":"openDoor","name":"高铁门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"steelKey":1}}}, + "325": {"cls":"enemys","id":"keiskeiFairy"}, + "326": {"cls":"enemys","id":"tulipFairy"}, + "327": {"cls":"enemy48","id":"bearDown"}, + "328": {"cls":"enemy48","id":"bearLeft"}, + "329": {"cls":"enemy48","id":"bearRight"}, + "330": {"cls":"enemy48","id":"bearUp"} } \ No newline at end of file diff --git a/public/project/materials/animates.png b/public/project/materials/animates.png index d0158fc..89d8789 100644 Binary files a/public/project/materials/animates.png and b/public/project/materials/animates.png differ diff --git a/public/project/materials/enemy48.png b/public/project/materials/enemy48.png index a7f7d0c..d18a129 100644 Binary files a/public/project/materials/enemy48.png and b/public/project/materials/enemy48.png differ diff --git a/public/project/materials/enemys.png b/public/project/materials/enemys.png index 634a1f4..2b3641c 100644 Binary files a/public/project/materials/enemys.png and b/public/project/materials/enemys.png differ diff --git a/public/project/materials/items.png b/public/project/materials/items.png index 141eb48..04dc29b 100644 Binary files a/public/project/materials/items.png and b/public/project/materials/items.png differ diff --git a/public/project/materials/npc48.png b/public/project/materials/npc48.png index 5f607de..d857f2d 100644 Binary files a/public/project/materials/npc48.png and b/public/project/materials/npc48.png differ diff --git a/public/project/materials/npcs.png b/public/project/materials/npcs.png index bfb360b..2bff087 100644 Binary files a/public/project/materials/npcs.png and b/public/project/materials/npcs.png differ diff --git a/public/project/materials/terrains.png b/public/project/materials/terrains.png index 9250cd9..6d96b93 100644 Binary files a/public/project/materials/terrains.png and b/public/project/materials/terrains.png differ diff --git a/src/types/source/data.d.ts b/src/types/source/data.d.ts index a5bbee0..41e4c78 100644 --- a/src/types/source/data.d.ts +++ b/src/types/source/data.d.ts @@ -1,149 +1,18 @@ type FloorIds = | 'empty' + | 'sample0' + | 'sample1' + | 'sample2' | 'MT0' - | 'MT1' - | 'MT2' - | 'MT3' - | 'MT4' - | 'MT5' - | 'MT6' - | 'MT7' - | 'MT8' - | 'MT9' - | 'MT10' - | 'MT11' - | 'MT12' - | 'MT13' - | 'MT14' - | 'MT15' - | 'MT16' - | 'MT17' - | 'MT18' - | 'MT19' - | 'MT20' - | 'MT21' - | 'tower1' - | 'tower2' - | 'tower3' - | 'tower4' - | 'tower5' - | 'tower6' - | 'tower7' - | 'MT22' - | 'MT23' - | 'MT24' - | 'MT25' - | 'MT26' - | 'MT27' - | 'MT28' - | 'MT29' - | 'MT30' - | 'MT31' - | 'MT32' - | 'MT33' - | 'MT34' - | 'MT35' - | 'MT36' - | 'MT37' - | 'MT38' - | 'MT39' - | 'MT40' - | 'MT41' - | 'MT42' - | 'MT43' - | 'MT44' - | 'MT45' - | 'snowTown' - | 'snowShop' - | 'MT46' - | 'MT47' - | 'MT48' - | 'MT49' - | 'MT50' - | 'MT51' - | 'MT52' - | 'MT53' - | 'MT54' - | 'MT55' - | 'MT56' - | 'MT57' - | 'MT58' - | 'MT59' - | 'MT60' - | 'MT61' - | 'MT62' - | 'MT63' - | 'MT64' - | 'MT65' - | 'MT66' - | 'MT67' - | 'MT68' - | 'MT69' - | 'MT71' - | 'MT72' - | 'MT73' - | 'MT74' - | 'MT75' - | 'MT76' - | 'MT77' - | 'MT78' - | 'MT79' - | 'MT80' - | 'MT81' - | 'MT82' - | 'MT83' - | 'MT84' - | 'MT85' - | 'MT86' - | 'MT87' - | 'MT88' - | 'MT89' - | 'MT90' - | 'MT91' - | 'MT92' - | 'MT93' - | 'MT94' - | 'MT95' - | 'MT96' - | 'MT97' type ImageIds = - | 'IQ.png' - | 'arrow.png' - | 'atk.png' - | 'bg.webp' - | 'boom.png' - | 'botton.png' - | 'cloud.png' - | 'def.png' - | 'exp.png' - | 'fog.png' - | 'hero1.png' - | 'hero2.png' - | 'hp.png' - | 'money.png' - | 'skill.png' - | 'skill0.png' - | 'skill1.png' - | 'skill10.png' - | 'skill11.png' - | 'skill12.png' - | 'skill13.png' - | 'skill14.png' - | 'skill2.png' - | 'skill3.png' - | 'skill4.png' - | 'skill5.png' - | 'skill6.png' - | 'skill7.png' - | 'skill8.png' - | 'skill9.png' - | 'sun.png' - | 'tower7.webp' + | 'bear.png' + | 'bg.jpg' + | 'brave.png' + | 'dragon.png' + | 'hero.png' | 'winskin.png' - | 'winskin2.png' - | 'winskin3.png' type AnimationIds = | 'amazed' @@ -234,9 +103,7 @@ type BgmIds = | 'winter.opus' | 'winterTown.opus' -type FontIds = - | 'normal' - | 'FiraCode' +type FontIds = never interface NameMap { '确定': 'confirm.opus';