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