aboutsummaryrefslogtreecommitdiff
path: root/internal/admin/static/triggerseditor.js
diff options
context:
space:
mode:
authorhistoria <[not public]>2026-07-10 17:02:13 -0400
committerhistoria <[not public]>2026-07-10 17:02:13 -0400
commitd02f0d2cdf67f1445a9ccae86b99a2578adab585 (patch)
treefc2caae674d20b9ac31aa0da41f4f600f8f801a9 /internal/admin/static/triggerseditor.js
parent18d46f9c336d37d0282eb7191bb7ff930163d18f (diff)
downloadthehouseoficarus-d02f0d2cdf67f1445a9ccae86b99a2578adab585.tar.gz
feat(admin): update search to use standard condition/action framework rather than bespoke implementation
Diffstat (limited to 'internal/admin/static/triggerseditor.js')
-rw-r--r--internal/admin/static/triggerseditor.js37
1 files changed, 36 insertions, 1 deletions
diff --git a/internal/admin/static/triggerseditor.js b/internal/admin/static/triggerseditor.js
index 29759eb..dbc1e41 100644
--- a/internal/admin/static/triggerseditor.js
+++ b/internal/admin/static/triggerseditor.js
@@ -110,7 +110,7 @@ function syncStepEffects(row, si) {
if (!effectsEl) return;
var step = triggerData.steps[si] || {};
['messages','broadcast','broadcast_global','teleport','heal','credits',
- 'give_item','take_item','despawn_mob','aps_node'].forEach(function(k) { delete step[k]; });
+ 'give_item','take_item','despawn_mob','aps_node','drop_table'].forEach(function(k) { delete step[k]; });
delete step.set_global_flags; delete step.set_player_flags; delete step.spawn_mob;
var msgInputs = effectsEl.querySelectorAll('.trig-msg-input');
@@ -147,6 +147,12 @@ function syncStepEffects(row, si) {
step.spawn_mob.id = smInput.value.trim();
}
+ var dtBlock = effectsEl.querySelector('.ie-drop-table');
+ if (dtBlock) {
+ var dt = ie_collectDropTableBlock(dtBlock);
+ if (dt) step.drop_table = dt;
+ }
+
triggerData.steps[si] = step;
}
@@ -336,9 +342,37 @@ function renderStepEffects(step, si) {
h += renderKVSection('Set Player Flags', 'set_player_flags', step.set_player_flags);
}
+ if (Array.isArray(step.drop_table) || step.drop_table !== undefined) {
+ h += '<div class="ie-act-kv"><div class="ie-act-kv-header"><span>Drop Table</span></div>';
+ h += ie_renderDropTableBlock(step.drop_table, 'trigAddDropRow('+si+',\'item\')', 'trigAddDropRow('+si+',\'table\')', 'trigRemoveDropRow('+si+',__RI__)');
+ h += '</div>';
+ }
+
return h;
}
+function trigAddDropRow(si, kind) {
+ if (!triggerData || !Array.isArray(triggerData.steps) || !triggerData.steps[si]) return;
+ syncAllStepEffects();
+ var step = triggerData.steps[si];
+ if (!Array.isArray(step.drop_table)) step.drop_table = [];
+ if (kind === 'table') {
+ step.drop_table.push({table: '', weight: 10, quantity: 1, _kind: 'table'});
+ } else {
+ step.drop_table.push({item_id: '', weight: 10, quantity: 1, _kind: 'item'});
+ }
+ renderCurrent();
+}
+
+function trigRemoveDropRow(si, ri) {
+ if (!triggerData || !Array.isArray(triggerData.steps) || !triggerData.steps[si]) return;
+ syncAllStepEffects();
+ var step = triggerData.steps[si];
+ if (!Array.isArray(step.drop_table)) return;
+ step.drop_table.splice(ri, 1);
+ renderCurrent();
+}
+
function addStep() {
if (!triggerData) return;
if (!Array.isArray(triggerData.steps)) triggerData.steps = [];
@@ -378,6 +412,7 @@ function addStepEffect(si, kind) {
if (!at) return;
if (at.kind === 'kv') step[kind] = {};
else if (at.kind === 'checkbox') step[kind] = true;
+ else if (at.kind === 'droptable') step[kind] = [];
else if (at.kind === 'number') step[kind] = 0;
else if (at.kind === 'search') step[kind] = '';
else step[kind] = '';