0.12地图数据信息插件和追加注册

This commit is contained in:
salt 2026-04-22 19:39:06 +08:00
parent 9a87271f66
commit 2a9852f035
11 changed files with 425 additions and 57 deletions

View File

@ -1 +1 @@
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

File diff suppressed because one or more lines are too long

View File

@ -429,6 +429,11 @@ var data_comment_c456ea59_6018_45ef_8bcc_211a24c627dc = {
"_type": "textarea",
"_docs": "绿宝石值",
},
"yellowGem": {
"_leaf": true,
"_type": "textarea",
"_docs": "黄宝石值",
},
"redPotion": {
"_leaf": true,
"_type": "textarea",

View File

@ -743,6 +743,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"redGem": 1,
"blueGem": 1,
"greenGem": 3,
"yellowGem": 20,
"redPotion": 50,
"bluePotion": 125,
"yellowPotion": 300,

View File

@ -84,15 +84,15 @@ main.floors.C0_B05=
[ 0, 0, 0, 0, 0, 0, 0, 0,20176,20180, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0, 0, 0, 0,20035,140, 0, 0, 0, 0, 0],
[ 0, 0, 0, 0, 0,20176,20180, 0,20019, 0, 0, 0,151,151, 0],
[ 0, 0, 0, 0, 0,20035,20017, 0, 0, 0, 0, 0,151,151,151],
[ 0, 0, 0, 0, 0,20236,20238, 0,151,151,151, 0, 0, 0,151],
[ 0, 0, 0, 0, 0,20035,20017,141,141,141,141,141,151,151,151],
[ 0, 0, 0, 0, 0,20236,20238, 0,151,151,151,141, 0, 0,151],
[ 0, 0, 0, 0, 0,20244,20246,20024,151,151,151,151,151, 0, 0],
[ 0, 0, 0, 0,20176,20252,20254,20032,151,151,151,151,151,151,151],
[ 0, 0, 0, 0,20035, 0, 0,20040, 0, 0, 0, 0, 0,151,151],
[ 0, 0, 0, 0, 0, 0, 0,151,151,151,151, 0, 0, 0,151],
[ 0, 0, 0, 0, 0, 0,151,151,151,151,151, 0, 0, 0,151],
[ 0, 0, 0, 0, 0, 0,151,151,151,151,151, 0,151,151,151],
[ 0,20176,20180, 0, 0, 0,151,151,151,151,151, 0,151,151,151]
[ 0, 0, 0, 0,20035,171, 0,20040, 0, 0, 0,171, 0,151,151],
[ 0, 0, 0, 0, 0,171, 0,151,151,151,151,171,171,171,151],
[ 0, 0, 0, 0, 0,171,151,151,151,151,151, 0, 0, 0,151],
[ 0, 0, 0, 0, 0,171,151,151,151,151,151, 0,151,151,151],
[ 0,20176,20180, 0, 0,171,151,151,151,151,151, 0,151,151,151]
],
"fg2map": [

View File

@ -60,8 +60,8 @@ main.floors.C0_B06=
[20164, 17, 17, 17, 0,20150, 17, 17, 0, 17, 17,20172,20169,20170, 0],
[ 17, 17, 17, 30, 0, 83, 0, 0, 0,201, 0, 0, 0,20174,20175],
[ 17, 17, 17,20169,20170, 0, 0, 21,20164, 0, 28, 0, 0, 0,20164],
[ 17, 17, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94],
[20164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0,20164],
[ 17, 17, 17, 0,20164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94],
[20164, 0, 0, 0, 0,340,341,342,343, 0, 29, 0, 0, 0,20164],
[20164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,20164],
[20164,20164,20164,20164,20164,20164,20164, 93,20164,20164,20164,20164,20164,20164,20164]
],

View File

@ -233,6 +233,18 @@ var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 =
"sword4": 53,
"sword5": 54,
"shield0": 61,
"yellowKey2": 62,
"blueKey2": 63,
"redKey2": 64,
"greenKey2": 65,
"yellowKey3": 66,
"blueKey3": 67,
"redKey3": 68,
"greenKey3": 69,
"redPotion2": 70,
"bluePotion2": 71,
"yellowPotion2": 72,
"greenPotion2": 73,
"shield1": 55,
"shield2": 56,
"shield3": 57,

