diff options
Diffstat (limited to 'internal/admin/static/itemeditor.js')
| -rw-r--r-- | internal/admin/static/itemeditor.js | 29 |
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; } } |
