Please place a valid subject into the DNA modifier.
';
+ }
+
+ var characters = dnaString.split('');
+
+ var html = '
- {^{if isBeakerLoaded}}
- {^{for beakerContents}}
-
{^{:volume}} units of {^{:name}}
+ {^{if isBeakerLoaded}}
+ {^{:beakerLabel ? beakerLabel : '
No label'}}
+ {^{if beakerVolume}}
+
{^{:beakerVolume}} units remaining
{{else}}
Beaker is empty
- {{/for}}
+ {{/if}}
{{else}}
No beaker loaded
{{/if}}
diff --git a/nano/templates/dna_modifier.tmpl b/nano/templates/dna_modifier.tmpl
new file mode 100644
index 0000000000..b22be24bd1
--- /dev/null
+++ b/nano/templates/dna_modifier.tmpl
@@ -0,0 +1,310 @@
+
+
Status
+
+
+ {^{if !hasOccupant}}
+
Cell Unoccupied
+ {{else}}
+
+ {^{:occupant.name}} =>
+ {^{if occupant.stat == 0}}
+ Conscious
+ {{else occupant.stat == 1}}
+ Unconscious
+ {{else}}
+ DEAD
+ {{/if}}
+
+
+ {^{if !occupant.isViableSubject || !occupant.uniqueIdentity || !occupant.structuralEnzymes}}
+
+ The occupant's DNA structure is ruined beyond recognition, please insert a subject with an intact DNA structure.
+
+ {{else occupant.stat < 2}}
+
+
Health:
+ {^{if occupant.health >= 0}}
+ {^{:~displayBar(occupant.health, 0, occupant.maxHealth, 'good')}}
+ {{else}}
+ {^{:~displayBar(occupant.health, 0, occupant.minHealth, 'average alignRight')}}
+ {{/if}}
+
{^{:~round(occupant.health)}}
+
+
+
+
Radiation:
+ {^{:~displayBar(occupant.radiationLevel, 0, 100, 'average')}}
+
{^{:~round(occupant.radiationLevel)}}
+
+
+
+
Unique Enzymes:
+
{^{:occupant.uniqueEnzymes ? occupant.uniqueEnzymes : 'Unknown'}}
+
+
+
+ {{/if}}
+ {{/if}}
+
+
+
+
Operations
+
+ {^{:~link('Modify U.I.', 'link', {'selectMenuKey' : 'ui'}, selectedMenuKey == 'ui' ? 'selected' : null)}}
+ {^{:~link('Modify S.E.', 'link', {'selectMenuKey' : 'se'}, selectedMenuKey == 'se' ? 'selected' : null)}}
+ {^{:~link('Transfer Buffers', 'disk', {'selectMenuKey' : 'buffer'}, selectedMenuKey == 'buffer' ? 'selected' : null)}}
+ {^{:~link('Rejuvenators', 'plusthick', {'selectMenuKey' : 'rejuvenators'}, selectedMenuKey == 'rejuvenators' ? 'selected' : null)}}
+
+
+
+
+{^{if !selectedMenuKey || selectedMenuKey == 'ui'}}
+
Modify Unique Identifier
+ {^{:~displayDNABlocks(occupant.uniqueIdentity, selectedUIBlock, selectedUISubBlock, dnaBlockSize, 'UI')}}
+
+
+
+ Target:
+
+
+ {^{:~link('-', null, {'changeUITarget' : 0}, selectedUITarget > 0 ? null : 'disabled')}}
+
{^{:selectedUITargetHex}}
+ {^{:~link('+', null, {'changeUITarget' : 1}, selectedUITarget < 15 ? null : 'disabled')}}
+
+
+
+
+ {^{:~link('Irradiate Block', 'radiation', {'pulseUIRadiation' : 1}, !occupant.isViableSubject ? 'disabled' : null)}}
+
+
+{{else selectedMenuKey == 'se'}}
+
Modify Structural Enzymes
+ {^{:~displayDNABlocks(occupant.structuralEnzymes, selectedSEBlock, selectedSESubBlock, dnaBlockSize, 'SE')}}
+
+
+
+ {^{:~link('Irradiate Block', 'radiation', {'pulseSERadiation' : 1}, !occupant.isViableSubject ? 'disabled' : null)}}
+
+
+{{else selectedMenuKey == 'buffer'}}
+
Transfer Buffers
+ {^{for buffers}}
+
Buffer {{:#index + 1}}
+
+
+ Load Data:
+
+
+ {^{:~link('Subject U.I.', 'link', {'bufferOption' : 'saveUI', 'bufferId' : (#index + 1)}, !~root.hasOccupant ? 'disabled' : null)}}
+ {^{:~link('Subject U.I. + U.E.', 'link', {'bufferOption' : 'saveUIAndUE', 'bufferId' : (#index + 1)}, !~root.hasOccupant ? 'disabled' : null)}}
+ {^{:~link('Subject S.E.', 'link', {'bufferOption' : 'saveSE', 'bufferId' : (#index + 1)}, !~root.hasOccupant ? 'disabled' : null)}}
+ {^{:~link('From Disk', 'disk', {'bufferOption' : 'loadDisk', 'bufferId' : (#index + 1)}, !~root.hasDisk || !~root.disk.data ? 'disabled' : null)}}
+
+
+ {^{if data}}
+
+
+ Label:
+
+
+ {^{:label ? label : 'No Label'}}
+
+
+
+
+ Subject:
+
+
+ {^{:owner ? owner : 'Unknown'}}
+
+
+
+
+ Stored Data:
+
+
+ {^{:data == 'ui' ? 'Unique Identifiers' : 'Structural Enzymes'}}
+ {^{:ue ? ' + Unique Enzymes' : ''}}
+
+
+ {{else}}
+
+
+ This buffer is empty.
+
+
+ {{/if}}
+
+
+ Options:
+
+
+ {^{:~link('Clear', 'trash', {'bufferOption' : 'clear', 'bufferId' : (#index + 1)}, !data ? 'disabled' : null)}}
+ {^{:~link('Create Injector', 'pencil', {'bufferOption' : 'createInjector', 'bufferId' : (#index + 1)}, !data ? 'disabled' : null)}}
+ {^{:~link('Transfer To Subject', 'radiation', {'bufferOption' : 'transfer', 'bufferId' : (#index + 1)}, !~root.hasOccupant || !data ? 'disabled' : null)}}
+ {^{:~link('Save To Disk', 'disk', {'bufferOption' : 'saveDisk', 'bufferId' : (#index + 1)}, !data || !~root.hasDisk ? 'disabled' : null)}}
+
+
+ {{/for}}
+
+
Data Disk
+ {^{if hasDisk}}
+ {^{if disk.data}}
+
+
+ Label:
+
+
+ {^{:disk.label ? disk.label : 'No Label'}}
+
+
+
+
+ Subject:
+
+
+ {^{:disk.owner ? disk.owner : 'Unknown'}}
+
+
+
+
+ Stored Data:
+
+
+ {^{:disk.data == 'ui' ? 'Unique Identifiers' : 'Structural Enzymes'}}
+ {^{:disk.ue ? ' + Unique Enzymes' : ''}}
+
+
+ {{else}}
+
+ {{/if}}
+ {{else}}
+
+
+ No disk inserted.
+
+
+ {{/if}}
+
+
+ {^{:~link('Wipe Disk', 'trash', {'bufferOption' : 'wipeDisk'}, !hasDisk || !disk.data ? 'disabled' : null)}}
+ {^{:~link('Eject Disk', 'eject', {'bufferOption' : 'ejectDisk'}, !hasDisk ? 'disabled' : null)}}
+
+
+{{else selectedMenuKey == 'rejuvenators'}}
+
Rejuvenators
+
+
+ Inject:
+
+
+ {^{:~link('5', 'pencil', {'injectRejuvenators' : 5}, !hasOccupant || !beakerVolume ? 'disabled' : null)}}
+ {^{:~link('10', 'pencil', {'injectRejuvenators' : 10}, !hasOccupant || !beakerVolume ? 'disabled' : null)}}
+ {^{:~link('20', 'pencil', {'injectRejuvenators' : 20}, !hasOccupant || !beakerVolume ? 'disabled' : null)}}
+ {^{:~link('30', 'pencil', {'injectRejuvenators' : 30}, !hasOccupant || !beakerVolume ? 'disabled' : null)}}
+ {^{:~link('50', 'pencil', {'injectRejuvenators' : 50}, !hasOccupant || !beakerVolume ? 'disabled' : null)}}
+
+
+
+
+
+ Beaker:
+
+
+ {^{if isBeakerLoaded}}
+ {^{:beakerLabel ? beakerLabel : 'No label'}}
+ {^{if beakerVolume}}
+ {^{:beakerVolume}} units remaining
+ {{else}}
+ Beaker is empty
+ {{/if}}
+ {{else}}
+ No beaker loaded
+ {{/if}}
+
+
+ {^{:~link('Eject Beaker', 'eject', {'ejectBeaker' : 1}, isBeakerLoaded ? null : 'disabled')}}
+
+
+{{/if}}
+
+
+
+{^{if selectedMenuKey == 'ui' || selectedMenuKey == 'se'}}
+
Radiation Emitter Settings
+
+
+ Intensity:
+
+
+ {^{:~link('-', null, {'radiationIntensity' : 0}, radiationIntensity > 1 ? null : 'disabled')}}
+
{^{:radiationIntensity}}
+ {^{:~link('+', null, {'radiationIntensity' : 1}, radiationIntensity < 10 ? null : 'disabled')}}
+
+
+
+
+ Duration:
+
+
+ {^{:~link('-', null, {'radiationDuration' : 0}, radiationDuration > 2 ? null : 'disabled')}}
+
{^{:radiationDuration}}
+ {^{:~link('+', null, {'radiationDuration' : 1}, radiationDuration < 20 ? null : 'disabled')}}
+
+
+
+
+
+
+
+ {^{:~link('Pulse Radiation', 'radiation', {'pulseRadiation' : 1}, !hasOccupant ? 'disabled' : null)}}
+
+
+{{/if}}
+
+
+
+
+
+
+
+ Occupant:
+
+
+ {^{:~link('Eject Occupant', 'eject', {'ejectOccupant' : 1}, locked || !hasOccupant || irradiating ? 'disabled' : null)}}
+
+
+
+
+ Door Lock:
+
+
+ {^{:~link('Engaged', 'locked', {'toggleLock' : 1}, locked ? 'selected' : !hasOccupant ? 'disabled' : null)}}
+ {^{:~link('Disengaged', 'unlocked', {'toggleLock' : 1}, !locked ? 'selected' : irradiating ? 'disabled' : null)}}
+
+
+
+{^{if irradiating}}
+
+
+
Irradiating Subject
+ For {^{:irradiating}} seconds.
+
+
+{{/if}}
+