aboutsummaryrefslogtreecommitdiff
path: root/internal/admin/static/objecteditor.js
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-07-05 19:18:50 -0400
committerhistoria <[not public]>2026-07-05 19:18:50 -0400
commit7b5ed92e003d8a4bf9bdc69d43b7354eb2260dfa (patch)
tree04310b22c25e2d9fe86b2c06e78e12d8f4caa61b /internal/admin/static/objecteditor.js
parent6bd5365cc22f84c047c1585e3f54571af46f53e5 (diff)
downloadthehouseoficarus-7b5ed92e003d8a4bf9bdc69d43b7354eb2260dfa.tar.gz
feat: duplicate items/obj/mobs from sidebar. item inputs fields changed to search fields
Diffstat (limited to 'internal/admin/static/objecteditor.js')
-rw-r--r--internal/admin/static/objecteditor.js64
1 files changed, 38 insertions, 26 deletions
diff --git a/internal/admin/static/objecteditor.js b/internal/admin/static/objecteditor.js
index 5444985..7e2d04b 100644
--- a/internal/admin/static/objecteditor.js
+++ b/internal/admin/static/objecteditor.js
@@ -21,7 +21,7 @@ var SECTIONS = [
id: 'steal', label: 'Steal', path: 'steal',
detect: function(d) { return d.steal !== undefined; },
fields: [
- ['table', 'Table ID', 'search', '', '', null, 'drops'],
+ ['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'],
@@ -64,16 +64,16 @@ var SECTIONS = [
id: 'use', label: 'Use (Station)', path: 'use',
detect: function(d) { return d.use; },
fields: [
- ['message', 'Message', 'text'],
- ['wait', 'Wait', 'number', '', 'narrow'],
- ['skill', 'Skill', 'text'],
- ['level', 'Level', 'number', '', 'narrow'],
- ['xp', 'XP', 'number', '', 'narrow'],
- ['fail_message', 'Fail Message', 'text'],
+ ['message', 'Message', 'text', 'You use the station...'],
+ ['wait', 'Wait', 'number', '4', 'narrow'],
+ ['skill', 'Skill', 'text', 'e.g. smithing'],
+ ['level', 'Level', 'number', '1', 'narrow'],
+ ['xp', 'XP', 'number', '25', 'narrow'],
+ ['fail_message', 'Fail Message', 'text', 'You fail to use the station.'],
],
inline: [
{label:'Success', path:'success', fields:[
- ['base', 'Base', 'number', '', 'narrow'], ['per_level', 'Per Lvl', 'number', '', 'narrow'], ['cap', 'Cap', 'number', '', 'narrow']
+ ['base', 'Base', 'number', '0.5', 'narrow'], ['per_level', 'Per Lvl', 'number', '0.01', 'narrow'], ['cap', 'Cap', 'number', '0.95', 'narrow']
]},
{label:'Consume', key:'consume', type:'kv', valType:'number'},
],
@@ -88,14 +88,13 @@ var SECTIONS = [
id: 'safespot', label: 'Safespot', path: 'safespot',
detect: function(d) { return d.safespot; },
fields: [
- ['tier', 'Tier', 'number', '', 'narrow'],
+ ['tier', 'Tier', 'number', '1', 'narrow'],
['max_block_size', 'Max Block Size', 'select', '|small|medium|large|massive'],
- ['max_occupants', 'Max Occupants', 'number', '', 'narrow'],
- ['unsafe_chance', 'Unsafe Chance', 'number', '', 'narrow'],
- ['decay_ticks', 'Decay Ticks', 'number', '', 'narrow'],
- ['decay_chance', 'Decay Chance', 'number', '', 'narrow'],
- ['respawn_on_hide', 'Respawn on Hide', 'checkbox'],
- ['respawn_ticks', 'Respawn Ticks', 'number', '', 'narrow'],
+ ['max_occupants', 'Max Occupants', 'number', '1', 'narrow'],
+ ['unsafe_chance', 'Unsafe Chance', 'number', '0.05', 'narrow'],
+ ['decay_ticks', 'Decay Ticks', 'number', '100', 'narrow'],
+ ['decay_chance', 'Decay Chance', 'number', '0.1', 'narrow'],
+ ['respawn_ticks', 'Respawn Ticks', 'number', '50', 'narrow'],
],
subtables: [
{label:'Levels', key:'levels', fields:[
@@ -107,24 +106,24 @@ var SECTIONS = [
id: 'use_interactions', label: 'Use Interactions', labelHint: '(what happens when you use items on this)', path: 'use_interactions', isArray: true, fullWidth: true,
detect: function(d) { return d.use_interactions && Array.isArray(d.use_interactions); },
fields: [
- ['item_id', 'Item ID', 'search', '', '', null, 'items'],
+ ['item_id', 'Item ID', 'search', 'e.g. keycard', '', null, 'items'],
['condition', 'Condition', 'json', 'e.g. {"flag":"my_flag"} or {"player_flag":"x","value":1} or {"all_of":[{"flag":"a"},{"has_item":"key"}]}'],
['action', 'Action', 'json', 'e.g. {"set_flags":{"my_flag":true},"message":"You activate it.","give_item":"gem"}'],
- ['message', 'Message', 'text'],
+ ['message', 'Message', 'text', 'You use the object...'],
]
},
{
id: 'on_look', label: 'On Look', path: 'on_look',
detect: function(d) { return d.on_look; },
fields: [
- ['set_flags', 'Set Flags', 'json'],
- ['set_player_flags', 'Set Player Flags', 'json'],
- ['give_item', 'Give Item', 'text'],
- ['take_item', 'Take Item', 'text'],
- ['teleport', 'Teleport', 'number', '', 'narrow'],
- ['heal', 'Heal', 'number', '', 'narrow'],
- ['credits', 'Credits', 'number', '', 'narrow'],
- ['reputation_cost', 'Reputation Cost', 'number', '', 'narrow'],
+ ['set_flags', 'Set Flags', 'json', '{"flag":"value"}'],
+ ['set_player_flags', 'Set Player Flags', 'json', '{"pflag":"value"}'],
+ ['give_item', 'Give Item', 'text', 'e.g. keycard'],
+ ['take_item', 'Take Item', 'text', 'e.g. bomb'],
+ ['teleport', 'Teleport', 'number', '5', 'narrow'],
+ ['heal', 'Heal', 'number', '10', 'narrow'],
+ ['credits', 'Credits', 'number', '100', 'narrow'],
+ ['reputation_cost', 'Reputation Cost', 'number', '1', 'narrow'],
['aps_node', 'APS Node', 'checkbox'],
]
},
@@ -1106,8 +1105,21 @@ function duplicateObject() {
delete copy._path;
copy.id = newID;
+ var dir = '';
+ if (objectData._path) {
+ var parts = objectData._path.split('/');
+ var parentDir = parts[parts.length - 2];
+ if (parentDir !== 'objects') dir = parentDir;
+ }
+
API.post('/api/objects', {id: newID}).then(function() {
- return API.put('/api/objects/' + encodeURIComponent(newID), copy);
+ var putOp = API.put('/api/objects/' + encodeURIComponent(newID), copy);
+ if (dir) {
+ return putOp.then(function() {
+ return API.post('/api/objects/move', {id: newID, dir: dir});
+ });
+ }
+ return putOp;
}).then(function() {
notify('Duplicated as ' + newID, 'success');
updateUndoBar();