Weapon Mods — ISAC

ARMAMENT MODIFICATION REGISTRY

WEAPON MODS

Configure tier-aware slot compatibility, quality-scaled rolls, and fixed Mod Effects.

{#if editing}

{editing.id ? 'MODIFY WEAPON MOD' : 'NEW WEAPON MOD'}

{editing.id ? editing.name : 'WEAPON MOD DEFINITION'}

{#if isExotic}
EXOTIC QUALITYUNIQUE MOD · NO QUALITY VARIANTS OR RANDOM ROLLS
{:else}
PRIMARY ATTRIBUTE OPTIONS
{#each ['firepower','toughness','engineering'] as primary}{primary.toUpperCase()}{/each}
Selected by the agent while configuring a build.
{/if}
{isExotic ? 'EXOTIC WEAPON LOCK' : 'WEAPON CATEGORY COMPATIBILITY'}{isExotic ? 'PRE-EQUIPPED · CANNOT BE REMOVED' : 'SLOT TYPE AND CATEGORY MUST BOTH MATCH'}
{isExotic ? (editing.exotic_weapon_id ? 1 : 0) : editing.compatibleCategories.length}
{#if isExotic} {:else}{/if}
{#if !isExotic}
QUALITY & LEVEL SCALINGPRIMARY ROLLS SCALE LINEARLY FROM LEVEL 1 TO 20 · SECONDARY RANGES VARY BY QUALITY
4 QUALITY PROFILES
QUALITYPRIMARY · LEVEL 1PRIMARY · LEVEL 20
{#each editing.qualityValues as row}
{row.quality.toUpperCase()}
–
–
{/each}
({ value:quality,label:quality }))} bind:value={qualityPreview} showIndicator={false}/>
{#if previewRow}
SELECTED PRIMARY · LEVEL {levelPreview}{display(interpolate(previewRow.primaryLevel1Min,previewRow.primaryLevel20Min))}–{display(interpolate(previewRow.primaryLevel1Max,previewRow.primaryLevel20Max))}
SECONDARY ATTRIBUTE POOL{editing.secondaryRanges.length} OPTIONS
{/if}
SECONDARY ATTRIBUTE POOLTHE BUILDER SELECTS TWO DISTINCT ATTRIBUTES · EVERY OPTION REQUIRES A RANGE AT EACH QUALITY
{#each editing.secondaryRanges as range,index}
{String(index+1).padStart(2,'0')}itemIndex!==index).map((item: any)=>item.statId)} bind:value={range.statId}/>{#each data.qualities as quality}{/each}
{/each}
MOD EFFECTNO TRIGGER · FIXED ATTRIBUTE VALUES VARY BY QUALITY, NOT LEVEL
{#each editing.effects as effect, index}
0{index+1} itemIndex !== index).map((item: any) => item.statId)} bind:value={effect.statId}/>{#each data.qualities as quality}{/each}
{/each}
{:else}
FIXED EXOTIC ATTRIBUTESNO RANDOM ROLLS OR QUALITY RANGES · VALUES SCALE LINEARLY FROM LEVEL 1 TO 20
{#each editing.exoticAttributes as attribute,index}
{String(index+1).padStart(2,'0')}itemIndex!==index).map((item:any)=>item.statId)} bind:value={attribute.statId}/>
{/each}

EXOTIC LOCK This mod is permanently equipped on {weapon(editing.exotic_weapon_id)?.name ?? 'the selected exotic weapon'}. Its fixed attributes increase with mod level and cannot be rerolled.

{/if} {#if form?.weaponModError}

{form.weaponModError}

{/if}
{#if editing.id}{/if}
{/if}
WEAPON MODSLOTPRIMARYSECONDARIESCOMPATIBILITYMOD EFFECTSTATE
{#each data.mods as item}
{item.name}{item.pending ? `PROPOSED BY ${item.proposerName}` : item.exotic_weapon_id ? 'EXOTIC · PRE-EQUIPPED' : 'STANDARD · SPECIALIZED · SUPERIOR · HIGH-END'}
{item.slot_type}{#if item.exotic_weapon_id}FIXED{:else}ANY CORE{/if}{item.exotic_weapon_id ? `${item.exoticAttributes.length} FIXED` : `${item.secondaryRanges.length} POSSIBLE`} · {item.exotic_weapon_id ? 'LEVEL SCALED' : 'SELECT 2 IN BUILDER'}{item.exotic_weapon_id ? weapon(item.exotic_weapon_id)?.name ?? item.exotic_weapon_name : item.compatibleCategories.map((category: string) => category.toUpperCase()).join(' · ')}{item.exotic_weapon_id ? 'NO ROLLS' : `${item.effects.length} EFFECT${item.effects.length===1?'':'S'}`}{item.pending?'PENDING':Number(item.active)?'ACTIVE':'ARCHIVED'}{#if item.pending}{:else}{/if}
{:else}
NO WEAPON MODS REGISTEREDAdd the first slot-compatible Weapon Mod definition.
{/each}