diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..d4fe758 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,48 @@ +# MIT License + +Copyright (c) 2025 **Camélia Studio** + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +--- + +## Traduction française (non officielle) + +Licence MIT + +Copyright (c) 2025 **Camélia Studio** + +La présente autorise, gratuitement, toute personne obtenant une copie de ce +logiciel et des fichiers de documentation associés (le "Logiciel") à traiter +le Logiciel sans restriction, y compris, sans limitation, les droits d'utiliser, +de copier, de modifier, de fusionner, de publier, de distribuer, de concéder +sous licence et/ou de vendre des copies du Logiciel, et à permettre aux personnes +auxquelles le Logiciel est fourni de le faire, sous réserve des conditions +suivantes : + +L'avis de copyright ci-dessus et cet avis d'autorisation doivent être inclus +dans toutes les copies ou parties substantielles du Logiciel. + +LE LOGICIEL EST FOURNI "TEL QUEL", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU +IMPLICITE, Y COMPRIS, MAIS SANS S'Y LIMITER, LES GARANTIES DE QUALITÉ MARCHANDE, +D'ADÉQUATION À UN USAGE PARTICULIER ET DE NON-VIOLATION. EN AUCUN CAS, LES +AUTEURS OU LES DÉTENTEURS DU COPYRIGHT NE SERONT RESPONSABLES DE TOUTE +RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS UNE ACTION +CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, OU EN RELATION AVEC LE +LOGICIEL OU L'UTILISATION OU D'AUTRES TRANSACTIONS DANS LE LOGICIEL. \ No newline at end of file diff --git a/assets/background.png b/assets/background.png new file mode 100644 index 0000000..7039e1e Binary files /dev/null and b/assets/background.png differ diff --git a/assets/favicon.png b/assets/favicon.png new file mode 100644 index 0000000..b2da3a1 Binary files /dev/null and b/assets/favicon.png differ diff --git a/assets/script.js b/assets/script.js new file mode 100644 index 0000000..884f1b9 --- /dev/null +++ b/assets/script.js @@ -0,0 +1,26 @@ +document.addEventListener("DOMContentLoaded", () => { + const button = document.getElementById("generate"); + const result = document.getElementById("result"); + + button.addEventListener("click", async () => { + try { + const bugsResponse = await fetch("data/bugs.json"); + const featuresResponse = await fetch("data/features.json"); + + if (!bugsResponse.ok || !featuresResponse.ok) { + throw new Error("Erreur lors du chargement des fichiers JSON."); + } + + const bugs = await bugsResponse.json(); + const features = await featuresResponse.json(); + + const bug = bugs.bugs[Math.floor(Math.random() * bugs.bugs.length)]; + const feature = features.features[Math.floor(Math.random() * features.features.length)]; + + result.textContent = `${bug} ${feature}`; + } catch (error) { + result.textContent = "Une erreur s'est produite. Veuillez réessayer."; + console.error(error); + } + }); +}); \ No newline at end of file diff --git a/assets/styles.css b/assets/styles.css new file mode 100644 index 0000000..e10df65 --- /dev/null +++ b/assets/styles.css @@ -0,0 +1,158 @@ +:root { + --bg-primary: #1a1b26; + --bg-secondary: #24283b; + --text-primary: #c0caf5; + --text-secondary: #a9b1d6; + --accent-primary: #9ece6a; + --accent-secondary: #73daca; + --error: #f7768e; +} + +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: 'Arial', sans-serif; + background-color: var(--bg-primary); + color: var(--text-primary); + line-height: 1.6; + min-height: 100vh; + display: flex; + flex-direction: column; +} + +header { + background: linear-gradient(rgba(36, 40, 59, 0.85), rgba(36, 40, 59, 0.85)), url('../assets/background.png'); + background-size: cover; + background-position: center; + padding: 2rem 1rem; + text-align: center; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2); +} + +.logo-container { + display: flex; + align-items: center; + justify-content: center; + gap: 1rem; + margin-bottom: 1rem; +} + +.logo { + width: 48px; + height: 48px; +} + +h1 { + color: var(--accent-primary); + font-size: 2.5rem; + margin-bottom: 0.5rem; +} + +header p { + color: var(--text-secondary); + font-size: 1.2rem; +} + +main { + flex: 1; + padding: 2rem 1rem; + max-width: 800px; + margin: 0 auto; + width: 100%; + text-align: center; +} + +button { + background-color: var(--accent-primary); + color: var(--bg-primary); + border: none; + padding: 1rem 2rem; + font-size: 1.2rem; + border-radius: 8px; + cursor: pointer; + transition: transform 0.2s, background-color 0.2s; + font-weight: bold; +} + +button:hover { + background-color: var(--accent-secondary); + transform: translateY(-2px); +} + +button:active { + transform: translateY(0); +} + +#result { + margin-top: 2rem; + padding: 1.5rem; + background-color: var(--bg-secondary); + border-radius: 8px; + font-size: 1.2rem; + line-height: 1.6; + box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); +} + +footer { + background-color: var(--bg-secondary); + color: var(--text-secondary); + padding: 1.5rem; + text-align: center; + margin-top: auto; +} + +.footer-content { + max-width: 800px; + margin: 0 auto; + display: flex; + justify-content: space-between; + align-items: center; + flex-wrap: wrap; + gap: 1rem; +} + +.footer-content p { + margin: 0; +} + +.contribute-link { + color: var(--accent-primary); + text-decoration: none; + display: inline-flex; + align-items: center; + gap: 0.5rem; +} + +.contribute-link:hover { + color: var(--accent-secondary); + text-decoration: underline; +} + +@media (max-width: 600px) { + h1 { + font-size: 2rem; + } + + header p { + font-size: 1rem; + } + + button { + padding: 0.8rem 1.6rem; + font-size: 1rem; + } + + #result { + font-size: 1rem; + padding: 1rem; + } + + .footer-content { + flex-direction: column; + text-align: center; + } +} \ No newline at end of file diff --git a/data/bugs.json b/data/bugs.json new file mode 100644 index 0000000..bc888e8 --- /dev/null +++ b/data/bugs.json @@ -0,0 +1,50 @@ +{ + "bugs": [ + "À cause d'un bug sur le sort Roublardise,", + "À cause d'un bug sur les renvois de dommages,", + "À cause d'un bug sur l'hôtel des ventes,", + "À cause d'un bug sur la gestion des résistances,", + "À cause d'un bug sur les caractéristiques des familiers,", + "À cause d'un bug sur le système de quêtes,", + "À cause d'un bug sur les métiers de récolte,", + "À cause d'un bug sur le système de guildes,", + "À cause d'un bug sur les montures,", + "À cause d'un bug sur les enclos de guilde,", + "À cause d'un bug sur les maisons de joueurs,", + "À cause d'un bug sur le système de chat,", + "À cause d'un bug sur les émoticônes,", + "À cause d'un bug sur les échanges entre joueurs,", + "À cause d'un bug sur le système de combat,", + "À cause d'un bug sur l'affichage des points de vie,", + "À cause d'un bug sur les points d'action,", + "À cause d'un bug sur les points de mouvement,", + "À cause d'un bug sur les sorts communs,", + "À cause d'un bug sur les armes,", + "À cause d'un bug sur les boucliers,", + "À cause d'un bug sur les familiers,", + "À cause d'un bug sur les potions de téléportation,", + "À cause d'un bug sur les potions de rappel,", + "À cause d'un bug sur les potions de cité,", + "À cause d'un bug sur les zaaps,", + "À cause d'un bug sur les prismes d'alliance,", + "À cause d'un bug sur les percepteurs,", + "À cause d'un bug sur les avis de recherche,", + "À cause d'un bug sur les succès,", + "À cause d'un bug sur les titres et ornements,", + "À cause d'un bug sur les challenges en combat,", + "À cause d'un bug sur les donjons modulaires,", + "À cause d'un bug sur les compagnons,", + "À cause d'un bug sur les invocations,", + "À cause d'un bug sur l'affichage des états,", + "À cause d'un bug sur les coups critiques,", + "À cause d'un bug sur les résistances élémentaires,", + "À cause d'un bug sur les maîtrises d'armes,", + "À cause d'un bug sur les animations de sorts,", + "À cause d'un bug sur les effets visuels,", + "À cause d'un bug sur les sons en combat,", + "À cause d'un bug sur les musiques d'ambiance,", + "À cause d'un bug sur les notifications,", + "À cause d'un bug sur les raccourcis clavier,", + "À cause d'un bug sur l'interface utilisateur," + ] + } diff --git a/data/features.json b/data/features.json new file mode 100644 index 0000000..1ae0da3 --- /dev/null +++ b/data/features.json @@ -0,0 +1,56 @@ +{ + "features": [ + "vous ne pouvez plus accéder à votre havre-sac.", + "le donjon Glourséleste a été désactivé.", + "les raccourcis claviers ont été réinitialisés.", + "les prismes d'alliance ne fonctionnent plus.", + "les potions de rappel vous téléportent à un emplacement aléatoire.", + "les percepteurs refusent de récolter des ressources.", + "les montiliers avancent à reculons.", + "les sorts de soin infligent désormais des dégâts.", + "les succès ne se débloquent plus.", + "les objets équipés disparaissent après un combat.", + "les quêtes principales ne progressent plus.", + "les enclos de guilde sont devenus inaccessibles.", + "les PNJ ne parlent plus.", + "les monstres ne lâchent plus de butin.", + "les HDV vendent les objets à un prix aléatoire.", + "les alliances de guildes sont dissoutes après chaque maintenance.", + "les défis entre joueurs provoquent une déconnexion immédiate.", + "les personnages perdent leurs points de vie en dehors des combats.", + "les échanges entre joueurs sont désactivés.", + "les familiers refusent de manger.", + "les animations de sorts ne se déclenchent plus.", + "les maps de certaines zones sont remplacées par un écran noir.", + "les joueurs ne peuvent plus entrer dans les tavernes.", + "les dopeuls ne donnent plus d'expérience.", + "les caractéristiques des personnages sont inversées.", + "les sorts à longue portée ne fonctionnent que au corps-à-corps.", + "les équipements perdent leurs bonus aléatoirement.", + "les monstres ignorent les joueurs et quittent le combat.", + "les boosts de statistiques disparaissent au lancement d’un combat.", + "les titres et ornements s’effacent à chaque connexion.", + "les potions de cité vous envoient dans la dimension Srambad.", + "les portails Eliotropes conduisent toujours à la même destination.", + "les personnages ne peuvent plus monter en niveau.", + "les parchemins de caractéristiques sont devenus inutilisables.", + "équiper un bouclier augmente les dégâts reçus.", + "toutes les invocations attaquent aléatoirement alliés et ennemis.", + "les familiers gagnent de l’énergie au lieu d’en perdre.", + "les coups critiques ont disparu du jeu.", + "les banques des joueurs se vident après chaque maintenance.", + "les sorts de déplacement ne fonctionnent plus en combat.", + "les invocations se retournent contre leur invocateur.", + "les dragodindes refusent de se reproduire.", + "les objets de quête sont échangés avec des objets inutiles.", + "les équipements perdent aléatoirement des stats après un combat.", + "les interfaces de discussion affichent des messages aléatoires.", + "les récompenses de succès sont attribuées aux mauvais personnages.", + "les zaaps changent leur destination de manière imprévisible.", + "les échanges entre deux membres d'une même guilde suppriment les objets transférés.", + "les consommables restaurent moins de points de vie qu’indiqué.", + "lors des combats JcJ les statistiques des bonus de panoplies ne s'appliquent plus.", + "les personnages se figent après un combat et doivent se reconnecter." + ] + } + \ No newline at end of file diff --git a/data/liste-bugs.json b/data/liste-bugs.json new file mode 100644 index 0000000..d0cf718 --- /dev/null +++ b/data/liste-bugs.json @@ -0,0 +1,50 @@ +{ + "bugs": [ + "À cause d'un bug sur le sort Roublardise", + "À cause d'un bug sur les renvois de dommages", + "À cause d'un bug sur l'hôtel des ventes", + "À cause d'un bug sur la gestion des résistances", + "À cause d'un bug sur les caractéristiques des familiers", + "À cause d'un bug sur le système de quêtes", + "À cause d'un bug sur les métiers de récolte", + "À cause d'un bug sur le système de guildes", + "À cause d'un bug sur les montures", + "À cause d'un bug sur les enclos de guilde", + "À cause d'un bug sur les maisons de joueurs", + "À cause d'un bug sur le système de chat", + "À cause d'un bug sur les émoticônes", + "À cause d'un bug sur les échanges entre joueurs", + "À cause d'un bug sur le système de combat", + "À cause d'un bug sur l'affichage des points de vie", + "À cause d'un bug sur les points d'action", + "À cause d'un bug sur les points de mouvement", + "À cause d'un bug sur les sorts communs", + "À cause d'un bug sur les armes", + "À cause d'un bug sur les boucliers", + "À cause d'un bug sur les familiers", + "À cause d'un bug sur les potions de téléportation", + "À cause d'un bug sur les potions de rappel", + "À cause d'un bug sur les potions de cité", + "À cause d'un bug sur les zaaps", + "À cause d'un bug sur les prismes d'alliance", + "À cause d'un bug sur les percepteurs", + "À cause d'un bug sur les avis de recherche", + "À cause d'un bug sur les succès", + "À cause d'un bug sur les titres et ornements", + "À cause d'un bug sur les challenges en combat", + "À cause d'un bug sur les donjons modulaires", + "À cause d'un bug sur les compagnons", + "À cause d'un bug sur les invocations", + "À cause d'un bug sur l'affichage des états", + "À cause d'un bug sur les coups critiques", + "À cause d'un bug sur les résistances élémentaires", + "À cause d'un bug sur les maîtrises d'armes", + "À cause d'un bug sur les animations de sorts", + "À cause d'un bug sur les effets visuels", + "À cause d'un bug sur les sons en combat", + "À cause d'un bug sur les musiques d'ambiance", + "À cause d'un bug sur les notifications", + "À cause d'un bug sur les raccourcis clavier", + "À cause d'un bug sur l'interface utilisateur" + ] + } diff --git a/data/liste-features.json b/data/liste-features.json new file mode 100644 index 0000000..1ae0da3 --- /dev/null +++ b/data/liste-features.json @@ -0,0 +1,56 @@ +{ + "features": [ + "vous ne pouvez plus accéder à votre havre-sac.", + "le donjon Glourséleste a été désactivé.", + "les raccourcis claviers ont été réinitialisés.", + "les prismes d'alliance ne fonctionnent plus.", + "les potions de rappel vous téléportent à un emplacement aléatoire.", + "les percepteurs refusent de récolter des ressources.", + "les montiliers avancent à reculons.", + "les sorts de soin infligent désormais des dégâts.", + "les succès ne se débloquent plus.", + "les objets équipés disparaissent après un combat.", + "les quêtes principales ne progressent plus.", + "les enclos de guilde sont devenus inaccessibles.", + "les PNJ ne parlent plus.", + "les monstres ne lâchent plus de butin.", + "les HDV vendent les objets à un prix aléatoire.", + "les alliances de guildes sont dissoutes après chaque maintenance.", + "les défis entre joueurs provoquent une déconnexion immédiate.", + "les personnages perdent leurs points de vie en dehors des combats.", + "les échanges entre joueurs sont désactivés.", + "les familiers refusent de manger.", + "les animations de sorts ne se déclenchent plus.", + "les maps de certaines zones sont remplacées par un écran noir.", + "les joueurs ne peuvent plus entrer dans les tavernes.", + "les dopeuls ne donnent plus d'expérience.", + "les caractéristiques des personnages sont inversées.", + "les sorts à longue portée ne fonctionnent que au corps-à-corps.", + "les équipements perdent leurs bonus aléatoirement.", + "les monstres ignorent les joueurs et quittent le combat.", + "les boosts de statistiques disparaissent au lancement d’un combat.", + "les titres et ornements s’effacent à chaque connexion.", + "les potions de cité vous envoient dans la dimension Srambad.", + "les portails Eliotropes conduisent toujours à la même destination.", + "les personnages ne peuvent plus monter en niveau.", + "les parchemins de caractéristiques sont devenus inutilisables.", + "équiper un bouclier augmente les dégâts reçus.", + "toutes les invocations attaquent aléatoirement alliés et ennemis.", + "les familiers gagnent de l’énergie au lieu d’en perdre.", + "les coups critiques ont disparu du jeu.", + "les banques des joueurs se vident après chaque maintenance.", + "les sorts de déplacement ne fonctionnent plus en combat.", + "les invocations se retournent contre leur invocateur.", + "les dragodindes refusent de se reproduire.", + "les objets de quête sont échangés avec des objets inutiles.", + "les équipements perdent aléatoirement des stats après un combat.", + "les interfaces de discussion affichent des messages aléatoires.", + "les récompenses de succès sont attribuées aux mauvais personnages.", + "les zaaps changent leur destination de manière imprévisible.", + "les échanges entre deux membres d'une même guilde suppriment les objets transférés.", + "les consommables restaurent moins de points de vie qu’indiqué.", + "lors des combats JcJ les statistiques des bonus de panoplies ne s'appliquent plus.", + "les personnages se figent après un combat et doivent se reconnecter." + ] + } + \ No newline at end of file diff --git a/index.php b/index.php new file mode 100644 index 0000000..3e009ee --- /dev/null +++ b/index.php @@ -0,0 +1,36 @@ +<!DOCTYPE html> +<html lang="fr"> +<head> + <meta charset="UTF-8"> + <meta name="viewport" content="width=device-width, initial-scale=1.0"> + <title>À cause de Flash</title> + <meta name="description" content="T'inquiète frère, une fois sur le moteur Unity il n'y aura plus aucun soucis !"> + <link rel="stylesheet" href="assets/styles.css"> + <link rel="icon" type="image/png" href="assets/favicon.png"> +</head> +<body> + <header> + <div class="logo-container"> + <img src="assets/favicon.png" alt="Logo À cause de Flash" class="logo"> + <h1>À cause de Flash</h1> + </div> + <p>T'inquiète frère, une fois sur le moteur Unity il n'y aura plus aucun soucis !</p> + </header> + + <main> + <button id="generate">Générer une phrase</button> + <p id="result"></p> + </main> + + <footer> + <div class="footer-content"> + <p>© 2025 <a href="https://camelia-studio.org/" class="contribute-link" target="_blank" rel="noopener">Camélia Studio</a> (licence MIT) - Site non officiel sur Dofus</p> + <a href="https://git.crystalyx.net/camelia-studio/A-cause-de-Flash" class="contribute-link" target="_blank" rel="noopener"> + Venir sur Gitea ajouter des bugs ! + </a> + </div> + </footer> + + <script src="assets/script.js"></script> +</body> +</html> \ No newline at end of file