Spaces:
Running
Running
Add 1 files
Browse files- index.html +86 -1
index.html
CHANGED
@@ -441,5 +441,90 @@
|
|
441 |
return events;
|
442 |
}
|
443 |
|
444 |
-
function
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
445 |
</html>
|
|
|
441 |
return events;
|
442 |
}
|
443 |
|
444 |
+
function generateCharacter() {
|
445 |
+
// Show loader
|
446 |
+
loader.style.display = 'block';
|
447 |
+
characterCard.style.display = 'none';
|
448 |
+
|
449 |
+
// Simulate loading time
|
450 |
+
setTimeout(() => {
|
451 |
+
// Generate character data
|
452 |
+
const firstName = getRandomItem(firstNames);
|
453 |
+
const lastName = getRandomItem(lastNames);
|
454 |
+
const age = getRandomNumber(18, 95);
|
455 |
+
const job = getRandomItem(jobs);
|
456 |
+
const motto = getRandomItem(mottos);
|
457 |
+
const stats = getRandomStats();
|
458 |
+
const deathAge = age + getRandomNumber(1, 20);
|
459 |
+
const deathCause = getRandomItem(deathDescriptions);
|
460 |
+
|
461 |
+
// Random tags (2-5)
|
462 |
+
const characterTagCount = getRandomNumber(2, 5);
|
463 |
+
const selectedTags = [];
|
464 |
+
for (let i = 0; i < characterTagCount; i++) {
|
465 |
+
let tag;
|
466 |
+
do {
|
467 |
+
tag = getRandomItem(tags);
|
468 |
+
} while (selectedTags.includes(tag));
|
469 |
+
selectedTags.push(tag);
|
470 |
+
}
|
471 |
+
|
472 |
+
// Generate life events
|
473 |
+
const lifeEvents = generateLifeEvents(age);
|
474 |
+
|
475 |
+
// Update DOM
|
476 |
+
characterName.textContent = `${firstName} ${lastName}`;
|
477 |
+
characterJob.textContent = job;
|
478 |
+
characterAge.textContent = `${age} ans (décédé à ${deathAge} ans ${deathCause})`;
|
479 |
+
characterMotto.textContent = `"${motto}"`;
|
480 |
+
|
481 |
+
// Character tags
|
482 |
+
characterTags.innerHTML = '';
|
483 |
+
selectedTags.forEach(tag => {
|
484 |
+
const tagElement = document.createElement('span');
|
485 |
+
tagElement.className = 'tag';
|
486 |
+
tagElement.textContent = tag;
|
487 |
+
characterTags.appendChild(tagElement);
|
488 |
+
});
|
489 |
+
|
490 |
+
// Stats
|
491 |
+
displayStats(stats);
|
492 |
+
|
493 |
+
// Life summary
|
494 |
+
lifeSummary.innerHTML = `
|
495 |
+
<p>${firstName} ${lastName} était ${job.toLowerCase()} qui a marqué son époque par son approche unique de la vie. D'une intelligence ${stats.intelligence < 5 ? '...variable' : stats.intelligence < 8 ? 'remarquable' : 'déconcertante'}, ${stats.strength < 5 ? 'il évitait soigneusement les altercations physiques' : stats.strength < 8 ? 'il était capable de soulever des charges moyennement impressionnantes' : 'sa force légendaire faisait trembler les haltères'}.</p>
|
496 |
+
<p>Son charisme ${stats.charisma < 5 ? 'lui faisait souvent oublier les anniversaires' : stats.charisma < 8 ? 'lui permettait d'être le dernier invité aux soirées' : 'était tel que les plantes verdoyaient à son passage'} et sa malchance ${stats.luck < 5 ? 'lui faisait systématiquement tirer le bonnet d\'âne' : stats.luck < 8 ? 'était compensée par une capacité à rebondir' : 'était légendaire, comme en témoignent ses 47 tentatives de gagner à la roulette'}.</p>
|
497 |
+
`;
|
498 |
+
|
499 |
+
// Life events
|
500 |
+
lifeEventsContainer.innerHTML = '<h3><i class="fas fa-clock"></i> Événements Marquants</h3>';
|
501 |
+
lifeEvents.forEach(event => {
|
502 |
+
const eventElement = document.createElement('div');
|
503 |
+
eventElement.className = 'event';
|
504 |
+
eventElement.innerHTML = `
|
505 |
+
<span class="event-age">À ${event.age} ans</span>, ${firstName} ${event.description}.
|
506 |
+
`;
|
507 |
+
lifeEventsContainer.appendChild(eventElement);
|
508 |
+
});
|
509 |
+
|
510 |
+
// Death signature
|
511 |
+
deathSignature.textContent = `"${firstName} ${lastName} (${getRandomNumber(1900, 2023)}-${getRandomNumber(2023, 2100)})"`;
|
512 |
+
|
513 |
+
// Random avatar (using randomuser.me API)
|
514 |
+
const gender = firstName.endsWith('e') || firstName.endsWith('a') ? 'women' : 'men';
|
515 |
+
characterAvatar.src = `https://randomuser.me/api/portraits/${gender}/${getRandomNumber(1, 99)}.jpg`;
|
516 |
+
|
517 |
+
// Hide loader and show character
|
518 |
+
loader.style.display = 'none';
|
519 |
+
characterCard.style.display = 'block';
|
520 |
+
}, 1500);
|
521 |
+
}
|
522 |
+
|
523 |
+
// Event listener
|
524 |
+
generateButton.addEventListener('click', generateCharacter);
|
525 |
+
|
526 |
+
// Generate first character on load
|
527 |
+
window.addEventListener('load', generateCharacter);
|
528 |
+
</script>
|
529 |
+
</body>
|
530 |
</html>
|