OS Protocols — SHD.build admin

OPERATING SYSTEM MODIFICATION REGISTRY

OS PROTOCOLS

Configure shared secondary profiles, unique level-scaled primary stats, and five-stage talents.

SHARED ATTRIBUTE PROFILESONE PROFILE PER QUALITY + ATTRIBUTE TYPE · REUSED BY EVERY MATCHING PROTOCOL
{data.profiles.filter((profile) => profile.effects.length === 3).length} / 12 CONFIGURED
{#each data.profiles as profile} {/each}
{#if profileEditing}

SHARED PROFILE

{profileEditing.quality.toUpperCase()} · {profileEditing.primary_attribute_type.toUpperCase()}

These values apply to every {profileEditing.quality} {profileEditing.primary_attribute_type} OS Protocol. They do not scale with an individual protocol’s level.

{#each secondaryRoles as role}{/each}
{#if form?.profileError}

{form.profileError}

{/if}
{/if} {#snippet protocolEditor()} {#if editing}

{editing.id ? 'MODIFY PROTOCOL' : 'NEW PROTOCOL'}

{editing.id ? editing.name : 'OS PROTOCOL DEFINITION'}

{@const selectedProfile = profileFor(editing.quality, editing.primary_attribute_type)}
INHERITED PROFILE{editing.quality.toUpperCase()} · {editing.primary_attribute_type.toUpperCase()}
{#if configuredProfile()}
{#each secondaryRoles as role}{@const effect = profileEffect(selectedProfile, role)}{secondaryNames(editing.primary_attribute_type)[role]}{format(effect.value, effect.stat_attribute_id)}{/each}
{:else}

Configure this quality and type combination in Shared Secondary Attribute Profiles before saving.

{/if}
UNIQUE PRIMARY ATTRIBUTELEVEL 1 BASE VALUE · LINEAR TO 2× AT LEVEL 50
LEVEL {protocolLevel}
0150
PRIMARY STAT
LEVEL {protocolLevel} PREVIEW{format(levelValue(editing.primaryEffect.base_value, protocolLevel), editing.primaryEffect.stat_attribute_id)}LEVEL 50 · {format(levelValue(editing.primaryEffect.base_value, 50), editing.primaryEffect.stat_attribute_id)}
UNIQUE PROTOCOL TALENTOPTIONAL OWNED TALENT · FIVE LINEAR UPGRADES FOR MARKED VALUES
{ editing.hasTalent = values[0] === '1'; if (editing.hasTalent) editing.talentOpen = true; }}/>
{#if editing.hasTalent}
{editing.talent.name || 'TALENT WORKSPACE'}{previewOutcomes().length} PROTOCOL OUTCOME{previewOutcomes().length === 1 ? '' : 'S'} · {editing.talent.conditionalRule.simulationReadiness === 'captured_only' ? 'CAPTURE ONLY' : 'MODELED'}{editing.talentOpen ? 'COLLAPSE' : 'EXPAND'}
{#each [1, 2, 3, 4, 5] as upgrade}{/each}
UPGRADE {talentUpgrade} / 5 · {talentUpgrade === 5 ? '2× SCALABLE VALUES' : `${Math.round((1 + talentUpgrade / 5) * 100)}% SCALABLE VALUES`}

{talentPreview(talentUpgrade) || 'Talent description preview'}

{:else}

This OS Protocol has no Talent. Its primary and inherited secondary Attributes remain available.

{#if editing.talent.id}{/if} {/if}
{#if form?.protocolError}

{form.protocolError}

{/if}
{#if editing.id}{/if}
{/if} {/snippet} {#if editing && !editing.id}{@render protocolEditor()}{/if}
{#each data.protocols as protocol}
{protocol.name}{protocol.pending ? `PROPOSED BY ${protocol.proposerName}` : 'LEVEL 1–50 · PRIMARY 2× MAX'}
{protocol.quality}{protocol.primary_attribute_type}{protocol.primaryEffect ? `${stat(protocol.primaryEffect.stat_attribute_id)?.name ?? 'UNKNOWN'} · ${format(protocol.primaryEffect.base_value, protocol.primaryEffect.stat_attribute_id)} → ${format(levelValue(protocol.primaryEffect.base_value, 50), protocol.primaryEffect.stat_attribute_id)}` : 'NOT CONFIGURED'}
{protocol.talent?.name ?? 'NOT ASSIGNED'}{#if protocol.talent}◆◆◆◆◆ {protocol.talent.conditionalRule?.clauses?.length || protocol.pending ? 'MODELED · ' : 'CAPTURE ONLY · '}5 UPGRADES{:else}OPTIONAL{/if}
{protocol.pending ? 'PENDING' : Number(protocol.active) === 1 ? 'ACTIVE' : 'ARCHIVED'}{#if protocol.pending}{:else}{/if}
{#if editing?.id === protocol.id}{@render protocolEditor()}{/if} {:else}
NO OS PROTOCOLS REGISTEREDConfigure shared secondary profiles, then add the first protocol.
{/each}