diff options
| author | prospanclaudebot <[email protected]> | 2026-07-11 00:21:54 +0000 |
|---|---|---|
| committer | prospanclaudebot <[email protected]> | 2026-07-11 00:21:54 +0000 |
| commit | f385daa1b04a732c8a1a380d359fc33106eba9c9 (patch) | |
| tree | 87122b7f9119c131512e2ef7572bf369b97b77d7 | |
| parent | 62beb96ae49a37b25759d3b78498e30766e36c67 (diff) | |
| download | planeta-zhopa-f385daa1b04a732c8a1a380d359fc33106eba9c9.tar.gz planeta-zhopa-f385daa1b04a732c8a1a380d359fc33106eba9c9.zip | |
entities: π ABRAXAS (ΠΈΠ΄ΠΎΠ» Π² ΠΊΠ°ΡΡΠ΅) + THE TRIAGONS (ΠΊΠΎΠ»ΠΎΡΡΡ-ΡΠ΅ΡΡΠ°ΡΠ΄ΡΡ Π·Π° ΠΊΡΠ°Π΅ΠΌ ΠΊΠ°ΡΡΡ) β ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠΉ ΠΎΠΌΠΌΠ°ΠΆ, Π½Π΅ ΡΠΈΠΏ Π°ΡΡΠ΅ΡΠΎΠ²
| -rw-r--r-- | serve/index.html | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/serve/index.html b/serve/index.html index ec30506..d7132e1 100644 --- a/serve/index.html +++ b/serve/index.html @@ -1698,6 +1698,64 @@ function rcTick() { window.updateCrabs(0); })(); +// ---------- ABRAXAS (ΠΎΠΌΠΌΠ°ΠΆ, ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ) ΠΏΠΎ Π·Π°ΡΠ²ΠΊΠ΅ @devcpp ---------- +(function buildAbraxas() { + const AX = 96, AZ = -104, PAD = Math.max(groundH(AX, AZ), WATER_Y); + const g = new THREE.Group(); g.position.set(AX, PAD, AZ); scene.add(g); + const gar = (c, e, ei) => new THREE.MeshStandardMaterial({ color: c, emissive: e, emissiveIntensity: ei == null ? 0.6 : ei, roughness: 0.45, metalness: 0.15, flatShading: true }); + const dark = new THREE.MeshStandardMaterial({ color: 0x14100f, roughness: 1, flatShading: true }); + const ped = new THREE.Mesh(new THREE.CylinderGeometry(3, 3.8, 2.4, 6), dark); ped.position.y = 1.2; ped.castShadow = true; g.add(ped); + const core = new THREE.Group(); core.position.y = 2.4; g.add(core); + const body = new THREE.Mesh(new THREE.OctahedronGeometry(3, 0), gar(0xd98f7a, 0x7a2a18)); body.scale.set(1, 2.2, 1); body.position.y = 5; body.castShadow = true; core.add(body); + const head = new THREE.Mesh(new THREE.IcosahedronGeometry(2.1, 0), gar(0x39ff14, 0x0e7a12, 0.8)); head.position.y = 10.5; core.add(head); + const eye = new THREE.Mesh(new THREE.SphereGeometry(0.85, 12, 10), gar(0xffffff, 0xffffff, 1.0)); eye.position.set(0, 10.5, 1.8); core.add(eye); + const pup = new THREE.Mesh(new THREE.SphereGeometry(0.42, 8, 6), new THREE.MeshBasicMaterial({ color: 0x110000 })); pup.position.set(0, 10.5, 2.5); core.add(pup); + for (let i = 0; i < 4; i++) { + const a = i / 4 * Math.PI * 2; + const arm = new THREE.Mesh(new THREE.ConeGeometry(0.6, 6.5, 5), gar(0xff00aa, 0x7a0050)); + arm.position.set(Math.cos(a) * 3.6, 5.2, Math.sin(a) * 3.6); + arm.rotation.set(Math.sin(a) * 1.0, 0, -Math.cos(a) * 1.0); core.add(arm); + } + const halo = new THREE.Mesh(new THREE.TorusGeometry(3.1, 0.4, 6, 18), gar(0xffd000, 0x7a5a00, 0.9)); halo.position.y = 12.6; halo.rotation.x = Math.PI / 2; core.add(halo); + const lbl = makeLabel('ABRAXAS π'); lbl.position.set(0, 18, 0); lbl.scale.set(16, 4, 1); g.add(lbl); + (function _a() { + const t = performance.now() / 1000; + core.rotation.y = t * 0.4; + eye.material.emissiveIntensity = 0.6 + 0.4 * Math.abs(Math.sin(t * 2)); + head.material.emissiveIntensity = 0.5 + 0.5 * Math.abs(Math.sin(t * 1.3)); + halo.rotation.z = t * 0.8; + requestAnimationFrame(_a); + })(); +})(); + +// ---------- THE TRIAGONS (ΠΎΠΌΠΌΠ°ΠΆ, ΠΊΠΎΠ»ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅, Π·Π° ΠΏΡΠ΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΊΠ°ΡΡΡ) ΠΏΠΎ Π·Π°ΡΠ²ΠΊΠ΅ @devcpp ---------- +(function buildTriagons() { + const TRI = new THREE.Group(); scene.add(TRI); + const gar = (c, e) => new THREE.MeshStandardMaterial({ color: c, emissive: e, emissiveIntensity: 1.1, roughness: 0.5, metalness: 0.1, flatShading: true }); + const specs = [ + { a: 0.5, r: 560, y: 300, s: 95, c: 0x39ff14, e: 0x0e6a10 }, + { a: 2.5, r: 650, y: 260, s: 78, c: 0xff00aa, e: 0x6a0044 }, + { a: 4.4, r: 600, y: 360, s: 110, c: 0xffd000, e: 0x6a5000 }, + { a: 3.5, r: 720, y: 220, s: 70, c: 0x00e6ff, e: 0x006a7a } + ]; + const tris = []; + for (const sp of specs) { + const m = new THREE.Mesh(new THREE.TetrahedronGeometry(sp.s, 0), gar(sp.c, sp.e)); + m.position.set(Math.cos(sp.a) * sp.r, sp.y, Math.sin(sp.a) * sp.r); + m.rotation.set(0, sp.a, 0.2); + TRI.add(m); tris.push({ m, sp }); + } + (function _t() { + const t = performance.now() / 1000; + for (let i = 0; i < tris.length; i++) { + const o = tris[i]; o.m.rotation.y = t * 0.06 * (i % 2 ? -1 : 1) + o.sp.a; + o.m.rotation.x = 0.15 * Math.sin(t * 0.2 + i); o.m.position.y = o.sp.y + Math.sin(t * 0.15 + i) * 12; + o.m.material.emissiveIntensity = 0.9 + 0.35 * Math.sin(t * 0.5 + i * 1.7); + } + requestAnimationFrame(_t); + })(); +})(); + // ---------- ΠΌΠΎΠ½ΡΠΌΠ΅Π½Ρ ΠΠΠ‘ΠΠ§ΠΠ (ΠΊΡΠ»ΠΈΡ Ρ ΡΠΉΡΠ°ΠΌΠΈ) ΠΏΠΎ Π·Π°ΡΠ²ΠΊΠ΅ @lzcnt ---------- (function buildPaska() { const gx = 60, gz = 120, gy = groundH(gx, gz); |