View File

@ -18,6 +18,84 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
"text": "可以打开一扇红门",
"hideInToolbox": true
},
"greenKey": {
"cls": "tools",
"name": "绿钥匙",
"text": "可以打开一扇绿门",
"hideInToolbox": true
},
"yellowKey2": {
"cls": "items",
"name": "黄钥匙×2",
"text": "获得两把黄钥匙",
"itemEffect": "core.addItem('yellowKey', 2)",
"itemEffectTip": ",黄钥匙+2",
"useItemEffect": "core.addItem('yellowKey', 2)",
"canUseItemEffect": "true"
},
"blueKey2": {
"cls": "items",
"name": "蓝钥匙×2",
"text": "获得两把蓝钥匙",
"itemEffect": "core.addItem('blueKey', 2)",
"itemEffectTip": ",蓝钥匙+2",
"useItemEffect": "core.addItem('blueKey', 2)",
"canUseItemEffect": "true"
},
"redKey2": {
"cls": "items",
"name": "红钥匙×2",
"text": "获得两把红钥匙",
"itemEffect": "core.addItem('redKey', 2)",
"itemEffectTip": ",红钥匙+2",
"useItemEffect": "core.addItem('redKey', 2)",
"canUseItemEffect": "true"
},
"greenKey2": {
"cls": "items",
"name": "绿钥匙×2",
"text": "获得两把绿钥匙",
"itemEffect": "core.addItem('greenKey', 2)",
"itemEffectTip": ",绿钥匙+2",
"useItemEffect": "core.addItem('greenKey', 2)",
"canUseItemEffect": "true"
},
"yellowKey3": {
"cls": "items",
"name": "黄钥匙×3",
"text": "获得三把黄钥匙",
"itemEffect": "core.addItem('yellowKey', 3)",
"itemEffectTip": ",黄钥匙+3",
"useItemEffect": "core.addItem('yellowKey', 3)",
"canUseItemEffect": "true"
},
"blueKey3": {
"cls": "items",
"name": "蓝钥匙×3",
"text": "获得三把蓝钥匙",
"itemEffect": "core.addItem('blueKey', 3)",
"itemEffectTip": ",蓝钥匙+3",
"useItemEffect": "core.addItem('blueKey', 3)",
"canUseItemEffect": "true"
},
"redKey3": {
"cls": "items",
"name": "红钥匙×3",
"text": "获得三把红钥匙",
"itemEffect": "core.addItem('redKey', 3)",
"itemEffectTip": ",红钥匙+3",
"useItemEffect": "core.addItem('redKey', 3)",
"canUseItemEffect": "true"
},
"greenKey3": {
"cls": "items",
"name": "绿钥匙×3",
"text": "获得三把绿钥匙",
"itemEffect": "core.addItem('greenKey', 3)",
"itemEffectTip": ",绿钥匙+3",
"useItemEffect": "core.addItem('greenKey', 3)",
"canUseItemEffect": "true"
},
"redGem": {
"cls": "items",
"name": "红宝石",
@ -48,49 +126,10 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
"yellowGem": {
"cls": "items",
"name": "黄宝石",
"text": "可以进行加点",
"itemEffect": "null",
"itemEffectTip": ",全属性提升",
"useItemEvent": [
{
"type": "choices",
"choices": [
{
"text": "攻击+1",
"action": [
{
"type": "setValue",
"name": "status:atk",
"operator": "+=",
"value": "1"
}
]
},
{
"text": "防御+2",
"action": [
{
"type": "setValue",
"name": "status:def",
"operator": "+=",
"value": "2"
}
]
},
{
"text": "生命+200",
"action": [
{
"type": "setValue",
"name": "status:hp",
"operator": "+=",
"value": "200"
}
]
}
]
}
],
"text": ",生命+${core.values.yellowGem},生命上限+${core.values.yellowGem}",
"itemEffect": "core.status.hero.hp += core.values.yellowGem * core.status.thisMap.ratio; core.status.hero.hpmax += core.values.yellowGem * core.status.thisMap.ratio",
"itemEffectTip": ",生命+${core.values.yellowGem * core.status.thisMap.ratio},生命上限+${core.values.yellowGem * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.hp += core.values.yellowGem; core.status.hero.hpmax += core.values.yellowGem",
"canUseItemEffect": "true"
},
"redPotion": {
@ -129,6 +168,42 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
"useItemEffect": "core.status.hero.hp += core.values.greenPotion",
"canUseItemEffect": "true"
},
"redPotion2": {
"cls": "items",
"name": "大红血瓶",
"text": ",生命+${core.values.redPotion * 20}",
"itemEffect": "core.status.hero.hp += core.values.redPotion * 20 * core.status.thisMap.ratio",
"itemEffectTip": ",生命+${core.values.redPotion * 20 * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.hp += core.values.redPotion * 20",
"canUseItemEffect": "true"
},
"bluePotion2": {
"cls": "items",
"name": "大蓝血瓶",
"text": ",生命+${core.values.bluePotion * 20}",
"itemEffect": "core.status.hero.hp += core.values.bluePotion * 20 * core.status.thisMap.ratio",
"itemEffectTip": ",生命+${core.values.bluePotion * 20 * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.hp += core.values.bluePotion * 20",
"canUseItemEffect": "true"
},
"yellowPotion2": {
"cls": "items",
"name": "大黄血瓶",
"text": ",生命+${core.values.yellowPotion * 20}",
"itemEffect": "core.status.hero.hp += core.values.yellowPotion * 20 * core.status.thisMap.ratio",
"itemEffectTip": ",生命+${core.values.yellowPotion * 20 * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.hp += core.values.yellowPotion * 20",
"canUseItemEffect": "true"
},
"greenPotion2": {
"cls": "items",
"name": "大绿血瓶",
"text": ",生命+${core.values.greenPotion * 20}",
"itemEffect": "core.status.hero.hp += core.values.greenPotion * 20 * core.status.thisMap.ratio",
"itemEffectTip": ",生命+${core.values.greenPotion * 20 * core.status.thisMap.ratio}",
"useItemEffect": "core.status.hero.hp += core.values.greenPotion * 20",
"canUseItemEffect": "true"
},
"sword0": {
"cls": "items",
"name": "破旧的剑",

View File

@ -271,5 +271,17 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
"20368": {"cls":"tileset","id":"X20368","canPass":true},
"20369": {"cls":"tileset","id":"X20369","canPass":true},
"20376": {"cls":"tileset","id":"X20376","canPass":true},
"20377": {"cls":"tileset","id":"X20377","canPass":true}
"20377": {"cls":"tileset","id":"X20377","canPass":true},
"332": {"cls":"items","id":"yellowKey2","name":"黄钥匙×2"},
"333": {"cls":"items","id":"blueKey2","name":"蓝钥匙×2"},
"334": {"cls":"items","id":"redKey2","name":"红钥匙×2"},
"335": {"cls":"items","id":"greenKey2","name":"绿钥匙×2"},
"336": {"cls":"items","id":"yellowKey3","name":"黄钥匙×3"},
"337": {"cls":"items","id":"blueKey3","name":"蓝钥匙×3"},
"338": {"cls":"items","id":"redKey3","name":"红钥匙×3"},
"339": {"cls":"items","id":"greenKey3","name":"绿钥匙×3"},
"340": {"cls":"items","id":"redPotion2","name":"大红血瓶"},
"341": {"cls":"items","id":"bluePotion2","name":"大蓝血瓶"},
"342": {"cls":"items","id":"yellowPotion2","name":"大黄血瓶"},
"343": {"cls":"items","id":"greenPotion2","name":"大绿血瓶"}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -1862,8 +1862,8 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
var HTML = "<input type='button' value='←'/><input type='button' value='↑'/><input type='button' value='↓'/><input type='button' value='→'/><input type='button' id='bigmapBtn' value='大地图'' style='margin-left: '5px'/><br/>";
//if (heroStatus.length >= 4 && !editor.isMobile) editor.dom.mid2.style.top = 650 + 30 * (heroStatus.length - 3) + 'px';
var colors = {'atk': 'red', 'def': 'blue', 'mdef': 'green'};
var labels = {'atk': '攻击', 'def': '防御', 'mdef': '魔防'};
var colors = { 'atk': 'red', 'def': 'blue', 'mdef': 'green' };
var labels = { 'atk': '攻击', 'def': '防御', 'mdef': '魔防' };
heroStatus.forEach(function (status) {
var id = status + 'set';
HTML += "<input type='text' size='4' id='" + id + "' placeholder='属性:" + labels[status] + "' style='color: " + colors[status] + ";'> "
@ -2394,5 +2394,268 @@ var plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1 =
};
}
},
"地图数据信息": function () {
/*
* 需要将 变量itemDetail改为true才可正常运行
* 请尽量减少勇士的属性数量否则可能会出现严重卡顿划掉现在你放一万个属性也不会卡
* 注意这里的属性必须是core.status.hero里面的flag无法显示
* 如果不想显示可以core.setFlag("itemDetail", false);
* 然后再core.getItemDetail();
* 如有bug在大群或造塔群@古祠
*/
const ignore = ['superPotion'];
// 取消注释下面这句可以减少超大地图的判定。
// 如果地图宝石过多,可能会略有卡顿,可以尝试取消注释下面这句话来解决。
// core.bigmap.threshold = 256;
const origin = core.control.updateStatusBar;
core.updateStatusBar = core.control.updateStatusBar = function () {
if (core.getFlag('__statistics__')) return;
else return origin.apply(core.control, arguments);
}
items.prototype.getItemEffect = function (itemId, itemNum) {
var itemCls = core.material.items[itemId].cls;
// 消耗品
if (itemCls === 'items') {
var curr_hp = core.status.hero.hp;
var itemEffect = core.material.items[itemId].itemEffect;
if (itemEffect) {
try {
for (var i = 0; i < itemNum; ++i)
eval(itemEffect);
} catch (e) {
main.log(e);
}
}
if (!core.getFlag('__statistics__', false))
core.status.hero.statistics.hp += core.status.hero.hp - curr_hp;
var useItemEvent = core.material.items[itemId].useItemEvent;
if (useItemEvent) {
try {
core.insertAction(useItemEvent);
} catch (e) {
main.log(e);
}
}
core.updateStatusBar();
} else {
core.addItem(itemId, itemNum);
}
}
core.control.updateDamage = function (floorId, ctx) {
floorId = floorId || core.status.floorId;
if (!floorId || core.status.gameOver) return;
// 编辑器模式下由编辑器显伤插件处理
if (main.mode === 'editor') {
// 调用原始的编辑器显伤逻辑
ctx = core.canvas.damage;
core.updateCheckBlock && core.updateCheckBlock();
core.clearMap(ctx);
if (editor.uivalues.bigmap) return;
}
const onMap = ctx == null;
// 没有怪物手册
if (!core.hasItem('book')) return;
core.status.damage.posX = core.bigmap.posX;
core.status.damage.posY = core.bigmap.posY;
if (!onMap) {
const width = core.floors[floorId].width,
height = core.floors[floorId].height;
// 地图过大的缩略图不绘制显伤
if (width * height > core.bigmap.threshold) return;
}
this._updateDamage_damage(floorId, onMap);
this._updateDamage_extraDamage(floorId, onMap);
core.getItemDetail(floorId); // 宝石血瓶详细信息
//core.drawDoorDetail(floorId); // 门详细信息
this.drawDamage(ctx);
};
// 获取宝石信息 并绘制
this.getItemDetail = function (floorId) {
floorId = floorId != null ? floorId : (core.status.thisMap && core.status.thisMap.floorId);
// 编辑器模式下使用 editor.currentFloorId
if (main.mode === 'editor' && !floorId) {
floorId = editor.currentFloorId;
}
if (!floorId || !core.status.maps[floorId]) return;
// 编辑器模式下可能没有thisMap需要创建一个临时对象
var beforeRatio = 1;
if (core.status.thisMap) {
beforeRatio = core.status.thisMap.ratio;
core.status.thisMap.ratio = core.status.maps[floorId].ratio;
}
const originalHero = core.clone(core.status.hero);
const blocks = core.status.maps[floorId].blocks;
blocks.forEach(function (block) {
var x = block.x,
y = block.y,
event = block.event,
disable = block.disable;
// 处理items类道具以及钥匙tools类
var isKey = ['yellowKey', 'blueKey', 'redKey'].includes(event.id);
var isMultiKey = ['yellowKey2', 'blueKey2', 'redKey2', 'greenKey2', 'yellowKey3', 'blueKey3', 'redKey3', 'greenKey3'].includes(event.id);
if (!event || (event.cls !== 'items' && !isKey && !isMultiKey) || ignore.includes(event.id) || disable) return;
// v2地图优化跳过不可见区域
if (core.bigmap.v2 &&
(x < core.bigmap.posX - core.bigmap.extend ||
x > core.bigmap.posX + core._WIDTH_ + core.bigmap.extend ||
y < core.bigmap.posY - core.bigmap.extend ||
y > core.bigmap.posY + core._HEIGHT_ + core.bigmap.extend)) {
return;
}
var itemId = event.id;
var item = core.material.items[itemId];
if (!item) return;
// --- 处理装备类 ---
if (item.cls === 'equips') {
var equipValue = (item.equip && item.equip.value) || {};
var percentage = (item.equip && item.equip.percentage) || {};
var equipDiff = {};
for (var key in equipValue) {
equipDiff[key] = equipValue[key];
}
for (var key in percentage) {
equipDiff[key + 'per'] = percentage[key] + '%';
}
drawItemDetail(equipDiff, x, y);
return;
}
// --- 处理钥匙类 ---
if (isKey) {
var keyDiff = {};
var keyName = itemId.replace('Key', '');
keyDiff[keyName] = 1;
drawItemDetail(keyDiff, x, y);
return;
}
// --- 处理倍率钥匙类2倍、3倍钥匙 ---
if (isMultiKey) {
var keyDiff = {};
var keyName = itemId.replace(/Key[23]/, '');
var keyCount = itemId.endsWith('Key3') ? 3 : 2;
keyDiff[keyName] = keyCount;
drawItemDetail(keyDiff, x, y);
return;
}
// --- 处理普通道具 ---
var heroClone = core.clone(originalHero);
var diff = {};
var handler = {
set: function (target, key, val) {
var oldVal = target[key] || 0;
var delta = val - oldVal;
if (delta !== 0) {
if (diff[key] == null) diff[key] = 0;
diff[key] += delta;
}
target[key] = val;
return true;
}
};
var proxyHero = new Proxy(heroClone, handler);
core.status.hero = proxyHero;
try {
core.setFlag('__statistics__', true);
core.getItemEffect(item.id, 1);
} catch (e) {
console.warn("物品效果执行失败:" + itemId, e);
}
drawItemDetail(diff, x, y);
});
core.status.hero = originalHero;
if (core.status.thisMap) {
core.status.thisMap.ratio = beforeRatio;
}
window.hero = originalHero;
window.flags = originalHero.flags;
};
// 绘制
function drawItemDetail(diff, x, y) {
const px = 32 * x + 2,
py = 32 * y + 30;
let content = '';
// 获得数据和颜色
let i = 0;
// 如果同时存在hp和hpmax如黄宝石只显示hpmax以节省空间
if (diff.hp && diff.hpmax) {
delete diff.hp;
}
for (const name in diff) {
if (!diff[name]) continue;
let color = '#fff';
if (typeof diff[name] === 'number')
content = core.formatBigNumber(diff[name], true);
else content = diff[name];
switch (name) {
case 'atk':
case 'atkper':
color = '#FF7A7A';
break;
case 'def':
case 'defper':
color = '#00E6F1';
break;
case 'mdef':
case 'mdefper':
color = '#6EFF83';
break;
case 'hp':
color = '#A4FF00';
break;
case 'hpmax':
case 'hpmaxper':
color = '#F9FF00';
break;
case 'mana':
color = '#c66';
break;
case 'yellow':
color = '#FFD700';
break;
case 'blue':
color = '#00E6F1';
break;
case 'red':
color = '#FF7A7A';
break;
case 'green':
color = '#6EFF83';
break;
}
// 绘制
core.status.damage.data.push({
text: content,
px: px,
py: py - 10 * i,
color: color
});
i++;
}
}
}
}