From 9b54188970c51070d86f4c87e909ea7836c86f07 Mon Sep 17 00:00:00 2001
From: historia <[not public]>
Date: Sun, 5 Jul 2026 16:42:01 -0400
Subject: fix: restructure steal yaml, update admin web gui
---
internal/admin/static/objecteditor.js | 177 ++++++++++++++++++++++++++--------
1 file changed, 137 insertions(+), 40 deletions(-)
(limited to 'internal/admin/static/objecteditor.js')
diff --git a/internal/admin/static/objecteditor.js b/internal/admin/static/objecteditor.js
index c80cb57..f8ef18a 100644
--- a/internal/admin/static/objecteditor.js
+++ b/internal/admin/static/objecteditor.js
@@ -18,14 +18,14 @@ var SECTIONS = [
]
},
{
- id: 'steal', label: 'Steal',
- detect: function(d) { return d.steal_table !== undefined || d.steal_level !== undefined || d.steal_speed !== undefined || d.steal_xp !== undefined || d.guard_mob !== undefined; },
+ id: 'steal', label: 'Steal', path: 'steal',
+ detect: function(d) { return d.steal !== undefined; },
fields: [
- ['steal_table', 'Table ID', 'text'],
- ['steal_level', 'Level', 'number', '', 'narrow'],
- ['steal_xp', 'XP', 'number', '', 'narrow'],
- ['steal_speed', 'Speed', 'number', '', 'narrow'],
- ['guard_mob', 'Guard Mob', 'text'],
+ ['table', 'Table ID', 'search', '', '', null, 'drops'],
+ ['level', 'Level', 'number', '1', 'narrow'],
+ ['xp', 'XP', 'number', '5', 'narrow'],
+ ['speed', 'Speed', 'number', '4', 'narrow'],
+ ['guard_mob', 'Guard Mob', 'search', '', '', null, 'mobs'],
]
},
{
@@ -148,6 +148,8 @@ function loadObject(id) {
window._editorData = objectData;
window._useInterVis = {};
window._useInterHelpCollapsed = undefined;
+ window._coreVis = {};
+ window._stealVis = {};
renderObjectEditor(id, data);
}).catch(function(e) {
$('#editorMain').innerHTML = '
Failed to load: ' + esc(e.message) + '
';
@@ -250,6 +252,8 @@ function renderCard(sec, data) {
h += renderArraySection(sec, data);
} else if (sec.id === 'core') {
h += renderCoreCard(data);
+ } else if (sec.id === 'steal') {
+ h += renderStealCard(data);
} else {
h += '';
sec.fields.forEach(function(f) {
@@ -351,6 +355,17 @@ function renderField(sec, f, data, idx, subPath, optStyle) {
if (!showIf(sectionData)) hiddenStyle = ' style="display:none"';
}
+ var pfx = cardPath(sec);
+ var dp;
+ if (idx >= 0) {
+ dp = pfx + '[' + idx + '].' + key;
+ } else if (subPath) {
+ dp = (pfx ? pfx + '.' : '') + subPath + '.' + key;
+ } else {
+ dp = (pfx ? pfx + '.' : '') + key;
+ }
+ var dpAttr = ' data-field-path="' + escAttr(dp) + '"';
+
function wrap(cls, inner) {
var w = (wide === 'wide') ? ' obj-wide' : '';
if (wide === 'narrow') w = ' obj-narrow';
@@ -359,19 +374,19 @@ function renderField(sec, f, data, idx, subPath, optStyle) {
}
if (type === 'checkbox') {
- return wrap('obj-field obj-check', '
' + esc(label) + '');
+ return wrap('obj-field obj-check', '
' + esc(label) + '');
}
if (type === 'json') {
var jstr = typeof val === 'object' ? JSON.stringify(val) : String(val);
- return wrap('obj-field', '
' + esc(label) + '');
+ return wrap('obj-field', '
' + esc(label) + '');
}
if (type === 'textarea') {
var dstr = typeof val === 'object' ? (Array.isArray(val) ? val.map(function(v){return v.text||'';}).join('\n') : JSON.stringify(val)) : String(val);
- return wrap('obj-field', '
' + esc(label) + '');
+ return wrap('obj-field', '
' + esc(label) + '');
}
if (type === 'select') {
var opts = hint ? hint.split('|') : [];
- var inner = '
' + esc(label) + '