--- license: mit --- # crocobras ![Crocobras](http://www.image-heberg.fr/files/1770022577917744739.jpg) Le cœur logique du jeu "Le bras d'un mec", un jeu où vous combattez des crocodiles pour protéger un bras ! Ce package Node.js fournit toutes les règles, la logique, et la gestion d'état nécessaires pour construire votre propre version du jeu. **Il ne contient PAS de graphiques, de sons ou de logique d'interface utilisateur (UI)**. C'est à vous, le développeur, de construire l'expérience visuelle et sonore ! Développé par [nekoclem](https://github.com/nekoclem). ## Fonctionnalités principales * Gestion des niveaux et de la progression. * Calcul du nombre de crocodiles par niveau. * Gestion de la vie du bras et du "Game Over". * Détection des événements clés du jeu (coup de feu, crocodile tué, bras mangé, changement de niveau). * Options de personnalisation pour adapter le jeu à votre vision. ### Fonctionnalités v1.1.0 * **Système de power-ups personnalisés** avec `crocopow` * **Système de boosts temporaires** avec `crocoboost` * **Système de points de vie pour crocodiles** avec `crocolife` * **Système d'armure/force des crocodiles** avec `crocoarmure` * **Personnalisation de la vitesse des crocodiles** avec `crocorap` * **Système de danse/esquive** avec `crocopop` * **Explosions de crocodiles** avec `crocoexplose` ### Fonctionnalités v1.2.0 * **Système de combos** avec `crocom` pour des effets spéciaux en chaîne * **Modes de jeux personnalisés** avec `crocomode` pour créer des défis uniques * **Armures spécialisées** avec `crocorpes` aux propriétés avancées * **Système de dialogues** avec `crocodial` pour des interactions narratives * **Missions et quêtes** avec `crocomise` avec récompenses personnalisées * **Système économique complet** avec `crocomons` (monnaie et boutique) * **Environnements dynamiques** avec `crocodym` pour des changements de terrain * **Personnalisation d'assets** avec `crocopay` pour les apparences * **IA avancée des crocodiles** avec `crocia` pour des comportements intelligents * **Collectibles et succès** avec `crocohab` pour la progression * **Messages créatifs** avec `crocotive` pour des dialogues immersifs * **Personnages personnalisés** avec `croconage` pour enrichir l'univers ### 🆕 Nouveautés v1.3.0 * **Quêtes dynamiques adaptatives** avec `crocojom` - Missions qui s'adaptent aux choix des joueurs * **Système climatique interactif** avec `crocera` - Climat qui affecte le comportement des crocodiles et du bras * **Événements spéciaux conditionnels** avec `crocogiw` - Crocodiles/événements rares selon des conditions * **IA avancée avec prise de décision** avec `crocorin` - Comportements IA personnalisés et adaptatifs * **Analyse de données de jeu** avec `crocomp` - Système d'analytics personnalisé * **Fonctions JavaScript personnalisées** avec `crocotina` - Créez vos propres fonctions intégrées * **Mini-jeux de quiz créatifs** avec `crocofaf` - Quiz pour gagner points/monnaie/kills * **Messages temporaires personnalisés** avec `crocojup` - Notifications temporaires configurables * **Power-ups temporaires avancés** avec `crocodae` - System de buffs temporaires personnalisés * **Logs personnalisés créatifs** avec `crocolog` - Système de logging avec formes et couleurs * **Clonage et invocation de crocodiles** avec `crocojust` - Duplication et invocation de crocodiles * **Crocodiles rares spéciaux** avec `crocorare` - Crocodiles légendaires avec comportements uniques * **Tutoriels interactifs** avec `crocomd` - Mini-tutoriels de démarrage par dialogues * **Personnalisation comportementale** avec `crocoglop` - Comportements et messages spéciaux par crocodile * **Système de bébés crocodiles** avec `crocofarm` - Naissance et croissance de jeunes crocodiles * **Système d'envies des crocodiles** avec `crocenvie` - Motivations complexes au-delà de manger le bras ## Installation ```bash npm install crocobras ``` Assurez-vous d'avoir également nekomaths installé, car crocobras en dépend : ```bash npm install nekomaths ``` ## Utilisation de base crocobras exporte une classe CrocobrasGame. Vous devez instancier cette classe pour commencer à utiliser la logique du jeu. ```javascript const CrocobrasGame = require('crocobras'); // Créez une nouvelle instance du jeu. const game = new CrocobrasGame({ initialArmHealth: 200, // Le bras est plus résistant ! crocoDamage: 20, // Moins de dégâts par croco crocoPerLevel: 2, // Plus de crocos par niveau levelUpThreshold: 10 // 10 crocos pour passer de niveau }); // Écoutez les événements du jeu game.on('gameStarted', (data) => { console.log(`Partie démarrée ! Niveau: ${data.level}, Vie du bras: ${data.armHealth}`); }); game.on('crocoKilled', (data) => { console.log(`Un croco tué ! Restant : ${data.remainingCount}/${data.killedCount + data.remainingCount}`); }); // Démarrer le jeu game.startGame(); ``` ## 🆕 Nouvelles fonctionnalités v1.3.0 ### `crocojom(questId, questData, questLogic)` - Quêtes dynamiques adaptatives Créez des quêtes qui s'adaptent aux choix des joueurs en temps réel. ```javascript // Quête qui change selon les choix du joueur game.crocojom('adaptive_quest', { title: 'Le Mystère du Marécage', branches: { start: { text: 'Vous entrez dans le marécage...', choices: ['explorer', 'fuir'] }, explorer: { text: 'Vous découvrez une grotte mystérieuse', choices: ['entrer', 'contourner'] }, fuir: { text: 'Vous rebroussez chemin mais...', choices: ['courage', 'panic'] } }, rewards: { coins: 100, experience: 50 } }, function(questData, progress, action, choice) { if (action === 'choice') { if (choice.action === 'explorer') { // Augmenter la difficulté mais aussi les récompenses this.settings.crocoPerLevel += 1; questData.rewards.coins *= 1.5; return { newBranch: 'explorer', difficulty: 'increased' }; } else if (choice.action === 'fuir') { // Chemin plus sûr mais moins récompensé questData.rewards.coins *= 0.8; return { newBranch: 'fuir', difficulty: 'reduced' }; } } }); // Démarrer la quête game.startDynamicQuest('adaptive_quest'); // Faire un choix game.makeDynamicQuestChoice('adaptive_quest', { action: 'explorer' }); ``` ### `crocera(weatherId, weatherData, weatherLogic)` - Système climatique interactif Créez des conditions météorologiques qui influencent le gameplay. ```javascript // Tempête qui rend les crocodiles plus agressifs mais ralentit le joueur game.crocera('storm', { name: 'Tempête Électrique', duration: 30000, // 30 secondes intensity: 0.8, crocodileEffects: { speed: 1.3, aggression: 1.5 }, armEffects: { visibility: 0.6, movement: 0.7 } }, function(weatherData, gameState) { console.log(`⛈️ ${weatherData.name} activée !`); // Effet sur les crocodiles existants if (this.crocodileSpeeds) { Object.keys(this.crocodileSpeeds).forEach(crocoId => { const currentSpeed = this.crocodileSpeeds[crocoId].currentSpeed; this.crocodileSpeeds[crocoId].currentSpeed = currentSpeed * weatherData.crocodileEffects.speed; }); } // Réduire la visibilité du joueur this.emit('weatherEffect', { type: 'visibility', value: weatherData.armEffects.visibility }); // Éclairs aléatoires const lightningInterval = setInterval(() => { if (this.currentWeather === 'storm') { if (Math.random() < 0.2) { // Éclair aide le joueur (tue un crocodile) this.crocokill(); console.log('⚡ Un éclair élimine un crocodile !'); } } else { clearInterval(lightningInterval); } }, 3000); }); // Activer la tempête game.activateWeather('storm'); ``` ### `crocogiw(specialId, specialData, specialLogic)` - Événements spéciaux conditionnels Créez des crocodiles ou événements rares qui n'apparaissent que dans certaines conditions. ```javascript // Crocodile boss qui n'apparaît qu'au niveau 5+ avec moins de 50% de vie game.crocogiw('boss_croco', { type: 'crocodile', rarity: 'legendary', triggerConditions: { minLevel: 5, maxArmHealthPercent: 0.5 }, rewards: { coins: 500, experience: 200 } }, function(specialData, gameState) { const healthPercent = gameState.armHealth / this.settings.initialArmHealth; const meetsConditions = gameState.currentLevel >= specialData.triggerConditions.minLevel && healthPercent <= specialData.triggerConditions.maxArmHealthPercent; if (meetsConditions && Math.random() < 0.1) { // 10% de chance console.log('👑 BOSS CROCODILE LÉGENDAIRE APPARAÎT !'); // Créer un super crocodile this.crocolife(999, 300); // 300 HP this.crocoarmure(999, 50); // Armure élevée this.crocia(999, 'legendary_boss', (aiData) => { return { action: 'ultimate_attack', newState: 'berserker' }; }); return true; // Déclencher l'événement } return false; }); // Vérifier les événements spéciaux à chaque kill game.on('crocoKilled', () => { game.checkSpecialElements(); }); ``` ### `crocorin(crocoId, aiConfig, decisionLogic)` - IA avancée avec prise de décision Créez des IA qui apprennent et s'adaptent au comportement du joueur. ```javascript // IA qui apprend les patterns de tir du joueur game.crocorin(1, { learningRate: 0.15, memorySize: 30, personalityTraits: { patience: 0.7, cunning: 0.9 }, decisionFrequency: 2000 }, function(aiData) { const { crocoId, memory, gameState, situation, learningData } = aiData; // Analyser les patterns de tir du joueur const recentShots = memory.filter(m => m.type === 'decision' && m.timestamp > Date.now() - 10000); const shotPattern = recentShots.length > 0 ? recentShots.reduce((acc, shot) => { const interval = shot.timestamp - (recentShots[recentShots.indexOf(shot) - 1]?.timestamp || shot.timestamp); acc.push(interval); return acc; }, []) : []; const avgShotInterval = shotPattern.length > 0 ? shotPattern.reduce((a, b) => a + b, 0) / shotPattern.length : 3000; // Décision basée sur l'apprentissage if (avgShotInterval < 1500) { // Joueur tire rapidement -> être plus défensif return { action: 'defensive_pattern', strategy: 'zigzag', confidence: 0.8 }; } else if (gameState.armHealth < 30) { // Bras faible -> attaque coordonnée return { action: 'final_assault', strategy: 'aggressive_rush', confidence: 0.95 }; } else { // Comportement adaptatif return { action: 'adaptive_hunt', strategy: 'patient_stalking', confidence: 0.6 }; } }); // Mettre à jour l'IA régulièrement setInterval(() => { if (game.isGameRunning) { game.executeAdvancedAIDecision(1, { playerActivity: 'shooting', timeElapsed: Date.now() }); } }, 2000); ``` ### `crocomp(analysisId, analysisConfig, analysisLogic)` - Analyse de données de jeu Analysez les performances et comportements des joueurs. ```javascript // Système d'analyse de la performance du joueur game.crocomp('player_performance', { dataPoints: ['accuracy', 'survival_time', 'level_progression', 'death_causes'], updateInterval: 10000, // Toutes les 10 secondes reportFormat: 'detailed' }, function(analysisData) { const { gameState, analyticsData, previousReports } = analysisData; // Calculer la précision const totalShots = this.totalShots || 0; const totalKills = this.killedCrocodilesThisLevel || 0; const accuracy = totalShots > 0 ? (totalKills / totalShots) * 100 : 0; // Temps de survie const survivalTime = this.gameStartTime ? Date.now() - this.gameStartTime : 0; // Analyser les tendances const report = { timestamp: Date.now(), accuracy: accuracy, survivalTime: survivalTime, currentLevel: gameState.currentLevel, armHealth: gameState.armHealth, recommendations: [] }; // Recommandations basées sur les performances if (accuracy < 50) { report.recommendations.push('Améliorer la précision de tir'); } if (gameState.armHealth < 50) { report.recommendations.push('Jouer plus défensivement'); } if (gameState.currentLevel > 3 && accuracy > 80) { report.recommendations.push('Excellent ! Continuez ainsi !'); } console.log(`📊 Rapport de performance: Précision ${accuracy.toFixed(1)}%, Niveau ${gameState.currentLevel}`); return report; }); // Lancer l'analyse automatique setInterval(() => { if (game.isGameRunning) { game.runGameAnalysis('player_performance'); } }, 10000); ``` ### `crocotina(functionName, customFunction, options)` - Fonctions JavaScript personnalisées Intégrez vos propres fonctions directement dans le moteur de jeu. ```javascript // Fonction personnalisée pour calculer des bonus de score game.crocotina('calculateScoreBonus', function(baseScore, multiplier, levelBonus) { const bonus = baseScore * multiplier + (this.currentLevel * levelBonus); this.emit('scoreBonusCalculated', { baseScore, multiplier, levelBonus, bonus }); return Math.floor(bonus); }, { description: 'Calcule les bonus de score avec multiplicateurs', parameters: ['baseScore', 'multiplier', 'levelBonus'], category: 'scoring' }); // Fonction de téléportation d'urgence du bras game.crocotina('emergencyArmTeleport', function(safetyThreshold = 20) { if (this.armHealth <= safetyThreshold) { const oldHealth = this.armHealth; this.armHealth = Math.min(this.armHealth + 30, this.settings.initialArmHealth); console.log(`🚨 Téléportation d'urgence ! Vie: ${oldHealth} → ${this.armHealth}`); this.emit('emergencyTeleport', { oldHealth, newHealth: this.armHealth }); return { success: true, healthRestored: this.armHealth - oldHealth }; } return { success: false, reason: 'Seuil de sécurité non atteint' }; }, { description: 'Téléporte le bras en sécurité si la vie est critique', parameters: ['safetyThreshold'], category: 'emergency' }); // Utiliser les fonctions personnalisées const scoreBonus = game.executeCustomFunction('calculateScoreBonus', 100, 1.5, 10); const teleportResult = game.executeCustomFunction('emergencyArmTeleport', 25); console.log(`Bonus calculé: ${scoreBonus}`); console.log(`Téléportation: ${teleportResult.success ? 'Réussie' : 'Échouée'}`); ``` ### `crocofaf(quizId, quizData, quizLogic)` - Mini-jeux de quiz créatifs Créez des quiz pour gagner des récompenses en tuant des crocodiles. ```javascript // Quiz sur les crocodiles pour gagner des kills bonus game.crocofaf('croco_quiz', { title: 'Quiz des Crocodiles', questions: [ { question: 'Combien de dents a un crocodile adulte ?', answers: ['24', '64', '80', '32'], correct: 2, // Index de la bonne réponse killReward: 3 }, { question: 'Dans quel milieu vivent les crocodiles ?', answers: ['Désert', 'Forêt', 'Zones humides', 'Montagne'], correct: 2, killReward: 2 }, { question: 'Quelle est la vitesse maximale d\'un crocodile sur terre ?', answers: ['15 km/h', '25 km/h', '35 km/h', '45 km/h'], correct: 1, killReward: 4 } ], timeLimit: 15000, // 15 secondes par question rewards: { coins: 50, experience: 25 } }, function(quizData, action, context) { if (action === 'start') { console.log(`🧠 ${quizData.title} commence !`); this.emit('quizQuestionReady', { question: quizData.questions[0], timeLimit: quizData.timeLimit }); } else if (action === 'answer') { const question = quizData.questions[context.currentQuestion]; const isCorrect = context.answer === question.correct; if (isCorrect) { console.log(`✅ Bonne réponse ! ${question.killReward} crocodiles éliminés !`); // Tuer des crocodiles comme récompense for (let i = 0; i < question.killReward; i++) { this.crocokill(); } return { correct: true, points: question.killReward, message: `${question.killReward} crocodiles éliminés !` }; } else { console.log(`❌ Mauvaise réponse... La bonne réponse était: ${question.answers[question.correct]}`); return { correct: false, points: 0, message: 'Aucune récompense cette fois.' }; } } }); // Démarrer le quiz game.startMiniGame('croco_quiz'); // Répondre à une question game.answerQuizQuestion('croco_quiz', 2); // Réponse C ``` ### `crocojup(messageId, messageData, messageLogic)` - Messages temporaires personnalisés Affichez des notifications temporaires personnalisées. ```javascript // Message de félicitations pour les level ups game.crocojup('levelup_celebration', { text: 'NIVEAU SUPÉRIEUR !', duration: 3000, style: { color: 'gold', size: 'large', effect: 'glow' }, position: 'center', animation: 'bounce' }, function(messageData, context) { const level = context.level || this.currentLevel; const customText = `🎉 NIVEAU ${level} ATTEINT ! 🎉`; this.emit('celebrationMessage', { text: customText, style: messageData.style, position: messageData.position, animation: messageData.animation }); // Animation de bonus if (level % 5 === 0) { // Tous les 5 niveaux, message spécial setTimeout(() => { this.showTemporaryMessage('milestone_bonus', { level }); }, 1500); } return { enhanced: true, bonusMessage: level % 5 === 0 }; }); // Message de bonus de milestone game.crocojup('milestone_bonus', { text: 'BONUS MILESTONE !', duration: 4000, style: { color: 'rainbow', size: 'huge', effect: 'sparkle' }, animation: 'explosion' }, function(messageData, context) { const bonusReward = context.level * 10; // Ajouter des pièces bonus if (this.economy && this.economy.currencies.gold) { this.economy.currencies.gold.amount += bonusReward; } console.log(`💰 Bonus milestone: ${bonusReward} pièces d'or !`); return { coinsAwarded: bonusReward }; }); // Déclencher automatiquement lors des level ups game.on('levelUp', (data) => { game.showTemporaryMessage('levelup_celebration', { level: data.newLevel }); }); ``` ### `crocodae(powerUpId, powerUpData, powerUpLogic)` - Power-ups temporaires avancés Créez des power-ups temporaires avec des effets complexes. ```javascript // Power-up "Temps Ralenti" qui affecte tout le jeu game.crocodae('bullet_time', { name: 'Temps Ralenti', duration: 8000, effects: { timeMultiplier: 0.5, playerSpeedBoost: 1.5, crocodileSlowDown: 0.3 }, cooldown: 20000, rarity: 'epic' }, function(powerUpData, context, action) { if (action === 'activate') { console.log('⏰ TEMPS RALENTI ACTIVÉ !'); // Ralentir tous les crocodiles if (this.crocodileSpeeds) { Object.keys(this.crocodileSpeeds).forEach(crocoId => { const croco = this.crocodileSpeeds[crocoId]; croco.originalSpeed = croco.currentSpeed; croco.currentSpeed *= powerUpData.effects.crocodileSlowDown; }); } // Effet visuel this.emit('bulletTimeStart', { timeMultiplier: powerUpData.effects.timeMultiplier, duration: powerUpData.duration }); // Son ralenti this.emit('playSound', { sound: 'bullet_time_start', pitch: 0.7 }); } else if (action === 'deactivate') { console.log('⏰ Temps normal rétabli.'); // Restaurer la vitesse normale des crocodiles if (this.crocodileSpeeds) { Object.keys(this.crocodileSpeeds).forEach(crocoId => { const croco = this.crocodileSpeeds[crocoId]; if (croco.originalSpeed) { croco.currentSpeed = croco.originalSpeed; delete croco.originalSpeed; } }); } this.emit('bulletTimeEnd'); } }); // Power-up "Berserker" qui augmente tout game.crocodae('berserker_mode', { name: 'Mode Berserker', duration: 12000, effects: { damageMultiplier: 3, speedBoost: 2, killsToWin: 0.5 // Divise par 2 le nombre de kills nécessaires }, stackable: false, cooldown: 30000 }, function(powerUpData, context, action) { if (action === 'activate') { console.log('🔥 MODE BERSERKER ACTIVÉ !'); // Stocker les valeurs originales this.originalSettings = { levelUpThreshold: this.settings.levelUpThreshold }; // Réduire le nombre de crocodiles nécessaires pour level up this.settings.levelUpThreshold = Math.ceil(this.settings.levelUpThreshold * powerUpData.effects.killsToWin); this.emit('berserkerModeStart', { effects: powerUpData.effects, visualEffect: 'red_aura' }); } else if (action === 'deactivate') { console.log('🔥 Mode Berserker terminé.'); // Restaurer les paramètres if (this.originalSettings) { this.settings.levelUpThreshold = this.originalSettings.levelUpThreshold; delete this.originalSettings; } this.emit('berserkerModeEnd'); } }); // Activer les power-ups selon certaines conditions game.on('crocoKilled', (data) => { if (data.killedCount % 10 === 0) { // Tous les 10 kills if (Math.random() < 0.3) { // 30% de chance game.activateTemporaryPowerUp('bullet_time'); } } if (this.armHealth < 30 && Math.random() < 0.2) { // 20% si vie critique game.activateTemporaryPowerUp('berserker_mode'); } }); ``` ### `crocolog(logId, logConfig, logLogic)` - Logs personnalisés créatifs Créez un système de logging avec des formes et des couleurs. ```javascript // Système de log avec formes ASCII et couleurs game.crocolog('ascii_logger', { prefix: '🐊', colors: { info: '\x1b[36m', // Cyan warning: '\x1b[33m', // Jaune error: '\x1b[31m', // Rouge success: '\x1b[32m', // Vert reset: '\x1b[0m' // Reset }, shapes: { box: '█', triangle: '▲', diamond: '◆', star: '★', heart: '♥' }, format: 'creative' }, function(logConfig, logEntry) { const { colors, shapes, prefix } = logConfig; const { message, data, level, timestamp } = logEntry; // Créer un motif selon le niveau let pattern = ''; let color = colors[level] || colors.info; switch (level) { case 'success': pattern = shapes.star.repeat(3); break; case 'error': pattern = shapes.triangle.repeat(5); break; case 'warning': pattern = shapes.diamond.repeat(4); break; default: pattern = shapes.box.repeat(2); } // Format créatif avec timestamp const timeStr = new Date(timestamp).toLocaleTimeString(); const formattedMessage = `${color}${pattern} ${prefix} [${timeStr}] ${message} ${pattern}${colors.reset}`; // Ajouter des données supplémentaires si présentes if (data.shape) { const customShape = shapes[data.shape] || '?'; return formattedMessage + `\n${color}${customShape.repeat(10)}${colors.reset}`; } return formattedMessage; }); // Logger de combat avec statistiques visuelles game.crocolog('combat_stats', { prefix: '⚔️', format: 'stats', shapes: { health: '♥', kill: '💀', level: '⭐' } }, function(logConfig, logEntry) { const { message, data } = logEntry; const { shapes } = logConfig; if (data.type === 'combat_summary') { const healthBar = shapes.health.repeat(Math.floor(data.armHealth / 10)); const killCount = shapes.kill.repeat(Math.min(data.kills, 10)); const levelStars = shapes.level.repeat(data.level); return ` ╔══════════════════════════════════╗ ║ ${message.padEnd(32)} ║ ║ Vie: ${healthBar.padEnd(20)} ║ ║ Kills: ${killCount.padEnd(18)} ║ ║ Niveau: ${levelStars.padEnd(15)} ║ ╚══════════════════════════════════╝`; } return `⚔️ ${message}`; }); // Utiliser les logs personnalisés game.writeCustomLog('ascii_logger', 'Crocodile éliminé !', { level: 'success', shape: 'star' }); game.writeCustomLog('ascii_logger', 'Attention, bras en danger !', { level: 'warning' }); // Log automatique des statistiques de combat game.on('levelUp', (data) => { game.writeCustomLog('combat_stats', 'NIVEAU SUPÉRIEUR !', { type: 'combat_summary', armHealth: game.armHealth, kills: game.killedCrocodilesThisLevel, level: data.newLevel }); }); ``` ### `crocojust(cloneId, cloneData, cloneLogic)` - Clonage et invocation de crocodiles Permettez aux crocodiles de se dupliquer ou d'invoquer des alliés. ```javascript // Système de clonage pour crocodiles alpha game.crocojust('alpha_cloning', { maxClones: 2, cloneCooldown: 8000, cloneConditions: { minLevel: 3, healthThreshold: 0.5 }, cloneProperties: { health: 0.7, speed: 1.2, lifespan: 15000 }, invocationRules: { maxInvocations: 3 } }, function(cloneData, context) { const { sourceCrocoId, gameState, context: cloneContext } = context; // Vérifier si les conditions de clonage sont remplies const canClone = gameState.currentLevel >= cloneData.cloneConditions.minLevel; const sourceHealth = this.crocodileHealths && this.crocodileHealths[sourceCrocoId] ? this.crocodileHealths[sourceCrocoId].currentHealth : 100; const healthOk = sourceHealth >= 50; // Santé minimale pour cloner if (canClone && healthOk && Math.random() < 0.3) { // 30% de chance const cloneId = Date.now() + Math.random(); // Créer le clone avec propriétés réduites this.crocolife(cloneId, Math.floor(sourceHealth * cloneData.cloneProperties.health)); this.crocorap(cloneId, 1.0 * cloneData.cloneProperties.speed); console.log(`🧬 Crocodile ${sourceCrocoId} se clone ! Clone ID: ${cloneId}`); // Le clone disparaît automatiquement après un délai setTimeout(() => { if (this.crocodileHealths && this.crocodileHealths[cloneId]) { delete this.crocodileHealths[cloneId]; this.emit('cloneExpired', { cloneId, sourceId: sourceCrocoId }); console.log(`💨 Clone ${cloneId} disparaît.`); } }, cloneData.cloneProperties.lifespan); return { success: true, cloneId: cloneId, properties: { health: Math.floor(sourceHealth * cloneData.cloneProperties.health), speed: cloneData.cloneProperties.speed, temporary: true } }; } return { success: false, reason: 'Conditions non remplies' }; }); // Invocation de crocodiles minions game.crocojust('necro_summoning', { maxClones: 5, cloneCooldown: 12000, invocationRules: { minionType: 'skeleton_croco', minionHealth: 30, minionCount: 3 } }, function(cloneData, context) { const { sourceCrocoId } = context; const summonedMinions = []; console.log(`🧙‍♂️ Crocodile nécromancien ${sourceCrocoId} invoque des squelettes !`); for (let i = 0; i < cloneData.invocationRules.minionCount; i++) { const minionId = Date.now() + i; // Créer un minion squelette this.crocolife(minionId, cloneData.invocationRules.minionHealth); this.crocoarmure(minionId, 10); // Fragile this.crocorap(minionId, 0.8); // Lent // Comportement spécial des minions this.crocia(minionId, 'minion', (aiData) => { return { action: 'swarm_attack', newState: 'swarming' }; }); summonedMinions.push(minionId); } return { success: true, cloneId: 'multiple', summonedMinions: summonedMinions, properties: { type: 'necromancy', count: summonedMinions.length } }; }); // Déclencher le clonage automatiquement game.on('crocoKilled', (data) => { // Chance de clonage pour les crocodiles survivants if (Math.random() < 0.15) { // 15% de chance game.cloneCrocodile('alpha_cloning', 1); } // Invocation nécromantique si beaucoup de crocodiles morts if (data.killedCount > 10 && data.killedCount % 7 === 0) { game.cloneCrocodile('necro_summoning', 666); // ID du nécromancien } }); ``` ### Et 6 autres fonctionnalités innovantes... Les fonctionnalités restantes (`crocorare`, `crocomd`, `crocoglop`, `crocofarm`, `crocenvie`) offrent des possibilités infinies pour créer des expériences de jeu uniques avec des crocodiles rares, des tutoriels interactifs, des personnalisations comportementales, des systèmes de reproduction et des motivations complexes pour vos crocodiles. ## Événements v1.3.0 Les nouvelles fonctionnalités émettent de nombreux nouveaux événements : ```javascript // Événements des quêtes dynamiques game.on('dynamicQuestStarted', (data) => { console.log(`Quête dynamique ${data.questId} démarrée !`); }); // Événements climatiques game.on('weatherActivated', (data) => { console.log(`Climat ${data.weatherId} activé !`); }); // Événements IA avancée game.on('advancedAIDecision', (data) => { console.log(`IA ${data.crocoId}: ${JSON.stringify(data.decision)}`); }); // Et plus de 50 nouveaux événements... ``` ## Exemple complet v1.3.0 ```javascript const CrocobrasGame = require('crocobras'); const game = new CrocobrasGame(); // Configuration complète avec les nouvelles fonctionnalités function setupAdvancedGame() { // 1. Quête adaptative game.crocojom('main_quest', { title: 'La Grande Chasse', branches: { start: { choices: ['brave', 'careful'] } } }, (questData, progress, action, choice) => { if (choice?.action === 'brave') { game.activateWeather('storm'); } }); // 2. Climat dynamique game.crocera('fog', { duration: 20000, crocodileEffects: { stealth: 1.5 } }, (weatherData) => { console.log('🌫️ Brouillard épais !'); }); // 3. IA avancée game.crocorin(1, { learningRate: 0.2 }, (aiData) => { return { action: 'adaptive_hunt', confidence: 0.8 }; }); // 4. Messages temporaires game.crocojup('achievement', { text: 'SUCCÈS DÉBLOQUÉ !', duration: 2000 }, (data) => ({ enhanced: true })); // 5. Logs créatifs game.crocolog('game_logger', { colors: { info: '\x1b[36m' }, shapes: { star: '★' } }, (config, entry) => { return `${config.colors.info}★ ${entry.message} ★\x1b[0m`; }); } setupAdvancedGame(); game.startGame(); // Démarrer une quête dynamique game.startDynamicQuest('main_quest'); console.log('🚀 Jeu Crocobras v1.3.0 avec toutes les fonctionnalités avancées !'); ``` ## Contribution Toutes les idées et contributions sont les bienvenues ! N'hésitez pas à ouvrir des issues ou à soumettre des pull requests sur le dépôt GitHub. ## Changelog v1.3.0 - ✨ Ajout de `crocojom()` pour les quêtes dynamiques adaptatives - ✨ Ajout de `crocera()` pour le système climatique interactif - ✨ Ajout de `crocogiw()` pour les événements spéciaux conditionnels - ✨ Ajout de `crocorin()` pour l'IA avancée avec prise de décision - ✨ Ajout de `crocomp()` pour l'analyse de données de jeu - ✨ Ajout de `crocotina()` pour les fonctions JavaScript personnalisées - ✨ Ajout de `crocofaf()` pour les mini-jeux de quiz créatifs - ✨ Ajout de `crocojup()` pour les messages temporaires personnalisés - ✨ Ajout de `crocodae()` pour les power-ups temporaires avançés - ✨ Ajout de `crocolog()` pour les logs personnalisés créatifs - ✨ Ajout de `crocojust()` pour le clonage et l'invocation de crocodiles - ✨ Ajout de `crocorare()` pour les crocodiles rares spéciaux - ✨ Ajout de `crocomd()` pour les tutoriels interactifs - ✨ Ajout de `crocoglop()` pour la personnalisation comportementale - ✨ Ajout de `crocofarm()` pour le système de bébés crocodiles - ✨ Ajout de `crocenvie()` pour le système d'envies des crocodiles - 📡 Plus de 50 nouveaux événements pour toutes les nouvelles fonctionnalités - 🎮 Possibilités créatives infinies pour les développeurs - 🧠 IA et systèmes adaptatifs révolutionnaires - 🌟 Gameplay dynamique et évolutif **Lien de notre documentation officielle** : https://croco-combat-arena.lovable.app/