diff options
Diffstat (limited to 'internal/admin/static/itemeditor.js')
| -rw-r--r-- | internal/admin/static/itemeditor.js | 90 |
1 files changed, 71 insertions, 19 deletions
diff --git a/internal/admin/static/itemeditor.js b/internal/admin/static/itemeditor.js index ac76f94..ed32267 100644 --- a/internal/admin/static/itemeditor.js +++ b/internal/admin/static/itemeditor.js @@ -10,9 +10,9 @@ var SECTIONS = [ fields: [ ['name', 'Name', 'text', 'Copper Ore'], ['color', 'Color', 'color', 'B2'], - ['value', 'Value', 'number', '0'], + ['value', 'Value', 'number', '100'], ['stackable', 'Stackable', 'checkbox'], - ['max_quality', 'Quality', 'number', ''], + ['max_quality', 'Quality', 'number', '100', 'narrow'], ['aliases', 'Aliases', 'text', 'comma separated'], ['description', 'Description', 'textarea', 'A chunk of copper ore.'], ] @@ -55,7 +55,7 @@ var SECTIONS = [ ['output_qty', 'Output Qty', 'number', '', 'narrow'], ['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'], + ['fail', 'Fail Item', 'search', 'e.g. burnt_fish', '', null, 'items'], ['success_base', 'Base', 'number', '0.5', 'narrow'], ['success_per_level', 'Per Lvl', 'number', '0.01', 'narrow'], ['success_cap', 'Cap', 'number', '0.95', 'narrow'], @@ -76,8 +76,8 @@ var SECTIONS = [ ['quantity', 'Qty', 'number', '1', 'narrow'], ]}, {label:'Steps', key:'steps', fields:[ - ['delay', 'Delay (ticks)', 'number', '', 'narrow'], - ['message', 'Message', 'text', '', 'wide'], + ['delay', 'Delay (ticks)', 'number', '3', 'narrow'], + ['message', 'Message', 'text', 'You turn the handle...', 'wide'], ]}, ], } @@ -87,8 +87,8 @@ var SECTIONS = [ id: 'search', label: 'Search', detect: function(d) { return d.search_table || d.search_ticks; }, fields: [ - ['search_table', 'Search Table', 'search', '', '', null, 'drops'], - ['search_ticks', 'Search Ticks', 'number', '', 'narrow'], + ['search_table', 'Search Table', 'search', 'e.g. gem_table', '', null, 'drops'], + ['search_ticks', 'Search Ticks', 'number', '8', 'narrow'], ['search_message', 'Search Message', 'text', 'You search...', 'wide'], ] }, @@ -96,7 +96,7 @@ var SECTIONS = [ id: 'food', label: 'Food', detect: function(d) { return d.heal_value || d.eat_message; }, fields: [ - ['heal_value', '+HP', 'number', '', 'narrow'], + ['heal_value', '+HP', 'number', '10', 'narrow'], ['eat_message', 'Eat Message', 'text', 'You eat the...', 'wide'], ] }, @@ -105,22 +105,22 @@ var SECTIONS = [ detect: function(d) { return d.farm_patch_type; }, fields: [ ['farm_patch_type', 'Patch Type', 'select', 'herb|allotment|flower|bush|tree'], - ['farm_level', 'Farm Level', 'number', '', 'narrow'], - ['farm_plant_xp', 'Plant XP', 'number', '', 'narrow'], - ['farm_harvest_xp', 'Harvest XP', 'number', '', 'narrow'], - ['farm_stages', 'Stages', 'number', '', 'narrow'], - ['farm_product', 'Product', 'search', '', '', null, 'items'], - ['farm_min_yield', 'Min Yield', 'number', '', 'narrow'], - ['farm_max_yield', 'Max Yield', 'number', '', 'narrow'], + ['farm_product', 'Product', 'search', 'e.g. tomato', '', null, 'items'], + ['farm_plant_xp', 'Plant XP', 'number', '5', 'narrow'], + ['farm_harvest_xp', 'Harvest XP', 'number', '10', 'narrow'], + ['farm_level', 'Farm Level', 'number', '1', 'narrow'], + ['farm_stages', 'Stages', 'number', '4', 'narrow'], + ['farm_min_yield', 'Min Yield', 'number', '1', 'narrow'], + ['farm_max_yield', 'Max Yield', 'number', '5', 'narrow'], ] }, { id: 'potions', label: 'Potions', detect: function(d) { return d.potion_effect; }, fields: [ - ['potion_effect', 'Effect', 'text', 'strength, accuracy, heal'], - ['potion_bonus', 'Bonus', 'number', '', 'narrow'], - ['potion_duration', 'Duration', 'number', '', 'narrow'], + ['potion_effect', 'Effect', 'select', 'heal|battery|all_combat|accuracy|strength|defense|ranged|science'], + ['potion_bonus', 'Bonus', 'number', '10', 'narrow'], + ['potion_duration', 'Duration', 'number', '50', 'narrow'], ] }, ]; @@ -255,6 +255,10 @@ function renderCard(sec, data) { h += renderCoreCard(data); } else if (sec.id === 'equipment') { h += renderEquipmentCard(data); + } else if (sec.id === 'farming') { + h += renderFarmingCard(data); + } else if (sec.id === 'potions') { + h += renderPotionsCard(data); } else { h += '<div class="obj-card-grid">'; if (sec.fields) sec.fields.forEach(function(f) { @@ -316,6 +320,41 @@ function renderCoreCard(data) { return h; } +function renderFarmingCard(data) { + var sec = SECTIONS.find(function(s) { return s.id === 'farming'; }); + var byKey = {}; + sec.fields.forEach(function(f) { byKey[f[0]] = f; }); + var h = '<div class="obj-core-row">'; + h += renderField(sec, byKey['farm_patch_type'], data, -1); + h += renderField(sec, byKey['farm_product'], data, -1, null, 'flex:1'); + h += '</div>'; + h += '<div class="obj-core-row">'; + h += renderField(sec, byKey['farm_plant_xp'], data, -1); + h += renderField(sec, byKey['farm_harvest_xp'], data, -1); + h += renderField(sec, byKey['farm_level'], data, -1); + h += '</div>'; + h += '<div class="obj-core-row">'; + h += renderField(sec, byKey['farm_stages'], data, -1); + h += renderField(sec, byKey['farm_min_yield'], data, -1); + h += renderField(sec, byKey['farm_max_yield'], data, -1); + h += '</div>'; + return h; +} + +function renderPotionsCard(data) { + var sec = SECTIONS.find(function(s) { return s.id === 'potions'; }); + var byKey = {}; + sec.fields.forEach(function(f) { byKey[f[0]] = f; }); + var h = '<div class="obj-core-row">'; + h += renderField(sec, byKey['potion_effect'], data, -1, null, 'flex:1'); + h += '</div>'; + h += '<div class="obj-core-row">'; + h += renderField(sec, byKey['potion_bonus'], data, -1); + h += renderField(sec, byKey['potion_duration'], data, -1); + h += '</div>'; + return h; +} + // ========================================================================= // Equipment card (custom render with 3 stat blocks) // ========================================================================= @@ -1551,8 +1590,21 @@ function duplicateItem() { delete copy._path; copy.id = newID; + var dir = ''; + if (itemData._path) { + var parts = itemData._path.split('/'); + var parentDir = parts[parts.length - 2]; + if (parentDir !== 'items') dir = parentDir; + } + API.post('/api/items', {id: newID}).then(function() { - return API.put('/api/items/' + encodeURIComponent(newID), copy); + var putOp = API.put('/api/items/' + encodeURIComponent(newID), copy); + if (dir) { + return putOp.then(function() { + return API.post('/api/items/move', {id: newID, dir: dir}); + }); + } + return putOp; }).then(function() { notify('Duplicated as ' + newID, 'success'); updateUndoBar(); |
