diff options
Diffstat (limited to 'internal/admin/static/triggerseditor.js')
| -rw-r--r-- | internal/admin/static/triggerseditor.js | 37 |
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] = ''; |
