aboutsummaryrefslogtreecommitdiff
path: root/internal/admin/static/itemeditor.js
diff options
context:
space:
mode:
Diffstat (limited to 'internal/admin/static/itemeditor.js')
-rw-r--r--internal/admin/static/itemeditor.js29
1 files changed, 17 insertions, 12 deletions
diff --git a/internal/admin/static/itemeditor.js b/internal/admin/static/itemeditor.js
index 84090a1..f1450ab 100644
--- a/internal/admin/static/itemeditor.js
+++ b/internal/admin/static/itemeditor.js
@@ -12,8 +12,7 @@ var SECTIONS = [
['color', 'Color', 'color', 'B2'],
['value', 'Value', 'number', '0'],
['stackable', 'Stackable', 'checkbox'],
- ['quality', 'Quality', 'number', ''],
- ['max_quality', 'Max Quality', 'number', ''],
+ ['max_quality', 'Quality', 'number', ''],
['aliases', 'Aliases', 'text', 'comma separated'],
['description', 'Description', 'textarea', 'A chunk of copper ore.'],
]
@@ -57,9 +56,9 @@ var SECTIONS = [
['station', 'Station', 'select', '|anvil|cooking_range|fire|furnace|pottery_oven|pottery_wheel|spinning_wheel|workbench'],
['tool', 'Tool', 'select', '|pickaxe|axe|fire|chisel|hammer|knife|needle|rake|saw|shears|spade|watering_can|fishing_rod|fly_rod|harpoon|small_net|big_net|lobster_pot'],
['fail', 'Fail Item', 'search', '', '', null, 'items'],
- ['success_base', 'Base', 'number', '', 'narrow'],
- ['success_per_level', 'Per Lvl', 'number', '', 'narrow'],
- ['success_cap', 'Cap', 'number', '', 'narrow'],
+ ['success_base', 'Base', 'number', '0.5', 'narrow'],
+ ['success_per_level', 'Per Lvl', 'number', '0.01', 'narrow'],
+ ['success_cap', 'Cap', 'number', '0.95', 'narrow'],
['start_message', 'Start Message', 'text', 'e.g. You begin smithing %i1.', 'wide'],
['success_message', 'Success Message', 'text', 'e.g. You smith a %n.', 'wide'],
['fail_message', 'Fail Message', 'text', 'e.g. You accidentally burn the %i1.', 'wide', function(item) { return item.type === 'cooking' || item.subtype === 'smelt'; }],
@@ -297,7 +296,7 @@ function renderCoreCard(data) {
var h = '<div class="obj-core-row">';
h += renderField(sec, sec.fields[0], data, -1, null, 'flex:1');
h += renderField(sec, sec.fields[1], data, -1);
- h += renderField(sec, sec.fields[6], data, -1, null, 'flex:1');
+ h += renderField(sec, sec.fields[5], data, -1, null, 'flex:1');
h += '</div>';
h += '<div class="obj-core-row" style="align-items:center">';
h += renderField(sec, sec.fields[2], data, -1);
@@ -306,7 +305,6 @@ function renderCoreCard(data) {
h += '</div>';
h += '<div style="display:flex;gap:8px;margin-left:auto">';
h += renderField(sec, sec.fields[4], data, -1);
- h += renderField(sec, sec.fields[5], data, -1);
h += '</div>';
h += '</div>';
var descFid = fieldID(sec, 'description', -1);
@@ -337,8 +335,8 @@ var EQUIP_STAT_FIELDS = {
],
other: [
['strength', 'Strength', 'number', '', 'narrow'],
- ['ranged', 'Ranged', 'number', '', 'narrow'],
- ['science', 'Science', 'number', '', 'narrow'],
+ ['ranged_strength', 'Rng Str.', 'number', '', 'narrow'],
+ ['science', 'Sci +%', 'number', '', 'narrow'],
['technology', 'Tech', 'number', '', 'narrow'],
],
};
@@ -487,7 +485,8 @@ function renderField(sec, f, data, idx, subPath, optStyle) {
var hiddenStyle = '';
if (showIf) {
- var sectionData = itemData[cardPath(sec)] || {};
+ var p = cardPath(sec);
+ var sectionData = p ? (itemData[p] || {}) : itemData;
if (!showIf(sectionData)) hiddenStyle = ' style="display:none"';
}
@@ -616,6 +615,10 @@ function renderSubtable(sec, st, data) {
if (!f) return;
if (f[5] && !f[5](item)) return;
var val = item[f[0]];
+ if (val === undefined && item.success && (f[0] === 'success_base' || f[0] === 'success_per_level' || f[0] === 'success_cap')) {
+ var nestedKey = f[0] === 'success_base' ? 'base' : (f[0] === 'success_per_level' ? 'per_level' : 'cap');
+ val = item.success[nestedKey];
+ }
h += renderSubFieldHTML(sec, st.key, idx, f, val);
});
}
@@ -626,12 +629,12 @@ function renderSubtable(sec, st, data) {
h += '<div class="obj-field-note output-qty-note" style="margin:2px 0;padding:2px 8px;font-size:11px;color:#888;font-style:italic;line-height:1.3">' + esc(group.note) + '</div>';
} else if (group.label) {
if (group.label === 'Success') {
- var hasSuccess = !!(item.fail || (item.success && (item.success.base || item.success.per_level || item.success.cap)) || item.success_base || item.success_per_level || item.success_cap);
+ var hasSuccess = !!(item.success_base || item.success_per_level || item.success_cap || (item.success && (item.success.base || item.success.per_level || item.success.cap)));
var gid = 'sg_' + sec.id + '_' + st.key + '_' + idx;
h += '<div class="obj-inline-group success-group" id="' + gid + '" style="margin:2px 0;padding:4px 8px' + (hasSuccess ? '' : ';display:none') + '">';
h += '<div style="display:flex;align-items:center;margin-bottom:2px">';
h += '<span class="obj-inline-label" style="margin-bottom:0;flex:1">Success</span>';
- h += '<button class="btn btn-sm btn-danger" style="padding:2px 6px;font-size:10px;min-width:auto" onclick="var g=document.getElementById(\'' + gid + '\');g.style.display=\'none\';var b=document.getElementById(\'' + gid + '_btn\');b.style.display=\'\'">X</button>';
+ h += '<button class="btn btn-sm btn-danger" style="padding:2px 6px;font-size:10px;min-width:auto" onclick="var g=document.getElementById(\'' + gid + '\');g.style.display=\'none\';var b=document.getElementById(\'' + gid + '_btn\');b.style.display=\'\';g.querySelectorAll(\'input\').forEach(function(inp){inp.value=\'\'})">X</button>';
h += '</div>';
h += '<div class="obj-sub-row-line">';
renderGroup(group.fields);
@@ -1353,6 +1356,8 @@ function saveItem() {
delete item.success_cap;
if (sBase || sPer || sCap) {
item.success = {base: sBase, per_level: sPer, cap: sCap};
+ } else {
+ delete item.success;
}
}