From 7b5ed92e003d8a4bf9bdc69d43b7354eb2260dfa Mon Sep 17 00:00:00 2001 From: historia <[not public]> Date: Sun, 5 Jul 2026 19:18:50 -0400 Subject: feat: duplicate items/obj/mobs from sidebar. item inputs fields changed to search fields --- internal/admin/static/mobeditor.js | 81 ++++++++++++++++++++++---------------- 1 file changed, 47 insertions(+), 34 deletions(-) (limited to 'internal/admin/static/mobeditor.js') diff --git a/internal/admin/static/mobeditor.js b/internal/admin/static/mobeditor.js index debe7e0..c142fb4 100644 --- a/internal/admin/static/mobeditor.js +++ b/internal/admin/static/mobeditor.js @@ -24,34 +24,34 @@ var MOB_SECTIONS = [ fields: [ ['kind', 'Kind', 'select', 'combat|task'], ['aggressive', 'Aggressive', 'checkbox'], - ['respawn_ticks', 'Respawn Ticks', 'number', '', 'narrow'], - ['stats.hp', 'HP', 'number', '', 'narrow'], - ['stats.attack', 'Attack', 'number', '', 'narrow'], - ['stats.strength', 'Strength', 'number', '', 'narrow'], - ['stats.defense', 'Defense', 'number', '', 'narrow'], - ['stats.ranged', 'Ranged', 'number', '', 'narrow'], - ['stats.science', 'Science', 'number', '', 'narrow'], - ['stats.speed', 'Speed', 'number', '', 'narrow'], - ['stats.max_melee_hit', 'Max Melee Hit', 'number', '', 'narrow'], - ['stats.max_ranged_hit', 'Max Ranged Hit', 'number', '', 'narrow'], - ['stats.max_science_hit', 'Max Science Hit', 'number', '', 'narrow'], - ['stats.bonuses.attack_bonus', 'Atk Bonus', 'number', '', 'narrow'], - ['stats.bonuses.strength_bonus', 'Str Bonus', 'number', '', 'narrow'], - ['stats.bonuses.science_bonus', 'Sci Bonus', 'number', '', 'narrow'], - ['stats.bonuses.science_percent_bonus', 'Sci % Bonus', 'number', '', 'narrow'], - ['stats.bonuses.ranged_bonus', 'Rng Bonus', 'number', '', 'narrow'], - ['stats.bonuses.ranged_strength_bonus', 'Rng Str Bonus', 'number', '', 'narrow'], - ['stats.defenses.stab_defense', 'Stab Def', 'number', '', 'narrow'], - ['stats.defenses.slash_defense', 'Slash Def', 'number', '', 'narrow'], - ['stats.defenses.crush_defense', 'Crush Def', 'number', '', 'narrow'], - ['stats.defenses.science_defense', 'Sci Def', 'number', '', 'narrow'], - ['stats.defenses.ranged_defense', 'Rng Def', 'number', '', 'narrow'], - ['stats.defenses.weakness', 'Weakness', 'text'], - ['stats.defenses.weakness_percent', 'Weakness %', 'number', '', 'narrow'], - ['assassin_level', 'Assassin Lvl', 'number', '', 'narrow'], - ['finishing_blow', 'Finishing Blow', 'search', '', '', null, 'items'], - ['damage_without', 'Damage Without', 'search', '', '', null, 'items'], - ['size', 'Size', 'text'], + ['respawn_ticks', 'Respawn Ticks', 'number', '30', 'narrow'], + ['stats.hp', 'HP', 'number', '10', 'narrow'], + ['stats.attack', 'Attack', 'number', '5', 'narrow'], + ['stats.strength', 'Strength', 'number', '5', 'narrow'], + ['stats.defense', 'Defense', 'number', '5', 'narrow'], + ['stats.ranged', 'Ranged', 'number', '1', 'narrow'], + ['stats.science', 'Science', 'number', '1', 'narrow'], + ['stats.speed', 'Speed', 'number', '5', 'narrow'], + ['stats.max_melee_hit', 'Max Melee Hit', 'number', '2', 'narrow'], + ['stats.max_ranged_hit', 'Max Ranged Hit', 'number', '0', 'narrow'], + ['stats.max_science_hit', 'Max Science Hit', 'number', '0', 'narrow'], + ['stats.bonuses.attack_bonus', 'Atk Bonus', 'number', '0', 'narrow'], + ['stats.bonuses.strength_bonus', 'Str Bonus', 'number', '0', 'narrow'], + ['stats.bonuses.science_bonus', 'Sci Bonus', 'number', '0', 'narrow'], + ['stats.bonuses.science_percent_bonus', 'Sci % Bonus', 'number', '0', 'narrow'], + ['stats.bonuses.ranged_bonus', 'Rng Bonus', 'number', '0', 'narrow'], + ['stats.bonuses.ranged_strength_bonus', 'Rng Str Bonus', 'number', '0', 'narrow'], + ['stats.defenses.stab_defense', 'Stab Def', 'number', '0', 'narrow'], + ['stats.defenses.slash_defense', 'Slash Def', 'number', '0', 'narrow'], + ['stats.defenses.crush_defense', 'Crush Def', 'number', '0', 'narrow'], + ['stats.defenses.science_defense', 'Sci Def', 'number', '0', 'narrow'], + ['stats.defenses.ranged_defense', 'Rng Def', 'number', '0', 'narrow'], + ['stats.defenses.weakness', 'Weakness', 'text', 'e.g. crush'], + ['stats.defenses.weakness_percent', 'Weakness %', 'number', '50', 'narrow'], + ['assassin_level', 'Assassin Lvl', 'number', '1', 'narrow'], + ['finishing_blow', 'Finishing Blow', 'search', 'e.g. stake', '', null, 'items'], + ['damage_without', 'Damage Without', 'search', 'e.g. holy_symbol', '', null, 'items'], + ['size', 'Size', 'text', 'small'], ], inline: [ {label:'Combat Descriptions', key:'combat_descriptions', type:'tags'}, @@ -61,10 +61,10 @@ var MOB_SECTIONS = [ id: 'steal', label: 'Steal', path: 'steal', detect: function(d) { return d.steal; }, fields: [ - ['table', 'Table ID', 'search', '', '', null, 'drops'], - ['level', 'Level', 'number', '', 'narrow'], - ['xp', 'XP', 'number', '', 'narrow'], - ['speed', 'Speed', 'number', '', 'narrow'], + ['table', 'Table ID', 'search', 'e.g. gem_table', '', null, 'drops'], + ['level', 'Level', 'number', '1', 'narrow'], + ['xp', 'XP', 'number', '5', 'narrow'], + ['speed', 'Speed', 'number', '4', 'narrow'], ] }, { @@ -73,7 +73,7 @@ var MOB_SECTIONS = [ fields: [ ['verb', 'Verb', 'text', 'work'], ['progress_noun', 'Progress Noun', 'text', 'construction'], - ['complete_message', 'Complete Message', 'text'], + ['complete_message', 'Complete Message', 'text', 'The work is finished.'], ] }, { @@ -756,8 +756,21 @@ function duplicateMob() { delete copy._path; copy.id = newID; + var dir = ''; + if (mobData._path) { + var parts = mobData._path.split('/'); + var parentDir = parts[parts.length - 2]; + if (parentDir !== 'mobs') dir = parentDir; + } + API.post('/api/mobs', {id: newID}).then(function() { - return API.put('/api/mobs/' + encodeURIComponent(newID), copy); + var putOp = API.put('/api/mobs/' + encodeURIComponent(newID), copy); + if (dir) { + return putOp.then(function() { + return API.post('/api/mobs/move', {id: newID, dir: dir}); + }); + } + return putOp; }).then(function() { notify('Duplicated as ' + newID, 'success'); updateUndoBar(); -- cgit v1.2.3