/** * Galaxy Strike Online - Game Data * Static game data, constants, and configuration */ // Game configuration const GAME_CONFIG = { version: '1.0.0', name: 'Galaxy Strike Online', maxLevel: 100, saveInterval: 30000, // 30 seconds notificationDuration: 3000, maxNotifications: 5 }; // Player defaults const PLAYER_DEFAULTS = { level: 1, experience: 0, skillPoints: 0, credits: 1000, gems: 10, health: 100, maxHealth: 100, energy: 100, maxEnergy: 100, attack: 10, defense: 5, speed: 10, criticalChance: 0.05, criticalDamage: 1.5 }; // Experience requirements const EXPERIENCE_TABLE = []; for (let i = 1; i <= 100; i++) { EXPERIENCE_TABLE[i] = Math.floor(100 * Math.pow(1.5, i - 1)); } // Item rarities with colors and multipliers const ITEM_RARITIES = { common: { name: 'Common', color: '#888888', multiplier: 1.0, dropChance: 0.60 }, uncommon: { name: 'Uncommon', color: '#00ff00', multiplier: 1.2, dropChance: 0.25 }, rare: { name: 'Rare', color: '#0088ff', multiplier: 1.5, dropChance: 0.10 }, epic: { name: 'Epic', color: '#8833ff', multiplier: 2.0, dropChance: 0.04 }, legendary: { name: 'Legendary', color: '#ff8800', multiplier: 3.0, dropChance: 0.01 } }; // Enemy types and stats const ENEMY_TEMPLATES = { space_pirate: { name: 'Space Pirate', health: 25, attack: 10, defense: 3, speed: 8, experience: 15, credits: 12, rarity: 'common' }, alien_guardian: { name: 'Alien Guardian', health: 50, attack: 8, defense: 5, speed: 6, experience: 25, credits: 15, rarity: 'common' }, mining_drone: { name: 'Mining Drone', health: 20, attack: 8, defense: 3, speed: 5, experience: 12, credits: 8, rarity: 'common' }, security_drone: { name: 'Security Drone', health: 35, attack: 14, defense: 4, speed: 10, experience: 22, credits: 15, rarity: 'uncommon' }, pirate_captain: { name: 'Pirate Captain', health: 40, attack: 15, defense: 6, speed: 12, experience: 30, credits: 20, rarity: 'uncommon' }, crystal_golem: { name: 'Crystal Golem', health: 80, attack: 6, defense: 10, speed: 4, experience: 35, credits: 25, rarity: 'rare' }, corrupted_ai: { name: 'Corrupted AI', health: 60, attack: 20, defense: 2, speed: 15, experience: 40, credits: 30, rarity: 'rare' }, energy_being: { name: 'Energy Being', health: 55, attack: 22, defense: 3, speed: 18, experience: 45, credits: 35, rarity: 'epic' }, quantum_entity: { name: 'Quantum Entity', health: 70, attack: 35, defense: 5, speed: 20, experience: 60, credits: 50, rarity: 'legendary' } }; // Dungeon configurations const DUNGEON_CONFIGS = { alien_ruins: { name: 'Alien Ruins', description: 'Ancient alien structures filled with mysterious technology', difficulty: 'medium', minLevel: 3, roomCount: [5, 8], enemyTypes: ['alien_guardian', 'ancient_drone', 'crystal_golem'], rewardMultiplier: 1.2, energyCost: 20 }, pirate_lair: { name: 'Pirate Lair', description: 'Dangerous pirate hideouts with valuable loot', difficulty: 'easy', minLevel: 1, roomCount: [4, 6], enemyTypes: ['space_pirate', 'pirate_captain', 'defense_turret'], rewardMultiplier: 1.0, energyCost: 15 }, corrupted_vault: { name: 'Corrupted AI Vault', description: 'Malfunctioning AI facilities with corrupted security', difficulty: 'hard', minLevel: 5, roomCount: [6, 9], enemyTypes: ['security_drone', 'corrupted_ai', 'virus_program'], rewardMultiplier: 1.5, energyCost: 25 }, asteroid_mine: { name: 'Asteroid Mine', description: 'Abandoned mining facilities in asteroid fields', difficulty: 'easy', minLevel: 2, roomCount: [4, 7], enemyTypes: ['mining_drone', 'rock_creature', 'explosive_asteroid'], rewardMultiplier: 0.8, energyCost: 10 }, nebula_anomaly: { name: 'Nebula Anomaly', description: 'Strange energy anomalies in deep space', difficulty: 'extreme', minLevel: 8, roomCount: [7, 10], enemyTypes: ['energy_being', 'phase_shifter', 'quantum_entity'], rewardMultiplier: 2.0, energyCost: 30 } }; // Skill definitions const SKILL_DEFINITIONS = { combat: { weapons_mastery: { name: 'Weapons Mastery', description: 'Increases weapon damage and critical chance', maxLevel: 10, experiencePerLevel: 100, effects: { attack: 2, criticalChance: 0.01 }, icon: 'fa-sword' }, shield_techniques: { name: 'Shield Techniques', description: 'Improves defense and energy efficiency', maxLevel: 10, experiencePerLevel: 100, effects: { defense: 2, maxEnergy: 5 }, icon: 'fa-shield-alt' }, piloting: { name: 'Piloting', description: 'Enhances speed and evasion', maxLevel: 10, experiencePerLevel: 100, effects: { speed: 2, criticalChance: 0.005 }, icon: 'fa-rocket' } }, science: { energy_manipulation: { name: 'Energy Manipulation', description: 'Better energy control and regeneration', maxLevel: 10, experiencePerLevel: 100, effects: { maxEnergy: 10, energyRegeneration: 0.1 }, icon: 'fa-bolt' }, alien_technology: { name: 'Alien Technology', description: 'Understanding and using alien artifacts', maxLevel: 10, experiencePerLevel: 150, effects: { findRarity: 0.05, itemValue: 0.1 }, icon: 'fa-atom' } }, crafting: { weapon_crafting: { name: 'Weapon Crafting', description: 'Create and upgrade weapons', maxLevel: 10, experiencePerLevel: 100, effects: { craftingBonus: 0.1, weaponStats: 0.05 }, icon: 'fa-hammer' }, armor_forging: { name: 'Armor Forging', description: 'Forge protective armor and shields', maxLevel: 10, experiencePerLevel: 100, effects: { craftingBonus: 0.1, armorStats: 0.05 }, icon: 'fa-anvil' } } }; // Shop items const SHOP_ITEMS = { ships: [ { id: 'fighter_mk1', name: 'Fighter Mk. I', type: 'ship', rarity: 'common', price: 5000, currency: 'credits', description: 'Fast and agile fighter ship', stats: { attack: 15, speed: 20, defense: 8 } }, { id: 'cruiser_mk1', name: 'Cruiser Mk. I', type: 'ship', rarity: 'uncommon', price: 15000, currency: 'credits', description: 'Well-balanced cruiser for combat', stats: { attack: 20, speed: 10, defense: 15 } } ], upgrades: [ { id: 'weapon_upgrade_1', name: 'Weapon Upgrade I', type: 'upgrade', rarity: 'common', price: 500, currency: 'credits', description: 'Increases weapon damage by 10%', effect: { attackMultiplier: 1.1 } }, { id: 'shield_upgrade_1', name: 'Shield Upgrade I', type: 'upgrade', rarity: 'common', price: 400, currency: 'credits', description: 'Increases defense by 5 points', effect: { defense: 5 } } ], cosmetics: [ { id: 'blue_paint', name: 'Blue Paint Job', type: 'cosmetic', rarity: 'common', price: 100, currency: 'gems', description: 'Custom blue paint for your ship' }, { id: 'golden_trim', name: 'Golden Trim', type: 'cosmetic', rarity: 'rare', price: 500, currency: 'gems', description: 'Luxurious golden trim for your ship' } ], consumables: [ { id: 'mega_health_kit', name: 'Mega Health Kit', type: 'consumable', rarity: 'uncommon', price: 50, currency: 'credits', description: 'Restores full health', effect: { heal: 999 } }, { id: 'energy_boost', name: 'Energy Boost', type: 'consumable', rarity: 'common', price: 25, currency: 'credits', description: 'Restores 50 energy', effect: { energy: 50 } } ] }; // Starter equipment for new players const STARTER_EQUIPMENT = { starter_blaster: { id: 'starter_blaster', name: 'Common Blaster', type: 'weapon', rarity: 'common', description: 'A reliable basic blaster for new pilots', stats: { attack: 5, criticalChance: 0.02 }, equipable: true, slot: 'weapon', value: 100, stackable: false }, basic_armor: { id: 'basic_armor', name: 'Basic Armor', type: 'armor', rarity: 'common', description: 'Standard issue armor for basic protection', stats: { defense: 3, health: 10 }, equipable: true, slot: 'armor', value: 150, stackable: false } }; // Achievement definitions const ACHIEVEMENTS = { first_victory: { name: 'First Victory', description: 'Win your first dungeon', requirement: { dungeonsCompleted: 1 }, reward: { gems: 10, experience: 100 }, icon: 'fa-trophy' }, dungeon_master: { name: 'Dungeon Master', description: 'Complete 50 dungeons', requirement: { dungeonsCompleted: 50 }, reward: { gems: 100, experience: 1000 }, icon: 'fa-dungeon' }, level_master: { name: 'Level Master', description: 'Reach level 50', requirement: { level: 50 }, reward: { gems: 200, experience: 5000 }, icon: 'fa-level-up-alt' }, wealthy_commander: { name: 'Wealthy Commander', description: 'Accumulate 1,000,000 credits', requirement: { credits: 1000000 }, reward: { gems: 150, experience: 2000 }, icon: 'fa-coins' }, skill_expert: { name: 'Skill Expert', description: 'Max out any skill', requirement: { maxSkillLevel: 10 }, reward: { gems: 75, experience: 1500 }, icon: 'fa-graduation-cap' } }; // Game messages and notifications const GAME_MESSAGES = { welcome: 'Welcome to Galaxy Strike Online, Commander!', levelUp: 'Level Up! You are now level {level}!', questCompleted: 'Quest completed: {questName}!', dungeonCompleted: 'Dungeon completed! Time: {time}', achievementUnlocked: 'Achievement Unlocked: {achievementName}!', insufficientCredits: 'Not enough credits!', insufficientGems: 'Not enough gems!', insufficientEnergy: 'Not enough energy!', inventoryFull: 'Inventory is full!', skillPointsAvailable: 'You have {points} skill points available!', dailyReward: 'Daily reward claimed! Day {day}', offlineRewards: 'Welcome back! You were offline for {time}' }; // Utility functions const GameUtils = { // Get random item from array getRandomItem(array) { return array[Math.floor(Math.random() * array.length)]; }, // Get random integer between min and max (inclusive) getRandomInt(min, max) { return Math.floor(Math.random() * (max - min + 1)) + min; }, // Get random float between min and max getRandomFloat(min, max) { return Math.random() * (max - min) + min; }, // Check if chance succeeds checkChance(chance) { return Math.random() < chance; }, // Format large numbers with suffixes formatNumber(num) { if (num >= 1000000) return (num / 1000000).toFixed(1) + 'M'; if (num >= 1000) return (num / 1000).toFixed(1) + 'K'; return Math.floor(num).toString(); }, // Format time in milliseconds to readable string formatTime(milliseconds) { const seconds = Math.floor(milliseconds / 1000); const minutes = Math.floor(seconds / 60); const hours = Math.floor(minutes / 60); const days = Math.floor(hours / 24); if (days > 0) return `${days}d ${hours % 24}h`; if (hours > 0) return `${hours}h ${minutes % 60}m`; if (minutes > 0) return `${minutes}m ${seconds % 60}s`; return `${seconds}s`; }, // Calculate experience needed for level getExperienceForLevel(level) { return EXPERIENCE_TABLE[level] || 0; }, // Get item rarity by chance getItemRarity() { const roll = Math.random(); let cumulative = 0; for (const [rarity, data] of Object.entries(ITEM_RARITIES)) { cumulative += data.dropChance; if (roll <= cumulative) { return rarity; } } return 'common'; }, // Deep clone object deepClone(obj) { return JSON.parse(JSON.stringify(obj)); }, // Generate unique ID generateId() { return Date.now().toString() + Math.random().toString(36).substr(2, 9); } }; // Export for use in other modules if (typeof module !== 'undefined' && module.exports) { module.exports = { GAME_CONFIG, PLAYER_DEFAULTS, EXPERIENCE_TABLE, ITEM_RARITIES, ENEMY_TEMPLATES, DUNGEON_CONFIGS, SKILL_DEFINITIONS, SHOP_ITEMS, ACHIEVEMENTS, GAME_MESSAGES, GameUtils }; }