Files
ai-qpid-pvz/game/js/systems/almanac.js
T
Antigravity 6457a8904e feat: Initial commit Plants vs Zombies Web Edition v2.4
- 5 Biomes: Day, Night, Pool, Fog, Roof (25 Campaign levels)
- Minigames: Wall-nut Bowling, I Zombie, Roguelike, Boss Rush & Dr. Zomboss
- Systems: Zen Garden, Workshop Crafting, Almanac, Tree of Wisdom, Achievements
- Backend: REST API + SQLite Accounts & Save Synchronization
- Infrastructure: Nginx HTTPS & Docker deployment
2026-09-17 09:30:52 +00:00

233 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Suburban Almanac System: Full Encyclopedia of Plants & Zombies
window.AlmanacSystem = class AlmanacSystem {
constructor() {
this.selectedCategory = 'plants'; // 'plants' or 'zombies'
this.selectedId = 'peashooter';
this.plants = [
{
id: 'peashooter',
name: 'Горохострел',
icon: '🌱',
cost: 100,
cooldown: 'Быстрая (7.5с)',
damage: '20 (Нормальный)',
toughness: '300 (Обычная)',
desc: 'Базовая стрелковая единица газона. Стреляет одиночными горошинами по наступающим зомби.',
lore: '«Как можно быть таким популярным и при этом оставаться простым парнем? Спросите у Горохострела. Он скажет: "Просто делай меткие выстрелы!"»'
},
{
id: 'sunflower',
name: 'Подсолнух',
icon: '🌻',
cost: 50,
cooldown: 'Быстрая (7.5с)',
damage: 'Нет',
toughness: '300 (Обычная)',
desc: 'Ключевой источник солнца. Производит 25 единиц солнца каждые 12 секунд.',
lore: '«Подсолнух терпеть не может хмурую погоду. Она обожает солнце, позитивную музыку и свежий утренний полив.»'
},
{
id: 'cherrybomb',
name: 'Вишневая бомба',
icon: '🍒',
cost: 150,
cooldown: 'Очень долгая (30с)',
damage: '1800 (Колоссальный)',
toughness: '300',
desc: 'Взрывает всех зомби в радиусе 3х3 клетки почти мгновенно.',
lore: '«"Мы взорвемся!", — кричит одна вишня. "Нет, МЫ взорвемся!", — спорит вторая. В итоге взрываются обе.»'
},
{
id: 'wallnut',
name: 'Стеноорех',
icon: '🌰',
cost: 50,
cooldown: 'Долгая (20с)',
damage: 'Нет',
toughness: '4000 (Высокая)',
desc: 'Надежная преграда. Задерживает зомби на длительное время своей прочной скорлупой.',
lore: '«Люди спрашивают Стеноореха: "Каково это — когда тебя все время кусают?". Орех улыбается: "Я просто держу удар и верю в команду".»'
},
{
id: 'potatomine',
name: 'Картофельная мина',
icon: '🥔',
cost: 25,
cooldown: 'Долгая (20с)',
damage: '1800 (Колоссальный)',
toughness: '300',
desc: 'Взрывается при контакте с зомби, но требует 14 секунд на взведение под землей.',
lore: '«SPUDOW! — любимое слово Картофельной мины. Она не любит долгих разговоров, предпочитая громкий финальный аргумент.»'
},
{
id: 'snowpea',
name: 'Ледяной горох',
icon: '❄️',
cost: 175,
cooldown: 'Быстрая (7.5с)',
damage: '20 + Замедление 50%',
toughness: '300',
desc: 'Стреляет морозными горошинами, которые наносят урон и замедляют скорость ходьбы и кусания зомби.',
lore: '«Ледяной горох сохраняет хладнокровие в любой ситуации. Его кумиры — эскимо и северный полюс.»'
},
{
id: 'chomper',
name: 'Зубастик',
icon: '🌺',
cost: 150,
cooldown: 'Быстрая (7.5с)',
damage: 'Мгновенное съедение',
toughness: '300',
desc: 'Проглатывает обычного зомби целиком, после чего пережевывает его в течение 30 секунд.',
lore: '«Зубастик побеждал на чемпионате по скоростному поеданию хот-догов. Теперь он перешел на диету из зомби.»'
},
{
id: 'repeater',
name: 'Повторитель',
icon: '🌿',
cost: 200,
cooldown: 'Быстрая (7.5с)',
damage: '2x 20 (Двойной)',
toughness: '300',
desc: 'Выпускает по 2 горошины за каждый залп. Удваивает огневую мощь линии.',
lore: '«Повторитель упорно тренировался в тире, чтобы стрелять дуплетом без промаха. И у него это получилось.»'
},
{
id: 'jalapeno',
name: 'Халапеньо',
icon: '🌶️',
cost: 125,
cooldown: 'Очень долгая (30с)',
damage: '1800 (По всей полосе)',
toughness: '300',
desc: 'Уничтожает всех зомби на всей горизонтальной линии и растапливает лед.',
lore: '«Темперамент Халапеньо взрывоопасен. Достаточно одной искры, чтобы зажечь всю линию газона.»'
},
{
id: 'sunshroom',
name: 'Солнцегриб',
icon: '🍄',
cost: 25,
cooldown: 'Быстрая (7.5с)',
damage: 'Нет',
toughness: '300',
desc: 'Ночное растение. Сначала дает маленькие солнца (15 ☀️), затем вырастает и дает по 25 ☀️.',
lore: '«Солнцегриб не любит яркий день, но обожает расти при свете луны.»'
},
{
id: 'fumeshroom',
name: 'Дымогриб',
icon: '💨',
cost: 75,
cooldown: 'Быстрая (7.5с)',
damage: '20 (Сквозной урон)',
toughness: '300',
desc: 'Выстреливает волну спор на 4 клетки вперед, пробивая газеты и экраны зомби.',
lore: '«"Мои споры пахнут победой!", — заявляет Дымогриб. Зомби с этим категорически не согласны.»'
},
{
id: 'lilypad',
name: 'Кувшинка',
icon: '🪷',
cost: 25,
cooldown: 'Быстрая (7.5с)',
damage: 'Нет',
toughness: '300',
desc: 'Плавающая платформа для бассейна. Позволяет сажать наземные растения на водные дорожки.',
lore: '«Кувшинка держит на плаву всю команду в водных уровнях. Без нее ни один горохострел не поплывет.»'
},
{
id: 'gravebuster',
name: 'Могилоед',
icon: '🪵',
cost: 75,
cooldown: 'Быстрая (7.5с)',
damage: 'Уничтожает надгробие',
toughness: '300',
desc: 'Сажается на могильные камни в ночных уровнях и медленно разрушает их, оставляя монету.',
lore: '«Несмотря на грозный вид, Могилоед очень нежный и любит, когда ему чешут кору за ушком.»'
}
];
this.zombies = [
{
id: 'z_normal',
name: 'Обычный зомби',
icon: '🧟',
speed: 'Базовая (0.25)',
toughness: '200 (Обычная)',
desc: 'Рядовой пехотинец армии зомби. Медленно ковыляет вперед в поисках свежих мозгов.',
lore: '«Этот зомби любит мозги. Ничего необычного, просто типичный потребитель пригородной недвижимости.»'
},
{
id: 'z_flag',
name: 'Зомби с флагом',
icon: '🚩',
speed: 'Быстрая (0.35)',
toughness: '200',
desc: 'Ведет за собой огромную волну нечисти. Появление флага означает максимальный натиск.',
lore: '«Флаг зомби символизирует его преданность делу поедания газонов. Ни шагу назад!»'
},
{
id: 'z_cone',
name: 'Зомби с конусом',
icon: '⚠️',
speed: 'Базовая (0.25)',
toughness: '560 (200 + 360 конус)',
desc: 'Дорожный конус на голове удваивает запас его стойкости перед стрелковыми растениями.',
lore: '«Конус на голове защищает от дождя, падающих яблок и горошин. Настоящая вершина пригородной инженерии.»'
},
{
id: 'z_bucket',
name: 'Зомби с ведром',
icon: '🪣',
speed: 'Базовая (0.25)',
toughness: '1300 (200 + 1100 ведро)',
desc: 'Железное ведро делает его исключительно живучим танком. Пробивать его нужно сообща.',
lore: '«Ведро на голове принадлежало безумному маляру. Теперь оно служит идеальным шлемом.»'
},
{
id: 'z_pole',
name: 'Зомби с шестом',
icon: '🏃',
speed: 'Высокая бег (0.55)',
toughness: '340',
desc: 'Быстро бежит с шестом и перепрыгивает через первое встреченное растение.',
lore: '«Бывший школьный чемпион по прыжкам с шестом. Сохранил форму и прыгучесть даже после зомби-апокалипсиса.»'
},
{
id: 'z_newspaper',
name: 'Зомби с газетой',
icon: '📰',
speed: '0.25 ➔ 0.65 в ярости',
toughness: '350 (200 + 150 газета)',
desc: 'Газета дает временный щит. Когда газета разрушается — впадает в безумную ярость и несется вперед.',
lore: '«Он почти закончил разгадывать утренний судоку. Вы испортили его газету — теперь берегитесь!»'
},
{
id: 'z_football',
name: 'Зомби-футболист',
icon: '🏈',
speed: 'Очень высокая (0.48)',
toughness: '1600 (Тяжелая броня)',
desc: 'Тяжелый американский футболист. Быстро преодолевает дистанцию и выдерживает колоссальный урон.',
lore: '«Играет в высшей зомби-лиге. Тренер говорил ему: "Всегда пробивай оборону до конца!". Он помнит этот наказ.»'
},
{
id: 'z_yeti',
name: 'Секретный Зомби-Йети',
icon: '❄️🧟',
speed: 'Переменная (0.35)',
toughness: '1350 (Очень высокая)',
desc: 'Легендарное редкое существо. При получении половины урона разворачивается и пытается убежать! Сбрасывает 4 алмаза (800 монет).',
lore: '«О нем слагают мифы в снежных горах. Мало кто видел Йети лично, и еще меньше тех, кто успел отобрать у него алмазы до того, как он скрылся.»'
}
];
}
getItem(id) {
return this.plants.find(p => p.id === id) || this.zombies.find(z => z.id === id);
}
};