diff --git a/public/_server/editor_file.js b/public/_server/editor_file.js index 41caceb..e1ded93 100644 --- a/public/_server/editor_file.js +++ b/public/_server/editor_file.js @@ -1101,7 +1101,7 @@ editor_file = function (editor, callback) { for (var id_ in plmap) { plraw = plraw.replace('"' + id_ + '"', plmap[id_]) } - var datastr = 'var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = \n'; + var datastr = '///\nvar plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = \n'; datastr += plraw; fs.writeFile('project/plugins.js', encode(datastr), 'base64', function (err, data) { callback(err); diff --git a/public/libs/control.js b/public/libs/control.js index abffea1..5f517ea 100644 --- a/public/libs/control.js +++ b/public/libs/control.js @@ -3535,6 +3535,29 @@ control.prototype.hideStatusBar = function (showToolbox) { // see src/plugin/game/ui.js }; +////// 更新状态栏的勇士图标 ////// +control.prototype.updateHeroIcon = function (name) { + name = name || 'hero.png'; + if (core.statusBar.icons.name == name) return; + core.statusBar.icons.name = name; + + var image = core.material.images.hero; + // 全身图 + var w = core.material.icons.hero.width || 32; + var h = core.material.icons.hero.height || 48; + var ratio = Math.min(w / h, 1), + width = 32 * ratio, + left = 16 - width / 2; + + var canvas = document.createElement('canvas'); + var ctx = canvas.getContext('2d'); + canvas.width = 32; + canvas.height = 32; + core.drawImage(ctx, image, 0, 0, w, h, left, 0, width, 32); + + core.statusBar.image.name.src = canvas.toDataURL('image/png'); +}; + ////// 改变工具栏为按钮1-8 ////// control.prototype.setToolbarButton = function (useButton) { if (!core.domStyle.showStatusBar) { diff --git a/public/project/floors/sample0.js b/public/project/floors/sample0.js index 7ffc756..3937c3f 100644 --- a/public/project/floors/sample0.js +++ b/public/project/floors/sample0.js @@ -19,7 +19,7 @@ main.floors.sample0= [ 6, 6,125, 6, 6, 6, 0, 3, 0, 0, 0, 0, 0], [208,227,212,216,278, 5, 0, 1, 1, 1,319, 1, 1], [201,205,217,215,224, 5, 0, 1, 27, 28, 29, 30, 31], - [ 5, 5,125, 5, 5, 5, 0, 1, 21, 22, 23, 24, 26], + [ 5, 5,125, 5, 5, 5,342, 1, 21, 22, 23, 24, 26], [ 0, 0,263, 0, 0, 0, 45, 1, 1, 1,121, 1, 1], [ 4, 4,133, 4, 4, 4, 0, 0, 0, 0, 0, 85,124], [ 87, 11, 12, 13, 14, 4, 4, 2, 2,122, 2, 2, 2], @@ -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/icons.js b/public/project/icons.js index c0d6eae..955c2b7 100644 --- a/public/project/icons.js +++ b/public/project/icons.js @@ -260,7 +260,19 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 = "jumpShoes": 49, "skill1": 30, "wand": 10, - "pack": 46 + "pack": 46, + "I331": 5, + "I332": 7, + "I333": 26, + "I334": 31, + "I335": 32, + "I336": 34, + "I337": 35, + "I338": 36, + "I339": 37, + "I340": 38, + "I341": 39, + "I342": 62 }, "autotile": { "autotile": 0, diff --git a/public/project/items.js b/public/project/items.js index d7ba487..3de10be 100644 --- a/public/project/items.js +++ b/public/project/items.js @@ -144,7 +144,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "itemEffectTip": ",攻击+0" }, "sword1": { - "cls": "items", + "cls": "equips", "name": "铁剑", "text": "一把很普通的铁剑", "equip": { @@ -528,5 +528,67 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = "name": "钱袋", "itemEffect": "core.status.hero.money += 500", "itemEffectTip": ",金币+500" + }, + "I331": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I332": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I333": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I334": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I335": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I336": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I337": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I338": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I339": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I340": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I341": { + "cls": "items", + "name": "新物品", + "canUseItemEffect": "true" + }, + "I342": { + "cls": "constants", + "name": "系统设置", + "canUseItemEffect": "true", + "text": "系统设置,用于打开新样板的新设置界面", + "useItemEffect": "Mota.require('var', 'mainUi').open('settings');" } } \ No newline at end of file diff --git a/public/project/maps.js b/public/project/maps.js index fbf881c..112bcdd 100644 --- a/public/project/maps.js +++ b/public/project/maps.js @@ -223,5 +223,17 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = "327": {"cls":"enemy48","id":"bearDown"}, "328": {"cls":"enemy48","id":"bearLeft"}, "329": {"cls":"enemy48","id":"bearRight"}, - "330": {"cls":"enemy48","id":"bearUp"} + "330": {"cls":"enemy48","id":"bearUp"}, + "331": {"cls":"items","id":"I331"}, + "332": {"cls":"items","id":"I332"}, + "333": {"cls":"items","id":"I333"}, + "334": {"cls":"items","id":"I334"}, + "335": {"cls":"items","id":"I335"}, + "336": {"cls":"items","id":"I336"}, + "337": {"cls":"items","id":"I337"}, + "338": {"cls":"items","id":"I338"}, + "339": {"cls":"items","id":"I339"}, + "340": {"cls":"items","id":"I340"}, + "341": {"cls":"items","id":"I341"}, + "342": {"cls":"items","id":"I342"} } \ No newline at end of file diff --git a/public/project/materials/items.png b/public/project/materials/items.png index 04dc29b..8272317 100644 Binary files a/public/project/materials/items.png and b/public/project/materials/items.png differ diff --git a/public/project/plugins.js b/public/project/plugins.js index a8e06c9..6f63fe0 100644 --- a/public/project/plugins.js +++ b/public/project/plugins.js @@ -1,3 +1,4 @@ +/// var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { fiveLayer: function () { // 注册插件 @@ -297,6 +298,211 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { }); } }, + special: function () { + // 这个插件负责定义怪物属性 + const specials = Mota.require('var', 'enemySpecials'); + // 怪物特殊属性包含四个信息 + // code: 索引,必须与该属性在数组内的索引一致 + // name: 特殊属性名称,可以是一个函数,接受 enemy 作为参数,返回字符串 + // desc: 特殊属性说明,也可以是一个函数,接受 enemy 作为参数,返回字符串 + // color: 特殊属性颜色,会在怪物手册中显示出来 + specials.push( + { + code: 0, + name: '空', + desc: '空', + color: '#fff' + }, + { + code: 1, + name: '致命一击', + desc: enemy => + `怪物每5回合触发一次强力攻击,造成${enemy.crit}%的伤害`, + color: '#fc3' + }, + { + code: 2, + name: '恶毒', + desc: '怪物攻击无视勇士的防御', + color: '#bbb0ff' + }, + { + code: 3, + name: '坚固', + desc: '怪物防御不小于勇士攻击-1', + color: '#c0b088' + }, + { + code: 4, + name: '2连击', + desc: '怪物每回合攻击2次', + color: '#fe7' + }, + { + code: 5, + name: '3连击', + desc: '怪物每回合攻击3次', + color: '#fe7' + }, + { + code: 6, + name: enemy => `${enemy.n}连击`, + desc: enemy => `怪物每回合攻击${enemy.n}次`, + color: '#fe7' + }, + { + code: 7, + name: '饥渴', + desc: enemy => + `战斗前,怪物降低勇士${enemy.hungry}%的攻击,并加在自己身上`, + color: '#b67' + }, + { + code: 8, + name: '抱团', + desc: enemy => + `怪物周围5×5范围内每有一个拥有该属性的怪物,自身攻防就增加${enemy.together}%(线性叠加)`, + color: '#fa4' + }, + { + code: 9, + name: '绝对防御', + desc: '怪物的奇特护甲可以让勇士的额外攻击失效,攻击变为基础攻击+额外攻击', + color: '#80eed6' + }, + { + code: 10, + name: '勇气之刃', + desc: enemy => `怪物第一回合造成${enemy.courage}%的伤害`, + color: '#b0c0dd' + }, + { + code: 11, + name: '勇气冲锋', + desc: enemy => + `怪物首先攻击,造成${enemy.charge}%的伤害,并眩晕勇士5回合`, + color: '#ff00d2' + }, + { + code: 12, + name: '追猎', + desc: '当勇士移动到该怪物的水平或竖直方向上时,怪物向勇士移动一格', + color: '#9e8' + }, + { + code: 13, + name: '魔攻', + desc: '怪物攻击无视勇士的防御', + color: '#bbb0ff' + }, + { + code: 14, + name: '智慧之源', + desc: '困难难度下(简单难度没有效果),战斗后,怪物会吸取勇士30%的智慧(勇士智慧向下取整至整十)加在本层的拥有该属性的怪物攻击上', + color: '#bbeef0' + }, + { + code: 15, + name: '突刺', + desc: enemy => + `勇士走到怪物怪物周围四格时,怪物对勇士造成${core.formatBigNumber( + Math.max((enemy.value || 0) - getHeroStatusOn('def')) + )}点伤害`, + color: '#c677dd' + }, + { + code: 16, + name: '空', + desc: '空', + color: '#fff' + }, + { + code: 17, + name: '先攻', + desc: '战斗时,怪物首先攻击', + color: '#b0b666' + }, + { + code: 18, + name: '阻击', + desc: enemy => + `经过怪物十字范围内时怪物后退一格,同时对勇士造成${enemy.value}点伤害`, + color: '#8888e6' + }, + { + code: 19, + name: '电摇嘲讽', + desc: + '当勇士移动到怪物同行或同列时,勇士会直接冲向怪物,撞碎路上的所有地形和门,拾取路上的道具,与路上的怪物战斗' + + ',最后与该怪物战斗', + color: '#ff6666' + }, + { + code: 20, + name: '霜冻', + desc: enemy => + `怪物寒冷的攻击使勇士动作变慢,勇士每回合对怪物造成的伤害减少${enemy.ice}%。装备杰克的衣服后可以免疫。`, + color: 'cyan' + }, + { + code: 21, + name: '冰封光环', + desc: enemy => + `寒气逼人,使勇士对该怪物周围7*7范围内的怪物伤害减少${enemy.iceHalo}%(线性叠加)`, + color: 'cyan' + }, + { + code: 22, + name: '永夜', + desc: enemy => + `战斗后,减少勇士${enemy.night}点攻防,增加本层所有怪物${enemy.night}点攻防,仅在本层有效`, + color: '#d8a' + }, + { + code: 23, + name: '极昼', + desc: enemy => + `战斗后,减少本层所有怪物${enemy.day}点攻防,增加勇士${enemy.day}点攻防,仅在本层有效`, + color: '#ffd' + }, + { + code: 24, + name: '射击', + desc: function () { + return '经过怪物同行或同列的可视范围内时受到一次普通攻击的伤害'; + }, + color: '#dda0dd' + }, + { + code: 25, + name: '融化', + desc: enemy => + `战斗后该怪物会融化,在怪物位置产生一个3*3的范围光环,光环内怪物的攻防增加${enemy.melt}%`, + color: '#e6e099' + }, + { + code: 26, + name: '冰封之核', + desc: enemy => + `怪物拥有逼人的寒气,使周围5*5范围内的怪物防御增加${enemy.iceCore}%`, + color: '#70ffd1' + }, + { + code: 27, + name: '火焰之核', + desc: enemy => + `怪物拥有灼热的火焰,使周围5*5范围内的怪物攻击增加${enemy.fireCore}%`, + color: '#ff6f0a' + }, + { + code: 28, + name: '苍蓝刻', + desc: enemy => + `怪物使用苍蓝之灵的力量,使自身受到的伤害减少${enemy.paleShield}%`, + color: '#ff6f0a' + } + ); + }, battle: function () { // 这个插件负责战斗相关内容 @@ -364,6 +570,29 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { return damage; }); + // --------------- 秒杀伤害计算 + // 用于计算一些特殊属性怪物在一回合内秒杀所需的攻击,依此计算临界的上界 + // 函数没有参数,返回一个数字,表示临界上界,Infinity表示没有上界,不计算临界 + // 不能返回数字型外的量 + Mota.rewrite( + Mota.require('class', 'DamageEnemy').prototype, + 'getSeckillAtk', + 'full', + function () { + // 获取怪物的属性 + const info = this.getRealInfo(); + // 对于一般的怪物,应该是怪物防御加上怪物血量 + const add = info.def + info.hp; + + // 坚固,不可能通过攻击秒杀 + if (info.special.includes(3)) { + return Infinity; + } + + return add; + } + ); + // --------------- 地图伤害 // 全量复写地图伤害的计算函数,注意此处不能使用箭头函数,因为这是在原型上的函数,其this指向实例,也即怪物(DamageEnemy实例) // 函数接收两个参数,damage和hero,前者表示要将结果存入的对象,后者是勇士真实属性 @@ -442,5 +671,131 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 = { ); // --------------- 光环处理 + // 光环分为两类,一类是会增强光环或者给怪物加光环的光环,另一类就是普通光环,这两种光环处理方式不同 + // 对于前者,光环将会优先递归计算,同时每个光环将会确保只计算一次,直到没有光环需要计算 + // 对于后者,不进行递归计算,只进行单次遍历计算。 + // 光环使用 provideHalo 和 injectHalo 作为api,表示提供光环和接受光环 + + // 光环属性列表,是一个集合Set,你可以在这里配置会被视为光环的属性 + const haloSpecials = Mota.require('module', 'Damage').haloSpecials; + haloSpecials.add(8).add(11); + + // ----- 计算第二类光环,即普通光环,这类光环更常见,因此放到前面了 + Mota.rewrite( + Mota.require('class', 'DamageEnemy').prototype, + 'provideHalo', + 'full', + function () { + // 这部分用于判断当前是否应该计算光环,即计算光环的函数是否在不应该被调用的时刻调用了 + // 一般不需要改动 + if (this.progress !== 2) return; + this.progress = 3; + if (!this.floorId) return; + if (!has(this.x) || !has(this.y)) return; + const col = this.col ?? core.status.maps[this.floorId].enemy; + if (!col) return; + // 获取所有还没有计算的光环,注意这里不能直接获取haloSpecial + const special = this.getHaloSpecials(); + + const square7 = []; + const square5 = []; + + // e 是被加成怪的属性,enemy 是施加光环的怪 + + for (const halo of special) { + switch (halo) { + case 8: + square5.push((e, enemy) => { + if ( + e.special.includes(8) && + (e.x !== this.x || this.y !== e.y) + ) { + e.atkBuff += enemy.together ?? 0; + e.defBuff += enemy.together ?? 0; + } + }); + this.providedHalo.add(8); + break; + case 21: + square7.push(e => { + // e.damageDecline += this.enemy.iceHalo ?? 0; + }); + col.haloList.push({ + type: 'square', + data: { x: this.x, y: this.y, d: 7 }, + special: 21, + from: this + }); + this.providedHalo.add(21); + break; + case 26: + square5.push(e => { + e.defBuff += this.enemy.iceCore ?? 0; + }); + col.haloList.push({ + type: 'square', + data: { x: this.x, y: this.y, d: 5 }, + special: 26, + from: this + }); + this.providedHalo.add(26); + break; + case 27: + square5.push(e => { + e.atkBuff += this.enemy.fireCore ?? 0; + }); + col.haloList.push({ + type: 'square', + data: { x: this.x, y: this.y, d: 5 }, + special: 27, + from: this + }); + this.providedHalo.add(27); + break; + } + } + + col.applyHalo( + 'square', + { x: this.x, y: this.y, d: 7 }, + square7 + ); + col.applyHalo( + 'square', + { x: this.x, y: this.y, d: 5 }, + square5 + ); + } + ); + + // ----- 计算第一类光环 + Mota.rewrite( + Mota.require('class', 'DamageEnemy').prototype, + 'preProvideHalo', + 'full', + function () { + if (this.progress !== 0) return; + this.progress = 1; + const special = this.getHaloSpecials(); + + for (const halo of special) { + switch (halo) { + default: + break; + } + } + } + ); + + // ----- 接受光环处理 + Mota.rewrite( + Mota.require('class', 'DamageEnemy').prototype, + 'injectHalo', + 'full', + function (halo, enemy) { + // 这里的 halo 是光环函数,enemy 是施加光环的怪物,this.info 是当前怪物信息 + halo(this.info, enemy); + } + ); } }; diff --git a/src/core/main/init/hotkey.ts b/src/core/main/init/hotkey.ts index 0d462ed..12397c2 100644 --- a/src/core/main/init/hotkey.ts +++ b/src/core/main/init/hotkey.ts @@ -445,9 +445,6 @@ gameKey .realize('skillTree', () => { core.useItem('skill1', true); }) - .realize('desc', () => { - core.useItem('I560', true); - }) .realize('undo', () => { core.doSL('autoSave', 'load'); }) diff --git a/src/game/enemy/damage.ts b/src/game/enemy/damage.ts index ad3ae8c..927c9ab 100644 --- a/src/game/enemy/damage.ts +++ b/src/game/enemy/damage.ts @@ -21,7 +21,6 @@ interface EnemyInfo { def: number; hp: number; special: number[]; - damageDecline: number; atkBuff: number; defBuff: number; hpBuff: number; @@ -64,9 +63,6 @@ interface CriticalDamageDelta extends Omit { type HaloFn = (info: EnemyInfo, enemy: Enemy) => void; -/** 光环属性 */ -export const haloSpecials: number[] = [8, 21, 25, 26, 27]; - export class EnemyCollection implements RangeCollection { floorId: FloorIds; list: DamageEnemy[] = []; @@ -285,7 +281,7 @@ export class DamageEnemy { info!: EnemyInfo; /** 向其他怪提供过的光环 */ - providedHalo: number[] = []; + providedHalo: Set = new Set(); /** * 伤害计算进度,0 -> 预平衡光环 -> 1 -> 计算没有光环的属性 -> 2 -> provide inject 光环 @@ -316,7 +312,6 @@ export class DamageEnemy { atk: enemy.atk, def: enemy.def, special: enemy.special.slice(), - damageDecline: 0, atkBuff: 0, defBuff: 0, hpBuff: 0, @@ -326,7 +321,7 @@ export class DamageEnemy { floorId: this.floorId }; this.progress = 0; - this.providedHalo = []; + this.providedHalo = new Set(); } /** @@ -387,7 +382,7 @@ export class DamageEnemy { if (!has(this.x) || !has(this.y)) return []; const special = this.info.special ?? this.enemy.special; const filter = special.filter(v => { - return haloSpecials.includes(v) && !this.providedHalo.includes(v); + return Damage.haloSpecials.has(v) && !this.providedHalo.has(v); }); if (filter.length === 0) return []; const collection = this.col ?? core.status.maps[this.floorId].enemy; @@ -405,6 +400,14 @@ export class DamageEnemy { preProvideHalo() { if (this.progress !== 0) return; this.progress = 1; + const special = this.getHaloSpecials(); + + for (const halo of special) { + switch (halo) { + default: + break; + } + } } /** @@ -424,60 +427,57 @@ export class DamageEnemy { // e 是被加成怪的属性,enemy 是施加光环的怪 - // 抱团 - if (special.includes(8)) { - square5.push((e, enemy) => { - if ( - e.special.includes(8) && - (e.x !== this.x || this.y !== e.y) - ) { - e.atkBuff += enemy.together ?? 0; - e.defBuff += enemy.together ?? 0; - } - }); - this.providedHalo.push(8); - } - - // 冰封光环 - if (special.includes(21)) { - square7.push(e => { - e.damageDecline += this.enemy.iceHalo ?? 0; - }); - this.providedHalo.push(21); - col.haloList.push({ - type: 'square', - data: { x: this.x, y: this.y, d: 7 }, - special: 21, - from: this - }); - } - - // 冰封之核 - if (special.includes(26)) { - square5.push(e => { - e.defBuff += this.enemy.iceCore ?? 0; - }); - this.providedHalo.push(26); - col.haloList.push({ - type: 'square', - data: { x: this.x, y: this.y, d: 5 }, - special: 26, - from: this - }); - } - - // 火焰之核 - if (special.includes(27)) { - square5.push(e => { - e.atkBuff += this.enemy.fireCore ?? 0; - }); - this.providedHalo.push(27); - col.haloList.push({ - type: 'square', - data: { x: this.x, y: this.y, d: 5 }, - special: 27, - from: this - }); + for (const halo of special) { + switch (halo) { + case 8: + square5.push((e, enemy) => { + if ( + e.special.includes(8) && + (e.x !== this.x || this.y !== e.y) + ) { + e.atkBuff += enemy.together ?? 0; + e.defBuff += enemy.together ?? 0; + } + }); + this.providedHalo.add(8); + break; + case 21: + square7.push(e => { + // e.damageDecline += this.enemy.iceHalo ?? 0; + }); + col.haloList.push({ + type: 'square', + data: { x: this.x, y: this.y, d: 7 }, + special: 21, + from: this + }); + this.providedHalo.add(21); + break; + case 26: + square5.push(e => { + e.defBuff += this.enemy.iceCore ?? 0; + }); + col.haloList.push({ + type: 'square', + data: { x: this.x, y: this.y, d: 5 }, + special: 26, + from: this + }); + this.providedHalo.add(26); + break; + case 27: + square5.push(e => { + e.atkBuff += this.enemy.fireCore ?? 0; + }); + col.haloList.push({ + type: 'square', + data: { x: this.x, y: this.y, d: 5 }, + special: 27, + from: this + }); + this.providedHalo.add(27); + break; + } } col.applyHalo('square', { x: this.x, y: this.y, d: 7 }, square7); @@ -538,32 +538,31 @@ export class DamageEnemy { // 射击 if (this.info.special.includes(24)) { - const dirs: Dir[] = ['left', 'down', 'up', 'right']; - const dam = Math.max((enemy.atk ?? 0) - hero.def!, 0); - const objs = core.getMapBlocksObj(this.floorId); - - for (const dir of dirs) { - let x = this.x; - let y = this.y; - const { x: dx, y: dy } = core.utils.scan[dir]; - while (x >= 0 && y >= 0 && x < w && y < h) { - x += dx; - y += dy; - const loc = `${x},${y}` as LocString; - const block = objs[loc]; - if ( - block && - block.event.noPass && - block.event.cls !== 'enemys' && - block.event.cls !== 'enemy48' && - block.id !== 141 && - block.id !== 151 - ) { - break; - } - this.setMapDamage(damage, loc, dam, '射击'); - } - } + // const dirs: Dir[] = ['left', 'down', 'up', 'right']; + // const dam = Math.max((enemy.atk ?? 0) - hero.def!, 0); + // const objs = core.getMapBlocksObj(this.floorId); + // for (const dir of dirs) { + // let x = this.x; + // let y = this.y; + // const { x: dx, y: dy } = core.utils.scan[dir]; + // while (x >= 0 && y >= 0 && x < w && y < h) { + // x += dx; + // y += dy; + // const loc = `${x},${y}` as LocString; + // const block = objs[loc]; + // if ( + // block && + // block.event.noPass && + // block.event.cls !== 'enemys' && + // block.event.cls !== 'enemy48' && + // block.id !== 141 && + // block.id !== 151 + // ) { + // break; + // } + // this.setMapDamage(damage, loc, dam, '射击'); + // } + // } } return damage; @@ -583,27 +582,8 @@ export class DamageEnemy { private calEnemyDamageOf(hero: Partial, enemy: EnemyInfo) { const status = getHeroStatusOf(hero, Damage.realStatus, this.floorId); let damage = Damage.calDamageWith(enemy, status) ?? Infinity; - let skill = -1; - // 自动切换技能 - if (flags.autoSkill) { - for (let i = 0; i < skills.length; i++) { - const [unlock, condition] = skills[i]; - if (!flags[unlock]) continue; - flags[condition] = true; - const status = getHeroStatusOf(hero, Damage.realStatus); - - const d = Damage.calDamageWith(enemy, status) ?? Infinity; - - if (d < damage) { - damage = d; - skill = i; - } - flags[condition] = false; - } - } - - return { damage, skill }; + return { damage }; } /** @@ -687,7 +667,7 @@ export class DamageEnemy { } if (i++ >= 10000) { console.warn( - `Unexpected endless loop in calculating critical.` + + `Unexpected long loop in calculating critical.` + `Enemy Id: ${this.id}. Loc: ${this.x},${this.y}. Floor: ${this.floorId}` ); break; @@ -742,51 +722,14 @@ export class DamageEnemy { return Infinity; } - // 列方程求解,拿笔算一下就知道了 - // 饥渴,会偷取勇士攻击 - if (info.special.includes(7)) { - if (info.damageDecline === 0) { - return add / (1 - this.enemy.hungry! / 100); - } else { - return ( - (info.hp / (1 - info.damageDecline / 100) - - core.status.hero.mana + - info.def) / - (1 - this.enemy.hungry! / 100) - ); - } - } - - // 霜冻 - if (info.special.includes(20) && !core.hasEquip('I589')) { - return ( - info.def + - info.hp / (1 - this.enemy.ice! / 100) - - core.status.hero.mana - ); - } - - if (info.damageDecline !== 0) { - return ( - info.def + - info.hp / (1 - info.damageDecline / 100) - - core.status.hero.mana - ); - } else { - return add; - } + return add; } } -/** - * 主动技能列表 - */ -const skills: [unlock: string, condition: string][] = [ - ['bladeOn', 'blade'], - ['shieldOn', 'shield'] -]; - export namespace Damage { + /** 光环属性 */ + export const haloSpecials: Set = new Set(); + /** * 计算伤害时会用到的勇士属性,攻击防御,其余的不会有buff加成,直接从core.status.hero取 */ @@ -817,10 +760,7 @@ export namespace Damage { let heroPerDamage: number; // 绝对防御 - if (special.includes(9)) { - heroPerDamage = atk + mana - monDef; - if (heroPerDamage <= 0) return null; - } else if (special.includes(3)) { + if (special.includes(3)) { // 由于坚固的特性,只能放到这来计算了 if (atk > enemy.def) heroPerDamage = 1 + mana; else return null; @@ -830,13 +770,6 @@ export namespace Damage { else return null; } - // 霜冻 - if (special.includes(20) && !core.hasEquip('I589')) { - heroPerDamage *= 1 - enemy.ice! / 100; - } - - heroPerDamage *= 1 - info.damageDecline / 100; - let enemyPerDamage: number; // 魔攻 @@ -857,39 +790,8 @@ export namespace Damage { if (special.includes(5)) enemyPerDamage *= 3; if (special.includes(6)) enemyPerDamage *= enemy.n!; - // 苍蓝刻 - if (special.includes(28)) { - heroPerDamage *= 1 - enemy.paleShield! / 100; - } - let turn = Math.ceil(monHp / heroPerDamage); - // 致命一击 - if (special.includes(1)) { - const times = Math.floor(turn / 5); - damage += ((times * (enemy.crit! - 100)) / 100) * enemyPerDamage; - } - - // 勇气之刃 - if (turn > 1 && special.includes(10)) { - damage += (enemy.courage! / 100 - 1) * enemyPerDamage; - } - - // 勇气冲锋 - if (special.includes(11)) { - damage += (enemy.charge! / 100) * enemyPerDamage; - turn += 5; - } - - damage += (turn - 1) * enemyPerDamage; - // 无上之盾 - if (flags.superSheild) { - damage -= mdef / 10; - } - // 生命回复 - damage -= hpmax * turn; - if (flags.hard === 1) damage *= 0.9; - return damage; } diff --git a/src/game/system.ts b/src/game/system.ts index 2ad8ab1..fcc4c18 100644 --- a/src/game/system.ts +++ b/src/game/system.ts @@ -105,7 +105,6 @@ interface VariableInterface { settingStorage: GameStorage; status: Ref; // 定义于游戏进程,渲染进程依然可用 - haloSpecials: number[]; enemySpecials: typeof specials; } @@ -519,14 +518,18 @@ function rewrite, T = O>( ); } if (type === 'full') { + function res(this: T, ...params: any[]) { + // @ts-ignore + return re.call(rebind ?? this, ...params); + } // @ts-ignore - return (base[key] = re.bind(rebind ?? base)); + return (base[key] = res); } else if (type === 'add') { const origin = base[key]; function res(this: T, ...params: [..._F[0], ...any[]]) { - const v = (origin as _Func).call(bind ?? base, ...params); + const v = (origin as _Func).call(bind ?? this, ...params); // @ts-ignore - const ret = re.call(rebind ?? base, v, ...params); + const ret = re.call(rebind ?? this, v, ...params); return ret; } // @ts-ignore @@ -535,8 +538,8 @@ function rewrite, T = O>( const origin = base[key]; function res(this: T, ...params: [..._F[0], ...any[]]) { // @ts-ignore - re.call(rebind ?? base, ...params); - const ret = (origin as _Func).call(bind ?? base, ...params); + re.call(rebind ?? this, ...params); + const ret = (origin as _Func).call(bind ?? this, ...params); return ret; } // @ts-ignore diff --git a/src/plugin/use.ts b/src/plugin/use.ts index 1cc799a..96ad41b 100644 --- a/src/plugin/use.ts +++ b/src/plugin/use.ts @@ -30,7 +30,7 @@ checkMobile(); function checkMobile() { if (isMobile && !alerted) { alert( - '手机端建议使用自带的浏览器进行游玩,并在进入游戏后开启游戏内的全屏设置游玩' + '手机端建议使用新版APP或者自带的浏览器进行游玩,并在进入游戏后开启游戏内的全屏设置游玩' ); alerted = true; } diff --git a/src/source/cls.d.ts b/src/source/cls.d.ts index b717cee..6bfc2f7 100644 --- a/src/source/cls.d.ts +++ b/src/source/cls.d.ts @@ -4,7 +4,7 @@ interface IdToCls { blueWall: 'animates'; star: 'animates'; lava: 'animates'; - ice: 'terrains'; + ice: 'animates'; blueShopLeft: 'terrains'; blueShopRight: 'terrains'; pinkShopLeft: 'terrains'; @@ -13,7 +13,7 @@ interface IdToCls { poisonNet: 'animates'; weakNet: 'animates'; curseNet: 'animates'; - blueWater: 'animates'; + blueLava: 'animates'; water: 'animates'; autotile: 'autotile'; yellowKey: 'items'; @@ -58,7 +58,7 @@ interface IdToCls { curseWine: 'items'; superWine: 'items'; dagger: 'items'; - silverCoin: 'items'; + pack: 'items'; amulet: 'items'; hammer: 'items'; lifeWand: 'items'; @@ -85,10 +85,6 @@ interface IdToCls { crystalBottom: 'animates'; fire: 'animates'; switch: 'animates'; - steelDoor2: 'animates'; - steelDoor3: 'animates'; - iceDoor: 'animates'; - iceDoor2: 'animates'; magentaWall: 'animates'; man: 'npcs'; trader: 'npcs'; @@ -108,16 +104,6 @@ interface IdToCls { npc3: 'npc48'; greenMan: 'npcs'; blueTrader: 'npcs'; - redMSNpc: 'npcs'; - blackTrader: 'npcs'; - autotile4: 'autotile'; - autotile5: 'autotile'; - autotile6: 'autotile'; - autotile7: 'autotile'; - autotile8: 'autotile'; - autotile9: 'autotile'; - autotile10: 'autotile'; - autotile11: 'autotile'; autotile1: 'autotile'; autotile2: 'autotile'; autotile3: 'autotile'; @@ -131,22 +117,6 @@ interface IdToCls { flower: 'terrains'; box: 'terrains'; boxed: 'terrains'; - octopusLeftTop: 'npcs'; - octopusTop: 'npcs'; - octopusRightTop: 'npcs'; - octopusLeft: 'npcs'; - octopusCenter: 'npcs'; - octopusRight: 'npcs'; - octopusLeftBottom: 'npcs'; - octopusRightBottom: 'npcs'; - dragonLeftTop: 'npcs'; - dragonTop: 'npcs'; - dragonRightTop: 'npcs'; - dragonLeft: 'npcs'; - dragonCenter: 'npcs'; - dragonRight: 'npcs'; - dragonLeftBottom: 'npcs'; - dragonRightBottom: 'npcs'; greenSlime: 'enemys'; redSlime: 'enemys'; blackSlime: 'enemys'; @@ -214,15 +184,10 @@ interface IdToCls { silverSlimelord: 'enemys'; goldSlimelord: 'enemys'; grayRock: 'enemys'; - blueRock: 'enemys'; - skeletonLite: 'enemys'; greenKnight: 'enemys'; bowman: 'enemys'; - liteBowman: 'enemys'; - crimsonZombie: 'enemys'; - frozenSkeleton: 'enemys'; + purpleBowman: 'enemys'; watcherSlime: 'enemys'; - mutantSlimeman: 'enemys'; frostBat: 'enemys'; devilKnight: 'enemys'; grayPriest: 'enemys'; @@ -246,422 +211,28 @@ interface IdToCls { sWallTLR: 'terrains'; sWallTBR: 'terrains'; sWallTBL: 'terrains'; - I319: 'items'; - I320: 'items'; - I321: 'items'; - I322: 'items'; - I323: 'items'; - I324: 'items'; - I325: 'items'; - I326: 'items'; - I327: 'items'; - I328: 'items'; - I329: 'items'; - I330: 'items'; - T331: 'terrains'; - T332: 'terrains'; - T333: 'terrains'; - T334: 'terrains'; - T335: 'terrains'; - T336: 'terrains'; - T337: 'terrains'; - T338: 'terrains'; - T339: 'terrains'; - T340: 'terrains'; - T341: 'terrains'; - T342: 'terrains'; - T343: 'terrains'; - T344: 'terrains'; - T345: 'terrains'; - T346: 'terrains'; - T347: 'terrains'; - T348: 'terrains'; - T349: 'terrains'; - T350: 'terrains'; - T351: 'terrains'; - T352: 'terrains'; - T353: 'terrains'; - T354: 'terrains'; - T355: 'terrains'; - T356: 'terrains'; - T357: 'terrains'; - T358: 'terrains'; - T359: 'terrains'; - T360: 'terrains'; - T361: 'terrains'; - T362: 'terrains'; - T363: 'terrains'; - T364: 'terrains'; - T365: 'terrains'; - T366: 'terrains'; - N367: 'npc48'; - E368: 'enemys'; - E369: 'enemys'; - E370: 'enemys'; - E371: 'enemys'; - E372: 'enemys'; - E373: 'enemys'; - E374: 'enemys'; - E375: 'enemys'; - I376: 'items'; - I377: 'items'; - I378: 'items'; - I379: 'items'; - I380: 'items'; - I381: 'items'; - I382: 'items'; - I383: 'items'; - I384: 'items'; - I385: 'items'; - I386: 'items'; - I387: 'items'; - I388: 'items'; - I389: 'items'; - I390: 'items'; - I391: 'items'; - I392: 'items'; - I393: 'items'; - I394: 'items'; - I395: 'items'; - I396: 'items'; - I397: 'items'; - I398: 'items'; - I399: 'items'; - I400: 'items'; - I401: 'items'; - I402: 'items'; - I403: 'items'; - I404: 'items'; - I405: 'items'; - I406: 'items'; - I407: 'items'; - I408: 'items'; - I409: 'items'; - I410: 'items'; - I411: 'items'; - I412: 'items'; - I413: 'items'; - I414: 'items'; - I415: 'items'; - I416: 'items'; - I417: 'items'; - I418: 'items'; - I419: 'items'; - I420: 'items'; - I421: 'items'; - I422: 'items'; - I423: 'items'; - I424: 'items'; - I425: 'items'; - I426: 'items'; - I427: 'items'; - I428: 'items'; - I429: 'items'; - I430: 'items'; - I431: 'items'; - I432: 'items'; - I433: 'items'; - I434: 'items'; - I435: 'items'; - I436: 'items'; - I437: 'items'; - I438: 'items'; - I439: 'items'; - I440: 'items'; - I441: 'items'; - I442: 'items'; - I443: 'items'; - I444: 'items'; - I445: 'items'; - I446: 'items'; - I447: 'items'; - I448: 'items'; - I449: 'items'; - I450: 'items'; - I451: 'items'; - I452: 'items'; - I453: 'items'; - I454: 'items'; - I455: 'items'; - I456: 'items'; - I457: 'items'; - I458: 'items'; - I459: 'items'; - I460: 'items'; - I461: 'items'; - I462: 'items'; - I463: 'items'; - I464: 'items'; - I465: 'items'; - I466: 'items'; - I467: 'items'; - I468: 'items'; - I469: 'items'; - I470: 'items'; - I471: 'items'; - I472: 'items'; - I473: 'items'; - I474: 'items'; - I475: 'items'; - I476: 'items'; - I477: 'items'; - I478: 'items'; - I479: 'items'; - I480: 'items'; - I481: 'items'; - I482: 'items'; - I483: 'items'; - I484: 'items'; - I485: 'items'; - I486: 'items'; - I487: 'items'; - I488: 'items'; - I489: 'items'; - I490: 'items'; - I491: 'items'; - A492: 'animates'; - A493: 'animates'; - A494: 'animates'; - A495: 'animates'; - A496: 'animates'; - A497: 'animates'; - E498: 'enemys'; - E499: 'enemys'; - E500: 'enemys'; - E501: 'enemys'; - E502: 'enemys'; - E503: 'enemys'; - E504: 'enemys'; - E505: 'enemys'; - A506: 'animates'; - A507: 'animates'; - A508: 'animates'; - A509: 'animates'; - A510: 'animates'; - E511: 'enemys'; - E512: 'enemys'; - E513: 'enemys'; - E514: 'enemys'; - E515: 'enemys'; - T516: 'terrains'; - E517: 'enemys'; - E518: 'enemys'; - E519: 'enemys'; - E520: 'enemys'; - E521: 'enemys'; - E522: 'enemys'; - E523: 'enemys'; - E524: 'enemys'; - E525: 'enemys'; - T526: 'terrains'; - T527: 'terrains'; - T528: 'terrains'; - T529: 'terrains'; - T530: 'terrains'; - T531: 'terrains'; - N532: 'npcs'; - N533: 'npcs'; - N534: 'npcs'; - N535: 'npcs'; - E536: 'enemys'; - E537: 'enemys'; - E538: 'enemys'; - E539: 'enemys'; - A540: 'animates'; - A541: 'animates'; - A542: 'animates'; - A543: 'animates'; - E544: 'enemys'; - E545: 'enemys'; - E546: 'enemys'; - E547: 'enemys'; - E548: 'enemys'; - E549: 'enemys'; - E550: 'enemys'; - T551: 'terrains'; - T552: 'terrains'; - T553: 'terrains'; - T554: 'terrains'; - T555: 'terrains'; - E556: 'enemys'; - E557: 'enemys'; - I558: 'items'; - I559: 'items'; - I560: 'items'; - E561: 'enemys'; - E562: 'enemys'; - E563: 'enemys'; - E564: 'enemys'; - I565: 'items'; - E566: 'enemys'; - E567: 'enemys'; - E568: 'enemys'; - E569: 'enemys'; - E570: 'enemys'; - E571: 'enemys'; - E572: 'enemys'; - E573: 'enemys'; - I574: 'items'; - I575: 'items'; - E576: 'enemys'; - E577: 'enemys'; - E578: 'enemys'; - E579: 'enemys'; - T580: 'terrains'; - T581: 'terrains'; - T582: 'terrains'; - T583: 'terrains'; - T584: 'terrains'; - T585: 'terrains'; - T586: 'terrains'; - T587: 'terrains'; - T588: 'terrains'; - I589: 'items'; - E590: 'enemys'; - E591: 'enemys'; - E592: 'enemys'; - E593: 'enemys'; - E594: 'enemys'; - E595: 'enemys'; - E596: 'enemys'; - E597: 'enemys'; - E598: 'enemys'; - E599: 'enemys'; - E600: 'enemys'; - E601: 'enemys'; - E602: 'enemys'; - E603: 'enemys'; - T604: 'terrains'; - E605: 'enemys'; - E606: 'enemys'; - E607: 'enemys'; - E608: 'enemys'; - E609: 'enemys'; - E610: 'enemys'; - E611: 'enemys'; - E612: 'enemys'; - E613: 'enemys'; - E614: 'enemys'; - E615: 'enemys'; - E616: 'enemys'; - E617: 'enemys'; - E618: 'enemys'; - N619: 'npcs'; - N620: 'npcs'; - N621: 'npcs'; - N622: 'npcs'; - N623: 'npcs'; - N624: 'npcs'; - N625: 'npcs'; - N626: 'npcs'; - T627: 'terrains'; - T628: 'terrains'; - T629: 'terrains'; - N630: 'npc48'; - N631: 'npc48'; - N632: 'npc48'; - N633: 'npc48'; - N634: 'npc48'; - N635: 'npc48'; - N636: 'npc48'; - N637: 'npc48'; - N638: 'npc48'; - N639: 'npc48'; - T640: 'terrains'; - I641: 'items'; - I642: 'items'; - E643: 'enemys'; - E644: 'enemys'; - E645: 'enemys'; - E646: 'enemys'; - E647: 'enemys'; - T648: 'terrains'; - T649: 'terrains'; - T650: 'terrains'; - T651: 'terrains'; - T652: 'terrains'; - T653: 'terrains'; - T654: 'terrains'; - X20032: 'tileset'; - X20033: 'tileset'; - X20034: 'tileset'; - X20037: 'tileset'; - X20038: 'tileset'; - X20039: 'tileset'; - X20040: 'tileset'; - X20041: 'tileset'; - X20042: 'tileset'; - X20045: 'tileset'; - X20047: 'tileset'; - X20048: 'tileset'; - X20049: 'tileset'; - X20050: 'tileset'; - X20053: 'tileset'; - X20054: 'tileset'; - X20055: 'tileset'; - X20056: 'tileset'; - X20057: 'tileset'; - X20058: 'tileset'; - X20064: 'tileset'; - X20065: 'tileset'; - X20066: 'tileset'; - X20074: 'tileset'; - X20152: 'tileset'; - X20153: 'tileset'; - X30040: 'tileset'; - X30041: 'tileset'; - X30042: 'tileset'; - X30048: 'tileset'; - X30050: 'tileset'; - X30056: 'tileset'; - X30057: 'tileset'; - X30058: 'tileset'; - X30105: 'tileset'; - X30112: 'tileset'; - X30113: 'tileset'; - X30121: 'tileset'; - X30196: 'tileset'; - X30204: 'tileset'; - X70019: 'tileset'; - X70048: 'tileset'; - X70049: 'tileset'; - X70050: 'tileset'; - X70056: 'tileset'; - X70058: 'tileset'; - X70059: 'tileset'; - X70060: 'tileset'; - X70064: 'tileset'; - X70065: 'tileset'; - X70066: 'tileset'; - X70072: 'tileset'; - X70073: 'tileset'; - X70074: 'tileset'; - X70080: 'tileset'; - X70081: 'tileset'; - X70082: 'tileset'; - X70083: 'tileset'; - X70084: 'tileset'; - X70090: 'tileset'; - X70091: 'tileset'; - X70098: 'tileset'; - X70099: 'tileset'; - X70112: 'tileset'; - X70114: 'tileset'; - X70116: 'tileset'; - X70120: 'tileset'; - X70122: 'tileset'; - X70124: 'tileset'; - X70128: 'tileset'; - X70130: 'tileset'; - X70131: 'tileset'; - X70132: 'tileset'; - X70184: 'tileset'; - X70185: 'tileset'; - X70186: 'tileset'; - X70200: 'tileset'; - X70201: 'tileset'; - X70202: 'tileset'; - X90153: 'tileset'; - X90154: 'tileset'; - X90155: 'tileset'; + tallYellowDoor: 'npc48'; + tallBlueDoor: 'npc48'; + tallRedDoor: 'npc48'; + tallGreenDoor: 'npc48'; + tallSpecialDoor: 'npc48'; + tallSteelDoor: 'npc48'; + keiskeiFairy: 'enemys'; + tulipFairy: 'enemys'; + bearDown: 'enemy48'; + bearLeft: 'enemy48'; + bearRight: 'enemy48'; + bearUp: 'enemy48'; + I331: 'items'; + I332: 'items'; + I333: 'items'; + I334: 'items'; + I335: 'items'; + I336: 'items'; + I337: 'items'; + I338: 'items'; + I339: 'items'; + I340: 'items'; + I341: 'items'; + I342: 'items'; } \ No newline at end of file diff --git a/src/source/items.d.ts b/src/source/items.d.ts index 307232e..4f56dd0 100644 --- a/src/source/items.d.ts +++ b/src/source/items.d.ts @@ -12,18 +12,17 @@ interface ItemDeclaration { greenPotion: 'items'; sword0: 'items'; sword1: 'equips'; - sword2: 'equips'; + sword2: 'items'; sword3: 'items'; sword4: 'items'; sword5: 'items'; shield0: 'items'; - shield1: 'equips'; - shield2: 'equips'; + shield1: 'items'; + shield2: 'items'; shield3: 'items'; shield4: 'items'; shield5: 'items'; superPotion: 'items'; - silverCoin: 'items'; book: 'constants'; fly: 'constants'; coin: 'constants'; @@ -37,7 +36,7 @@ interface ItemDeclaration { pickaxe: 'tools'; icePickaxe: 'tools'; bomb: 'tools'; - centerFly: 'constants'; + centerFly: 'tools'; upFly: 'tools'; downFly: 'tools'; earthquake: 'tools'; @@ -49,142 +48,18 @@ interface ItemDeclaration { lifeWand: 'tools'; jumpShoes: 'tools'; skill1: 'constants'; - wand: 'constants'; - I319: 'items'; - I320: 'items'; - I321: 'items'; - I322: 'constants'; - I323: 'items'; - I324: 'items'; - I325: 'items'; - I326: 'items'; - I327: 'items'; - I328: 'items'; - I329: 'items'; - I330: 'constants'; - I376: 'items'; - I377: 'items'; - I378: 'items'; - I379: 'items'; - I380: 'items'; - I381: 'items'; - I382: 'items'; - I383: 'items'; - I384: 'items'; - I385: 'items'; - I386: 'items'; - I387: 'items'; - I388: 'items'; - I389: 'items'; - I390: 'items'; - I391: 'items'; - I392: 'items'; - I393: 'items'; - I394: 'items'; - I395: 'items'; - I396: 'items'; - I397: 'items'; - I398: 'items'; - I399: 'items'; - I400: 'items'; - I401: 'items'; - I402: 'items'; - I403: 'items'; - I404: 'items'; - I405: 'items'; - I406: 'items'; - I407: 'items'; - I408: 'items'; - I409: 'items'; - I410: 'items'; - I411: 'items'; - I412: 'items'; - I413: 'items'; - I414: 'items'; - I415: 'items'; - I416: 'items'; - I417: 'items'; - I418: 'items'; - I419: 'items'; - I420: 'items'; - I421: 'items'; - I422: 'items'; - I423: 'items'; - I424: 'items'; - I425: 'items'; - I426: 'items'; - I427: 'items'; - I428: 'items'; - I429: 'items'; - I430: 'items'; - I431: 'items'; - I432: 'items'; - I433: 'items'; - I434: 'items'; - I435: 'items'; - I436: 'items'; - I437: 'items'; - I438: 'items'; - I439: 'items'; - I440: 'items'; - I441: 'items'; - I442: 'items'; - I443: 'items'; - I444: 'items'; - I445: 'items'; - I446: 'items'; - I447: 'items'; - I448: 'items'; - I449: 'items'; - I450: 'items'; - I451: 'items'; - I452: 'items'; - I453: 'items'; - I454: 'items'; - I455: 'items'; - I456: 'items'; - I457: 'items'; - I458: 'items'; - I459: 'items'; - I460: 'items'; - I461: 'items'; - I462: 'items'; - I463: 'items'; - I464: 'items'; - I465: 'items'; - I466: 'items'; - I467: 'items'; - I468: 'items'; - I469: 'items'; - I470: 'items'; - I471: 'items'; - I472: 'items'; - I473: 'items'; - I474: 'items'; - I475: 'items'; - I476: 'items'; - I477: 'items'; - I478: 'items'; - I479: 'items'; - I480: 'items'; - I481: 'items'; - I482: 'items'; - I483: 'items'; - I484: 'items'; - I485: 'items'; - I486: 'items'; - I487: 'items'; - I488: 'items'; - I489: 'items'; - I490: 'items'; - I491: 'items'; - I558: 'constants'; - I559: 'constants'; - I560: 'constants'; - I565: 'constants'; - I574: 'items'; - I575: 'equips'; - I589: 'equips'; - I641: 'equips'; - I642: 'constants'; + wand: 'items'; + pack: 'items'; + I331: 'items'; + I332: 'items'; + I333: 'items'; + I334: 'items'; + I335: 'items'; + I336: 'items'; + I337: 'items'; + I338: 'items'; + I339: 'items'; + I340: 'items'; + I341: 'items'; + I342: 'constants'; } \ No newline at end of file diff --git a/src/source/maps.d.ts b/src/source/maps.d.ts index f16d744..ae63f39 100644 --- a/src/source/maps.d.ts +++ b/src/source/maps.d.ts @@ -13,7 +13,7 @@ interface IdToNumber { poisonNet: 12; weakNet: 13; curseNet: 14; - blueWater: 15; + blueLava: 15; water: 16; autotile: 20; yellowKey: 21; @@ -58,7 +58,7 @@ interface IdToNumber { curseWine: 60; superWine: 61; dagger: 62; - silverCoin: 63; + pack: 63; amulet: 64; hammer: 65; lifeWand: 68; @@ -85,10 +85,6 @@ interface IdToNumber { crystalBottom: 102; fire: 103; switch: 104; - steelDoor2: 105; - steelDoor3: 106; - iceDoor: 107; - iceDoor2: 108; magentaWall: 109; man: 121; trader: 122; @@ -108,16 +104,6 @@ interface IdToNumber { npc3: 136; greenMan: 137; blueTrader: 138; - redMSNpc: 139; - blackTrader: 140; - autotile4: 141; - autotile5: 142; - autotile6: 143; - autotile7: 144; - autotile8: 145; - autotile9: 146; - autotile10: 147; - autotile11: 148; autotile1: 151; autotile2: 152; autotile3: 153; @@ -131,22 +117,6 @@ interface IdToNumber { flower: 168; box: 169; boxed: 170; - octopusLeftTop: 181; - octopusTop: 182; - octopusRightTop: 183; - octopusLeft: 184; - octopusCenter: 185; - octopusRight: 186; - octopusLeftBottom: 187; - octopusRightBottom: 188; - dragonLeftTop: 189; - dragonTop: 190; - dragonRightTop: 191; - dragonLeft: 192; - dragonCenter: 193; - dragonRight: 194; - dragonLeftBottom: 195; - dragonRightBottom: 196; greenSlime: 201; redSlime: 202; blackSlime: 203; @@ -214,15 +184,10 @@ interface IdToNumber { silverSlimelord: 265; goldSlimelord: 266; grayRock: 267; - blueRock: 268; - skeletonLite: 269; greenKnight: 270; bowman: 271; - liteBowman: 272; - crimsonZombie: 273; - frozenSkeleton: 274; + purpleBowman: 272; watcherSlime: 275; - mutantSlimeman: 276; frostBat: 277; devilKnight: 278; grayPriest: 279; @@ -246,424 +211,30 @@ interface IdToNumber { sWallTLR: 316; sWallTBR: 317; sWallTBL: 318; - I319: 319; - I320: 320; - I321: 321; - I322: 322; - I323: 323; - I324: 324; - I325: 325; - I326: 326; - I327: 327; - I328: 328; - I329: 329; - I330: 330; - T331: 331; - T332: 332; - T333: 333; - T334: 334; - T335: 335; - T336: 336; - T337: 337; - T338: 338; - T339: 339; - T340: 340; - T341: 341; - T342: 342; - T343: 343; - T344: 344; - T345: 345; - T346: 346; - T347: 347; - T348: 348; - T349: 349; - T350: 350; - T351: 351; - T352: 352; - T353: 353; - T354: 354; - T355: 355; - T356: 356; - T357: 357; - T358: 358; - T359: 359; - T360: 360; - T361: 361; - T362: 362; - T363: 363; - T364: 364; - T365: 365; - T366: 366; - N367: 367; - E368: 368; - E369: 369; - E370: 370; - E371: 371; - E372: 372; - E373: 373; - E374: 374; - E375: 375; - I376: 376; - I377: 377; - I378: 378; - I379: 379; - I380: 380; - I381: 381; - I382: 382; - I383: 383; - I384: 384; - I385: 385; - I386: 386; - I387: 387; - I388: 388; - I389: 389; - I390: 390; - I391: 391; - I392: 392; - I393: 393; - I394: 394; - I395: 395; - I396: 396; - I397: 397; - I398: 398; - I399: 399; - I400: 400; - I401: 401; - I402: 402; - I403: 403; - I404: 404; - I405: 405; - I406: 406; - I407: 407; - I408: 408; - I409: 409; - I410: 410; - I411: 411; - I412: 412; - I413: 413; - I414: 414; - I415: 415; - I416: 416; - I417: 417; - I418: 418; - I419: 419; - I420: 420; - I421: 421; - I422: 422; - I423: 423; - I424: 424; - I425: 425; - I426: 426; - I427: 427; - I428: 428; - I429: 429; - I430: 430; - I431: 431; - I432: 432; - I433: 433; - I434: 434; - I435: 435; - I436: 436; - I437: 437; - I438: 438; - I439: 439; - I440: 440; - I441: 441; - I442: 442; - I443: 443; - I444: 444; - I445: 445; - I446: 446; - I447: 447; - I448: 448; - I449: 449; - I450: 450; - I451: 451; - I452: 452; - I453: 453; - I454: 454; - I455: 455; - I456: 456; - I457: 457; - I458: 458; - I459: 459; - I460: 460; - I461: 461; - I462: 462; - I463: 463; - I464: 464; - I465: 465; - I466: 466; - I467: 467; - I468: 468; - I469: 469; - I470: 470; - I471: 471; - I472: 472; - I473: 473; - I474: 474; - I475: 475; - I476: 476; - I477: 477; - I478: 478; - I479: 479; - I480: 480; - I481: 481; - I482: 482; - I483: 483; - I484: 484; - I485: 485; - I486: 486; - I487: 487; - I488: 488; - I489: 489; - I490: 490; - I491: 491; - A492: 492; - A493: 493; - A494: 494; - A495: 495; - A496: 496; - A497: 497; - E498: 498; - E499: 499; - E500: 500; - E501: 501; - E502: 502; - E503: 503; - E504: 504; - E505: 505; - A506: 506; - A507: 507; - A508: 508; - A509: 509; - A510: 510; - E511: 511; - E512: 512; - E513: 513; - E514: 514; - E515: 515; - T516: 516; - E517: 517; - E518: 518; - E519: 519; - E520: 520; - E521: 521; - E522: 522; - E523: 523; - E524: 524; - E525: 525; - T526: 526; - T527: 527; - T528: 528; - T529: 529; - T530: 530; - T531: 531; - N532: 532; - N533: 533; - N534: 534; - N535: 535; - E536: 536; - E537: 537; - E538: 538; - E539: 539; - A540: 540; - A541: 541; - A542: 542; - A543: 543; - E544: 544; - E545: 545; - E546: 546; - E547: 547; - E548: 548; - E549: 549; - E550: 550; - T551: 551; - T552: 552; - T553: 553; - T554: 554; - T555: 555; - E556: 556; - E557: 557; - I558: 558; - I559: 559; - I560: 560; - E561: 561; - E562: 562; - E563: 563; - E564: 564; - I565: 565; - E566: 566; - E567: 567; - E568: 568; - E569: 569; - E570: 570; - E571: 571; - E572: 572; - E573: 573; - I574: 574; - I575: 575; - E576: 576; - E577: 577; - E578: 578; - E579: 579; - T580: 580; - T581: 581; - T582: 582; - T583: 583; - T584: 584; - T585: 585; - T586: 586; - T587: 587; - T588: 588; - I589: 589; - E590: 590; - E591: 591; - E592: 592; - E593: 593; - E594: 594; - E595: 595; - E596: 596; - E597: 597; - E598: 598; - E599: 599; - E600: 600; - E601: 601; - E602: 602; - E603: 603; - T604: 604; - E605: 605; - E606: 606; - E607: 607; - E608: 608; - E609: 609; - E610: 610; - E611: 611; - E612: 612; - E613: 613; - E614: 614; - E615: 615; - E616: 616; - E617: 617; - E618: 618; - N619: 619; - N620: 620; - N621: 621; - N622: 622; - N623: 623; - N624: 624; - N625: 625; - N626: 626; - T627: 627; - T628: 628; - T629: 629; - N630: 630; - N631: 631; - N632: 632; - N633: 633; - N634: 634; - N635: 635; - N636: 636; - N637: 637; - N638: 638; - N639: 639; - T640: 640; - I641: 641; - I642: 642; - E643: 643; - E644: 644; - E645: 645; - E646: 646; - E647: 647; - T648: 648; - T649: 649; - T650: 650; - T651: 651; - T652: 652; - T653: 653; - T654: 654; - X20032: 20032; - X20033: 20033; - X20034: 20034; - X20037: 20037; - X20038: 20038; - X20039: 20039; - X20040: 20040; - X20041: 20041; - X20042: 20042; - X20045: 20045; - X20047: 20047; - X20048: 20048; - X20049: 20049; - X20050: 20050; - X20053: 20053; - X20054: 20054; - X20055: 20055; - X20056: 20056; - X20057: 20057; - X20058: 20058; - X20064: 20064; - X20065: 20065; - X20066: 20066; - X20074: 20074; - X20152: 20152; - X20153: 20153; - X30040: 30040; - X30041: 30041; - X30042: 30042; - X30048: 30048; - X30050: 30050; - X30056: 30056; - X30057: 30057; - X30058: 30058; - X30105: 30105; - X30112: 30112; - X30113: 30113; - X30121: 30121; - X30196: 30196; - X30204: 30204; - X70019: 70019; - X70048: 70048; - X70049: 70049; - X70050: 70050; - X70056: 70056; - X70058: 70058; - X70059: 70059; - X70060: 70060; - X70064: 70064; - X70065: 70065; - X70066: 70066; - X70072: 70072; - X70073: 70073; - X70074: 70074; - X70080: 70080; - X70081: 70081; - X70082: 70082; - X70083: 70083; - X70084: 70084; - X70090: 70090; - X70091: 70091; - X70098: 70098; - X70099: 70099; - X70112: 70112; - X70114: 70114; - X70116: 70116; - X70120: 70120; - X70122: 70122; - X70124: 70124; - X70128: 70128; - X70130: 70130; - X70131: 70131; - X70132: 70132; - X70184: 70184; - X70185: 70185; - X70186: 70186; - X70200: 70200; - X70201: 70201; - X70202: 70202; - X90153: 90153; - X90154: 90154; - X90155: 90155; + tallYellowDoor: 319; + tallBlueDoor: 320; + tallRedDoor: 321; + tallGreenDoor: 322; + tallSpecialDoor: 323; + tallSteelDoor: 324; + keiskeiFairy: 325; + tulipFairy: 326; + bearDown: 327; + bearLeft: 328; + bearRight: 329; + bearUp: 330; + I331: 331; + I332: 332; + I333: 333; + I334: 334; + I335: 335; + I336: 336; + I337: 337; + I338: 338; + I339: 339; + I340: 340; + I341: 341; + I342: 342; } interface NumberToId { 1: 'yellowWall'; @@ -680,7 +251,7 @@ interface NumberToId { 12: 'poisonNet'; 13: 'weakNet'; 14: 'curseNet'; - 15: 'blueWater'; + 15: 'blueLava'; 16: 'water'; 20: 'autotile'; 21: 'yellowKey'; @@ -725,7 +296,7 @@ interface NumberToId { 60: 'curseWine'; 61: 'superWine'; 62: 'dagger'; - 63: 'silverCoin'; + 63: 'pack'; 64: 'amulet'; 65: 'hammer'; 68: 'lifeWand'; @@ -752,10 +323,6 @@ interface NumberToId { 102: 'crystalBottom'; 103: 'fire'; 104: 'switch'; - 105: 'steelDoor2'; - 106: 'steelDoor3'; - 107: 'iceDoor'; - 108: 'iceDoor2'; 109: 'magentaWall'; 121: 'man'; 122: 'trader'; @@ -775,16 +342,6 @@ interface NumberToId { 136: 'npc3'; 137: 'greenMan'; 138: 'blueTrader'; - 139: 'redMSNpc'; - 140: 'blackTrader'; - 141: 'autotile4'; - 142: 'autotile5'; - 143: 'autotile6'; - 144: 'autotile7'; - 145: 'autotile8'; - 146: 'autotile9'; - 147: 'autotile10'; - 148: 'autotile11'; 151: 'autotile1'; 152: 'autotile2'; 153: 'autotile3'; @@ -798,22 +355,6 @@ interface NumberToId { 168: 'flower'; 169: 'box'; 170: 'boxed'; - 181: 'octopusLeftTop'; - 182: 'octopusTop'; - 183: 'octopusRightTop'; - 184: 'octopusLeft'; - 185: 'octopusCenter'; - 186: 'octopusRight'; - 187: 'octopusLeftBottom'; - 188: 'octopusRightBottom'; - 189: 'dragonLeftTop'; - 190: 'dragonTop'; - 191: 'dragonRightTop'; - 192: 'dragonLeft'; - 193: 'dragonCenter'; - 194: 'dragonRight'; - 195: 'dragonLeftBottom'; - 196: 'dragonRightBottom'; 201: 'greenSlime'; 202: 'redSlime'; 203: 'blackSlime'; @@ -881,15 +422,10 @@ interface NumberToId { 265: 'silverSlimelord'; 266: 'goldSlimelord'; 267: 'grayRock'; - 268: 'blueRock'; - 269: 'skeletonLite'; 270: 'greenKnight'; 271: 'bowman'; - 272: 'liteBowman'; - 273: 'crimsonZombie'; - 274: 'frozenSkeleton'; + 272: 'purpleBowman'; 275: 'watcherSlime'; - 276: 'mutantSlimeman'; 277: 'frostBat'; 278: 'devilKnight'; 279: 'grayPriest'; @@ -913,422 +449,28 @@ interface NumberToId { 316: 'sWallTLR'; 317: 'sWallTBR'; 318: 'sWallTBL'; - 319: 'I319'; - 320: 'I320'; - 321: 'I321'; - 322: 'I322'; - 323: 'I323'; - 324: 'I324'; - 325: 'I325'; - 326: 'I326'; - 327: 'I327'; - 328: 'I328'; - 329: 'I329'; - 330: 'I330'; - 331: 'T331'; - 332: 'T332'; - 333: 'T333'; - 334: 'T334'; - 335: 'T335'; - 336: 'T336'; - 337: 'T337'; - 338: 'T338'; - 339: 'T339'; - 340: 'T340'; - 341: 'T341'; - 342: 'T342'; - 343: 'T343'; - 344: 'T344'; - 345: 'T345'; - 346: 'T346'; - 347: 'T347'; - 348: 'T348'; - 349: 'T349'; - 350: 'T350'; - 351: 'T351'; - 352: 'T352'; - 353: 'T353'; - 354: 'T354'; - 355: 'T355'; - 356: 'T356'; - 357: 'T357'; - 358: 'T358'; - 359: 'T359'; - 360: 'T360'; - 361: 'T361'; - 362: 'T362'; - 363: 'T363'; - 364: 'T364'; - 365: 'T365'; - 366: 'T366'; - 367: 'N367'; - 368: 'E368'; - 369: 'E369'; - 370: 'E370'; - 371: 'E371'; - 372: 'E372'; - 373: 'E373'; - 374: 'E374'; - 375: 'E375'; - 376: 'I376'; - 377: 'I377'; - 378: 'I378'; - 379: 'I379'; - 380: 'I380'; - 381: 'I381'; - 382: 'I382'; - 383: 'I383'; - 384: 'I384'; - 385: 'I385'; - 386: 'I386'; - 387: 'I387'; - 388: 'I388'; - 389: 'I389'; - 390: 'I390'; - 391: 'I391'; - 392: 'I392'; - 393: 'I393'; - 394: 'I394'; - 395: 'I395'; - 396: 'I396'; - 397: 'I397'; - 398: 'I398'; - 399: 'I399'; - 400: 'I400'; - 401: 'I401'; - 402: 'I402'; - 403: 'I403'; - 404: 'I404'; - 405: 'I405'; - 406: 'I406'; - 407: 'I407'; - 408: 'I408'; - 409: 'I409'; - 410: 'I410'; - 411: 'I411'; - 412: 'I412'; - 413: 'I413'; - 414: 'I414'; - 415: 'I415'; - 416: 'I416'; - 417: 'I417'; - 418: 'I418'; - 419: 'I419'; - 420: 'I420'; - 421: 'I421'; - 422: 'I422'; - 423: 'I423'; - 424: 'I424'; - 425: 'I425'; - 426: 'I426'; - 427: 'I427'; - 428: 'I428'; - 429: 'I429'; - 430: 'I430'; - 431: 'I431'; - 432: 'I432'; - 433: 'I433'; - 434: 'I434'; - 435: 'I435'; - 436: 'I436'; - 437: 'I437'; - 438: 'I438'; - 439: 'I439'; - 440: 'I440'; - 441: 'I441'; - 442: 'I442'; - 443: 'I443'; - 444: 'I444'; - 445: 'I445'; - 446: 'I446'; - 447: 'I447'; - 448: 'I448'; - 449: 'I449'; - 450: 'I450'; - 451: 'I451'; - 452: 'I452'; - 453: 'I453'; - 454: 'I454'; - 455: 'I455'; - 456: 'I456'; - 457: 'I457'; - 458: 'I458'; - 459: 'I459'; - 460: 'I460'; - 461: 'I461'; - 462: 'I462'; - 463: 'I463'; - 464: 'I464'; - 465: 'I465'; - 466: 'I466'; - 467: 'I467'; - 468: 'I468'; - 469: 'I469'; - 470: 'I470'; - 471: 'I471'; - 472: 'I472'; - 473: 'I473'; - 474: 'I474'; - 475: 'I475'; - 476: 'I476'; - 477: 'I477'; - 478: 'I478'; - 479: 'I479'; - 480: 'I480'; - 481: 'I481'; - 482: 'I482'; - 483: 'I483'; - 484: 'I484'; - 485: 'I485'; - 486: 'I486'; - 487: 'I487'; - 488: 'I488'; - 489: 'I489'; - 490: 'I490'; - 491: 'I491'; - 492: 'A492'; - 493: 'A493'; - 494: 'A494'; - 495: 'A495'; - 496: 'A496'; - 497: 'A497'; - 498: 'E498'; - 499: 'E499'; - 500: 'E500'; - 501: 'E501'; - 502: 'E502'; - 503: 'E503'; - 504: 'E504'; - 505: 'E505'; - 506: 'A506'; - 507: 'A507'; - 508: 'A508'; - 509: 'A509'; - 510: 'A510'; - 511: 'E511'; - 512: 'E512'; - 513: 'E513'; - 514: 'E514'; - 515: 'E515'; - 516: 'T516'; - 517: 'E517'; - 518: 'E518'; - 519: 'E519'; - 520: 'E520'; - 521: 'E521'; - 522: 'E522'; - 523: 'E523'; - 524: 'E524'; - 525: 'E525'; - 526: 'T526'; - 527: 'T527'; - 528: 'T528'; - 529: 'T529'; - 530: 'T530'; - 531: 'T531'; - 532: 'N532'; - 533: 'N533'; - 534: 'N534'; - 535: 'N535'; - 536: 'E536'; - 537: 'E537'; - 538: 'E538'; - 539: 'E539'; - 540: 'A540'; - 541: 'A541'; - 542: 'A542'; - 543: 'A543'; - 544: 'E544'; - 545: 'E545'; - 546: 'E546'; - 547: 'E547'; - 548: 'E548'; - 549: 'E549'; - 550: 'E550'; - 551: 'T551'; - 552: 'T552'; - 553: 'T553'; - 554: 'T554'; - 555: 'T555'; - 556: 'E556'; - 557: 'E557'; - 558: 'I558'; - 559: 'I559'; - 560: 'I560'; - 561: 'E561'; - 562: 'E562'; - 563: 'E563'; - 564: 'E564'; - 565: 'I565'; - 566: 'E566'; - 567: 'E567'; - 568: 'E568'; - 569: 'E569'; - 570: 'E570'; - 571: 'E571'; - 572: 'E572'; - 573: 'E573'; - 574: 'I574'; - 575: 'I575'; - 576: 'E576'; - 577: 'E577'; - 578: 'E578'; - 579: 'E579'; - 580: 'T580'; - 581: 'T581'; - 582: 'T582'; - 583: 'T583'; - 584: 'T584'; - 585: 'T585'; - 586: 'T586'; - 587: 'T587'; - 588: 'T588'; - 589: 'I589'; - 590: 'E590'; - 591: 'E591'; - 592: 'E592'; - 593: 'E593'; - 594: 'E594'; - 595: 'E595'; - 596: 'E596'; - 597: 'E597'; - 598: 'E598'; - 599: 'E599'; - 600: 'E600'; - 601: 'E601'; - 602: 'E602'; - 603: 'E603'; - 604: 'T604'; - 605: 'E605'; - 606: 'E606'; - 607: 'E607'; - 608: 'E608'; - 609: 'E609'; - 610: 'E610'; - 611: 'E611'; - 612: 'E612'; - 613: 'E613'; - 614: 'E614'; - 615: 'E615'; - 616: 'E616'; - 617: 'E617'; - 618: 'E618'; - 619: 'N619'; - 620: 'N620'; - 621: 'N621'; - 622: 'N622'; - 623: 'N623'; - 624: 'N624'; - 625: 'N625'; - 626: 'N626'; - 627: 'T627'; - 628: 'T628'; - 629: 'T629'; - 630: 'N630'; - 631: 'N631'; - 632: 'N632'; - 633: 'N633'; - 634: 'N634'; - 635: 'N635'; - 636: 'N636'; - 637: 'N637'; - 638: 'N638'; - 639: 'N639'; - 640: 'T640'; - 641: 'I641'; - 642: 'I642'; - 643: 'E643'; - 644: 'E644'; - 645: 'E645'; - 646: 'E646'; - 647: 'E647'; - 648: 'T648'; - 649: 'T649'; - 650: 'T650'; - 651: 'T651'; - 652: 'T652'; - 653: 'T653'; - 654: 'T654'; - 20032: 'X20032'; - 20033: 'X20033'; - 20034: 'X20034'; - 20037: 'X20037'; - 20038: 'X20038'; - 20039: 'X20039'; - 20040: 'X20040'; - 20041: 'X20041'; - 20042: 'X20042'; - 20045: 'X20045'; - 20047: 'X20047'; - 20048: 'X20048'; - 20049: 'X20049'; - 20050: 'X20050'; - 20053: 'X20053'; - 20054: 'X20054'; - 20055: 'X20055'; - 20056: 'X20056'; - 20057: 'X20057'; - 20058: 'X20058'; - 20064: 'X20064'; - 20065: 'X20065'; - 20066: 'X20066'; - 20074: 'X20074'; - 20152: 'X20152'; - 20153: 'X20153'; - 30040: 'X30040'; - 30041: 'X30041'; - 30042: 'X30042'; - 30048: 'X30048'; - 30050: 'X30050'; - 30056: 'X30056'; - 30057: 'X30057'; - 30058: 'X30058'; - 30105: 'X30105'; - 30112: 'X30112'; - 30113: 'X30113'; - 30121: 'X30121'; - 30196: 'X30196'; - 30204: 'X30204'; - 70019: 'X70019'; - 70048: 'X70048'; - 70049: 'X70049'; - 70050: 'X70050'; - 70056: 'X70056'; - 70058: 'X70058'; - 70059: 'X70059'; - 70060: 'X70060'; - 70064: 'X70064'; - 70065: 'X70065'; - 70066: 'X70066'; - 70072: 'X70072'; - 70073: 'X70073'; - 70074: 'X70074'; - 70080: 'X70080'; - 70081: 'X70081'; - 70082: 'X70082'; - 70083: 'X70083'; - 70084: 'X70084'; - 70090: 'X70090'; - 70091: 'X70091'; - 70098: 'X70098'; - 70099: 'X70099'; - 70112: 'X70112'; - 70114: 'X70114'; - 70116: 'X70116'; - 70120: 'X70120'; - 70122: 'X70122'; - 70124: 'X70124'; - 70128: 'X70128'; - 70130: 'X70130'; - 70131: 'X70131'; - 70132: 'X70132'; - 70184: 'X70184'; - 70185: 'X70185'; - 70186: 'X70186'; - 70200: 'X70200'; - 70201: 'X70201'; - 70202: 'X70202'; - 90153: 'X90153'; - 90154: 'X90154'; - 90155: 'X90155'; + 319: 'tallYellowDoor'; + 320: 'tallBlueDoor'; + 321: 'tallRedDoor'; + 322: 'tallGreenDoor'; + 323: 'tallSpecialDoor'; + 324: 'tallSteelDoor'; + 325: 'keiskeiFairy'; + 326: 'tulipFairy'; + 327: 'bearDown'; + 328: 'bearLeft'; + 329: 'bearRight'; + 330: 'bearUp'; + 331: 'I331'; + 332: 'I332'; + 333: 'I333'; + 334: 'I334'; + 335: 'I335'; + 336: 'I336'; + 337: 'I337'; + 338: 'I338'; + 339: 'I339'; + 340: 'I340'; + 341: 'I341'; + 342: 'I342'; } \ No newline at end of file