tarinai/index.html
2026-07-10 16:40:06 +09:00

428 lines
31 KiB
HTML

<!doctype html>
<html lang="ja">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>&#x305F;&#x308A;&#x306A;&#x3044;&#x89B3;&#x5BDF;</title>
<link rel="icon" type="image/png" href="assets/ui/favicon.png?v=39.16.18" />
<link rel="apple-touch-icon" href="assets/ui/apple-touch-icon.png?v=39.16.18" />
<link rel="shortcut icon" href="favicon.ico?v=39.16.18" />
<link rel="stylesheet" href="css/base.css?v=39.16.18" />
<link rel="stylesheet" href="css/layout.css?v=39.16.18" />
<link rel="stylesheet" href="css/panel.css?v=39.16.18" />
<link rel="stylesheet" href="css/components.css?v=39.16.18" />
<link rel="stylesheet" href="css/mobile.css?v=39.16.18" />
</head>
<body>
<div id="loadingScreen" class="loading-screen" aria-live="polite">
<div class="loading-panel">
<div class="loading-kicker">&#x305F;&#x308A;&#x306A;&#x3044;&#x89B3;&#x5BDF;</div>
<h1 class="loading-title">&#x8AAD;&#x307F;&#x8FBC;&#x307F;&#x4E2D;&#x2026;</h1>
<p id="loadingText" class="loading-text">&#x6E96;&#x5099;&#x3057;&#x3066;&#x3044;&#x307E;&#x3059;&#x3002;</p>
<div id="loadingSpriteStrip" class="loading-sprite-strip" aria-hidden="true"></div>
<div class="loading-progress-track"><div id="loadingBar" class="loading-progress-bar" style="width:0%"></div></div>
<div class="loading-progress-meta"><span>&#x9032;&#x884C;&#x72B6;&#x6CC1;</span><strong id="loadingPercent">0%</strong></div>
</div>
</div>
<div id="app">
<header class="topbar">
<div class="top-left">
<a class="btn room-link" href="https://2012r2.nishi.boats/~333/">333&#x306E;&#x90E8;&#x5C4B;&#x306B;&#x79FB;&#x52D5;</a>
<div class="brand">
<h1>&#x305F;&#x308A;&#x306A;&#x3044;&#x89B3;&#x5BDF;</h1>
</div>
</div>
<div class="top-actions">
<button id="pauseBtn" class="btn primary">&#x4E00;&#x6642;&#x505C;&#x6B62;</button>
<button id="speedBtn" class="btn">&#x901F;&#x5EA6; x1</button>
<button id="ecologyBtn" class="btn">&#x305F;&#x308A;&#x306A;&#x3044;&#x306E;&#x751F;&#x614B;</button>
<div id="soundMenu" class="sound-menu">
<button id="soundBtn" class="btn sound-menu-btn" type="button" aria-haspopup="true" aria-expanded="false">&#x97F3; ON</button>
<div id="soundPanel" class="sound-panel hidden" role="menu" aria-label="&#x97F3;">
<label class="sound-master"><input id="soundMasterToggle" type="checkbox" checked><span>&#x52B9;&#x679C;&#x97F3;</span></label>
<div class="sound-panel-divider"></div>
<label><input type="checkbox" data-sound-category="voice"><span>&#x305F;&#x308A;&#x306A;&#x3044;&#x306E;&#x58F0;</span></label>
<label><input type="checkbox" data-sound-category="notify" checked><span>&#x901A;&#x77E5;</span></label>
<label><input type="checkbox" data-sound-category="ops" checked><span>&#x64CD;&#x4F5C;</span></label>
</div>
</div>
<button id="creditsBtn" class="btn">&#x30AF;&#x30EC;&#x30B8;&#x30C3;&#x30C8;</button>
<button id="saveBtn" class="btn">&#x30BB;&#x30FC;&#x30D6;</button>
<button id="visualSettingsBtn" class="btn" type="button">&#x8868;&#x793A;&#x8A2D;&#x5B9A;</button>
<button id="resetBtn" class="btn danger">&#x30EA;&#x30BB;&#x30C3;&#x30C8;</button>
</div>
</header>
<main class="layout">
<section class="stage-wrap">
<canvas id="gameCanvas" aria-label="&#x305F;&#x308A;&#x306A;&#x3044;&#x89B3;&#x5BDF;&#x30AD;&#x30E3;&#x30F3;&#x30D0;&#x30B9;"></canvas>
<div id="mobileModeControls" class="mobile-mode-controls" aria-label="&#x30B9;&#x30DE;&#x30DB;&#x64CD;&#x4F5C;&#x30E2;&#x30FC;&#x30C9;">
<button type="button" data-mobile-mode="auto" class="active">&#x81EA;&#x52D5;</button>
<button type="button" data-mobile-mode="camera">&#x30AB;&#x30E1;&#x30E9;</button>
<button type="button" data-mobile-mode="tool">&#x9053;&#x5177;</button>
</div>
<div id="mobileRotateControls" class="mobile-rotate-controls" hidden aria-label="&#x7269;&#x7406;&#x30A2;&#x30A4;&#x30C6;&#x30E0;&#x306E;&#x56DE;&#x8EE2;">
<button type="button" data-mobile-rotate="left">&#x5DE6;&#x56DE;&#x8EE2;</button>
<button type="button" data-mobile-rotate="right">&#x53F3;&#x56DE;&#x8EE2;</button>
</div>
<div id="toast" class="toast hidden"></div>
</section>
<aside class="panel">
<nav id="panelQuickTabs" class="panel-quick-tabs" aria-label="&#x53F3;&#x30E1;&#x30CB;&#x30E5;&#x30FC;&#x306E;&#x30BF;&#x30D6;">
<button type="button" data-panel-tab="game">&#x672C;&#x4F53;</button>
<button type="button" data-panel-tab="selected">&#x305F;&#x308A;&#x306A;&#x3044;<br>&#x30C7;&#x30FC;&#x30BF;</button>
<button type="button" data-panel-tab="tools">&#x9053;&#x5177;</button>
<button type="button" data-panel-tab="colony">&#x30B3;&#x30ED;&#x30CB;&#x30FC;</button>
<button type="button" data-panel-tab="events">&#x30A4;&#x30D9;&#x30F3;&#x30C8;</button>
<button type="button" data-panel-tab="family">&#x5BB6;&#x7CFB;&#x56F3;</button>
</nav>
<section id="selectedCard" class="card selected-card hidden">
<div class="selected-head">
<h2>&#x305F;&#x308A;&#x306A;&#x3044;&#x30C7;&#x30FC;&#x30BF;</h2>
<button id="selectedCloseBtn" class="selected-close" type="button" aria-label="&#x305F;&#x308A;&#x306A;&#x3044;&#x30C7;&#x30FC;&#x30BF;&#x3092;&#x9589;&#x3058;&#x308B;">&times;</button>
</div>
<div id="selectedInfo" class="selected-info empty">&#x305F;&#x308A;&#x306A;&#x3044;&#x3092;&#x9078;&#x629E;&#x3057;&#x3066;&#x304F;&#x3060;&#x3055;&#x3044;</div>
</section>
<section id="toolCard" class="card tool-card collapsible-card">
<button class="panel-card-toggle" type="button" aria-expanded="true"><span class="panel-card-title">&#x9053;&#x5177;</span><span class="panel-card-state">&#x6298;&#x308A;&#x7573;&#x307F;</span></button>
<div class="panel-card-body">
<div class="tool-body">
<div id="toolPalette" class="tool-palette" aria-live="polite"></div>
</div>
</div>
</section>
<section class="card colony-card collapsible-card">
<button class="panel-card-toggle" type="button" aria-expanded="true"><span class="panel-card-title">&#x30B3;&#x30ED;&#x30CB;&#x30FC;</span><span class="panel-card-state">&#x6298;&#x308A;&#x7573;&#x307F;</span></button>
<div class="panel-card-body">
<div class="stats colony-stats">
<div class="stat"><span>&#x7DCF;&#x6570;</span><strong id="statPop">0</strong></div>
<div class="stat"><span>&#x6B7B;&#x4EA1;</span><strong id="statDead">0</strong></div>
<div class="stat"><span>&#x72B6;&#x614B;</span><strong id="statColonyMood">&#x5B89;&#x5B9A;</strong></div>
<div class="stat ground-stat" data-ground-toggle role="button" tabindex="0"><span>&#x5730;&#x9762;</span><button id="groundTypeBtn" class="ground-type-btn" type="button" data-ground-toggle aria-label="&#x5730;&#x9762;&#x3092;&#x304D;&#x308A;&#x304B;&#x3048;&#x308B;"><strong id="statGroundType">&#x7802;</strong></button></div>
</div>
<div class="temperature-control" aria-label="&#x6C17;&#x6E29;&#x8ABF;&#x6574;">
<div class="temperature-control-head"><span>&#x6C17;&#x6E29;</span><strong id="temperatureValue">10&#x2103;</strong><label class="temperature-auto"><input id="temperatureAutoToggle" type="checkbox" checked> &#x81EA;&#x52D5;</label></div>
<input id="temperatureSlider" class="temperature-slider" type="range" min="-100" max="120" step="1" value="10">
</div>
<div class="colony-limit-control" aria-label="コロニー上限設定">
<div class="colony-limit-head"><span>上限設定</span><small>0は上限なし</small></div>
<div class="colony-limit-grid">
<label class="colony-limit-row"><span>たりない個体数</span><input id="tarinaiPopulationLimitSlider" class="colony-limit-slider" type="range" min="0" max="300" step="1" value="0"><input id="tarinaiPopulationLimitInput" class="colony-limit-number" type="number" min="0" max="999" step="1" inputmode="numeric" placeholder="0"></label>
<label class="colony-limit-row"><span>オブジェクト総数</span><input id="objectLimitSlider" class="colony-limit-slider" type="range" min="0" max="1200" step="1" value="0"><input id="objectLimitInput" class="colony-limit-number" type="number" min="0" max="9999" step="1" inputmode="numeric" placeholder="0"></label>
</div>
<div id="colonyLimitStatus" class="colony-limit-status">たりない 0 / ∞ オブジェクト 0 / ∞</div>
</div>
<div id="colonyChartTabs" class="chart-tabs"><button data-chart="population" class="active">&#x500B;&#x4F53;&#x6570;</button><button data-chart="life">&#x6B32;&#x6C42;</button><button data-chart="objects">環境</button></div>
<div id="colonyChartLegend" class="colony-chart-legend"></div>
<div id="colonyChart" class="colony-chart" aria-label="&#x30B3;&#x30ED;&#x30CB;&#x30FC;&#x306E;&#x63A8;&#x79FB;&#x30B0;&#x30E9;&#x30D5;" role="img"></div>
</div>
</section>
<section class="card log-card collapsible-card">
<button class="panel-card-toggle" type="button" aria-expanded="true"><span class="panel-card-title">&#x30A4;&#x30D9;&#x30F3;&#x30C8;</span><span class="panel-card-state">&#x6298;&#x308A;&#x7573;&#x307F;</span></button>
<div class="panel-card-body">
<div id="log" class="log"></div>
<div class="log-push-controls" id="logPushControls" aria-label="&#x30D7;&#x30C3;&#x30B7;&#x30E5;&#x901A;&#x77E5;&#x8A2D;&#x5B9A;">
<label class="push-master"><input id="logPushEnabled" type="checkbox"> &#x30D7;&#x30C3;&#x30B7;&#x30E5;&#x901A;&#x77E5;</label>
<div class="push-kind-grid">
<label><input type="checkbox" data-push-kind="death" checked> &#x6B7B;&#x4EA1;</label>
<label><input type="checkbox" data-push-kind="accident" checked> &#x4E8B;&#x6545;</label>
<label><input type="checkbox" data-push-kind="birth" checked> &#x8A95;&#x751F;</label>
<label><input type="checkbox" data-push-kind="fight"> &#x55A7;&#x5629;</label>
<label><input type="checkbox" data-push-kind="food"> &#x98DF;&#x4E8B;</label>
<label><input type="checkbox" data-push-kind="weather"> &#x5929;&#x6C17;</label>
<label><input type="checkbox" data-push-kind="grass"> &#x8349;</label>
<label><input type="checkbox" data-push-kind="event"> &#x51FA;&#x6765;&#x4E8B;</label>
<label><input type="checkbox" data-push-kind="relation"> &#x95A2;&#x4FC2;</label>
</div>
</div>
</div>
</section>
</aside>
</main>
<section class="card lineage-main-card">
<div class="lineage-head">
<h2>&#x5BB6;&#x7CFB;&#x56F3;<span class="lineage-title-note">&#x91CD;&#x3044;&#x5834;&#x5408;&#x304C;&#x3042;&#x308B;&#x306E;&#x3067;&#x6CE8;&#x610F;</span></h2>
<div class="lineage-actions">
<button id="archiveUpdateToggleBtn" class="btn" type="button" aria-pressed="false">&#x66F4;&#x65B0; OFF</button>
<button id="archiveResetBtn" class="btn danger" type="button">&#x5BB6;&#x7CFB;&#x56F3;&#x3092;&#x30EA;&#x30BB;&#x30C3;&#x30C8;</button>
</div>
</div>
<div id="archiveContent" class="archive-content lineage-main-content"></div>
</section>
<button id="backToGameBtn" class="back-to-game-btn" type="button" hidden aria-label="&#x30B2;&#x30FC;&#x30E0;&#x672C;&#x4F53;&#x3078;&#x623B;&#x308B;">&#x25B2; &#x672C;&#x4F53;</button>
</div>
<div id="fieldDialog" class="field-dialog hidden" role="dialog" aria-modal="true" aria-labelledby="fieldDialogTitle">
<div class="field-dialog-panel reset-dialog-panel">
<h2 id="fieldDialogTitle">&#x30EA;&#x30BB;&#x30C3;&#x30C8;&#x8A2D;&#x5B9A;</h2>
<p class="field-dialog-lead">&#x30B5;&#x30A4;&#x30BA;&#x3068;&#x30D7;&#x30EA;&#x30BB;&#x30C3;&#x30C8;&#x3092;&#x7D44;&#x307F;&#x5408;&#x308F;&#x305B;&#x3066;&#x89B3;&#x5BDF;&#x74B0;&#x5883;&#x3092;&#x751F;&#x6210;&#x3057;&#x307E;&#x3059;&#x3002;</p>
<div class="field-dialog-section-title">&#x30B5;&#x30A4;&#x30BA;</div>
<div class="field-choice-grid">
<button class="field-choice" data-field-type="park" type="button" aria-pressed="false"><strong>&#x516C;&#x5712;</strong><span>&#x5927;</span></button>
<button class="field-choice" data-field-type="garden" type="button" aria-pressed="true"><strong>&#x5EAD;</strong><span>&#x4E2D;</span></button>
<button class="field-choice" data-field-type="cage" type="button" aria-pressed="false"><strong>&#x30B1;&#x30FC;&#x30B8;</strong><span>&#x5C0F;</span></button>
</div>
<div class="field-dialog-section-title">&#x30D7;&#x30EA;&#x30BB;&#x30C3;&#x30C8;</div>
<div class="field-choice-grid reset-preset-choice-grid">
<button class="field-choice" data-reset-preset="empty" type="button" aria-pressed="false"><strong>&#x7A7A;&#x767D;</strong><span>&#x4F55;&#x3082;&#x7121;&#x3044;</span></button>
<button class="field-choice" data-reset-preset="default" type="button" aria-pressed="true"><strong>&#x30C7;&#x30D5;&#x30A9;&#x30EB;&#x30C8;</strong><span>&#x521D;&#x671F;&#x751F;&#x6210;</span></button>
<button class="field-choice" data-reset-preset="athletic" type="button" aria-pressed="false"><strong>&#x30A2;&#x30B9;&#x30EC;&#x30C1;&#x30C3;&#x30AF;</strong><span>&#x67F5;&#x3068;&#x30DC;&#x30FC;&#x30EB;</span></button>
<button class="field-choice" data-reset-preset="crowded" type="button" aria-pressed="false"><strong>&#x904E;&#x5BC6;</strong><span>&#x5927;&#x91CF;&#x306E;&#x305F;&#x308A;&#x306A;&#x3044;&#x3002;</span></button>
<button class="field-choice" data-reset-preset="family" type="button" aria-pressed="false"><strong>&#x5BB6;&#x65CF;</strong><span>2&#x5339;&#x3068;&#x3078;&#x3053;&#x9905;</span></button>
<button class="field-choice" data-reset-preset="war" type="button" aria-pressed="false"><strong>&#x6226;&#x4E89;</strong><span>&#x3051;&#x3093;&#x304B;&#x3068;&#x67F5;</span></button>
<button class="field-choice" data-reset-preset="happy" type="button" aria-pressed="false"><strong>&#x5E78;&#x798F;</strong><span>&#x6383;&#x9664;&#x6A5F;&#x3068;&#x5DE3;&#x7BB1;</span></button>
</div>
<div class="field-dialog-actions">
<button id="fieldCancelBtn" class="btn" type="button">&#x30AD;&#x30E3;&#x30F3;&#x30BB;&#x30EB;</button>
<button id="fieldConfirmBtn" class="btn danger" type="button">&#x518D;&#x751F;&#x6210;</button>
</div>
</div>
</div>
<div id="visualSettingsDialog" class="field-dialog hidden" role="dialog" aria-modal="true" aria-labelledby="visualSettingsDialogTitle">
<div class="field-dialog-panel visual-settings-dialog-panel">
<h2 id="visualSettingsDialogTitle">&#x8868;&#x793A;&#x8A2D;&#x5B9A;</h2>
<p class="hint">&#x81EA;&#x52D5;&#x3067;&#x306F;FPS&#x306B;&#x5FDC;&#x3058;&#x3066;3&#x6BB5;&#x968E;&#x306E;&#x8CA0;&#x8377;&#x5236;&#x5FA1;&#x3092;&#x884C;&#x3044;&#x307E;&#x3059;&#x3002;&#x9AD8;&#x306F;&#x30B7;&#x30DF;&#x30E5;&#x30EC;&#x30FC;&#x30B7;&#x30E7;&#x30F3;&#x9593;&#x5F15;&#x304D;&#x306A;&#x3057;&#x3001;&#x4F4E;&#x306F;&#x5E38;&#x6642;&#x8EFD;&#x91CF;&#x5316;&#x3067;&#x3059;&#x3002;</p>
<div class="visual-setting-row">
<div><strong>&#x30A8;&#x30D5;&#x30A7;&#x30AF;&#x30C8;</strong><span>&#x7834;&#x7247;&#x3001;&#x96E8;&#x3001;&#x5149;&#x306E;&#x6F14;&#x51FA;</span></div>
<div class="visual-setting-options" role="group" aria-label="&#x30A8;&#x30D5;&#x30A7;&#x30AF;&#x30C8;">
<button type="button" data-visual-setting="effects" data-visual-value="off">OFF</button>
<button type="button" data-visual-setting="effects" data-visual-value="high">ON</button>
</div>
</div>
<div class="visual-setting-row">
<div><strong>&#x5F71;</strong><span>&#x5730;&#x9762;&#x306E;&#x843D;&#x3061;&#x5F71;&#x3068;&#x30B9;&#x30D7;&#x30E9;&#x30A4;&#x30C8;&#x306E;&#x5F71;</span></div>
<div class="visual-setting-options" role="group" aria-label="&#x5F71;">
<button type="button" data-visual-setting="shadows" data-visual-value="off">OFF</button>
<button type="button" data-visual-setting="shadows" data-visual-value="high">ON</button>
</div>
</div>
<div class="visual-setting-row">
<div><strong>&#x63CF;&#x753B;</strong><span>&#x88C5;&#x98FE;&#x3068;&#x89E3;&#x50CF;&#x5EA6;&#x306E;&#x8A2D;&#x5B9A;</span></div>
<div class="visual-setting-options" role="group" aria-label="&#x63CF;&#x753B;">
<button type="button" data-visual-setting="details" data-visual-value="auto">&#x81EA;&#x52D5;</button>
<button type="button" data-visual-setting="details" data-visual-value="low">&#x4F4E;</button>
<button type="button" data-visual-setting="details" data-visual-value="high">&#x9AD8;</button>
</div>
</div>
<div class="field-dialog-actions">
<button id="visualSettingsCloseBtn" class="btn" type="button">&#x9589;&#x3058;&#x308B;</button>
</div>
</div>
</div>
<div id="creditsDialog" class="field-dialog hidden" role="dialog" aria-modal="true" aria-labelledby="creditsDialogTitle">
<div class="field-dialog-panel">
<h2 id="creditsDialogTitle">&#x30AF;&#x30EC;&#x30B8;&#x30C3;&#x30C8;</h2>
<div>
<p><strong>&#x88FD;&#x4F5C;:</strong> 333</p>
<p><strong>&#x30A4;&#x30E9;&#x30B9;&#x30C8;:</strong> &#x3080;&#x3089;&#x3055;&#x304D;&#x6C0F; / &#x3044;&#x3089;&#x3059;&#x3068;&#x3084;: <a href="https://www.irasutoya.com/" target="_blank" rel="noopener">https://www.irasutoya.com/</a></p>
<p><strong>&#x52B9;&#x679C;&#x97F3;:</strong> VOICEVOX: &#x305A;&#x3093;&#x3060;&#x3082;&#x3093;&#x3000;&#x52B9;&#x679C;&#x97F3;&#x30E9;&#x30DC;: <a href="https://soundeffect-lab.info/" target="_blank" rel="noopener">https://soundeffect-lab.info/</a></p>
</div>
<div class="field-dialog-actions">
<button id="creditsCloseBtn" class="btn" type="button">&#x9589;&#x3058;&#x308B;</button>
</div>
</div>
</div>
<div id="archiveResetDialog" class="field-dialog hidden" role="dialog" aria-modal="true" aria-labelledby="archiveResetDialogTitle">
<div class="field-dialog-panel archive-reset-dialog-panel">
<h2 id="archiveResetDialogTitle">&#x5BB6;&#x7CFB;&#x56F3;&#x3092;&#x30EA;&#x30BB;&#x30C3;&#x30C8;&#x3057;&#x307E;&#x3059;&#x304B;&#xFF1F;</h2>
<p class="hint">&#x73FE;&#x5728;&#x306E;&#x89AA;&#x5B50;&#x95A2;&#x4FC2;&#x3068;&#x4E16;&#x4EE3;&#x60C5;&#x5831;&#x3092;&#x6D88;&#x53BB;&#x3057;&#x307E;&#x3059;&#x3002;&#x500B;&#x4F53;&#x305D;&#x306E;&#x3082;&#x306E;&#x3084;&#x5EAD;&#x306E;&#x72B6;&#x614B;&#x306F;&#x6D88;&#x3048;&#x307E;&#x305B;&#x3093;&#x3002;</p>
<div class="field-dialog-actions archive-reset-actions">
<button id="archiveResetCancelBtn" class="btn" type="button">&#x30AD;&#x30E3;&#x30F3;&#x30BB;&#x30EB;</button>
<button id="archiveResetConfirmBtn" class="btn danger" type="button">&#x30EA;&#x30BB;&#x30C3;&#x30C8;&#x3059;&#x308B;</button>
</div>
</div>
</div>
<div id="ecologyDialog" class="field-dialog hidden" role="dialog" aria-modal="true" aria-labelledby="ecologyDialogTitle">
<div class="field-dialog-panel ecology-dialog-panel">
<h2 id="ecologyDialogTitle">&#x305F;&#x308A;&#x306A;&#x3044;&#x306E;&#x751F;&#x614B;</h2>
<div id="ecologyGrid" class="ecology-grid"></div>
<div class="field-dialog-actions">
<button id="ecologyCloseBtn" class="btn" type="button">&#x9589;&#x3058;&#x308B;</button>
</div>
</div>
</div>
<div id="logPushOverlay" class="log-push-overlay" aria-live="polite" aria-atomic="false"></div>
<script src="js/version.js?v=39.16.18" defer></script>
<script src="js/event_bus.js?v=39.16.18" defer></script>
<script src="js/domain_ids.js?v=39.16.18" defer></script>
<script src="js/registry_base.js?v=39.16.18" defer></script>
<script src="js/disease_registry.js?v=39.16.18" defer></script>
<script src="js/sound_pack.js?v=39.16.18" defer></script>
<script src="js/deterministic_helpers.js?v=39.16.18" defer></script>
<script src="js/item_tool_metadata.js?v=39.16.18" defer></script>
<script src="js/item_tool_definitions.js?v=39.16.18" defer></script>
<script src="js/item_visual_definitions.js?v=39.16.18" defer></script>
<script src="js/item_food_definitions.js?v=39.16.18" defer></script>
<script src="js/item_effect_definitions.js?v=39.16.18" defer></script>
<script src="js/item_registry.js?v=39.16.18" defer></script>
<script src="js/data.js?v=39.16.18" defer></script>
<script src="js/ground_types.js?v=39.16.18" defer></script>
<script src="js/input_mode_manager.js?v=39.16.18" defer></script>
<script src="js/math.js?v=39.16.18" defer></script>
<script src="js/geometry_helpers.js?v=39.16.18" defer></script>
<script src="js/collision_footprint_system.js?v=39.16.18" defer></script>
<script src="js/physics_helpers.js?v=39.16.18" defer></script>
<script src="js/placement_preview_system.js?v=39.16.18" defer></script>
<script src="js/pin_attachment_system.js?v=39.16.18" defer></script>
<script src="js/physics_shape_editor_system.js?v=39.16.18" defer></script>
<script src="js/mechanical_system.js?v=39.16.18" defer></script>
<script src="js/mechanical_shape_bridge.js?v=39.16.18" defer></script>
<script src="js/constraint_system.js?v=39.16.18" defer></script>
<script src="js/physics_world_system.js?v=39.16.18" defer></script>
<script src="js/physics_projection_system.js?v=39.16.18" defer></script>
<script src="js/signal_system.js?v=39.16.18" defer></script>
<script src="js/assets.js?v=39.16.18" defer></script>
<script src="js/audio.js?v=39.16.18" defer></script>
<script src="js/perf_profiler.js?v=39.16.18" defer></script>
<script src="js/display_helpers.js?v=39.16.18" defer></script>
<script src="js/render.js?v=39.16.18" defer></script>
<script src="js/sim_core.js?v=39.16.18" defer></script>
<script src="js/tarinai_seed_factory.js?v=39.16.18" defer></script>
<script src="js/structures.js?v=39.16.18" defer></script>
<script src="js/item_type_catalog.js?v=39.16.18" defer></script>
<script src="js/items.js?v=39.16.18" defer></script>
<script src="js/item_type_initializers.js?v=39.16.18" defer></script>
<script src="js/item_lifecycle_support.js?v=39.16.18" defer></script>
<script src="js/item_update_policy.js?v=39.16.18" defer></script>
<script src="js/fire_runtime_system.js?v=39.16.18" defer></script>
<script src="js/robot_cleaner_system.js?v=39.16.18" defer></script>
<script src="js/item_dynamic_tool_system.js?v=39.16.18" defer></script>
<script src="js/item_dynamic_ball_system.js?v=39.16.18" defer></script>
<script src="js/item_dynamic_duplicator_system.js?v=39.16.18" defer></script>
<script src="js/item_dynamic_pin_system.js?v=39.16.18" defer></script>
<script src="js/item_dynamic_zunchi_system.js?v=39.16.18" defer></script>
<script src="js/item_dynamic_system.js?v=39.16.18" defer></script>
<script src="js/item_lifecycle_decay_system.js?v=39.16.18" defer></script>
<script src="js/item_lifecycle_growth_system.js?v=39.16.18" defer></script>
<script src="js/item_lifecycle_step_frame.js?v=39.16.18" defer></script>
<script src="js/item_lifecycle_step_decay.js?v=39.16.18" defer></script>
<script src="js/item_lifecycle_step_dynamic.js?v=39.16.18" defer></script>
<script src="js/item_lifecycle_step_growth.js?v=39.16.18" defer></script>
<script src="js/update_step_pipeline_runner.js?v=39.16.18" defer></script>
<script src="js/item_lifecycle_pipeline.js?v=39.16.18" defer></script>
<script src="js/item_runtime.js?v=39.16.18" defer></script>
<script src="js/structure_lifecycle.js?v=39.16.18" defer></script>
<script src="js/item_render_helpers.js?v=39.16.18" defer></script>
<script src="js/item_render_runtime.js?v=39.16.18" defer></script>
<script src="js/burn_motion_util.js?v=39.16.18" defer></script>
<script src="js/ants.js?v=39.16.18" defer></script>
<script src="js/health.js?v=39.16.18" defer></script>
<script src="js/tarinai.js?v=39.16.18" defer></script>
<script src="js/tarinai_action_spec.js?v=39.16.18" defer></script>
<script src="js/tarinai_behavior_state.js?v=39.16.18" defer></script>
<script src="js/tarinai_identity_social.js?v=39.16.18" defer></script>
<script src="js/tarinai_action_state.js?v=39.16.18" defer></script>
<script src="js/tarinai_disease_nest.js?v=39.16.18" defer></script>
<script src="js/tarinai_item_effects.js?v=39.16.18" defer></script>
<script src="js/tarinai_needs_core.js?v=39.16.18" defer></script>
<script src="js/tarinai_behavior_text.js?v=39.16.18" defer></script>
<script src="js/tarinai_forced_behavior.js?v=39.16.18" defer></script>
<script src="js/tarinai_nest_sleep_system.js?v=39.16.18" defer></script>
<script src="js/tarinai_item_targeting.js?v=39.16.18" defer></script>
<script src="js/tarinai_consumable_behavior.js?v=39.16.18" defer></script>
<script src="js/tarinai_social_action_runtime.js?v=39.16.18" defer></script>
<script src="js/tarinai_building_behavior.js?v=39.16.18" defer></script>
<script src="js/tarinai_action_definitions.js?v=39.16.18" defer></script>
<script src="js/tarinai_needs_items.js?v=39.16.18" defer></script>
<script src="js/tarinai_food_prototype_mixin.js?v=39.16.18" defer></script>
<script src="js/tarinai_need_planner_system.js?v=39.16.18" defer></script>
<script src="js/tarinai_item_interaction_context.js?v=39.16.18" defer></script>
<script src="js/tarinai_food_interaction_system.js?v=39.16.18" defer></script>
<script src="js/tarinai_contact_item_system.js?v=39.16.18" defer></script>
<script src="js/tarinai_item_interaction_system.js?v=39.16.18" defer></script>
<script src="js/tarinai_sunbath_system.js?v=39.16.18" defer></script>
<script src="js/tarinai_cursor_care_system.js?v=39.16.18" defer></script>
<script src="js/tarinai_local_environment_system.js?v=39.16.18" defer></script>
<script src="js/tarinai_social_move_life.js?v=39.16.18" defer></script>
<script src="js/tarinai_update_step_frame.js?v=39.16.18" defer></script>
<script src="js/tarinai_update_step_ai.js?v=39.16.18" defer></script>
<script src="js/tarinai_update_step_environment.js?v=39.16.18" defer></script>
<script src="js/tarinai_update_step_movement.js?v=39.16.18" defer></script>
<script src="js/tarinai_update_step_health.js?v=39.16.18" defer></script>
<script src="js/tarinai_update_pipeline.js?v=39.16.18" defer></script>
<script src="js/tarinai_runtime.js?v=39.16.18" defer></script>
<script src="js/tarinai_render.js?v=39.16.18" defer></script>
<script src="js/world.js?v=39.16.18" defer></script>
<script src="js/world_view.js?v=39.16.18" defer></script>
<script src="js/family_graph.js?v=39.16.18" defer></script>
<script src="js/world_reset_presets.js?v=39.16.18" defer></script>
<script src="js/world_family_social.js?v=39.16.18" defer></script>
<script src="js/impact_core_system.js?v=39.16.18" defer></script>
<script src="js/impact_response_system.js?v=39.16.18" defer></script>
<script src="js/collision_response_system.js?v=39.16.18" defer></script>
<script src="js/world_combat_effects.js?v=39.16.18" defer></script>
<script src="js/world_environment.js?v=39.16.18" defer></script>
<script src="js/world_temperature_system.js?v=39.16.18" defer></script>
<script src="js/world_pathfinding_system.js?v=39.16.18" defer></script>
<script src="js/world_grass_placement_system.js?v=39.16.18" defer></script>
<script src="js/world_spatial_budget.js?v=39.16.18" defer></script>
<script src="js/world_ants_system.js?v=39.16.18" defer></script>
<script src="js/weather_system.js?v=39.16.18" defer></script>
<script src="js/item_update_scheduler.js?v=39.16.18" defer></script>
<script src="js/simulation_runtime_helpers.js?v=39.16.18" defer></script>
<script src="js/tarinai_update_policy.js?v=39.16.18" defer></script>
<script src="js/simulation_environment_system.js?v=39.16.18" defer></script>
<script src="js/simulation_item_ant_system.js?v=39.16.18" defer></script>
<script src="js/simulation_effects_system.js?v=39.16.18" defer></script>
<script src="js/simulation_creature_system.js?v=39.16.18" defer></script>
<script src="js/simulation_maintenance_system.js?v=39.16.18" defer></script>
<script src="js/simulation_ambient_system.js?v=39.16.18" defer></script>
<script src="js/simulation_systems.js?v=39.16.18" defer></script>
<script src="js/system_order.js?v=39.16.18" defer></script>
<script src="js/simulation.js?v=39.16.18" defer></script>
<script src="js/colony_situation_system.js?v=39.16.18" defer></script>
<script src="js/world_update.js?v=39.16.18" defer></script>
<script src="js/world_tool_actions.js?v=39.16.18" defer></script>
<script src="js/world_placement_log.js?v=39.16.18" defer></script>
<script src="js/world_event_effects.js?v=39.16.18" defer></script>
<script src="js/command_dispatcher.js?v=39.16.18" defer></script>
<script src="js/text_catalog.js?v=39.16.18" defer></script>
<script src="js/ui.js?v=39.16.18" defer></script>
<script src="js/ui_log.js?v=39.16.18" defer></script>
<script src="js/ui_helpers.js?v=39.16.18" defer></script>
<script src="js/ui_selected.js?v=39.16.18" defer></script>
<script src="js/save_schema.js?v=39.16.18" defer></script>
<script src="js/snapshot_system.js?v=39.16.18" defer></script>
<script src="js/restore_coordinator.js?v=39.16.18" defer></script>
<script src="js/history_system.js?v=39.16.18" defer></script>
<script src="js/save_codec.js?v=39.16.18" defer></script>
<script src="js/save_storage.js?v=39.16.18" defer></script>
<script src="js/save_system.js?v=39.16.18" defer></script>
<script src="js/ui_tooltips.js?v=39.16.18" defer></script>
<script src="js/ui_layout_dialogs.js?v=39.16.18" defer></script>
<script src="js/ui_ground.js?v=39.16.18" defer></script>
<script src="js/ui_tools.js?v=39.16.18" defer></script>
<script src="js/ui_input_shared.js?v=39.16.18" defer></script>
<script src="js/ui_pointer_action_system.js?v=39.16.18" defer></script>
<script src="js/ui_input_touch.js?v=39.16.18" defer></script>
<script src="js/ui_input_mouse.js?v=39.16.18" defer></script>
<script src="js/ui_bind.js?v=39.16.18" defer></script>
<script src="js/ui_charts.js?v=39.16.18" defer></script>
<script src="js/ui_family_data.js?v=39.16.18" defer></script>
<script src="js/ui_family_async.js?v=39.16.18" defer></script>
<script src="js/ui_family_layout.js?v=39.16.18" defer></script>
<script src="js/ui_family_paths.js?v=39.16.18" defer></script>
<script src="js/ui_family_render.js?v=39.16.18" defer></script>
<script src="js/main.js?v=39.16.18" defer></script>
<script src="js/debug_tools.js?v=39.16.18" defer></script>
</body>
</html>