crocobras
v1.3.0
Published
Noyau logique du jeu « Le bras d'un mec », où les joueurs combattent des crocodiles pour protéger un bras.
Maintainers
Readme
crocobras
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.
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
crocompour des effets spéciaux en chaîne - Modes de jeux personnalisés avec
crocomodepour créer des défis uniques - Armures spécialisées avec
crocorpesaux propriétés avancées - Système de dialogues avec
crocodialpour des interactions narratives - Missions et quêtes avec
crocomiseavec récompenses personnalisées - Système économique complet avec
crocomons(monnaie et boutique) - Environnements dynamiques avec
crocodympour des changements de terrain - Personnalisation d'assets avec
crocopaypour les apparences - IA avancée des crocodiles avec
crociapour des comportements intelligents - Collectibles et succès avec
crocohabpour la progression - Messages créatifs avec
crocotivepour des dialogues immersifs - Personnages personnalisés avec
croconagepour 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
npm install crocobrasAssurez-vous d'avoir également nekomaths installé, car crocobras en dépend :
npm install nekomathsUtilisation de base
crocobras exporte une classe CrocobrasGame. Vous devez instancier cette classe pour commencer à utiliser la logique du jeu.
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.
// 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.
// 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.
// 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.
// 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.
// 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.
// 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.
// 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 Ccrocojup(messageId, messageData, messageLogic) - Messages temporaires personnalisés
Affichez des notifications temporaires personnalisées.
// 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.
// 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.
// 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.
// 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 :
// É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
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/
