import { grid, cols, rows } from './state.js'; import { config } from './config.js'; import { createCell } from './physics.js'; const dxs = [0, 0, -1, 1]; const dys = [1, -1, 0, 0]; export function updatePlant(x, y, cell) { // Woodification (stalk formation under weight) let weight = 0; const requiredWeight = 5; for (let i = 1; i <= requiredWeight; i++) { if (y - i < 0) break; const above = grid[x][y - i]; if (above && (above.type === 'plant' || above.type === 'wood')) { weight++; } else { break; } } if (weight >= requiredWeight && Math.random() < config.plant.woodificationChance) { grid[x][y] = createCell('wood'); return; } // Roots: infects touching dirt into plant if (Math.random() < config.plant.growChance * 0.15) { const dir = Math.floor(Math.random() * 4); const nx = x + dxs[dir]; const ny = y + dys[dir]; if (nx >= 0 && nx < cols && ny >= 0 && ny < rows && grid[nx][ny] && grid[nx][ny].type === 'dirt') { grid[nx][ny] = createCell('plant'); return; } } // Organic upward branch growth towards light if (Math.random() < config.plant.growChance) { const r = Math.random(); const dx = r < 0.2 ? -1 : (r > 0.8 ? 1 : 0); const nx = x + dx; const ny = y - 1; if (nx >= 0 && nx < cols && ny >= 0 && !grid[nx][ny]) { grid[nx][ny] = createCell('plant'); } } }