Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <title>Glyph Garden Growth</title>
- <style>
- :root {
- --fire-color: #ff4500;
- --water-color: #1e90ff;
- --earth-color: #228b22;
- --air-color: #ffd700;
- --steam-color: #9370db;
- --wind-color: #00ced1;
- --mud-color: #8b4513;
- --smoke-color: #696969;
- --lava-color: #ff8c00;
- --storm-color: #4b0082;
- }
- body {
- font-family: 'Arial', sans-serif;
- background: linear-gradient(135deg, #2c1810, #4a2c0b);
- color: #fff;
- display: flex;
- flex-direction: column;
- align-items: center;
- margin: 0;
- padding: 20px;
- min-height: 100vh;
- overflow-x: hidden;
- }
- header {
- text-align: center;
- margin-bottom: 20px;
- width: 100%;
- }
- h1 {
- text-shadow: 0 0 10px rgba(255, 255, 255, 0.5);
- animation: glow 2s ease-in-out infinite alternate;
- margin: 0;
- font-size: 2.5rem;
- }
- @keyframes glow {
- from { text-shadow: 0 0 10px rgba(255, 255, 255, 0.5); }
- to { text-shadow: 0 0 20px rgba(255, 255, 255, 1), 0 0 30px rgba(255, 255, 255, 0.7); }
- }
- .subtitle {
- font-style: italic;
- margin-top: 5px;
- opacity: 0.8;
- }
- #game-container {
- display: flex;
- flex-direction: column;
- align-items: center;
- width: 100%;
- max-width: 600px;
- }
- #status-bar {
- display: flex;
- justify-content: space-around;
- width: 100%;
- margin-bottom: 20px;
- background: rgba(0, 0, 0, 0.3);
- padding: 10px;
- border-radius: 10px;
- box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2);
- }
- .stat {
- display: flex;
- flex-direction: column;
- align-items: center;
- }
- .stat-value {
- font-size: 1.2rem;
- font-weight: bold;
- }
- .stat-label {
- font-size: 0.8rem;
- opacity: 0.8;
- }
- #garden {
- display: grid;
- grid-template-columns: repeat(5, 80px);
- grid-gap: 10px;
- background: #3d2b1f;
- padding: 25px;
- border-radius: 15px;
- box-shadow: inset 0 0 20px rgba(0,0,0,0.5), 0 10px 20px rgba(0,0,0,0.5);
- margin-bottom: 20px;
- position: relative;
- overflow: hidden;
- }
- #garden::before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- height: 10px;
- background: linear-gradient(to bottom, rgba(101, 67, 33, 0.7), transparent);
- z-index: 1;
- border-radius: 15px 15px 0 0;
- }
- .plot {
- width: 80px;
- height: 80px;
- background: linear-gradient(45deg, #8B4513, #A0522D);
- border: 2px solid #654321;
- border-radius: 8px;
- position: relative;
- cursor: pointer;
- transition: all 0.3s ease;
- overflow: hidden;
- box-shadow: inset 0 0 10px rgba(0,0,0,0.3);
- }
- .plot:hover {
- transform: scale(1.05);
- box-shadow: 0 0 15px rgba(255, 255, 255, 0.2);
- }
- .plot::after {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: radial-gradient(circle at center, transparent 30%, rgba(0,0,0,0.3) 100%);
- pointer-events: none;
- }
- .plant {
- position: absolute;
- bottom: 5px;
- left: 50%;
- transform: translateX(-50%);
- width: 40px;
- height: 40px;
- border-radius: 50%;
- animation: bloom 3s ease-in-out infinite;
- transition: all 0.5s;
- z-index: 2;
- }
- .plant::before {
- content: '';
- position: absolute;
- bottom: -5px;
- left: 50%;
- transform: translateX(-50%);
- width: 10px;
- height: 15px;
- background: linear-gradient(to top, #5d4037, #8d6e63);
- border-radius: 0 0 5px 5px;
- }
- @keyframes bloom {
- 0%, 100% { transform: translateX(-50%) scale(0.9) rotate(0deg); }
- 50% { transform: translateX(-50%) scale(1.1) rotate(5deg); }
- }
- .fire {
- background: radial-gradient(circle at 30% 30%, #ff7b25, #ff4500);
- box-shadow: 0 0 15px var(--fire-color);
- }
- .water {
- background: radial-gradient(circle at 30% 30%, #4fc3f7, #0288d1);
- box-shadow: 0 0 15px var(--water-color);
- }
- .earth {
- background: radial-gradient(circle at 30% 30%, #66bb6a, #2e7d32);
- box-shadow: 0 0 15px var(--earth-color);
- }
- .air {
- background: radial-gradient(circle at 30% 30%, #fff176, #ffd54f);
- box-shadow: 0 0 15px var(--air-color);
- }
- .hybrid-steam {
- background: radial-gradient(circle at 30% 30%, #ba55d3, #9370db);
- box-shadow: 0 0 20px var(--steam-color);
- animation: pulse 2s ease-in-out infinite, float 4s ease-in-out infinite;
- }
- .hybrid-wind {
- background: radial-gradient(circle at 30% 30%, #7fffd4, #00ced1);
- box-shadow: 0 0 15px var(--wind-color);
- animation: swirl 3s linear infinite;
- }
- .hybrid-mud {
- background: radial-gradient(circle at 30% 30%, #a1887f, #6d4c41);
- box-shadow: 0 0 10px var(--mud-color);
- animation: mud-bubble 4s ease-in-out infinite;
- }
- .hybrid-smoke {
- background: radial-gradient(circle at 30% 30%, #bdbdbd, #616161);
- box-shadow: 0 0 15px var(--smoke-color);
- animation: smoke-float 5s ease-in-out infinite;
- }
- .hybrid-lava {
- background: radial-gradient(circle at 30% 30%, #ffa726, #ef6c00);
- box-shadow: 0 0 20px var(--lava-color);
- animation: lava-glow 2s ease-in-out infinite;
- }
- .hybrid-storm {
- background: radial-gradient(circle at 30% 30%, #7b1fa2, #4a148c);
- box-shadow: 0 0 20px var(--storm-color);
- animation: storm-pulse 1.5s ease-in-out infinite;
- }
- @keyframes pulse {
- 0%, 100% { transform: translateX(-50%) scale(1); }
- 50% { transform: translateX(-50%) scale(1.2); }
- }
- @keyframes float {
- 0%, 100% { bottom: 5px; }
- 50% { bottom: 15px; }
- }
- @keyframes swirl {
- 0% { transform: translateX(-50%) rotate(0deg); }
- 100% { transform: translateX(-50%) rotate(360deg); }
- }
- @keyframes mud-bubble {
- 0%, 100% { transform: translateX(-50%) scale(1); }
- 50% { transform: translateX(-50%) scale(1.1); }
- }
- @keyframes smoke-float {
- 0% { transform: translateX(-50%) translateY(0) scale(1); opacity: 0.7; }
- 50% { transform: translateX(-50%) translateY(-20px) scale(1.2); opacity: 1; }
- 100% { transform: translateX(-50%) translateY(-40px) scale(1.5); opacity: 0; }
- }
- @keyframes lava-glow {
- 0%, 100% { box-shadow: 0 0 20px var(--lava-color); }
- 50% { box-shadow: 0 0 30px var(--lava-color), 0 0 40px rgba(255, 140, 0, 0.6); }
- }
- @keyframes storm-pulse {
- 0%, 100% { box-shadow: 0 0 20px var(--storm-color); transform: translateX(-50%) scale(1); }
- 50% { box-shadow: 0 0 30px var(--storm-color), 0 0 50px rgba(75, 0, 130, 0.6); transform: translateX(-50%) scale(1.1); }
- }
- #controls {
- display: flex;
- flex-wrap: wrap;
- justify-content: center;
- gap: 15px;
- margin: 20px 0;
- width: 100%;
- }
- .glyph-btn {
- width: 60px;
- height: 60px;
- border-radius: 50%;
- border: none;
- cursor: pointer;
- font-weight: bold;
- transition: all 0.3s;
- position: relative;
- overflow: hidden;
- box-shadow: 0 4px 8px rgba(0,0,0,0.3);
- }
- .glyph-btn::after {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: radial-gradient(circle at center, rgba(255,255,255,0.3) 0%, transparent 70%);
- pointer-events: none;
- }
- .glyph-btn:hover {
- transform: scale(1.1) translateY(-5px);
- box-shadow: 0 8px 15px rgba(0,0,0,0.4);
- }
- .glyph-btn.selected {
- transform: scale(1.1);
- box-shadow: 0 0 20px 5px rgba(255, 255, 255, 0.7);
- }
- #fire-btn {
- background: linear-gradient(45deg, var(--fire-color), #ff8c00);
- }
- #water-btn {
- background: linear-gradient(45deg, var(--water-color), #00bcd4);
- }
- #earth-btn {
- background: linear-gradient(45deg, var(--earth-color), #8bc34a);
- }
- #air-btn {
- background: linear-gradient(45deg, var(--air-color), #ffeb3b);
- }
- #prune-btn {
- padding: 10px 20px;
- background: linear-gradient(45deg, #78909c, #b0bec5);
- border: none;
- border-radius: 30px;
- color: white;
- cursor: pointer;
- font-weight: bold;
- transition: all 0.3s;
- box-shadow: 0 4px 8px rgba(0,0,0,0.3);
- }
- #prune-btn:hover, #prune-btn.active {
- transform: scale(1.05);
- box-shadow: 0 0 15px rgba(207, 216, 220, 0.8);
- }
- #prune-btn.active {
- background: linear-gradient(45deg, #f44336, #ef5350);
- }
- #help-btn {
- padding: 10px 20px;
- background: linear-gradient(45deg, #9e9e9e, #607d8b);
- border: none;
- border-radius: 30px;
- color: white;
- cursor: pointer;
- font-weight: bold;
- transition: all 0.3s;
- box-shadow: 0 4px 8px rgba(0,0,0,0.3);
- }
- #help-btn:hover {
- transform: scale(1.05);
- box-shadow: 0 0 15px rgba(144, 164, 174, 0.8);
- }
- .overgrown {
- animation: shake 0.5s infinite;
- }
- @keyframes shake {
- 0%, 100% { transform: translateX(0); }
- 25% { transform: translateX(-5px); }
- 75% { transform: translateX(5px); }
- }
- #message {
- position: fixed;
- top: 20px;
- left: 50%;
- transform: translateX(-50%);
- background: rgba(0, 0, 0, 0.8);
- color: white;
- padding: 15px 25px;
- border-radius: 30px;
- z-index: 100;
- opacity: 0;
- transition: opacity 0.5s;
- pointer-events: none;
- }
- #message.show {
- opacity: 1;
- }
- #game-over {
- position: fixed;
- top: 0;
- left: 0;
- right: 0;
- bottom: 0;
- background: rgba(0, 0, 0, 0.9);
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- z-index: 1000;
- opacity: 0;
- pointer-events: none;
- transition: opacity 0.5s;
- }
- #game-over.show {
- opacity: 1;
- pointer-events: all;
- }
- #game-over h2 {
- font-size: 3rem;
- margin-bottom: 20px;
- text-shadow: 0 0 10px rgba(255, 255, 255, 0.8);
- }
- #game-over p {
- font-size: 1.5rem;
- margin-bottom: 30px;
- }
- #restart-btn {
- padding: 15px 30px;
- background: linear-gradient(45deg, #ff69b4, #ff1493);
- border: none;
- border-radius: 30px;
- color: white;
- cursor: pointer;
- font-weight: bold;
- font-size: 1.2rem;
- transition: all 0.3s;
- }
- #restart-btn:hover {
- transform: scale(1.1);
- box-shadow: 0 0 20px rgba(255, 105, 180, 0.8);
- }
- .particle {
- position: absolute;
- border-radius: 50%;
- pointer-events: none;
- z-index: 5;
- }
- @media (max-width: 600px) {
- #garden {
- grid-template-columns: repeat(5, 60px);
- padding: 15px;
- grid-gap: 8px;
- }
- .plot {
- width: 60px;
- height: 60px;
- }
- .plant {
- width: 30px;
- height: 30px;
- }
- .glyph-btn {
- width: 50px;
- height: 50px;
- }
- h1 {
- font-size: 2rem;
- }
- }
- </style>
- </head>
- <body>
- <header>
- <h1>Glyph Garden Growth 🌱✨</h1>
- <div class="subtitle">Cultivate elemental harmony in your mystical garden</div>
- </header>
- <div id="game-container">
- <div id="status-bar">
- <div class="stat">
- <div class="stat-value" id="harmony">100</div>
- <div class="stat-label">Harmony</div>
- </div>
- <div class="stat">
- <div class="stat-value" id="yield">0</div>
- <div class="stat-label">Yield</div>
- </div>
- <div class="stat">
- <div class="stat-value" id="hazards">0</div>
- <div class="stat-label">Hazards</div>
- </div>
- </div>
- <div id="garden"></div>
- <div id="controls">
- <button id="fire-btn" class="glyph-btn" title="Fire Glyph">🔥</button>
- <button id="water-btn" class="glyph-btn" title="Water Glyph">💧</button>
- <button id="earth-btn" class="glyph-btn" title="Earth Glyph">🌿</button>
- <button id="air-btn" class="glyph-btn" title="Air Glyph">💨</button>
- <button id="prune-btn">Prune Mode</button>
- <button id="help-btn">Help</button>
- </div>
- </div>
- <div id="message"></div>
- <div id="game-over">
- <h2>Garden Overgrown!</h2>
- <p>Your harmony reached zero and the garden was consumed.</p>
- <p>Final Yield: <span id="final-yield">0</span></p>
- <button id="restart-btn">Cultivate Again</button>
- </div>
- <script>
- class GlyphGarden {
- constructor() {
- this.grid = Array(5).fill().map(() => Array(5).fill(null));
- this.currentGlyph = null;
- this.pruneMode = false;
- this.harmony = 100;
- this.yield = 0;
- this.hazards = 0;
- this.gameActive = true;
- this.gardenEl = document.getElementById('garden');
- this.harmonyEl = document.getElementById('harmony');
- this.yieldEl = document.getElementById('yield');
- this.hazardsEl = document.getElementById('hazards');
- this.messageEl = document.getElementById('message');
- this.gameOverEl = document.getElementById('game-over');
- this.finalYieldEl = document.getElementById('final-yield');
- this.initGarden();
- this.bindEvents();
- this.simulateGrowth();
- this.showMessage("Welcome to Glyph Garden! Plant elements and watch them interact.", 5000);
- }
- initGarden() {
- this.gardenEl.innerHTML = '';
- for (let row = 0; row < 5; row++) {
- for (let col = 0; col < 5; col++) {
- const plot = document.createElement('div');
- plot.className = 'plot';
- plot.dataset.row = row;
- plot.dataset.col = col;
- plot.addEventListener('click', (e) => this.handlePlotClick(e));
- this.gardenEl.appendChild(plot);
- }
- }
- }
- bindEvents() {
- document.getElementById('fire-btn').addEventListener('click', () => this.selectGlyph('fire'));
- document.getElementById('water-btn').addEventListener('click', () => this.selectGlyph('water'));
- document.getElementById('earth-btn').addEventListener('click', () => this.selectGlyph('earth'));
- document.getElementById('air-btn').addEventListener('click', () => this.selectGlyph('air'));
- document.getElementById('prune-btn').addEventListener('click', () => this.togglePrune());
- document.getElementById('restart-btn').addEventListener('click', () => this.restartGame());
- document.getElementById('help-btn').addEventListener('click', () => this.showHelp());
- }
- selectGlyph(glyph) {
- this.currentGlyph = glyph;
- this.pruneMode = false;
- // Update UI to show selected glyph
- document.querySelectorAll('.glyph-btn').forEach(btn => btn.classList.remove('selected'));
- document.getElementById(`${glyph}-btn`).classList.add('selected');
- document.getElementById('prune-btn').classList.remove('active');
- this.showMessage(`Selected ${glyph} glyph. Click on a plot to plant.`, 2000);
- }
- togglePrune() {
- this.pruneMode = !this.pruneMode;
- this.currentGlyph = null;
- // Update UI
- document.querySelectorAll('.glyph-btn').forEach(btn => btn.classList.remove('selected'));
- const pruneBtn = document.getElementById('prune-btn');
- if (this.pruneMode) {
- pruneBtn.textContent = 'Plant Mode';
- pruneBtn.classList.add('active');
- this.showMessage("Prune mode active. Click on plants to remove them.", 2000);
- } else {
- pruneBtn.textContent = 'Prune Mode';
- pruneBtn.classList.remove('active');
- this.showMessage("Prune mode deactivated.", 2000);
- }
- }
- handlePlotClick(e) {
- if (!this.gameActive) return;
- const plot = e.currentTarget;
- const row = parseInt(plot.dataset.row);
- const col = parseInt(plot.dataset.col);
- if (this.pruneMode) {
- this.prune(row, col);
- } else if (this.currentGlyph) {
- this.plant(row, col, this.currentGlyph);
- } else {
- this.showMessage("First select a glyph or enable prune mode.", 2000);
- }
- }
- plant(row, col, glyph) {
- if (this.grid[row][col]) {
- this.showMessage("This plot already has a plant!", 2000);
- return;
- }
- this.grid[row][col] = glyph;
- const plot = this.gardenEl.querySelector(`[data-row="${row}"][data-col="${col}"]`);
- const plant = document.createElement('div');
- plant.className = `plant ${glyph}`;
- plant.addEventListener('click', (e) => {
- e.stopPropagation();
- if (this.pruneMode) this.prune(row, col);
- });
- plot.appendChild(plant);
- this.createParticles(plot, glyph);
- this.updateStats();
- // Play planting sound
- this.playSound('plant');
- }
- prune(row, col) {
- if (!this.grid[row][col]) {
- this.showMessage("Nothing to prune here.", 2000);
- return;
- }
- const plot = this.gardenEl.querySelector(`[data-row="${row}"][data-col="${col}"]`);
- plot.innerHTML = '';
- this.grid[row][col] = null;
- this.updateStats();
- // Play pruning sound
- this.playSound('prune');
- }
- simulateGrowth() {
- setInterval(() => {
- if (!this.gameActive) return;
- this.checkInteractions();
- this.updateStats();
- if (this.harmony <= 0) {
- this.endGame();
- }
- }, 3000);
- }
- checkInteractions() {
- for (let row = 0; row < 5; row++) {
- for (let col = 0; col < 5; col++) {
- if (!this.grid[row][col]) continue;
- const neighbors = this.getNeighbors(row, col);
- const interactions = this.getInteractions(this.grid[row][col], neighbors);
- if (interactions.hybrid) {
- this.createHybrid(row, col, interactions.hybrid);
- }
- }
- }
- }
- getNeighbors(row, col) {
- const dirs = [[-1,0],[1,0],[0,-1],[0,1],[-1,-1],[-1,1],[1,-1],[1,1]]; // Including diagonals
- return dirs.map(([dr, dc]) => {
- const nr = row + dr, nc = col + dc;
- return (nr >= 0 && nr < 5 && nc >= 0 && nc < 5) ? this.grid[nr][nc] : null;
- }).filter(Boolean);
- }
- getInteractions(center, neighbors) {
- const combos = {
- 'fire-water': 'steam',
- 'water-fire': 'steam',
- 'earth-air': 'wind',
- 'air-earth': 'wind',
- 'water-earth': 'mud',
- 'earth-water': 'mud',
- 'fire-air': 'smoke',
- 'air-fire': 'smoke',
- 'fire-earth': 'lava',
- 'earth-fire': 'lava',
- 'water-air': 'storm',
- 'air-water': 'storm'
- };
- for (let neighbor of neighbors) {
- const key = `${center}-${neighbor}`;
- if (combos[key]) {
- return {
- hybrid: combos[key],
- hazard: ['steam', 'smoke', 'lava'].includes(combos[key])
- };
- }
- }
- return { hybrid: null };
- }
- createHybrid(row, col, type) {
- if (this.grid[row][col]) {
- const plot = this.gardenEl.querySelector(`[data-row="${row}"][data-col="${col}"]`);
- this.prune(row, col);
- this.plant(row, col, `hybrid-${type}`);
- if (type === 'steam' || type === 'smoke' || type === 'lava') {
- this.hazards += 1;
- this.showMessage(`Warning: ${type} hazard created!`, 3000);
- } else {
- this.yield += 2;
- this.showMessage(`New hybrid formed: ${type}! +2 Yield`, 3000);
- }
- // Play hybrid creation sound
- this.playSound('hybrid');
- }
- }
- updateStats() {
- const totalPlants = this.grid.flat().filter(Boolean).length;
- // More balanced formula for harmony
- this.harmony = Math.max(0, 100 - this.hazards * 8 + Math.min(30, totalPlants) - this.yield / 2);
- // Yield increases based on hybrids and plant count
- if (Math.random() > 0.7) {
- this.yield += Math.floor(totalPlants / 5);
- }
- // Hazards can occasionally spawn randomly near other hazards
- if (this.hazards > 0 && Math.random() > 0.8) {
- this.hazards += 1;
- }
- this.harmonyEl.textContent = Math.floor(this.harmony);
- this.yieldEl.textContent = this.yield;
- this.hazardsEl.textContent = this.hazards;
- // Visual feedback for low harmony
- if (this.harmony < 30) {
- this.harmonyEl.style.color = '#ff4444';
- } else if (this.harmony < 70) {
- this.harmonyEl.style.color = '#ffaa00';
- } else {
- this.harmonyEl.style.color = '#ffffff';
- }
- }
- createParticles(element, type) {
- const colors = {
- 'fire': '#ff4500',
- 'water': '#1e90ff',
- 'earth': '#228b22',
- 'air': '#ffd700',
- 'hybrid-steam': '#9370db',
- 'hybrid-wind': '#00ced1',
- 'hybrid-mud': '#8b4513',
- 'hybrid-smoke': '#696969',
- 'hybrid-lava': '#ff8c00',
- 'hybrid-storm': '#4b0082'
- };
- const color = colors[type] || '#ffffff';
- for (let i = 0; i < 10; i++) {
- const particle = document.createElement('div');
- particle.className = 'particle';
- particle.style.width = `${Math.random() * 8 + 2}px`;
- particle.style.height = particle.style.width;
- particle.style.background = color;
- particle.style.left = `${Math.random() * 80}px`;
- particle.style.top = `${Math.random() * 80}px`;
- element.appendChild(particle);
- // Animate particle
- const angle = Math.random() * Math.PI * 2;
- const distance = Math.random() * 50 + 20;
- const duration = Math.random() * 1000 + 500;
- particle.animate([
- {
- transform: 'translate(0, 0)',
- opacity: 1
- },
- {
- transform: `translate(${Math.cos(angle) * distance}px, ${Math.sin(angle) * distance}px)`,
- opacity: 0
- }
- ], {
- duration: duration,
- easing: 'ease-out'
- });
- // Remove particle after animation
- setTimeout(() => {
- if (particle.parentNode) {
- particle.parentNode.removeChild(particle);
- }
- }, duration);
- }
- }
- showMessage(text, duration = 3000) {
- this.messageEl.textContent = text;
- this.messageEl.classList.add('show');
- setTimeout(() => {
- this.messageEl.classList.remove('show');
- }, duration);
- }
- playSound(type) {
- // In a real game, you would play actual sound files here
- // For this example, we'll just log the sound event
- console.log(`Playing sound: ${type}`);
- }
- endGame() {
- this.gameActive = false;
- this.finalYieldEl.textContent = this.yield;
- this.gameOverEl.classList.add('show');
- this.gardenEl.classList.add('overgrown');
- }
- restartGame() {
- this.grid = Array(5).fill().map(() => Array(5).fill(null));
- this.currentGlyph = null;
- this.pruneMode = false;
- this.harmony = 100;
- this.yield = 0;
- this.hazards = 0;
- this.gameActive = true;
- this.harmonyEl.style.color = '#ffffff';
- this.initGarden();
- this.updateStats();
- this.gameOverEl.classList.remove('show');
- this.gardenEl.classList.remove('overgrown');
- this.showMessage("New garden planted. Good luck!", 3000);
- }
- showHelp() {
- const helpText = "GLYPH GARDEN GUIDE:\n\n" +
- "• Plant elemental glyphs to grow your garden\n" +
- "• Adjacent elements will combine to create hybrids\n" +
- "• Some combinations create hazards that reduce harmony\n" +
- "• Keep harmony above zero to avoid overgrowth\n" +
- "• Prune plants to manage your garden's health\n\n" +
- "COMBINATIONS:\n" +
- "🔥 + 💧 = Steam (Hazard)\n" +
- "🌿 + 💨 = Wind (Bonus)\n" +
- "💧 + 🌿 = Mud (Bonus)\n" +
- "🔥 + 💨 = Smoke (Hazard)\n" +
- "🔥 + 🌿 = Lava (Hazard)\n" +
- "💧 + 💨 = Storm (Bonus)";
- alert(helpText);
- }
- }
- // Initialize the garden when the page loads
- document.addEventListener('DOMContentLoaded', () => {
- new GlyphGarden();
- });
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment