diff --git a/assets/locales/_fr/character.json b/assets/locales/_fr/character.json deleted file mode 100644 index 9052cc1548..0000000000 --- a/assets/locales/_fr/character.json +++ /dev/null @@ -1,114 +0,0 @@ -{ - "classes": { - "druid": "Druide", - "hunter": "Chasseur", - "mage": "Mage", - "paladin": "Paladin", - "priest": "Prêtre", - "rogue": "Voleur", - "shaman": "Chaman", - "warlock": "Démoniste", - "warrior": "Guerrier" - }, - "specs": { - "druid": { - "balance": "Équilibre", - "feral": "Farouche", - "guardian": "Gardien", - "restoration": "Restauration" - }, - "hunter": { - "beast_mastery": "Maîtrise des bêtes", - "marksmanship": "Précision", - "survival": "Survie" - }, - "mage": { - "arcane": "Arcane", - "fire": "Feu", - "frost": "Givre" - }, - "paladin": { - "holy": "Sacré", - "protection": "Protection", - "retribution": "Vindicte" - }, - "priest": { - "discipline": "Discipline", - "holy": "Sacré", - "shadow": "Ombre" - }, - "rogue": { - "assassination": "Assassinat", - "combat": "Combat", - "subtlety": "Finesse" - }, - "shaman": { - "elemental": "Élémentaire", - "enhancement": "Amélioration", - "restoration": "Restauration" - }, - "warlock": { - "affliction": "Affliction", - "demonology": "Démonologie", - "destruction": "Destruction" - }, - "warrior": { - "arms": "Armes", - "fury": "Fureur", - "protection": "Protection" - } - }, - "races": { - "unknown": "Aucun", - "blood_elf": "Elfe de sang", - "draenei": "Draenei", - "dwarf": "Nain", - "gnome": "Gnome", - "goblin": "Gobelin", - "human": "Humain", - "night_elf": "Elfe de la nuit", - "orc": "Orc", - "alliance_pandaren": "Pandaren (A)", - "horde_pandaren": "Pandaren (H)", - "tauren": "Tauren", - "troll": "Troll", - "undead": "Mort-vivant", - "worgen": "Worgen" - }, - "professions": { - "unknown": "Aucun", - "alchemy": "Alchimie", - "blacksmithing": "Forge", - "enchanting": "Enchantement", - "engineering": "Ingénierie", - "herbalism": "Herboristerie", - "inscription": "Calligraphie", - "jewelcrafting": "Joaillerie", - "leatherworking": "Travail du cuir", - "mining": "Minage", - "skinning": "Dépeçage", - "tailoring": "Couture", - "archeology": "Archéologie" - }, - "slots": { - "head": "Tête", - "neck": "Cou", - "shoulder": "Épaules", - "back": "Dos", - "chest": "Torse", - "wrist": "Poignets", - "hands": "Mains", - "waist": "Taille", - "legs": "Jambes", - "feet": "Pieds", - "finger_1": "Doigt 1", - "finger_2": "Doigt 2", - "rings": "Anneaux", - "trinket_1": "Bijou 1", - "trinket_2": "Bijou 2", - "trinkets": "Bijoux", - "main_hand": "Main principale", - "off_hand": "Main secondaire", - "weapons": "Armes" - } -} diff --git a/assets/locales/_fr/talents.json b/assets/locales/_fr/talents.json deleted file mode 100644 index 756b72a105..0000000000 --- a/assets/locales/_fr/talents.json +++ /dev/null @@ -1,182 +0,0 @@ -{ - "mage": { - "presenceOfMind": "Présence spirituelle", - "blazingSpeed": "Vitesse flamboyante", - "iceFloes": "Iceberg", - "temporalShield": "Bouclier temporel", - "flameglow": "Lueur de la flamme", - "iceBarrier": "Barrière de glace", - "ringOfFrost": "Anneau de givre", - "iceWard": "Garde glaciale", - "frostjaw": "Givregueule", - "greaterInvisibility": "Invisibilité supérieure", - "cauterize": "Cautérisation", - "coldSnap": "Morsure du froid", - "netherTempest": "Tempête du Néant", - "livingBomb": "Bombe vivante", - "frostBomb": "Bombe de givre", - "invocation": "Invoquer", - "runeOfPower": "Rune de puissance", - "incantersWard": "Protection de l’incantateur" - }, - "druid": { - "felineSwiftness": "Rapidité féline", - "displacerBeast": "Transfert de bête", - "wildCharge": "Charge sauvage", - "yserasGift": "Don d'Ysera", - "renewal": "Renouveau", - "cenarionWard": "Protection cénarienne", - "faerieSwarm": "Essaim de lucioles", - "massEntanglement": "Enchevêtrement de masse", - "typhoon": "Typhon", - "soulOfTheForest": "Âme de la forêt", - "incarnation": "Incarnation", - "forceOfNature": "Force de la nature", - "disorientingRoar": "Rugissement désorientant", - "ursolsVortex": "Vortex d'Ursol", - "mightyBash": "Rossée puissante", - "heartOfTheWild": "Cœur de fauve", - "dreamOfCenarius": "Rêve de Cénarius", - "naturesVigil": "Veille de la nature" - }, - "warrior": { - "juggernaut": "Mastodonte", - "doubleTime": "Doublement", - "warbringer": "Porteguerre", - "enragedRegeneration": "Régénération enragée", - "secondWind": "Second souffle", - "impendingVictory": "Victoire imminente", - "staggeringShout": "Cri ahurissant", - "piercingHowl": "Hurlement perçant", - "disruptingShout": "Cri perturbant", - "bladestorm": "Tempête de lames", - "shockwave": "Onde de choc", - "dragonRoar": "Rugissement de dragon", - "massSpellReflection": "Renvoi de sort de masse", - "safeguard": "Protéger", - "vigilance": "Vigilance", - "avatar": "Avatar", - "bloodbath": "Bain de sang", - "stormBolt": "Éclair de tempête" - }, - "hunter": { - "posthaste": "À toute allure", - "narrowEscape": "Chas de l'aiguille", - "crouchingTigerHiddenChimera": "Tigre et Chimère", - "bindingShot": "Tir de lien", - "wyvernSting": "Piqûre de wyverne", - "intimidation": "Intimidation", - "exhilaration": "Enthousiasme", - "aspectOfTheIronHawk": "Aspect du faucon de fer", - "spiritBond": "Engagement spirituel", - "fervor": "Ferveur", - "direBeast": "Bête féroce", - "thrillOfTheHunt": "Frisson de la chasse", - "aMurderOfCrows": "Corbeaux hargneux", - "blinkStrikes": "Frappes de transfert", - "lynxRush": "Charge du lynx", - "glaiveToss": "Lancer de glaives", - "powershot": "Tir puissant", - "barrage": "Barrage" - }, - "rogue": { - "nightstalker": "Traqueur nocturne", - "subterfuge": "Subterfuge", - "shadowFocus": "Focalisation de l'ombre", - "deadlyThrow": "Lancer mortel", - "nerveStrike": "Point sensible", - "combatReadiness": "Promptitude au combat", - "cheatDeath": "Trompe-la-mort", - "leechingPoison": "Poison sangsue", - "elusiveness": "Insaisissable", - "cloakAndDagger": "Poignards volants", - "shadowstep": "Pas de l'ombre", - "burstOfSpeed": "Pointe de vitesse", - "preyOnTheWeak": "Attaquer les faibles", - "paralyticPoison": "Poison paralysant", - "dirtyTricks": "Coup tordu", - "shurikenToss": "Lancer de shuriken", - "markedForDeath": "Désigné pour mourir", - "anticipation": "Anticipation" - }, - "priest": { - "voidTendrils": "Vrilles du Vide", - "psyfiend": "Démon psychique", - "dominateMind": "Emprise", - "bodyAndSoul": "Corps et âme", - "angelicFeather": "Plume angélique", - "phantasm": "Fantasme", - "fromDarknessComesLight": "Des ténèbres vient la lumière", - "mindbender": "Torve-esprit", - "solaceAndInsanity": "Réconfort et folie", - "desperatePrayer": "Prière du désespoir", - "spectralGuise": "Semblance spectrale", - "angelicBulwark": "Rempart angélique", - "twistOfFate": "Tour du destin", - "powerInfusion": "Infusion de puissance", - "divineInsight": "Clairvoyance divine", - "cascade": "Escalade", - "divineStar": "Étoile divine", - "halo": "Halo" - }, - "paladin": { - "speedOfLight": "Vitesse de la Lumière", - "longArmOfTheLaw": "Long bras de la loi", - "pursuitOfJustice": "Poursuite de la justice", - "fistOfJustice": "Poing de la justice", - "repentance": "Repentir", - "evilIsAPointOfView": "Le mal est relatif", - "selflessHealer": "Soigneur altruiste", - "eternalFlame": "Flamme éternelle", - "sacredShield": "Bouclier saint", - "handOfPurity": "Main de pureté", - "unbreakableSpirit": "Esprit inflexible", - "clemency": "Clémence", - "holyAvenger": "Vengeur sacré", - "sanctifiedWrath": "Courroux sanctifié", - "divinePurpose": "Dessein divin", - "holyPrism": "Prisme sacré", - "lightsHammer": "Marteau de Lumière", - "executionSentence": "Condamnation à mort" - }, - "shaman": { - "naturesGuardian": "Gardien de la nature", - "stoneBulwarkTotem": "Totem rempart de pierre", - "astralShift": "Transfert astral", - "frozenPower": "Puissance gelée", - "earthgrabTotem": "Totem de poigne de terre", - "windwalkTotem": "Totem marche-vent", - "callOfTheElements": "Appel des éléments", - "totemicPersistence": "Totem persistant", - "totemicProjection": "Transfert totémique", - "elementalMastery": "Maîtrise élémentaire", - "ancestralSwiftness": "Rapidité ancestrale", - "echoOfTheElements": "Écho des éléments", - "rushingStreams": "Flots impétueux", - "ancestralGuidance": "Soutien ancestral", - "conductivity": "Conductivité", - "unleashedFury": "Fureur libéré", - "primalElementalist": "Élémentaliste primordial", - "elementalBlast": "Explosion élémentaire" - }, - "warlock": { - "darkRegeneration": "Sombre régénération", - "soulLeech": "Suceur d'âme", - "harvestLife": "Moisson de vie", - "demonicBreath": "Souffle démoniaque", - "mortalCoil": "Voile de mort", - "shadowfury": "Furie de l'ombre", - "soulLink": "Lien spirituel", - "sacrificialPact": "Pacte sacrificiel", - "darkBargain": "Sombre marché", - "bloodHorror": "Horreur sanglante", - "burningRush": "Ruée ardente", - "unboundWill": "Volonté déliée", - "grimoireOfSupremacy": "Grimoire de suprématie", - "grimoireOfService": "Grimoire de servitude", - "grimoireOfSacrifice": "Grimoire de sacrifice", - "archimondesDarkness": "Ténèbres d'Archimonde", - "kiljaedensCunning": "Ruse de Kil'jaeden", - "mannorothsFury": "Fureur de Mannoroth" - } -} diff --git a/assets/locales/_fr/translation.json b/assets/locales/_fr/translation.json deleted file mode 100644 index c616655f66..0000000000 --- a/assets/locales/_fr/translation.json +++ /dev/null @@ -1,2355 +0,0 @@ -{ - "landing": { - "navigation": { - "home": "Accueil", - "simulations": "Simulations", - "about": "À propos", - "toggle": "Basculer la navigation" - }, - "simulations": { - "full_raid": "Simulation de raid complet" - }, - "home": { - "title": "WoWSims - The Burning Crusade", - "description": "Un puissant outil de simulation pour World of Warcraft: The Burning Crusade", - "welcomeDescription": "Bienvenue sur WoWSims - The Burning Crusade ! Ce projet communautaire propose des simulations de classes et de raids pour World of Warcraft® The Burning Crusade Classic, en collaboration avec les meilleurs théoriciens et représentants de classes." - }, - "header": { - "wowsims": "WoWSims", - "expansion": "The Burning Crusade", - "supportDevs": "Soutenir le projet" - } - }, - "common": { - "none": "Aucun", - "custom": "Personnalisé", - "name": "Nom", - "search": "Rechercher", - "filter": "Filtrer", - "phases": { - "1": "Phase 1 (5.0 - T14)", - "2": "Phase 2 (5.1)", - "3": "Phase 3 (5.2 - T15)", - "4": "Phase 4 (5.3)", - "5": "Phase 5 (5.4 - T16)" - }, - "tanks": { - "title": "Tanks", - "main_tank": "Tank Principal", - "tank_2": "Tank 2", - "tank_3": "Tank 3", - "tank_4": "Tank 4" - }, - "status": { - "unlaunched": "Pas encore supporté", - "alpha": "Alpha", - "beta": "Bêta", - "launched": "Lancé" - }, - "mob_types": { - "unknown": "Aucun", - "beast": "Bête", - "demon": "Démon", - "dragonkin": "Draconien", - "elemental": "Élémentaire", - "giant": "Géant", - "humanoid": "Humanoïde", - "mechanical": "Mécanique", - "undead": "Mort-vivant" - }, - "sources": { - "unknown": "Inconnu", - "crafting": "Artisanat", - "quest": "Quête", - "sold_by": "Vendu par", - "reputation": "Réputation", - "pvp": "JcJ", - "dungeon": "Donjon", - "dungeon_h": "Donjon (H)", - "raid": "Raid", - "raid_h": "Raid (H)", - "raid_rf": "Raid (RF)", - "raid_flex": "Raid (Dynamique)" - }, - "raids": { - "unknown": "Inconnu", - "mogushan_vaults": "Caveaux Mogu'shan", - "heart_of_fear": "Cœur de la Peur", - "terrace_of_endless_spring": "Terrasse Printanière", - "throne_of_thunder": "Trône du Tonnerre", - "siege_of_orgrimmar": "Siège d'Orgrimmar" - }, - "armor_types": { - "unknown": "Inconnu", - "cloth": "Tissu", - "leather": "Cuir", - "mail": "Maille", - "plate": "Plaques" - }, - "weapon_types": { - "unknown": "Inconnu", - "axe": "Hache", - "dagger": "Dague", - "fist": "Arme de pugilat", - "mace": "Masse", - "off_hand": "Main gauche", - "polearm": "Armes d'hast", - "shield": "Bouclier", - "staff": "Bâton", - "sword": "Épée" - }, - "ranged_weapon_types": { - "unknown": "Inconnu", - "bow": "Arc", - "crossbow": "Arbalète", - "gun": "Arme à feu", - "thrown": "Arme de jet", - "wand": "Baguette" - }, - "spell_schools": { - "physical": "Physique", - "arcane": "Arcanes", - "fire": "Feu", - "frost": "Givre", - "holy": "Sacré", - "nature": "Nature", - "shadow": "Ombre" - }, - "resource_types": { - "health": "Vie", - "mana": "Mana", - "energy": "Énergie", - "rage": "Rage", - "focus": "Focalisation", - "holy_power": "Puissance Sacrée", - "shadow_orbs": "Orbes d'Ombre", - "combo_points": "Points de Combo", - "maelstrom": "Maelström", - "demonic_fury": "Fureur Démoniaque", - "burning_embers": "Braises Ardentes" - }, - "stats": { - "strength": "Force", - "agility": "Agilité", - "stamina": "Endurance", - "intellect": "Intelligence", - "spirit": "Esprit", - "hit": "Toucher", - "crit": "Critiques", - "haste": "Hâte", - "expertise": "Expertise", - "dodge": "Esquive", - "parry": "Parade", - "mastery": "Maîtrise", - "attack_power": "Puissance d'attaque", - "ranged_attack_power": "Puissance d'attaque à distance", - "spell_power": "Puissance des sorts", - "pvp_resilience": "Résilience JcJ", - "pvp_power": "Puissance JcJ", - "armor": "Armure", - "bonus_armor": "Armure bonus", - "health": "Vie", - "mana": "Mana", - "mp5": "MP5", - "main_hand_dps": "DPS main droite", - "off_hand_dps": "DPS main gauche", - "ranged_dps": "DPS à distance", - "block": "Blocage", - "melee_speed_multiplier": "Multiplicateur de vitesse d'attaque en mêlée", - "ranged_speed_multiplier": "Multiplicateur de vitesse d'attaque à distance", - "cast_speed_multiplier": "Multiplicateur de vitesse d'incantation des sorts", - "spell_hit": "Toucher des sorts", - "spell_crit": "Critiques des sorts", - "spell_haste": "Hâte des sorts", - "melee_hit": "Toucher de mêlée", - "melee_crit": "Critiques de mêlée", - "melee_haste": "Hâte de mêlée", - "ranged_haste": "Hâte à distance" - }, - "mastery_spell_names": { - "unknown": "Inconnu", - "potent_poisons": "Poisons violents", - "main_gauche": "Main gauche", - "executioner": "Bourreau", - "blood_shield": "Bouclier de sang", - "frozen_heart": "Cœur gelé", - "dreadblade": "Lame d'effroi", - "total_eclipse": "Éclipse totale", - "razor_claws": "Griffes rasoir", - "natures_guardian": "Gardien de la nature", - "harmony": "Harmonie", - "illuminated_healing": "Soins illuminés", - "divine_bulwark": "Rempart divin", - "hand_of_light": "Main de lumière", - "elemental_overload": "Surcharge élémentaire", - "enhanced_elements": "Éléments amplifiés", - "deep_healing": "Soins profonds", - "master_of_beasts": "Maître des bêtes", - "wild_quiver": "Carquois sauvage", - "essence_of_the_viper": "Essence de la vipère", - "strikes_of_opportunity": "Frappes opportunes", - "unshackled_fury": "Fureur déchaînée", - "critical_block": "Blocage critique", - "mana_adept": "Adepte du mana", - "ignite": "Enflammer", - "icicles": "Glaçons", - "shield_discipline": "Discipline du bouclier", - "echo_of_light": "Écho de la Lumière", - "shadow_orb_power": "Rappel ténébreux", - "potent_afflictions": "Afflictions puissantes", - "master_demonologist": "Maître démonologue", - "emberstorm": "Tempête ardente", - "elusive_brawler": "Bagarreur insaisissable", - "gift_of_the_serpent": "Don du serpent", - "bottled_fury": "Fureur en bouteille" - }, - "currency": { - "valorPoints": "Points de vaillance", - "justicePoints": "Points de justice", - "honorPoints": "Points d’honneur" - }, - "copy_button": { - "default_text": "Copier dans le presse-papiers", - "copied": "Copié" - }, - "list_picker": { - "new_item": "Nouvelle {{itemLabel}}", - "delete_item": "Supprimer {{itemLabel}}", - "copy_to_new": "Copier vers une nouvelle {{itemLabel}}", - "move_drag_drop": "Déplacer (Glisser+Déposer)", - "warnings": "Avertissements", - "additional_information": "Informations supplémentaires :", - "action_has_warnings": "Cette action a des avertissements et pourrait ne pas se comporter comme prévu.", - "action_has_errors": "Cette action a des erreurs et ne se comportera pas comme prévu." - }, - "preset": { - "ep_weights": "Poids EP", - "gear": "Équipement", - "talents": "Talents", - "rotation": "Rotation", - "encounter": "Rencontre", - "settings": "Paramètres", - "description": "Ce préréglage affecte les paramètres suivants :", - "stat_weights": "Poids des Stats", - "class_spec_options": "Options Classe/Spé", - "consumables": "Consommables", - "other_settings": "Autres Paramètres", - "buffs": "Buffs" - } - }, - "sim": { - "title": "Simulateur {{class}} {{spec}} - The Burning Crusade", - "description": "Simulations {{class}} {{spec}} pour World of Warcraft® The Burning Crusade Classic.", - "basic_bis_disclaimer": "

Les listes d'équipement prédéfinies fournie sont approximatives du meilleur équipement possible, et ne seront souvent pas la configuration optimale pour vous. Votre configuration d'équipement optimale dépendra de nombreux facteurs ; c'est pourquoi nous avons un simulateur !

Les objets peuvent également être omis des préréglages s'ils sont très contestés et clairement mieux utilisés sur d'autres classes, pour encourager un équipement équitable pour le raid dans son ensemble.

", - "healing_sim_disclaimer": "*** AVERTISSEMENT - UTILISEZ À VOS PROPRES RISQUES ***\n\nLe concept entier d'un simulateur de soins est EXPÉRIMENTAL. Tous les résultats doivent être pris avec un grain de sel EXTREMEMENT important.\n\nCet outil est actuellement plus similaire à une feuille de calcul qu'à un véritable simulateur. Les options pour spécifier les profils de dégâts entrants afin d'avoir des rotations réactives appropriées n'ont pas encore été ajoutées.", - "notice_local_download": { - "title": "Le saviez-vous ?", - "message": "Vous pouvez télécharger notre simulateur en local pour accélérer considérablement vos simulations ?", - "download_button": "Télécharger" - }, - "crash_modal": { - "title": "Informations supplémentaires sur le crash", - "header": "Veuillez ajouter le lien complet suivant au rapport que vous venez de créer. Cela simplifiera le débogage du problème." - }, - "unlaunched": { - "title": "Ce simulateur n'est actuellement pas pris en charge.", - "contribute_message": "Vous voulez contribuer ?", - "discord_message": "Assurez-vous de rejoindre notre Discord !", - "healing_message": "Vous cherchez des simulations de soins ?", - "qe_live_message": "Consultez QE Live !" - }, - "notifications": { - "raid_sim_cancelled": "Simulation annulée.", - "simulation_failed": "La simulation a échoué. Un rapport d'erreur a été généré.", - "failed_to_file_report": "Échec du rapport... réessayez une autre fois :" - }, - "crash_report": { - "confirm_title": "Échec de la simulation :", - "confirm_message": "Appuyez sur Ok pour signaler le crash", - "report_title": "Rapport de crash" - } - }, - "gear_tab": { - "title": "Équipement", - "gem_summary": { - "title": "Résumé des gemmes", - "reset_gems": "Réinitialiser les gemmes" - }, - "reforge_summary": { - "title": "Résumé des retouches", - "reset_reforges": "Réinitialiser les retouches", - "copy_to_reforge_lite": "Copier vers Reforge Lite" - }, - "reforge_success": { - "title": "Les éléments suivants ont été retouchés :", - "removed_reforge": "retouche supprimé", - "no_changes": "Aucun changement de retouche n'a été effectué !", - "copy_to_reforge_lite": "Copier vers Reforge Lite" - }, - "gear_sets": { - "title": "Ensembles d'équipement", - "gear_set": "Ensemble d'équipement", - "gear_set_name": "Nom de l'ensemble", - "save_gear_set": "Sauvegarder l'ensemble" - }, - "gear_picker": { - "tabs": { - "items": "Objet", - "random_suffix": "Suffixe aléatoire", - "enchants": "Enchantements", - "tinkers": "Bricolages", - "reforging": "Retouche", - "upgrades": "Améliorations", - "gem1": "Gemme", - "gem2": "Gemme", - "gem3": "Gemme" - }, - "remove_buttons": { - "remove_enchant": "Retirer l'enchantement", - "remove_tinkers": "Retirer le bricolage", - "remove_reforge": "Retirer la retouche", - "remove_random_suffix": "Retirer le suffixe aléatoire", - "remove_upgrade": "Retirer l'amélioration", - "remove_gem": "Retirer la gemme" - }, - "filters": { - "title": "Filtres", - "general": "Général", - "min_ilvl": "ILvl Min", - "max_ilvl": "ILvl Max", - "faction_restrictions": "Restrictions de Faction", - "source": "Source", - "raids": "Raids", - "faction_labels": { - "none": "Aucune", - "alliance_only": "Alliance uniquement", - "horde_only": "Horde uniquement" - } - }, - "quick_popovers": { - "favorite_gems": { - "title": "Gemmes favorites", - "empty_message": "Ajouter des gemmes favorites.", - "open_gems": "Liste des gemmes" - }, - "favorite_enchants": { - "title": "Enchantements favoris", - "empty_message": "Ajouter des enchantements favoris", - "open_enchants": "Liste des enchantements" - } - }, - "missing_gear_message": { - "title": "Si un objet manque, vérifiez la phase sélectionnée et vos filtres d'équipement.", - "description": "Si le problème persiste, sauvegardez toutes les données non sauvegardées, cliquez sur l'icône de rouage en haut à droite pour ouvrir les options, puis cliquez sur \"Restaurer les paramètres par défaut\"." - }, - "cooldowns": { - "title": "Cooldowns", - "tooltip": "Spécifiez les timings de cooldown, en secondes. Les cooldowns seront utilisés dès que possible après leurs timings spécifiés. Quand non spécifié, les cooldowns seront utilisés quand prêts et qu'il est raisonnable de le faire.

Plusieurs timings peuvent être fournis en séparant par des virgules. Toute utilisation de cooldown après le dernier timing fourni utilisera la logique par défaut." - }, - "ep_tooltip": "EP (Points d'Équivalence) est une façon de comparer les objets en multipliant les stats brutes d'un objet avec vos poids de stats actuels. Plus d'EP ne signifie pas nécessairement plus de DPS, car les EPs ne prennent pas en compte les caps de stats et les calculs de stats non linéaires.", - "filters_button": "Filtres", - "unequip_item": "Déséquiper l'objet", - "table_headers": { - "ilvl": "ILvl", - "item": "Objet", - "source": "Source" - }, - "show_ep": "Afficher EP", - "armor_type": "Type d'Armure", - "weapon_type": "Type d'Armes", - "weapon_speed": "Vitesse d'Armes", - "min_mh_speed": "Vitesse Main droite Min", - "max_mh_speed": "Vitesse Main droite Max", - "min_oh_speed": "Vitesse Main gauche Min", - "max_oh_speed": "Vitesse Main gauche Max", - "ranged_weapon_type": "Type d'Armes à distance", - "ranged_weapon_speed": "Vitesse d'Armes à distance", - "min_ranged_speed": "Vitesse à distance Min", - "max_ranged_speed": "Vitesse à distance Max", - "reforge_text": "Retouché {{fromAmount}} {{fromStat}} → {{toAmount}} {{toStat}}" - }, - "preset_configurations": { - "title": "Configurations prédéfinies", - "tooltip": "Les configurations prédéfinies peuvent appliquer une combinaison optimale d'équipement, talents, rotation et paramètres de raid." - }, - "upgrade_summary": { - "title": "Coûts d'amélioration restants", - "upgrade_all_items": "Améliorer tous les objets", - "reset_upgrades": "Réinitialiser les améliorations" - } - }, - "settings_tab": { - "title": "Paramètres", - "raid_buffs": { - "title": "Buffs de Raid", - "tooltip": "Buffs fournis par d'autres membres du groupe/raid.", - "description": "Tous les buffs/debuffs de raid sélectionnés sont supposés être fournis par d'autres membres du raid que le joueur simulé.", - "misc": { - "label": "Divers", - "tooltip": "Buffs de raid divers" - }, - "stats": "Stats", - "attack_power": "Puissance d'attaque", - "attack_speed": "Vitesse d'attaque", - "spell_power": "Puissance des sorts", - "spell_haste": "Hâte des sorts", - "crit_percent": "Crit %", - "mastery": "Maîtrise", - "stamina": "Endurance" - }, - "external_damage_cooldowns": { - "title": "Cooldowns de dégâts externes", - "tooltip": "Cooldowns de dégâts majeurs fournis par d'autres membres du groupe/raid.", - "bloodlust": "Furie sanguinaire", - "skull_banner": "Bannière du crâne", - "stormlash_totem": "Totem fouette-tempête", - "tricks_of_the_trade": "Ficelles du métier", - "unholy_frenzy": "Frénésie impie", - "shattering_throw": "Lancer fracassant" - }, - "external_defensive_cooldowns": { - "title": "Cooldowns défensifs externes", - "tooltip": "Cooldowns défensifs majeurs fournis par d'autres membres du groupe/raid.", - "vigilance": "Vigilance", - "devotion_aura": "Aura de dévotion", - "pain_suppression": "Suppression de la douleur", - "rallying_cry": "Cri de ralliement" - }, - "debuffs": { - "title": "Debuffs", - "tooltip": "Debuffs appliqués par d'autres membres du raid.", - "misc": { - "label": "Divers", - "tooltip": "Debuffs divers" - }, - "armor_reduction": "Réduction d'armure", - "phys_dmg_reduction": "Réduction dégâts physique", - "cast_speed": "Vitesse de sort", - "phys_dmg": "Dégâts physique", - "spell_dmg": "Dégâts magique" - }, - "other": { - "title": "Autre", - "challenge_mode": { - "label": "Mode Défi", - "tooltip": "Active le Mode Défi" - }, - "input_delay": { - "label": "Temps de réaction", - "tooltip": "Temps de réaction du joueur, en millisecondes. Spécifie le délai minimum sur les actions qui ne peuvent pas être mises en file d'attente, comme les sorts qui attendent des gains de ressources ou l'expiration d'un temps de recharge. Utilisé également pour certaines valeurs APL (comme 'Aura active (avec Temps de Réaction)'). Modélise approximativement la somme du temps de réaction + la latence du serveur." - }, - "channel_clip_delay": { - "label": "Délai d'interruption de sort canalisé", - "tooltip": "Délai suivant l'interruption d'un sort canalisé, en millisecondes. Ce délai se produit après toute canalisation complète ou partielle se terminant après que le GCD devienne disponible, en raison de l'incapacité du joueur à mettre en file d'attente le sort suivant." - }, - "in_front_of_target": { - "label": "Devant la cible", - "tooltip": "Se tenir devant la cible, causant l'inclusion des blocages et parades dans la table d'attaque." - }, - "distance_from_target": { - "label": "Distance de la cible", - "tooltip": "Distance des cibles, en mètres. Utilisé pour calculer le temps de trajet de certains sorts." - }, - "tank_assignment": { - "label": "Attribution de tank", - "tooltip": "Détermine quels mobs seront tankés. La plupart des mobs ciblent par défaut le Tank Principal, mais dans les rencontres multi-cibles prédéfinies ce n'est pas toujours vrai." - }, - "incoming_hps": { - "label": "HPS reçu", - "tooltip": "Quantité moyenne de soins reçus par seconde. Utilisé pour calculer la chance de mort. Si défini à 0, par défaut 25% du DPS de base de la cible principale." - }, - "healing_cadence": { - "label": "Intervalle de soins", - "tooltip": "Durée entre deux 'ticks' de soins, en secondes. Généralement, les durées plus longues favorisent les Points de Vie Effectifs (EHP) pour minimiser la Chance de Mort, tandis que les durées plus courtes favorisent l'évitement. Exemple : si HPS reçu est défini à 1000 et ceci à 1s, alors toutes les 1s un soin de 1000 sera reçu. Si ceci est défini à 2s, alors toutes les 2s un soin de 2000 sera reçu. Si défini à 0, les valeurs par défaut pour la Cadence de soins et Cadence +/- sont déduites des paramètres de dégâts du boss." - }, - "healing_cadence_variation": { - "label": "Intervalle +/-", - "tooltip": "Ampleur de la variation aléatoire dans les intervalles de soins, en secondes. Exemple : si l'intervalle de soins est définie à 1s avec 0.5s de variation, alors l'intervalle entre les soins successifs variera uniformément entre 0.5 et 1.5s. Si la variation est définie à 2s, alors 50% des intervalles de soins tomberont entre 0s et 1s, et les autres 50% tomberont entre 1s et 3s. La quantité de soins par 'tick' est automatiquement mise à l'échelle en fonction du temps depuis le dernier tick, afin de maintenir les HPS constants." - }, - "absorb_frac": { - "label": "Absorption %", - "tooltip": "% de chaque 'tick' de soin entrant à modéliser comme un bouclier d'absorption plutôt que comme un soin direct." - }, - "burst_window": { - "label": "Fenêtre de burst TMI", - "tooltip": "Durée en secondes de la fenêtre de burst pour calculer le TMI. Il est important d'utiliser le même paramètre lors de la comparaison de cette métrique. Par défaut il est de 6 secondes. Si défini à 0, les calculs TMI sont désactivés." - }, - "hp_percent_for_defensives": { - "label": "% PV pour CDs défensifs", - "tooltip": "% de Santé Maximum, en dessous duquel les cooldowns défensifs sont autorisés à être utilisés. Si défini à 0, cette restriction est désactivée." - }, - "pet_uptime": { - "label": "Temps de présence du familier (%)", - "tooltip": "Pourcentage de la durée du combat pendant lequel votre familier sera en vie." - }, - "glaive_toss_chance": { - "label": "Chance de succès de Lancer de glaive (%)", - "tooltip": "La chance que Lancer de glaive touche les cibles secondaires en pourcentages." - }, - "detonate_seed": { - "label": "Détoner la Graine instantanément", - "tooltip": "Simule le raid faisant des dégâts aux cibles de telle sorte que la graine détonne immédiatement à la fin du cast." - }, - "stance_snapshot": { - "label": "Posture Snapshot", - "tooltip": "Les sorts qui sont lancés en même temps que le changement de posture bénéficieront du bonus de la posture avant le changement." - }, - "assume_bleed_active": { - "label": "Saignement toujours actif", - "tooltip": "Suppose que le saignement est toujours actif pour les calculs de 'Pourfendre et Déchirer'. Sinon, ne calculera que sur la base de ses propres Déchirure/Griffure/Lacérer." - }, - "cannot_shred_target": { - "label": "Ne peut pas Lambeau la cible", - "tooltip": "Alternative à \"Devant la cible\" pour modéliser les boss qui ne parade ou bloque pas, mais que vous ne pouvez toujours pas Lambeau." - }, - "okf_uptime": { - "label": "Temps de présence Frénésie du chouettide (%)", - "tooltip": "Pourcentage de la durée totale du combat du temps de présence de Frénésie du chouettide" - }, - "sync_type": { - "label": "Synchro des auto-attaques", - "tooltip": "Choisissez votre option de synchronisation ou d'échelonnement. Auto : Choisira automatiquement les options de sync basées sur les vitesses d'attaque de vos armes. Aucun : Pas de Sync ou d'Échelonnement, utilisé pour les vitesses d'armes non assorties. Synchro Parfaite : Fait que vos armes attaquent toujours en même temps, pour les vitesses d'armes assorties. Main secondaire retardée : Ajoute un léger délai aux attaques de la main secondaire tout en restant dans la fenêtre d'ICD de 0.5s de Rafale.", - "values": { - "automatic": "Automatique", - "none": "Aucun", - "perfect_sync": "Syncho Parfaite", - "delayed_offhand": "Main secondaire retardée" - } - }, - "show_1h_weapons": { - "label": "1M", - "tooltip": "Afficher les armes à une main" - }, - "show_2h_weapons": { - "label": "2M", - "tooltip": "Afficher les armes à deux mains" - }, - "show_matching_gems": { - "label": "Respecter le sertissage", - "tooltip": "Afficher uniquement les gemmes avec des couleurs qui respectent le bonus de sertissage" - }, - "show_ep_values": { - "label": "Afficher EP", - "tooltip": "Afficher les valeurs EP (Puissance Effective)" - }, - "phase_selector": { - "label": "Phase", - "tooltip": "Sélectionner la phase de jeu pour la disponibilité des objets" - }, - "enable_item_swap": { - "label": "Activer le changement de stuff", - "tooltip": "Permet de configurer un ensemble d'objets qui sera utilisé avec l'action APL Changer d'ensemble." - }, - "item_swap": { - "label": "Échanger les ensembles", - "tooltip": "Échanger avec les objets équipés" - }, - "assume_prepull_mastery_elixir": { - "label": "Supposer Élixir de Maîtrise en prepull", - "tooltip": "Activer ceci suppose que vous utilisez un Élixir de Maîtrise avant le debut du combat." - }, - "blessings": { - "title": "Bénédictions", - "tooltip": "Spécifiez les Bénédictions de Paladin pour chaque rôle, par ordre de priorité. Les Bénédictions dans la 1ère colonne seront utilisées s'il y a au moins 1 Paladin dans le raid, 2ème colonne s'il y en a au moins 2, etc." - }, - "shaman_disable_immolate": { - "label": "Désactiver Immolation pendant Déchaînement du vent", - "tooltip": "Lorsque que le talent Elémentaliste primordial est selectionné et que le lancement automatiquue de Immolation est activé, cette option permet d'empêcher le lancement d'Immolation lorsque le buff est actif sur le joueur." - }, - "shaman_disable_immolate_duration": { - "label": "Etendre la désactivation de", - "tooltip": "Durée en secondes pour laquel Immolation ne sera toujours pas lancé àpres la fin du buff Déchaînement du vent sur le joueur. Mettre 0 pour désactiver Immolation seulement pendant que le buff est actif." - } - }, - "consumables": { - "title": "Consommables", - "potions": { - "title": "Potions", - "prepop": "Potion pre-combat", - "combat": "Potion en combat" - }, - "elixirs": { - "title": "Élixirs" - }, - "food": { - "title": "Nourriture" - }, - "engineering": { - "title": "Ingénierie", - "explosives": "Explosifs" - }, - "pet": { - "title": "Familier" - } - }, - "encounter": { - "title": "Rencontre", - "target_inputs": { - "label": "Options de Cible", - "frenzy_time": { - "label": "Frénésie à (s)", - "tooltip": "Temps de simulation (en secondes) auquel désactiver les changements de tank et activer le buff Frénésie du boss" - }, - "spiritual_grasp_frequency": { - "label": "Fréquence d'Etreinte spirituelle", - "tooltip": "Temps moyen (en secondes) entre les coups d'Etreinte spirituelle, suivant une distribution exponentielle" - }, - "jalak_death_time": { - "label": "Temps de mort de Jalak", - "tooltip": "Temps de simulation (en secondes) auquel désactiver War-God Jalak et déclencher le buff Rampage sur Horridon. Si défini plus longtemps que la durée de combat simulée, alors Jalak sera tanké tout le temps et Rampage ne sera jamais déclenché." - }, - "taunt_swap_for_triple_puncture": { - "label": "Échange de provocation pour Triple perforation", - "tooltip": "Si coché, échange de provocation à la mort de Jalak et à chaque autre application de Triple perforation par la suite afin de limiter l'accumulation de charges sur un seul tank." - }, - "movement_interval": { - "label": "Intervalle de mouvement", - "tooltip": "À quelle fréquence le joueur se déplacera en secondes" - }, - "reaction_time": { - "label": "Temps de réaction", - "tooltip": "Combien de temps le joueur peut attendre que les sorts se terminent avant de se déplacer en secondes" - }, - "yards": { - "label": "Mètres", - "tooltip": "De combien de mètres le joueur se déplace" - }, - "adds_respawn_time": { - "label": "Temps de respawn des add(s)", - "tooltip": "Temps pour que les add(s) réapparaissent après la mort du précédent (en secondes)" - }, - "adds_lifetime": { - "label": "Durée de vie des add(s)", - "tooltip": "Combien de temps les add(s) restent en vie (en secondes)" - }, - "adds_spawn_delay": { - "label": "Délai d'apparition des add(s)", - "tooltip": "Délai initial avant l'apparition des add(s) (en secondes)" - } - }, - "duration": { - "label": "Durée", - "tooltip": "La durée du combat pour chaque itération de simulation, en secondes." - }, - "duration_variation": { - "label": "Durée +/-", - "tooltip": "Ajoute une quantité aléatoire de temps, en secondes, entre [valeur, -1 * valeur] à chaque itération de simulation. Par exemple, régler la Durée à 180 et Durée +/- à 10 donnera des durées aléatoires entre 170s et 190s." - }, - "execute_duration_20": { - "label": "Durée d'Exécution 20 (%)", - "tooltip": "Pourcentage de la durée totale de la rencontre, pour laquelle les cibles seront considérées en phase d'exécution (< 20% PV) pour les effets comme Exécution du Guerrier ou Fureur Fondue du Mage." - }, - "execute_duration_25": { - "label": "Durée d'Exécution 25 (%)", - "tooltip": "Pourcentage de la durée totale de la rencontre, pour laquelle les cibles seront considérées en phase d'exécution (< 25% PV) pour les effets comme Drain d'Âme du Démoniste." - }, - "execute_duration_35": { - "label": "Durée d'Exécution 35 (%)", - "tooltip": "Pourcentage de la durée totale de la rencontre, pour laquelle les cibles seront considérées en phase d'exécution (< 35% PV) pour les effets comme Faucheur d'Âme du Chevalier de la Mort." - }, - "execute_duration_45": { - "label": "Durée d'Exécution 45 (%)", - "tooltip": "Pourcentage de la durée totale de la rencontre, pour laquelle les cibles seront considérées en phase d'exécution (< 45% PV) pour les effets comme Faucheur d'Âme du Chevalier de la Mort avec 4pc DPS T15." - }, - "duration_below_high_hp": { - "label": "Durée passée sous le seuil HP élevé (%)", - "tooltip": "Pourcentage de la durée totale de la rencontre, pour laquelle les cibles sont considérées hors de portée pour les effets comme Visée Précise du Chasseur (<90% PV) ou Coups Prédateurs du Druide (<80% PV)." - }, - "encounter_preset": { - "label": "Rencontre", - "tooltip": "Sélectionne une configuration de rencontre prédéfinie." - }, - "advanced": "Avancé", - "use_health": { - "label": "Utiliser les PVs", - "tooltip": "Utilise une limite de dégâts au lieu d'une limite de durée. La limite de dégâts est égale à la somme de la vie de toutes les cibles." - }, - "target": "Cible", - "num_allies": { - "label": "Nombre d'alliés", - "tooltip": "Nombre de joueurs alliés dans le raid." - }, - "min_base_damage": { - "label": "Dégâts de base Min", - "tooltip": "Dégâts de base pour les attaques automatiques, c'est-à-dire le jet le plus bas avec 0 PA contre un Joueur à 0 armure." - }, - "npc": { - "label": "PNJ", - "tooltip": "Sélectionne une configuration PNJ prédéfinie." - }, - "ai": { - "label": "IA", - "tooltip": "Détermine la rotation de capacités de la cible. Notez que la plupart des rotations ne sont pas encore implémentées." - }, - "level": "Niveau", - "mob_type": "Type de créature", - "tanked_by": { - "label": "Tanké par", - "tooltip": "Détermine quel joueur du raid cette cible ennemie attaquera. Si aucun joueur n'est assigné à l'emplacement de tank spécifié, cette cible n'attaquera pas." - }, - "swing_speed": { - "label": "Vitesse d'attaque", - "tooltip": "Temps en secondes entre les attaques automatiques. Réglez à 0 pour désactiver les attaques automatiques." - }, - "dual_wield": { - "label": "Combat à deux mains", - "tooltip": "Utilise 2 armes séparées pour attaquer." - }, - "dual_wield_penalty": { - "label": "Pénalité Combat à deux mains", - "tooltip": "Active la Pénalité d'Échec de Combat à Deux Mains (+19% de chance d'échec) si vous combattez à deux mains. Les boss dans Hyjal/BT/SWP ont généralement ceci désactivé pour empêcher les tanks de stacker l'évitement." - }, - "parry_haste": { - "label": "Hâte de parade", - "tooltip": "Si cet ennemi gagnera la hâte de parade en parant les attaques." - }, - "spell_school": { - "label": "École de sort", - "tooltip": "Type de dégâts causés par les attaques automatiques. Ceci est généralement Physique, mais certains ennemis ont des attaques élémentaires." - }, - "damage_spread": { - "label": "Écart de dégâts", - "tooltip": "Écart fractionnel entre les dégâts minimum et maximum d'attaque automatique de cet ennemi à 0 Puissance d'Attaque." - }, - "suppress_dodge": "Ignorer l'esquive", - "second_tank_index": "Index du deuxième tank", - "disabled_at_start": "Désactivé au début du combat" - }, - "player": { - "title": "Joueur", - "race": "Race", - "profession_1": "Métier 1", - "profession_2": "Métier 2" - }, - "saved_encounters": { - "title": "Rencontres sauvegardées", - "encounter": "Rencontre", - "encounter_name": "Nom de la rencontre", - "save_encounter": "Sauvegarder la rencontre" - }, - "saved_settings": { - "title": "Paramètres sauvegardés", - "settings": "Paramètres", - "settings_name": "Nom des paramètres", - "save_settings": "Sauvegarder les paramètres" - }, - "external_buffs": { - "title": "Buffs externes", - "tooltip": "Buffs fournis par d'autres membres du groupe/raid." - } - }, - "talents_tab": { - "title": "Talents", - "copy_button": { - "label": "Copier", - "tooltip": "Copier les talents" - }, - "reset_button": { - "tooltip": "Réinitialiser les points de talent" - }, - "saved_talents": { - "title": "Talents sauvegardés", - "label": "Talents", - "name_label": "Nom", - "save_button": "Sauvegarder les talents", - "delete": { - "confirm": "Supprimer les talents sauvegardés '{{name}}' ?", - "tooltip": "Supprimer les talents sauvegardés" - }, - "alerts": { - "choose_name": "Choisissez un nom pour vos talents sauvegardés !", - "name_exists": "Des talents avec le nom {{name}} existent déjà." - } - } - }, - "bulk_tab": { - "title": "Lot (Nouveau)", - "description": "Simulation par lot est une nouvelle fonctionnalité similaire à la simulation Top Gear sur Raidbots.com qui vous permet de sélectionner plusieurs objets et de les simuler pour trouver les meilleures combinaisons.
C'est une fonctionnalité Alpha, donc si vous avez des commentaires ou trouvez un bug, veuillez le signaler !", - "download_local": "Téléchargez le simulateur en local pour des résultats plus rapides.", - "tabs": { - "setup": "Configuration", - "results": "Résultats" - }, - "actions": { - "import_bags": "Importer depuis les sacs", - "import_favorites": "Importer les favoris", - "clear_items": "Effacer les objets", - "simulate_batch": "Simuler le lot" - }, - "search": { - "title": "Recherche d'objets", - "name_label": "Nom", - "clear_search": "Effacer la recherche", - "min_ilvl": "ILvl min", - "max_ilvl": "ILvl max", - "no_results": "Aucun résultat trouvé.", - "showing_results": "Affichage de {{max}} sur {{total}} résultats totaux.", - "item_added": "{{itemName}} a été ajouté au lot.", - "item_removed": "{{itemName}} a été retiré du lot.", - "item_unique": "{{itemName}} est unique et a déjà été ajouté." - }, - "settings": { - "combinations_count": "{{count}} Combinaisons", - "combination_singular": "1 Combinaison", - "iterations": "Itérations", - "default_gems": "Gemmes par défaut", - "inherit_upgrades": { - "label": "Hériter des améliorations", - "tooltip": "Lorsque cette option est activée, les objets hériteront des améliorations de l'objet équipé. Sinon, les objets seront simulés sans aucune amélioration." - }, - "freeze_ring": { - "label": "Geler un emplacement d'anneau", - "tooltip": "Geler un anneau équipé pour réduire le nombre de combinaisons" - }, - "freeze_trinket": { - "label": "Geler un emplacement de bijou", - "tooltip": "Geler un bijou équipé pour réduire le nombre de combinaisons" - } - }, - "progress": { - "total_combinations": "{{count}} combinaisons totales.", - "refining_rounds": "{{current}} / {{total}} tours d'affinage", - "simulations_complete": "{{completed}} / {{total}}
simulations terminées", - "iterations_complete": "{{completed}} / {{total}}
itérations terminées", - "seconds_remaining": "{{seconds}} secondes restantes." - }, - "notifications": { - "bulk_sim_cancelled": "Simulation par lot annulée.", - "failed_to_remove_item": "Échec de la suppression de l'objet, veuillez signaler ce problème." - }, - "warning": { - "iterations_limit": "Simuler plus de {{limit}} itérations dans le simulateur web prendra beaucoup de temps ou ne fonctionnera peut-être pas du tout. Pour les simulations par lot plus importantes, nous recommandons d'utiliser le mode rapide ou de télécharger l'exécutable et de l'exécuter sur votre machine." - }, - "picker": { - "no_items": "Aucun objet sélectionné.", - "remove_tooltip": "Retirer cet objet du lot.", - "failed_update": "Échec de la mise à jour de l'objet, veuillez signaler ce problème.", - "failed_remove": "Échec de la suppression de l'objet, veuillez signaler ce problème." - }, - "results": { - "run_simulation": "Exécutez une simulation pour voir les résultats", - "equip_button": "Équiper", - "gear_equipped": "Équipement du lot équipé !", - "current_gear": "Équipement actuel" - }, - "gem_selector": { - "title": "Choisir la gemme par défaut" - }, - "import_modal": { - "title": "Importation d'objets de sac", - "description_line1": "Importez des objets de sac à partir d'un fichier JSON, qui peut être créé par l'AddOn en jeu WowSimsExporter.", - "description_line2": "Pour importer, téléchargez le fichier ou collez le texte ci-dessous, puis cliquez sur 'Importer'." - } - }, - "rotation_tab": { - "title": "Rotation", - "common": { - "rotation_type": { - "label": "Type", - "auto": "Auto", - "simple": "Simple", - "apl": "APL", - "single_target": "Cible unique", - "aoe": "AoE", - "custom": "Personnalisé" - } - }, - "apl": { - "actionGroups": { - "attributes": { - "actions": "Actions", - "name": "Nom" - }, - "header": "Groupes d'actions", - "name": "Groupe d'actions", - "newGroupName": "Nouveau groupe d'actions", - "tooltips": { - "actions": "Actions dans ce groupe. Elles seront exécutées dans l'ordre lorsqu'un groupe est référencé.", - "name": "Nom de ce groupe d'actions (par exemple, 'careful_aim', 'cooldowns').", - "overview": "Groupes d'actions pouvant être référencés dans la Liste de Priorité d'Actions (APL). Utile pour organiser votre APL et réutiliser des séquences d'actions communes. Les actions sont effectuées de haut en bas dans un groupe." - } - }, - "floatingActionBar": { - "new": "Nouveau {{itemName}}", - "reset": "Réinitialiser l'APL" - }, - "prePullActions": { - "header": "Liste d'actions pré-pull", - "name": "Action pré-pull", - "tooltips": { - "overview": "Actions exécutées avant le début du combat, comme les buffs pré-pull ou les potions." - } - }, - "priorityList": { - "header": "Liste de Priorité d'Actions (APL)", - "name": "Action", - "tooltips": { - "overview": "Une liste d'actions représentant les actions de votre personnage pendant le combat. Le sim évaluera la liste du haut (priorité la plus élevée) vers le bas (priorité la plus basse) et choisira la première action valide à exécuter à tout moment." - } - }, - "tabs": { - "actionGroups": "Groupes d'actions", - "priorityList": "Liste de priorité", - "variables": "Variables" - }, - "variables": { - "attributes": { - "name": "Nom", - "nameTooltip": "Nom de la variable (par exemple, 'my_dot_remains', 'boss_health_pct')", - "value": "Valeur", - "valueTooltip": "L'expression de la valeur que représente cette variable." - }, - "copyName": "{{variableName}} (Copie)", - "header": "Variables", - "name": "Variable", - "newVariableName": "Nouvelle variable", - "tooltips": { - "name": "Nom de la variable (par exemple, 'my_dot_remains', 'boss_health_pct')", - "overview": "Les variables peuvent être utilisées pour stocker des conditions complexes référencées dans l'APL. Utile pour stocker des valeurs dynamiques changeant pendant le combat, comme les timers de CD ou les ressources.", - "value": "L'expression de la valeur que représente cette variable." - } - }, - "prepull_actions": { - "title": "Actions de pré-pull", - "tooltip": "Actions à effectuer avant le pull.", - "item_label": "Actions de pré-pull", - "do_at": { - "label": "Faire à", - "tooltip": "Temps auquel éxécuter l'action avant le pull. Doit être négatif, et formaté comme '-1s' ou '-2500ms'." - }, - "new_action": "Nouvelle action" - }, - "priority_list": { - "title": "Liste de Priorité", - "tooltip": "À chaque point de décision, la simulation effectuera la première action valide de cette liste.", - "item_label": "Action", - "if_label": "Si :", - "new_action": "Nouvelle action" - }, - "actions": { - "cast": { - "label": "Lancer", - "tooltip": "Lance le sort si possible, c'est-à-dire si toutes les exigences de ressources/temps de recharge/GCD/etc sont remplies." - }, - "cast_at_player": { - "label": "Lancer sur le joueur", - "tooltip": "Lance un sort amical si possible, c'est-à-dire si toutes les exigences de ressources/temps de recharge/GCD/etc sont remplies." - }, - "multi_dot": { - "label": "Multi-DoT", - "tooltip": "Maintient un DoT actif sur plusieurs cibles en lançant le sort spécifié.", - "max_dots": { - "label": "# DoTs Max", - "tooltip": "Nombre maximum de DoTs à appliquer simultanément." - }, - "overlap": { - "label": "Rafraichir à", - "tooltip": "Temps maximum avant l'expiration d'un DoT où il peut être rafraîchi." - } - }, - "strict_multi_dot": { - "label": "Multi-DoT Strict", - "tooltip": "Maintient un DoT actif sur plusieurs cibles en lançant le sort spécifié. Ne rafraîchira pas les DoTs qui ne sont pas sur le point d'expirer.", - "max_dots": { - "label": "# DoTs Max", - "tooltip": "Nombre maximum de DoTs à appliquer simultanément." - }, - "overlap": { - "label": "Rafraichir à", - "tooltip": "Temps maximum avant l'expiration d'un DoT où il peut être rafraîchi." - } - }, - "multi_shield": { - "label": "Multi-Bouclier", - "tooltip": "Maintient un bouclier actif sur plusieurs cibles en lançant le sort spécifié.", - "max_shields": { - "label": "# Boucliers Max", - "tooltip": "Nombre maximum de boucliers à appliquer simultanément." - }, - "overlap": { - "label": "Rafraichir à", - "tooltip": "Temps maximum avant l'expiration d'un bouclier où il peut être rafraîchi." - } - }, - "channel": { - "label": "Canaliser", - "tooltip": "Canalise le sort si possible.", - "full_description": "

La différence entre canaliser un sort et lancer le sort est que les canalisations peuvent être interrompues. Si le paramètre Interrompre si est vide, cette action est équivalente à Lancer.

La canalisation sera interrompue seulement si toutes les conditions suivantes sont vraies :

Notez que si vous voulez simplement permettre à d'autres actions d'interrompre la canalisation, définissez Interrompre si à Vrai.

", - "interrupt_if": { - "label": "Interrompre si", - "tooltip": "Interrompre la canalisation si la condition est vraie." - }, - "recast": { - "label": "Relancer", - "tooltip": "Si coché, les interruptions de cette canalisation relanceront le sort." - } - }, - "cast_all_stat_buff_cooldowns": { - "label": "Lancer tous les CDs de Buff de stats", - "tooltip": "Lance tous les cooldowns de buff de stats disponibles.", - "full_description": "" - }, - "autocast_other_cooldowns": { - "label": "Auto-lancer autres CDs", - "tooltip": "Lance automatiquement d'autres cooldowns quand disponibles.", - "full_description": "" - }, - "wait": { - "label": "Attendre", - "tooltip": "Attend pendant la durée spécifiée." - }, - "wait_until": { - "label": "Attendre jusqu'à", - "tooltip": "Attend jusqu'à ce que la condition spécifiée soit vraie." - }, - "scheduled_action": { - "label": "Action programmée", - "tooltip": "Effectue une action à un moment programmé.", - "do_at": { - "label": "Faire à", - "tooltip": "Liste de timings séparés par des virgules. L'action interne sera effectuée une fois à chaque timing." - } - }, - "do_at": { - "label": "Faire à", - "tooltip": "Effectue une action à un moment spécifique." - }, - "sequence": { - "label": "Séquence", - "tooltip": "Une liste de sous-actions à exécuter dans l'ordre spécifié.", - "full_description": "

Une fois qu'une des sous-actions a été effectuée, la prochaine sous-action ne sera pas nécessairement exécutée immédiatement après. Le système redémarrera au début de toute la liste d'actions (pas la séquence). Si la séquence est exécutée à nouveau, elle effectuera la prochaine sous-action.

Quand toutes les actions ont été effectuées, la séquence ne se réinitialise PAS automatiquement ; au lieu de cela, elle sera ignorée à partir de maintenant. Utilisez l'action Réinitialiser séquence pour la réinitialiser, si désiré.

" - }, - "reset_sequence": { - "label": "Réinitialiser séquence", - "tooltip": "Redémarre une séquence, de sorte que la prochaine fois qu'elle s'exécute, elle effectuera sa première sous-action.", - "full_description": "

Utilisez le champ nom pour faire référence à la séquence à réinitialiser. La séquence désirée doit avoir la même valeur (non vide) pour son nom.

" - }, - "strict_sequence": { - "label": "Séquence stricte", - "tooltip": "Comme une séquence régulière, sauf que toutes les sous-actions sont exécutées immédiatement l'une après l'autre et la séquence se réinitialise automatiquement à la fin.", - "full_description": "

Les séquences strictes ne commencent pas à moins que TOUTES les sous-actions soient prêtes.

" - }, - "change_target": { - "label": "Changer de cible", - "tooltip": "Définit la cible actuelle, qui est la cible des attaques automatiques et de la plupart des lancers par défaut." - }, - "activate_aura": { - "label": "Activer aura", - "tooltip": "Active une aura" - }, - "activate_aura_with_stacks": { - "label": "Activer aura avec stacks", - "tooltip": "Active l'aura spécifiée avec le nombre de stacks donné.", - "stacks": "stacks", - "stacks_tooltip": "Nombre désiré de stacks initiaux." - }, - "activate_all_stat_buff_proc_auras": { - "label": "Activer tous les proc de buff de stats", - "tooltip": "Active toutes les auras de proc d'objet/enchantement qui buffent le(s) type(s) de stat spécifié(s) en utilisant l'ensemble d'objets spécifié." - }, - "cancel_aura": { - "label": "Désactiver aura", - "tooltip": "Désactive une aura, équivalent à /cancelaura." - }, - "trigger_icd": { - "label": "Déclencher ICD", - "tooltip": "Déclenche l'ICD interne spécifié." - }, - "item_swap": { - "label": "Changer d'ensemble", - "tooltip": "Échange les ensemble d'équipement, en utilisant l'ensemble d'échange spécifié dans les Paramètres." - }, - "move": { - "label": "Se déplacer", - "tooltip": "Commence un déplacement vers la portée désirée à la cible.", - "to_range": "à portée", - "to_range_tooltip": "Portée désirée à la cible.", - "move_duration": "Durée du déplacement", - "duration": "Durée", - "duration_tooltip": "Quantité de temps que le personnage devrait se déplacer.", - "move_duration_tooltip": "Le personnage se déplace pendant la durée donnée." - }, - "custom_rotation": { - "label": "Rotation personnalisée", - "tooltip": "INTERNE UNIQUEMENT" - }, - "optimal_rotation_action": { - "label": "Action de rotation optimale", - "tooltip": "Exécute la rotation DPS Féral optimisée en utilisant un algorithme codé en dur.", - "wrath_weave": { - "label": "Activer le Colère-weaving", - "tooltip": "Lancer Colère quand possible pendant la fenêtre DPS du Cœur de fauve. Ignoré si CdF n'est pas talenté." - } - }, - "guardian_hotw_dps_rotation": { - "label": "Rotation DPS CdF", - "tooltip": "Exécute la rotation DPS Cœur de fauve optimisée en utilisant un algorithme codé en dur." - }, - "warlock_next_exhale_target": { - "label": "Choisir la prochaine cible d'Expiration", - "tooltip": "Choisi la prochaine cible valide d'Expiration. Si la cible actuelle n'est pas la cible de l'échange d'âme ou si l'échange d'âme n'a pas été lancé, la cible ne changera pas." - } - }, - "values": { - "item_label": "Valeur", - "no_condition": "Aucune condition", - "none": "", - "const": { - "label": "Const", - "tooltip": "Une valeur fixe.", - "full_description": "

Exemples :

" - }, - "compare": { - "label": "Comparer", - "tooltip": "Compare deux valeurs." - }, - "math": { - "label": "Math", - "tooltip": "Effectue des calculs de base sur deux valeurs." - }, - "max": { - "label": "Max", - "tooltip": "Retourne la plus grande valeur parmi les sous-valeurs." - }, - "min": { - "label": "Min", - "tooltip": "Retourne la plus petite valeur parmi les sous-valeurs." - }, - "all_of": { - "label": "Tous", - "tooltip": "Retourne Vrai si toutes les sous-valeurs sont Vraies, sinon Faux" - }, - "any_of": { - "label": "N'importe lequel", - "tooltip": "Retourne Vrai si n'importe laquelle des sous-valeurs est Vraie, sinon Faux" - }, - "not": { - "label": "Non", - "tooltip": "Retourne l'opposé de la valeur d'entrée." - }, - "current_time": { - "label": "Temps actuel", - "tooltip": "Temps actuel dans la rencontre." - }, - "current_time_percent": { - "label": "Temps actuel (%)", - "tooltip": "Temps écoulé de l'itération de simulation actuelle, en pourcentage." - }, - "remaining_time": { - "label": "Temps restant", - "tooltip": "Temps restant dans la rencontre." - }, - "remaining_time_percent": { - "label": "Temps restant (%)", - "tooltip": "Temps écoulé de l'itération de simulation restante, en pourcentage." - }, - "is_execute_phase": { - "label": "Est phase d'éxécution", - "tooltip": "Retourne vrai si la cible est en phase d'exécution." - }, - "num_targets": { - "label": "Nombre de cibles", - "tooltip": "Nombre de cibles dans la rencontre" - }, - "spell_is_casting": { - "label": "Sort en cours de lancement", - "tooltip": "Vrai si le sort est actuellement en cours de lancement" - }, - "spell_time_to_ready": { - "label": "Temps jusqu'à prêt", - "tooltip": "Temps jusqu'à ce que le sort soit prêt" - }, - "in_front_of_target": { - "label": "Devant la cible", - "tooltip": "Vrai si nous sommes devant la cible" - }, - "boss_cast": { - "label": "Boss en train de lancer", - "tooltip": "Vrai si le boss lance le sort spécifié" - }, - "boss_cast_time_to_ready": { - "label": "Temps jusqu'à boss prêt", - "tooltip": "Temps jusqu'à ce que le sort du boss soit prêt" - }, - "boss_current_target": { - "label": "Est en train de tanker", - "tooltip": "Vrai si le joueur est actuellement en train de tanker" - }, - "unit_is_moving": { - "label": "Unité en mouvement", - "tooltip": "Vrai si l'unité se déplace" - }, - "distance_to_unit": { - "label": "Distance à l'unité", - "tooltip": "Distance à l'unité" - }, - "current_health": { - "label": "PV actuel", - "tooltip": "Quantité de santé actuellement disponible." - }, - "current_health_percent": { - "label": "PV actuel (%)", - "tooltip": "Quantité de santé actuellement disponible, en pourcentage." - }, - "max_health": { - "label": "PV Max", - "tooltip": "Quantité de santé maximum actuellement disponible." - }, - "current_mana": { - "label": "Mana actuel", - "tooltip": "Quantité de mana actuellement disponible." - }, - "current_mana_percent": { - "label": "Mana actuel (%)", - "tooltip": "Quantité de mana actuellement disponible, en pourcentage." - }, - "current_rage": { - "label": "Rage actuelle", - "tooltip": "Quantité de rage actuellement disponible." - }, - "max_rage": { - "label": "Rage Max", - "tooltip": "Quantité de rage maximum disponible." - }, - "current_focus": { - "label": "Focus actuel", - "tooltip": "Quantité de focus actuellement disponible." - }, - "max_focus": { - "label": "Focus Max", - "tooltip": "Quantité de focus maximum disponible." - }, - "focus_regen_per_second": { - "label": "Régénération focus par seconde", - "tooltip": "Régénération de focus par seconde." - }, - "estimated_time_to_target_focus": { - "label": "Temps estimé vers focus cible", - "tooltip": "Temps estimé jusqu'à ce que le focus cible soit atteint, retournera 0 si à ou au-dessus de la cible." - }, - "current_energy": { - "label": "Énergie actuelle", - "tooltip": "Quantité d'énergie actuellement disponible." - }, - "max_energy": { - "label": "Énergie Max", - "tooltip": "Quantité d'énergie maximum disponible." - }, - "energy_regen_per_second": { - "label": "Régénération énergie par seconde", - "tooltip": "Régénération d'énergie par seconde." - }, - "estimated_time_to_target_energy": { - "label": "Temps estimé vers énergie cible", - "tooltip": "Temps estimé jusqu'à ce que l'énergie cible soit atteinte, retournera 0 si à ou au-dessus de la cible." - }, - "current_combo_points": { - "label": "Points de combo actuels", - "tooltip": "Quantité de points de combo actuellement disponibles." - }, - "max_combo_points": { - "label": "Points de combo Max", - "tooltip": "Quantité de points de combo maximum disponibles." - }, - "solar_energy": { - "label": "Énergie solaire", - "tooltip": "Quantité d'énergie solaire actuellement disponible." - }, - "lunar_energy": { - "label": "Énergie lunaire", - "tooltip": "Quantité d'énergie lunaire actuellement disponible" - }, - "current_eclipse_phase": { - "label": "Phase d'éclipse actuelle", - "tooltip": "La phase d'éclipse dans laquelle le druide se trouve actuellement." - }, - "generic_resource": { - "label": "{GENERIC_RESOURCE}", - "tooltip": "Quantité de {GENERIC_RESOURCE} actuellement disponible." - }, - "gcd_is_ready": { - "label": "GCD est prêt", - "tooltip": "Vrai si le GCD n'est pas en temps de recharge, sinon Faux." - }, - "gcd_time_to_ready": { - "label": "Temps jusqu’à GCD prêt", - "tooltip": "Quantité de temps restant avant que le GCD sorte du temps de recharge, ou 0 s'il n'est pas en temps de recharge." - }, - "time_to_next_auto": { - "label": "Temps jusqu’à prochaine Auto", - "tooltip": "Quantité de temps restant avant la prochaine attaque de mêlée Main gauche ou Main droite, ou 0 si les attaques automatiques ne sont pas activés." - }, - "spell_known": { - "label": "Sort connu", - "tooltip": "Vrai si le sort est actuellement connu, sinon Faux." - }, - "current_cost": { - "label": "Coût actuel", - "tooltip": "Retourne le coût de ressource actuel du sort" - }, - "can_cast": { - "label": "Peut lancer", - "tooltip": "Vrai si toutes les exigences pour lancer le sort sont actuellement remplies, sinon Faux.", - "full_description": "

The Cast Spell action does not need to be conditioned on this, because it applies this check automatically.

" - }, - "is_ready": { - "label": "Est prêt", - "tooltip": "Vrai si le sort n'est pas en temps de recharge, sinon Faux." - }, - "time_to_ready": { - "label": "Temps jusqu'à prêt", - "tooltip": "Quantité de temps restant avant que le sort sorte du temps de recharge, ou 0 s'il n'est pas en temps de recharge." - }, - "cast_time": { - "label": "Temps d'incantation", - "tooltip": "Quantité de temps pour lancer le sort incluant toute hâte et ajustements de temps de lancement de sort." - }, - "travel_time": { - "label": "Temps de trajet", - "tooltip": "Quantité de temps pour que le sort atteigne la cible." - }, - "cpm": { - "label": "CPM", - "tooltip": "Lancers par minute pour le sort jusqu'à présent dans l'itération actuelle." - }, - "is_channeling": { - "label": "Canalise", - "tooltip": "Vrai si ce sort est actuellement canalisé, sinon Faux." - }, - "channeled_ticks": { - "label": "# Ticks canalisés", - "tooltip": "Le nombre de tics complétés dans la canalisation actuelle de ce sort, ou 0 si le sort n'est pas canalisé." - }, - "number_of_charges": { - "label": "Nombre de charges", - "tooltip": "Le nombre de charges qui sont actuellement disponibles pour le sort." - }, - "time_to_next_charge": { - "label": "Temps jusqu’à prochaine charge", - "tooltip": "Le temps jusqu'à ce que la prochaine charge soit disponible. 0 si le sort a toutes les charges disponibles." - }, - "gcd_hasted_duration": { - "label": "Durée du GCD", - "tooltip": "La durée du GCD si le spell est lancé avec le montant de hâte actuel" - }, - "full_cooldown": { - "label": "Temps de recharge complet", - "tooltip": "La durée complète de recharge du sort" - }, - "channel_clip_delay": { - "label": "Délai d'interruption de sort canalisé", - "tooltip": "La quantité de temps spécifiée par le paramètre Délai d'interruption de sort canalisé." - }, - "input_delay": { - "label": "Temps de réaction", - "tooltip": "La quantité de temps spécifiée par le paramètre Temps de réaction." - }, - "spell_in_flight": { - "label": "Sort en vol", - "tooltip": "Vrai si ce sort est actuellement en cours, sinon Faux." - }, - "aura_known": { - "label": "Aura connue", - "tooltip": "Vrai si l'aura est actuellement connue, sinon Faux." - }, - "aura_active": { - "label": "Aura active", - "tooltip": "Vrai si l'aura est actuellement active ET qu'elle a été active pendant au moins aussi longtemps que le temps de réaction du joueur (configuré dans Paramètres), sinon Faux." - }, - "aura_active_with_reaction_time": { - "label": "[OBSOLETE] Aura active (avec Temps de réaction)", - "tooltip": "Toutes les vérifications d'aura contiennent maintenant la logique de Temps de Réaction, donc ceci n'est plus nécessaire. Utilisez Aura Active à la place." - }, - "aura_inactive": { - "label": "Aura inactive", - "tooltip": "Vrai si l'aura n'est pas actuellement active ET qu'elle a été inactive pendant au moins aussi longtemps que le temps de réaction du joueur (configuré dans Paramètres), sinon Faux." - }, - "aura_inactive_with_reaction_time": { - "label": "[OBSOLETE] Aura inactive (avec Temps de réaction)", - "tooltip": "Toutes les vérifications d'aura contiennent maintenant la logique de Temps de Réaction, donc ceci n'est plus nécessaire. Utilisez Aura Inactive à la place." - }, - "aura_remaining_time": { - "label": "Temps restant d'aura", - "tooltip": "Temps restant avant que cette aura expire, ou 0 si l'aura n'est pas actuellement active." - }, - "aura_num_stacks": { - "label": "Nombre de stacks d'aura", - "tooltip": "Nombre de stacks de l'aura." - }, - "aura_should_refresh": { - "label": "Aura à rafraichir", - "tooltip": "Si cette aura devrait être rafraîchie, par ex. dans le but de maintenir un debuff.", - "full_description": "

This condition checks not only the specified aura but also any other auras on the same unit, including auras applied by other raid members, which apply the same debuff category.

For example, 'Should Refresh Debuff(Sunder Armor)' will return False if the unit has an active Expose Armor aura.

" - }, - "all_trinket_stat_procs_active": { - "label": "Tous les buffs procs d'objets actifs", - "tooltip": "Vrai si tous les procs d'objet/enchantement qui buffent le(s) type(s) de stat spécifié(s) sont actuellement actifs, sinon Faux.", - "full_description": "

For stacking proc buffs, this condition also checks that the buff has been stacked to its maximum possible strength.

" - }, - "any_trinket_stat_procs_active": { - "label": "N'importe quel buff proc d'objet actif", - "tooltip": "Vrai si n'importe quel proc d'objet/enchantement qui buffe le(s) type(s) de stat spécifié(s) est actuellement actif, sinon Faux.", - "full_description": "

For stacking proc buffs, this condition also checks that the buff has been stacked to its maximum possible strength.

" - }, - "any_trinket_stat_procs_available": { - "label": "N'importe quel buff de procédure d'objet disponible", - "tooltip": "Vrai si des objets/enchantements qui améliorent les types de statistiques spécifiés ne sont actuellement pas sur ICD et ne sont pas actifs, sinon Faux." - }, - "trinket_procs_min_remaining_time": { - "label": "Temps restant Min des procs d'objets", - "tooltip": "Durée restante la plus courte sur n'importe quel proc d'objet/enchantement actif qui buffe le(s) type(s) de stat spécifié(s), ou infini si aucun n'est actuellement actif." - }, - "trinket_procs_max_remaining_icd": { - "label": "ICD restant Max des procs d'objets", - "tooltip": "ICD restant le plus long sur n'importe quel proc d'objet/enchantement inactif qui buffe le(s) type(s) de stat spécifié(s), ou 0 si tous sont actuellement actifs." - }, - "num_equipped_stat_proc_trinkets": { - "label": "Nombre d'effets proc de stat équipés", - "tooltip": "Nombre d'effets passifs d'objet/enchantement équipés qui buffent le(s) type(s) de stat spécifié(s) quand ils proc." - }, - "num_stat_buff_cooldowns": { - "label": "Nombre de CDs de buff de stats", - "tooltip": "Nombre de Cooldowns Majeurs enregistrés qui buffent le(s) type(s) de stat spécifié(s) quand ils sont lancés.", - "full_description": "

Both manually casted cooldowns as well as cooldowns controlled by \"Cast All Stat Buff Cooldowns\" and \"Autocast Other Cooldowns\" actions are included in the total count returned by this value.

" - }, - "any_stat_buff_cooldowns_active": { - "label": "N'importe quel CD de buff de stat actif", - "tooltip": "Vrai si n'importe quel Cooldown Majeur enregistré qui buffe le(s) type(s) de stat spécifié(s) est actuellement actif, sinon Faux.", - "full_description": "

For stacking buffs, this condition also checks that the buff has been stacked to its maximum possible strength after the cooldown is activated.

Both manually casted cooldowns as well as cooldowns controlled by \"Cast All Stat Buff Cooldowns\" and \"Autocast Other Cooldowns\" actions are checked.

" - }, - "any_stat_buff_cooldowns_min_duration": { - "label": "Temps de recharge des bonus de statistiques Temps restant minimum", - "tooltip": "Durée restante la plus courte sur tout temps de recharge majeur enregistré qui améliore le(s) type(s) de statistiques spécifié(s), ou l'infini si aucun n'est actuellement actif." - }, - "dot_is_active": { - "label": "DoT est actif", - "tooltip": "Vrai si le dot spécifié tick actuellement, sinon Faux." - }, - "dot_is_active_on_all_targets": { - "label": "DoT est actif sur toutes les cibles", - "tooltip": "Vrai si le dot spécifié tick actuellement sur toutes les cibles, sinon Faux." - }, - "dot_remaining_time": { - "label": "Temps restant du DoT", - "tooltip": "Temps restant avant que le dernier tick de ce DoT se produise, ou 0 si le DoT ne tick pas actuellement." - }, - "dot_lowest_remaining_time": { - "label": "Temps restant du DoT le plus court", - "tooltip": "Temps restant avant que le dernier tick de ce DoT sur n'importe quelle cible se produise, ou 0 si le DoT ne tique pas actuellement." - }, - "dot_tick_frequency": { - "label": "Fréquence de tick du DoT", - "tooltip": "Le temps entre chaque tick." - }, - "dot_time_to_next_tick": { - "label": "Temps jusqu'au prochain tick du DoT", - "tooltip": "Le temps restant avant que le prochain tick de ce DoT se produise." - }, - "dot_percent_increase": { - "label": "Augmentation de dégâts DoT %", - "tooltip": "À quel point un nouveau DoT serait plus fort comparé à l'ancien." - }, - "sequence_is_complete": { - "label": "Séquence est complète", - "tooltip": "Vrai s'il n'y a plus de sous-actions à exécuter dans la séquence, sinon Faux." - }, - "sequence_is_ready": { - "label": "Séquence est prête", - "tooltip": "Vrai si la prochaine sous-action dans la séquence est prête à être exécutée, sinon Faux." - }, - "sequence_time_to_ready": { - "label": "Temps jusqu'à séquence prête", - "tooltip": "Retourne la quantité de temps restant jusqu'à ce que la prochaine sous-action dans la séquence soit prête." - }, - "totem_remaining_time": { - "label": "Temps restant du totem", - "tooltip": "Retourne la quantité de temps restant jusqu'à ce que le totem expire." - }, - "shaman_fire_elemental_duration": { - "label": "Durée totale de l'Élémentaire de Feu", - "tooltip": "Retourne la durée totale du Totem d'Élémentaire de Feu" - }, - "cat_excess_energy": { - "label": "Énergie excédentaire", - "tooltip": "Retourne la quantité d'énergie excédentaire disponible, après avoir soustrait l'énergie qui sera nécessaire pour maintenir les DoTs." - }, - "cat_new_savage_roar_duration": { - "label": "Nouvelle durée de Rugissement sauvage", - "tooltip": "Retourne la durée du Rugissement sauvage basée sur les points de combo actuels" - }, - "warlock_hand_of_guldan_in_flight": { - "label": "Main de Gul'dan en vol", - "tooltip": "Retourne Vrai si Main de Gul'dan est actuellement en vol." - }, - "warlock_haunt_in_flight": { - "label": "[OBSOLETE] Hantise en vol", - "tooltip": "Retourne Vrai si Hantise est actuellement en vol." - }, - "affliction_current_snapshot": { - "label": "Instantané brut existant %", - "tooltip": "Influence la puissance de votre snapshot actuel par rapport à la version de référence. Ignore la hâte et les coups critiques. À utiliser uniquement si vous savez ce que vous faites." - }, - "affliction_exhale_window": { - "label": "Fenêtre d'expiration", - "tooltip": "Marge de manœuvre configurée pour l'expiration des DoTs inhalés." - }, - "mage_current_combustion_dot_estimate": { - "label": "Valeur DoT de Combustion", - "tooltip": "Retourne la taille estimée actuelle de votre DoT de Combustion." - }, - "protection_paladin_damage_taken_last_global": { - "label": "Dégâts reçus dernier global", - "tooltip": "Quantité de dégâts reçus dans les dernières 1.5s." - }, - "aura_remaining_icd": { - "label": "Aura ICD restant", - "tooltip": "Temps restant avant que le temps de recharge interne de cette aura soit prêt, ou 0 si l'ICD est prêt maintenant." - }, - "aura_icd_is_ready": { - "label": "Aura ICD prêt", - "tooltip": "Vrai si l'ICD de l'aura est actuellement prêt OU s'il a été mis en CD récemment, dans le temps de réaction du joueur (configuré dans Paramètres), sinon Faux." - }, - "aura_icd_is_ready_with_reaction_time": { - "label": "[OBSOLETE] Aura ICD prêt (avec Temps de réaction)", - "tooltip": "Toutes les vérifications d'aura contiennent maintenant la logique de Temps de réaction, donc ceci n'est plus nécessaire. Utilisez Aura ICD prêt à la place." - }, - "overlap": { - "label": "Rafraichir à", - "tooltip": "Temps maximum avant l'expiration de l'aura où elle peut être rafraîchie." - } - }, - "operators": { - "equals": "==", - "not_equals": "!=", - "greater_than_or_equal": ">=", - "greater_than": ">", - "less_than_or_equal": "<=", - "less_than": "<", - "add": "+", - "subtract": "-", - "multiply": "*", - "divide": "/" - }, - "execute_phases": { - "e20": "20%", - "e25": "25%", - "e35": "35%", - "e45": "45%", - "e90": "90%" - }, - "totem_types": { - "earth": "Terre", - "air": "Air", - "fire": "Feu", - "water": "Eau" - }, - "submenus": { - "logic": "Logique", - "encounter": "Rencontre", - "boss": "Boss", - "unit": "Unité", - "resources": "Ressources", - "gcd": "GCD", - "auto": "Auto-Attaque", - "spell": "Sort", - "aura": "Aura", - "aura_sets": "Ensembles d'Auras", - "dot": "DoT", - "sequence": "Séquence", - "casting": "Lancement", - "timing": "Attente", - "sequences": "Séquences", - "misc": "Divers", - "feral_druid": "Druide Farouche", - "guardian_druid": "Druide Gardien", - "shaman": "Chaman", - "warlock": "Démoniste", - "mage": "Mage", - "tank": "Tank", - "health": "PV", - "mana": "Mana", - "rage": "Rage", - "focus": "Focalisation", - "energy": "Énergie", - "combo_points": "Points de Combo", - "eclipse": "Éclipse", - "cooldowns": "CDs", - "placeholders": "Espaces Réservés" - }, - "item_swap_sets": { - "main": "Principal", - "swapped": "Secondaire" - }, - "helpers": { - "action_id_sets": { - "auras": "Aura", - "stackable_auras": "Aura", - "icd_auras": "Aura", - "exclusive_effect_auras": "Aura", - "spells": "Sort", - "castable_spells": "Sort", - "channel_spells": "Sort Canalisé", - "dot_spells": "DoT", - "castable_dot_spells": "DoT", - "shield_spells": "Bouclier", - "non_instant_spells": "Sort Non-instantané", - "friendly_spells": "Sort Amical", - "expected_dot_spells": "DoT", - "spells_with_travelTime": "Sort" - }, - "field_configs": { - "type": "Type", - "strategy": "Stratégie", - "buff_type": "Type de Buff", - "min_icd": "ICD Min", - "min_icd_tooltip": "Si non-zéro, filtre tous les procs qui n'ont pas d'ICD ou dont l'ICD est inférieur à la valeur spécifiée (en secondes). Cela peut être utile pour certaines vérifications de snapshot, car les procs avec des ICD faibles sont souvent trop faibles pour snapshot.", - "include_reaction_time": "Inclure le temps de réaction", - "include_reaction_time_tooltip": "Si coché, utilisera le temps de réaction configuré.", - "use_base_value": "Utiliser la valeur de base", - "use_base_value_tooltip": "Si coché, comparera le DoT actuel à la valeur de base (au début de la rencontre) du DoT.", - "variable_assignment_tooltip": "Valeur à assigner à la variable '{{variableName}}'" - }, - "eclipse_types": { - "lunar": "Lunaire", - "solar": "Solaire", - "neutral": "Neutre" - }, - "rotation_types": { - "single_target": "Cible unique", - "aoe": "AoE" - }, - "hotw_strategies": { - "caster": "Humanoïde", - "cat": "Chat", - "hybrid": "Hybride" - }, - "unit_labels": { - "self": "Soi-même", - "current_target": "Cible actuelle", - "previous_target": "Cible précédente", - "next_target": "Cible suivante", - "player": "Joueur", - "target": "Cible", - "pet": "Familier" - }, - "placeholder_tooltip": "La Potion de pré-pull si CurrentTime < 0, ou la Potion en combat si le combat a commencé.", - "select_variable": "Sélectionner une variable", - "select_group": "Sélectionner un groupe", - "no_variables_defined": "Aucune variable définie", - "no_groups_defined": "Aucun groupe défini", - "buttons": { - "enable_action": "Activer l'action", - "disable_action": "Désactiver l'action", - "enable_disable": "Activer/Désactiver" - } - } - }, - "auto": { - "description": "Utilisation automatique d'une rotation sauvegardée basée sur vos paramètres actuels." - }, - "simple": { - "title": "Rotation" - }, - "cooldowns": { - "title": "CDs", - "tooltip": "Spécifiez les timings des CDs, en secondes. Les CDs seront utilisés dès que possible après leurs timings spécifiés. Quand non spécifiés, les CDs seront utilisés quand ils sont prêts et qu'il est raisonnable de le faire.

Plusieurs timings peuvent être fournis en les séparant par des virgules. Toute utilisation de CD après le dernier timing fourni utilisera la logique par défaut.", - "delete_tooltip": "Supprimer le CD", - "timings_placeholder": "20, 40, ..." - }, - "saved_rotations": { - "title": "Rotations sauvegardées", - "label": "Rotation", - "name_label": "Nom de la rotation", - "save_button": "Sauvegarder la rotation", - "delete": { - "confirm": "Supprimer la rotation sauvegardée '{{name}}' ?", - "tooltip": "Supprimer la rotation sauvegardée" - }, - "alerts": { - "choose_name": "Choisissez un nom pour votre rotation sauvegardée !", - "name_exists": "Une rotation avec le nom {{name}} existe déjà." - } - }, - "options": { - "druid": { - "feral": { - "target_type": { - "label": "Type de cible", - "single_target": "Cible unique", - "aoe": "AoE" - }, - "bear_weave": { - "label": "Activer le bear-weaving", - "tooltip": "Passe en ours quand en attente d'énergie" - }, - "snek_weave": { - "label": "Utiliser Serpent Albino", - "tooltip": "Réinitialiser le timer d'auto-attaque à la fin du passage en forme d'ours en utilisant le familier Serpent Albino" - }, - "use_ns": { - "label": "Utiliser Rapidité de la nature", - "tooltip": "Utiliser Rapidité de la nature pour combler les trous de Rapidité du prédateur" - }, - "manual_params": { - "label": "Paramètres avancés manuels", - "tooltip": "Spécifier manuellement les paramètres avancés, sinon utilisera les préréglages par défaut" - }, - "hotw_strategy": { - "label": "Utilisation de Cœur de fauve", - "tooltip": "Comment utiliser Cœur de fauve", - "values": { - "passives_only": "Passifs uniquement", - "enhanced_bear_weaving": "Bear-weaving amélioré", - "wrath_weaving": "Colère-weaving" - } - }, - "allow_aoe_berserk": { - "label": "Permettre Berserk AoE", - "tooltip": "Permettre l'utilisation de Berserk dans la rotation AoE" - }, - "roar_offset": { - "label": "Décalage de Rugissement sauvage", - "tooltip": "Décalage minimum gagné entre la Déchirure actuelle et le nouveau Rugissement sauvage pour permettre un clip de Rugissement sauvage" - }, - "rip_leeway": { - "label": "Marge de Déchirure", - "tooltip": "Écart minimum toléré entre les temps d'expiration de Déchirure actuel et de Rugissement sauvage actuel avant de déclencher les mesures d'urgence" - }, - "bite_during_rotation": { - "label": "Morsure féroce pendant la rotation", - "tooltip": "Utiliser Morsure féroce pendant la rotation plutôt que juste pour la maintenance de Déchirure pendant l'éxécution" - }, - "bite_time": { - "label": "Temps jusqu’à Morsure", - "tooltip": "Secondes minimum restantes avant que Déchirure ou Rugissement sauvage devrait idéalement être rafraîchi (incluant les clips précoces planifiés) pour permettre une Morsure féroce" - }, - "berserk_bite_time": { - "label": "Temps jusqu’à Morsure pendant Berserk", - "tooltip": "Seuil plus agressif quand Berserk est actif" - } - } - }, - "guardian": { - "maintain_faerie_fire": { - "label": "Maintenir Lucioles", - "tooltip": "Maintenir le debuff Lucioles. Remplace tous les effets de Fracasser externes spécifiés dans les paramètres." - }, - "maintain_demo_roar": { - "label": "Maintenir Rugissement Démo", - "tooltip": "Garder Rugissement Démoralisant actif sur la cible principale. Si un debuff plus fort est actif, ne lancera pas." - }, - "demo_roar_refresh_leeway": { - "label": "Marge de rafraîchissement Rugissement Démo", - "tooltip": "Rafraîchir Rugissement Démoralisant quand la durée restante est inférieure à cette valeur (en secondes). Des valeurs plus grandes fournissent une marge de sécurité contre les échecs, mais au coût d'un DPS plus faible." - }, - "pulverize_refresh_leeway": { - "label": "Marge de rafraîchissement Pulvériser", - "tooltip": "Rafraîchir Pulvériser quand la durée restante est inférieure à cette valeur (en secondes). Notez que l'utilisation de Mutiler, Fouet et Feu Follet à temps de recharge prend la priorité sur cette règle, sauf si Lacérer lui-même est sur le point de tomber." - } - }, - "rogue": { - "apply_poisons_manually": { - "label": "Configurer les poisons manuellement", - "tooltip": "Empêcher la configuration automatique des poisons qui est basée sur les armes équipées." - }, - "subtlety": { - "honor_of_thieves_crit_rate": { - "label": "Taux de Critique Honneur des voleurs", - "tooltip": "Nombre de critiques que les autres membres du groupe génèrent en 100 secondes" - } - } - }, - "shaman": { - "elemental": { - "thunderstorm_in_range": { - "label": "Orage à portée", - "tooltip": "Quand défini à vrai, les lancers de Orage causeront des dégâts." - } - } - }, - "warlock": { - "affliction": { - "exhale_window": { - "label": "Fenêtre d'expiration de l'échange d'âme", - "tooltip": "Combien de temps, en millisecondes, s'écoule avant que les points inhalés n'expirent lors de rencontres à cibles multiples ?" - } - } - }, - "hunter": { - "beast_mastery": { - "sting": { - "label": "Morsure", - "tooltip": "Maintient la Morsure sélectionnée sur la cible principale", - "values": { - "none": "Aucune", - "serpent_sting": "Morsure de Serpent" - } - }, - "trap_weave": { - "label": "Piège-weaving", - "tooltip": "Utilise Piège Explosif aux moments appropriés. Notez que sélectionner ceci désactivera Flèche Noire car ils partagent un CD" - }, - "multi_dot_serpent_sting": { - "label": "Multi-DoT Morsure de Serpent", - "tooltip": "Lance Morsure de Serpent sur plusieurs cibles" - } - }, - "marksmanship": { - "sting": { - "label": "Morsure", - "tooltip": "Maintient la Morsure sélectionnée sur la cible principale", - "values": { - "none": "Aucune", - "serpent_sting": "Morsure de Serpent" - } - }, - "trap_weave": { - "label": "Piège-weaving", - "tooltip": "Utilise Piège Explosif aux moments appropriés. Notez que sélectionner ceci désactivera Flèche Noire car ils partagent un CD" - }, - "multi_dot_serpent_sting": { - "label": "Multi-DoT Morsure de Serpent", - "tooltip": "Lance Morsure de Serpent sur plusieurs cibles" - } - }, - "survival": { - "multi_dot_serpent_sting": { - "label": "Multi-DoT Morsure de Serpent", - "tooltip": "Lance Morsure de Serpent sur plusieurs cibles" - } - } - } - } - }, - "results_tab": { - "title": "Résultats", - "details": { - "no_results": "Lancez une simulation pour voir les résultats", - "view_in_separate_tab": "Voir dans un onglet séparé", - "sim_1_iteration": "Sim 1 itération", - "sim_1_death": "Simuler une mort", - "all_targets": "Toutes les cibles", - "all_players": "Tous les joueurs", - "target_number": "Cible {{number}}", - "damage": { - "dps_histogram": "Histogramme DPS" - }, - "timeline": { - "disclaimer": "Les données sur le graphe visualisent seulement 1 itération de simulation.", - "note": "Note : Vous pouvez déplacer le graphe en maintenant la touche Majuscule tout en utilisant la roulette de la souris, ou en cliquant et en faisant glisser.", - "chart_types": { - "rotation": "Rotation", - "dps": "DPS", - "threat": "Menace" - }, - "chart_options": { - "time_axis": "Temps (s)", - "waiting_for_data": "En attente de données..." - }, - "tooltips": { - "dps": "DPS", - "dtps": "DTPS", - "amount": "Montant", - "player_damage": "Dégâts du Joueur / Dégâts du Raid", - "player_damage_taken": "Dégâts Subis par le Joueur / Dégâts Subis par le Raid", - "before": "Avant", - "after": "Après", - "threat": "Menace", - "active_auras": "Auras Actives" - } - }, - "logs": { - "top_button": "Haut", - "time_column": "Temps", - "event_column": "Événement", - "show_debug": "Afficher les messages de débogage" - }, - "tabs": { - "damage": "Dégâts", - "healing": "Soins", - "damage_taken": "Dégâts Subis", - "buffs": "Buffs", - "debuffs": "Debuffs", - "casts": "Sorts", - "resources": "Ressources", - "timeline": "Chronologie", - "log": "Journal" - }, - "columns": { - "damage_done": "Dégâts infligés", - "casts": "Lancés", - "avg_cast": "Lancé Moyen", - "hits": "Touchés", - "avg_hit": "Touché Moyen", - "crit_percent": "Crit %", - "miss_percent": "Raté %", - "dpet": "DPET", - "dps": "DPS", - "healing_done": "Soins prodigués", - "cpm": "CPM", - "cast_time": "Temps d'incantaton", - "hpm": "SPS", - "hpet": "SPET", - "amount": "Montant", - "dtps": "DTPS", - "avg_heal": "Soin Moyen", - "hps": "SPS", - "damage_taken": "Dégâts Subis", - "overhealing": "Excédent de soins", - "name": "Nom", - "duration": "Durée", - "uptime": "Temps d'activité", - "procs": "Procs", - "ppm": "PPM", - "casts_per_minute": "Lancé/min", - "mana_gain": "Gain de Mana", - "mana_cost": "Coût en Mana", - "rage_gain": "Gain de Rage", - "rage_cost": "Coût en Rage", - "energy_gain": "Gain d'Énergie", - "energy_cost": "Coût en Énergie", - "focus_gain": "Gain de Focalisation", - "focus_cost": "Coût en Focalisation", - "holy_power_gain": "Gain de Puissance Sacrée", - "holy_power_cost": "Coût en Puissance Sacrée", - "shadow_orbs_gain": "Gain d'Orbes d'Ombre", - "shadow_orbs_cost": "Coût en Orbes d'Ombre", - "combo_points_gain": "Gain de Points de Combo", - "combo_points_cost": "Coût en Points de Combo", - "maelstrom_gain": "Gain de Maelström", - "maelstrom_cost": "Coût en Maelström", - "demonic_fury_gain": "Gain de Fureur Démoniaque", - "demonic_fury_cost": "Coût en Fureur Démoniaque", - "burning_embers_gain": "Gain de Braises Ardentes", - "burning_embers_cost": "Coût en Braises Ardentes", - "gain": "Gain", - "gain_per_second": "Gain / s", - "avg_gain": "Gain Moyen", - "wasted_gain": "Gain Perdu" - }, - "tooltips": { - "damage_avg_cast": "Dégâts moyens par lancé", - "player_damage": "Dégâts du Joueur / Dégâts du Raid", - "player_damage_taken": "Dégâts subis par le Joueur / Dégâts subis par le Raid", - "damage_taken_per_encounter": "Dégâts subis / Durée de l'affrontement", - "healing_per_encounter": "Soins / Durée de l'affrontement", - "threat_per_encounter": "Menace / Durée de l'affrontement", - "damage_taken": "Dégâts subis", - "damage_per_encounter": "Dégâts / Durée de l'affrontement", - "damage_avg_cast_tooltip": "Dégâts / Lancés et/ou Dégâts / Ticks", - "healing_avg_cast_tooltip": "Soins / Lancés", - "healing_avg_hit_tooltip": "Soins / Touchés et/ou Soins / (Ticks + Ticks Critiques)", - "healing_hits_tooltip": "Soins / (Touchés + Crits + Éraflement + Bloqués) et/ou Soins / Ticks + Ticks Critiques", - "hit_miss_percent_tooltip": "Ratés / (Coups + Crits + Éraflement + Bloqués)" - }, - "attack_types": { - "hit": "Touché", - "critical_hit": "Coup Critique", - "tick": "Tick", - "critical_tick": "Tick Critique", - "glancing_blow": "Éraflement", - "blocked_glancing_blow": "Éraflement Bloqué", - "blocked_hit": "Touché Bloqué", - "blocked_critical_hit": "Coup Critique Bloqué", - "miss": "Raté", - "parry": "Parade", - "dodge": "Esquive", - "threat": "Menace" - }, - "tooltip_table": { - "type": "Type", - "count": "Compte", - "average": "Moyenne", - "amount": "Montant" - } - } - }, - "import": { - "title": "Importer", - "json": { - "title": "Import JSON", - "description": "Importer les paramètres depuis un fichier JSON, qui peut être créé en utilisant la fonctionnalité d'export JSON.", - "instructions": "Pour importer, téléchargez le fichier ou collez le texte ci-dessous, puis cliquez sur 'Importer'.", - "upload_button": "Télécharger le fichier", - "import_button": "Importer", - "error_invalid_json": "Veuillez utiliser un objet JSON valide." - }, - "wowhead": { - "title": "Import Wowhead", - "description": "Importer les paramètres depuis", - "gear_planner_link": "le Planificateur d'Équipement Wowhead", - "feature_description": "Cette fonctionnalité importe l'équipement, la race et (optionnellement) les talents. Elle n'importe PAS les buffs, debuffs, consommables, rotation ou stats personnalisées.", - "instructions": "Pour importer, collez le lien du planificateur d'équipement ci-dessous et cliquez sur 'Importer'.", - "upload_button": "Télécharger le fichier", - "import_button": "Importer", - "tinker_warning": { - "title": "Problèmes de bricolage", - "message": "Il y a des problèmes connus lors de l'importation des bricolages depuis Wowhead. Assurez-vous toujours de vérifier vos bricolages après l'importation." - }, - "error_invalid_url": "URL WCL invalide {{url}}, doit ressembler à \"https://www.wowhead.com/tbc/gear-planner/CLASS/RACE/XXXX\"", - "error_cannot_parse_class": "Impossible de parser la classe : {{classId}}", - "error_cannot_parse_race": "Impossible de parser la race : {{raceId}}" - }, - "addon": { - "title": "Import Addon", - "description": "Importer les paramètres depuis l'", - "addon_link": "Addon WoWSims Exporter In-Game", - "feature_description": "Cette fonctionnalité importe l'équipement, la race, les talents, et les professions. Elle n'importe PAS les buffs, debuffs, consommables, rotation ou stats personnalisées.", - "instructions": "Pour importer, collez la sortie de l'addon ci-dessous et cliquez sur 'Importer'.", - "upload_button": "Télécharger le fichier", - "import_button": "Importer", - "reforge_warning": { - "title": "Problèmes de retouche", - "message": "Il y a des problèmes connus avec la retouche lors de l'utilisation de l'addon WSE. Assurez-vous toujours de vérifier vos retouches après l'importation." - } - } - }, - "export": { - "title": "Exporter", - "link": { - "title": "Export de Lien", - "description": "Exporter les paramètres sous forme de lien partageable.", - "instructions": "Copiez le lien ci-dessous pour partager vos paramètres avec d'autres.", - "copy_button": "Copier", - "copy_tooltip": "Copier dans le presse-papiers" - }, - "json": { - "title": "Export JSON", - "description": "Exporter les paramètres sous forme de fichier JSON.", - "instructions": "Téléchargez le fichier JSON ou copiez le contenu ci-dessous.", - "copy_button": "Copier", - "copy_tooltip": "Copier dans le presse-papiers", - "download_button": "Télécharger" - }, - "wowhead": { - "title": "Export WoWHead", - "description": "Exporter les paramètres vers le Planificateur d'Équipement WoWHead.", - "instructions": "Copiez le lien ci-dessous pour ouvrir votre configuration d'équipement dans WoWHead.", - "copy_button": "Copier", - "copy_tooltip": "Copier dans le presse-papiers" - }, - "pawn_ep": { - "title": "Export PE Pawn", - "description": "Exporter les poids PE pour l'addon Pawn.", - "instructions": "Copiez la chaîne Pawn ci-dessous et importez-la dans votre addon Pawn.", - "copy_button": "Copier", - "copy_tooltip": "Copier dans le presse-papiers" - }, - "cli": { - "title": "Export CLI", - "description": "Exporter les paramètres pour la simulation en ligne de commande.", - "instructions": "Copiez la commande ci-dessous pour exécuter des simulations depuis la ligne de commande.", - "copy_button": "Copier", - "copy_tooltip": "Copier dans le presse-papiers" - }, - "categories": { - "gear": { - "label": "Équipement", - "tooltip": "Inclut également les stats bonus et les changements d'armes." - }, - "talents": { - "label": "Talents", - "tooltip": "Talents." - }, - "rotation": { - "label": "Rotation", - "tooltip": "Inclut tout ce qui se trouve dans l'onglet Rotation." - }, - "consumes": { - "label": "Consommables", - "tooltip": "Flacons, potions, nourriture, etc." - }, - "external": { - "label": "Buffs & Debuffs", - "tooltip": "Tous les paramètres qui sont appliqués par d'autres membres du raid." - }, - "miscellaneous": { - "label": "Divers", - "tooltip": "Paramètres spécifiques à la spécialisation, devant/derrière la cible, distance de la cible, etc." - }, - "encounter": { - "label": "Rencontre", - "tooltip": "Paramètres liés au combat." - } - } - }, - "info": { - "known_issues": "Problèmes Connus", - "bug_report": "Signaler un bug ou Demander une fonctionnalité", - "sim_options": "Options de simulation", - "discord": "Rejoignez-nous sur Discord", - "patreon": "Soutenez-nous sur Patreon", - "github": "Contribuer sur GitHub", - "status": { - "unlaunched": "Cette simulation est EN COURS DE DÉVELOPPEMENT. Elle n'est pas entièrement développée et ne devrait pas être utilisée à des fins générales.", - "alpha": "Cette simulation est en ALPHA. Des bugs sont attendus ; merci de nous informer si vous en trouvez un !", - "beta": "Cette simulation est en BÊTA. Il peut encore y avoir quelques bugs ; merci de nous informer si vous en trouvez un !" - }, - "options": { - "title": "Options", - "fixed_rng_seed": { - "label": "Graine RNG fixe", - "tooltip": "Valeur de la graine pour le générateur de nombres aléatoires utilisé pendant les simulations, ou 0 pour utiliser une aléatoire différente à chaque exécution. Utilisez ceci pour partager des résultats de simulation exacts ou pour le débogage.", - "last_used": "Dernière graine RNG utilisée :" - }, - "language": { - "label": "Langue", - "tooltip": "Contrôle la langue pour les infobulles Wowhead." - }, - "feature_toggles": { - "show_threat_metrics": "Afficher les options de Menace/Tank", - "show_experimental": "Afficher les fonctionnalités expérimentales", - "show_quick_swap": "Afficher l'interface de changement rapide" - }, - "use_multiple_cpu_cores": { - "label": "Utiliser Plusieurs Cœurs CPU" - }, - "restore_defaults": { - "button": "Restaurer les paramètres par défaut", - "tooltip": "Restaure tous les paramètres par défaut (équipement, consommables, buffs, talents, poids PE, etc). Les paramètres sauvegardés sont préservés.", - "success_message": "Paramètres par défaut restaurés." - } - } - }, - "sidebar": { - "iterations": "Itérations", - "warnings": { - "meta_gem_disabled": "Gemme méta désactivée ({{gemName}}) : {{description}}", - "profession_requirement": "{{itemName}} nécessite {{professionName}}, mais elle n'est pas sélectionnée.", - "too_many_jc_gems": "Seulement 2 gemmes de joaillerie sont autorisées, mais {{count}} sont équipées.", - "unspent_talent_points": "Points de talent manquants dans les rangées {{rowNumbers}}.", - "armor_specialization": "Équipez de l'équipement {{armorType}} dans chaque emplacement pour l'effet de spécialisation d'armure (5% de statistique primaire).", - "dual_wield_2h_without_titans_grip": "Manier deux armes à deux mains sans la spécialisation Poigne du titan.", - "shaman_fele_autocast": "La configuration des sorts de l'Élémentaire de feu n'est pas optimale avec l'utilisation du talent Élémentaliste primordial (Tous activés sauf Ardeur). Ignorez ce message si vous savez ce que vous faites." - }, - "buttons": { - "simulate": "Simuler", - "stat_weights": { - "title": "Poids des Statistiques", - "modal": { - "title": "Calculer les Poids des Statistiques", - "ep": "PE", - "weights": "Poids", - "show_all_stats": "Afficher toutes les Statistiques", - "dps_tps_reference": "Référence DPS/TPS :", - "healing_reference": "Référence de soins :", - "mitigation_reference": "Référence d'atténuation :", - "reference_description": "Les sélecteurs de statistiques ci-dessus contrôlent quelle statistique de référence est utilisée pour la normalisation PE des différentes colonnes PE.", - "current_ep_description": "La colonne 'PE Actuel' affiche les valeurs actuellement utilisées par les sélecteurs d'objets pour trier les objets.", - "copy_icon_description": "Utilisez l'icône de copie au-dessus des PE pour utiliser les PE nouvellement calculés.", - "stat": "Statistique", - "update": "Mettre à jour", - "ep_ratio": "Ratio PE", - "update_ep": "Mettre à jour PE", - "calculate": "Calculer", - "compute_weighted_ep": "Calculer PE Pondéré", - "dps_weight": { - "label": "Poids DPS", - "tooltip": "Augmentation par point de DPS (Dégâts Par Seconde) pour chaque statistique." - }, - "dps_ep": { - "label": "PE DPS", - "tooltip": "PE (Points d'Équivalence) pour DPS (Dégâts Par Seconde) pour chaque statistique." - }, - "hps_weight": { - "label": "Poids SPS", - "tooltip": "Augmentation par point de SPS (Soins Par Seconde) pour chaque statistique." - }, - "hps_ep": { - "label": "PE SPS", - "tooltip": "PE (Points d'Équivalence) pour SPS (Soins Par Seconde) pour chaque statistique." - }, - "tps_weight": { - "label": "Poids TPS", - "tooltip": "Augmentation par point de TPS (Menace Par Seconde) pour chaque statistique." - }, - "tps_ep": { - "label": "PE TPS", - "tooltip": "PE (Points d'Équivalence) pour TPS (Menace Par Seconde) pour chaque statistique." - }, - "dtps_weight": { - "label": "Poids DTPS", - "tooltip": "Augmentation par point de DTPS (Dégâts Subis Par Seconde) pour chaque statistique." - }, - "dtps_ep": { - "label": "PE DTPS", - "tooltip": "PE (Points d'Équivalence) pour DTPS (Dégâts Subis Par Seconde) pour chaque statistique." - }, - "tmi_weight": { - "label": "Poids TMI", - "tooltip": "Diminution par point de TMI (Indice Theck-Meloree) pour chaque statistique." - }, - "tmi_ep": { - "label": "PE TMI", - "tooltip": "PE (Points d'Équivalence) pour TMI (Indice Theck-Meloree) pour chaque statistique." - }, - "death_weight": { - "label": "Poids Mort", - "tooltip": "Diminution par point de p(mort) pour chaque statistique." - }, - "death_ep": { - "label": "PE Mort", - "tooltip": "PE (Points d'Équivalence) pour p(mort) pour chaque statistique." - }, - "current_ep": { - "label": "PE Actuel", - "tooltip": "Poids PE actuels. Utilisés pour trier les menus de sélection d'équipement." - }, - "not_applicable": "N/A", - "column_headers": { - "stat": "Statistique", - "update": "Mettre à jour", - "ep_ratio": "Ratio PE", - "update_ep_button": "Mettre à jour PE" - }, - "tooltips": { - "normalized_by": "Normalisé par {{refStatName}}.", - "copy_to_current_ep": "Copier vers PE actuel", - "restore_default_ep": "Restaurer PE par défaut", - "compute_weighted_ep": "Calculer PE pondéré" - }, - "progress": { - "simulations_complete": "simulations terminées", - "iterations_complete": "itérations terminées" - } - }, - "saved_ep_weights": { - "title": "Poids PE sauvegardés" - } - }, - "suggest_reforges": { - "title": "Suggérer des retouches", - "tooltip": "Modifier les paramètres de l'Optimiseur de retouche", - "use_soft_cap_breakpoints": "Utiliser les breakpoints de softcap", - "force_stat_proc": "Forcer le proc RoRo", - "any": "N'importe lequel", - "optimize_gems_tooltip": "Optimiser les gemmes et les retouches simultanément.", - "freeze_item_slots_tooltip": "Marquer un ou plusieurs emplacements d'objets comme \"gelés\", ce qui empêchera l'optimiseur de modifier la retouche ou les gemmes dans cet emplacement de leurs paramètres actuels. Cela peut être utile pour les classes hybrides qui utilisent la même pièce d'équipement pour plusieurs rôles de raid.", - "edit_stat_caps": "Modifier les caps de statistiques", - "stat_caps_tooltip": "Les caps de statistiques sont la quantité maximale d'une statistique qui peut être obtenue par la retouche. Si une statistique dépasse son cap, l'optimiseur tentera de la réduire à la valeur du cap.", - "reset_to_defaults": "Réinitialiser aux caps par défaut", - "stat": "Statistique", - "select_preset": "Sélectionner un préréglage", - "breakpoint_limit": "Limite de breakpoint", - "breakpoint_limit_tooltip": "Permet de définir une limite de breakpoint personnalisée.", - "no_limit_set": "Aucune limite définie", - "breakpoints_implemented": "Les breakpoints suivants ont été implémentés pour cette spé :", - "post_cap_ep": "PE post-cap", - "reforge_optimization_failed": "L'optimisation de la retouche a échoué. Veuillez réessayer ou signaler le problème s'il persiste.", - "use_custom": "Utiliser des poids PE personnalisés", - "enable_modification": "Ceci permettra la modification des poids PE par défaut et la définition de caps de statistiques personnalisés.", - "modify_in_editor": "Les poids PE peuvent être modifiés dans l'éditeur de Poids des Statistiques.", - "hard_cap_info": "Si vous voulez caper une statistique, assurez-vous de définir le PE de cette statistique plus haut.", - "edit_weights": "Modifier les poids", - "include_gems": "Inclure les gemmes", - "freeze_item_slots": "Verrouiller certains emplacements", - "include_eotbp_socket": "Inclure le socket EotBP", - "include_eotbp_socket_tooltip": "Permet à l'optimiseur d'inclure également le socket \"Œil du Prince Noir\" dans l'optimisation.", - "limit_execution_time": "Limiter le temps d'exécution", - "limit_execution_time_tooltip": "Si coché, le solveur se terminera en erreur si le temps de calcul total dépasse 30 secondes. Si décoché, le temps de calcul total sera plafonné à 1 heure." - } - }, - "header": { - "title": "WoWSims - The Burning Crusade", - "phase": "{{phase}} - {{status}}" - }, - "results": { - "progress": { - "presim_running": "pré-simulations en cours", - "iterations_complete": "itérations terminées" - }, - "reference": { - "save_as_reference": "Sauvegarder comme référence", - "use_as_reference": "Utiliser comme référence", - "swap": "Échanger", - "swap_reference_with_current": "Échanger la référence avec l'actuel", - "cancel": "Annuler", - "remove_reference": "Supprimer la référence", - "vs_ref": "vs réf" - }, - "metrics": { - "dps": { - "label": "DPS", - "tooltip": "Dégâts par seconde" - }, - "hps": { - "label": "SPS", - "tooltip": "Soins+Boucliers Par Seconde, incluant l'excédent de soin." - }, - "tps": { - "label": "TPS", - "tooltip": "Menace Par Seconde" - }, - "dtps": { - "label": "DTPS", - "tooltip": "Dégâts Subis Par Seconde" - }, - "tmi": { - "label": "TMI", - "tooltip": { - "title": "Indice Theck-Meloree (TMI)", - "description": "Une mesure de la régularité des dégâts entrants qui combine les avantages de l'esquive avec la vie effective.", - "note": "Le plus bas, le meilleur. Ceci représente le % de vos PV à attendre dans une fenêtre de burst de 6 secondes basée sur les paramètres de rencontre." - } - }, - "cod": { - "label": "Chance de Mort", - "tooltip": { - "title": "Chance de Mort", - "description": "Le pourcentage d'itérations dans lesquelles le joueur est mort, basé sur les dégâts entrants des ennemis et les soins entrants (voir les options SPS Entrants et Cadence de Soins).", - "note": "DTPS seul n'est pas une bonne mesure de la résistance car il n'est pas affecté par la santé et ignore les pics de dégâts. La Chance de Mort tente de capturer la résistance globale." - } - }, - "dur": { - "label": "DUR", - "tooltip": "Durée Moyenne de Combat" - }, - "tto": { - "label": "TTO", - "tooltip": "Temps Vers OOM" - }, - "oom": { - "label": "OOM", - "tooltip": "Temps passé Hors de Mana" - } - } - }, - "character_stats": { - "title": "Statistiques", - "melee_crit_cap": "Cap de critique CaC", - "tooltip": { - "base": "Base :", - "gear": "Équipement :", - "talents": "Talents :", - "buffs": "Buffs :", - "consumes": "Consommables :", - "bonus": "Bonus :", - "total": "Total :", - "glancing": "Éraflement :", - "suppression": "Suppression :", - "to_hit_cap": "Jusqu'au cap de toucher :", - "to_exp_cap": "Jusqu'au cap d'expertise :", - "spec_offsets": "Compensations de spé :", - "final_crit_cap": "Cap de critique final :", - "can_raise_by": "Peut être augmenter de :" - }, - "attack_table": { - "glancing": "Éraflement :", - "suppression": "Suppression :", - "to_hit_cap": "Jusqu'au cap de toucher :", - "to_exp_cap": "Jusqu'au cap d'expertise :", - "spec_offsets": "Compensations de spé :", - "final_crit_cap": "Cap de critique final :", - "can_raise_by": "Peut être augmenter de :" - }, - "crit_cap": { - "exact": "Exact", - "over_by": "Au-dessus de", - "under_by": "En-dessous de" - }, - "bonus_prefix": "Bonus", - "points_suffix": "Points", - "percent_suffix": "%" - } - } -} diff --git a/assets/locales/en/character.json b/assets/locales/en/character.json index a4bbc39f64..67786fed85 100644 --- a/assets/locales/en/character.json +++ b/assets/locales/en/character.json @@ -13,15 +13,15 @@ "specs": { "druid": { "balance": "Balance", - "feralcat": "Feral", - "feralbear": "Guardian", + "feralcat": "Feral Cat", + "feralbear": "Feral Bear", "restoration": "Restoration" }, "hunter": { - "hunter": "Hunter" + "hunter": "" }, "mage": { - "mage": "Mage" + "mage": "" }, "paladin": { "holy": "Holy", @@ -34,7 +34,7 @@ "shadow": "Shadow" }, "rogue": { - "rogue": "Rogue" + "rogue": "" }, "shaman": { "elemental": "Elemental", @@ -42,7 +42,7 @@ "restoration": "Restoration" }, "warlock": { - "warlock": "Warlock" + "warlock": "" }, "warrior": { "dps": "DPS", diff --git a/assets/locales/en/translation.json b/assets/locales/en/translation.json index df2cc27def..766d30db71 100644 --- a/assets/locales/en/translation.json +++ b/assets/locales/en/translation.json @@ -126,7 +126,8 @@ "combo_points": "Combo Points", "maelstrom": "Maelstrom", "demonic_fury": "Demonic Fury", - "burning_embers": "Burning Embers" + "burning_embers": "Burning Embers", + "generic_resource": "Missing Resource!" }, "stats": { "strength": "Strength", @@ -164,7 +165,37 @@ "melee_hit": "Melee Hit", "melee_crit": "Melee Crit", "melee_haste": "Melee Haste", - "ranged_haste": "Ranged Haste" + "ranged_haste": "Ranged Haste", + "healing_power": "Healing Power", + "spell_damage": "Spell Damage", + "arcane_power": "Arcane Spellpower", + "fire_power": "Fire Spellpower", + "frost_power": "Frost Spellpower", + "holy_power": "Holy Spellpower", + "nature_power": "Nature Spellpower", + "shadow_power": "Shadow Spellpower", + "spell_hit_rating": "Spell Hit Rating", + "spell_crit_rating": "Spell Crit Rating", + "spell_haste_rating": "Spell Haste Rating", + "spell_penetration": "Spell Penetration", + "feral_attack_power": "Feral Attack Power", + "melee_hit_rating": "Melee Hit Rating", + "melee_crit_rating": "Melee Crit Rating", + "melee_haste_rating": "Melee Haste Rating", + "armor_penetration": "Armor Penetration", + "all_hit_rating": "Hit Rating", + "all_crit_rating": "Crit Rating", + "all_haste_rating": "Haste Rating", + "defense_rating": "Defense Rating", + "block_rating": "Block Rating", + "block_value": "Block Value", + "resilience": "Resilience", + "arcane_resistance": "Arcane Resistance", + "frost_resistance": "Frost Resistance", + "fire_resistance": "Fire Resistance", + "nature_resistance": "Nature Resistance", + "shadow_resistance": "Shadow Resistance", + "rage": "Rage" }, "mastery_spell_names": { "unknown": "Unknown", diff --git a/makefile b/makefile index 5bd0c6b032..2d8908d718 100644 --- a/makefile +++ b/makefile @@ -10,19 +10,19 @@ PAGE_INDECES := ui/druid/balance/index.html \ ui/druid/feralcat/index.html \ ui/druid/feralbear/index.html \ ui/druid/restoration/index.html \ - ui/hunter/index.html \ - ui/mage/index.html \ + ui/hunter/dps/index.html \ + ui/mage/dps/index.html \ ui/paladin/holy/index.html \ ui/paladin/protection/index.html \ ui/paladin/retribution/index.html \ ui/priest/discipline/index.html \ ui/priest/holy/index.html \ ui/priest/shadow/index.html \ - ui/rogue/index.html \ + ui/rogue/dps/index.html \ ui/shaman/elemental/index.html \ ui/shaman/enhancement/index.html \ ui/shaman/restoration/index.html \ - ui/warlock/index.html \ + ui/warlock/dps/index.html \ ui/warrior/dps/index.html \ ui/warrior/protection/index.html \ ui/raid/full/index.html diff --git a/schemas/translation.schema.json b/schemas/translation.schema.json index ac10709dfc..0fc4d29e38 100644 --- a/schemas/translation.schema.json +++ b/schemas/translation.schema.json @@ -498,6 +498,9 @@ }, "burning_embers": { "type": "string" + }, + "generic_resource": { + "type": "string" } }, "additionalProperties": false, @@ -512,7 +515,8 @@ "combo_points", "maelstrom", "demonic_fury", - "burning_embers" + "burning_embers", + "generic_resource" ] }, "stats": { @@ -625,6 +629,96 @@ }, "ranged_haste": { "type": "string" + }, + "healing_power": { + "type": "string" + }, + "spell_damage": { + "type": "string" + }, + "arcane_power": { + "type": "string" + }, + "fire_power": { + "type": "string" + }, + "frost_power": { + "type": "string" + }, + "holy_power": { + "type": "string" + }, + "nature_power": { + "type": "string" + }, + "shadow_power": { + "type": "string" + }, + "spell_hit_rating": { + "type": "string" + }, + "spell_crit_rating": { + "type": "string" + }, + "spell_haste_rating": { + "type": "string" + }, + "spell_penetration": { + "type": "string" + }, + "feral_attack_power": { + "type": "string" + }, + "melee_hit_rating": { + "type": "string" + }, + "melee_crit_rating": { + "type": "string" + }, + "melee_haste_rating": { + "type": "string" + }, + "armor_penetration": { + "type": "string" + }, + "all_hit_rating": { + "type": "string" + }, + "all_crit_rating": { + "type": "string" + }, + "all_haste_rating": { + "type": "string" + }, + "defense_rating": { + "type": "string" + }, + "block_rating": { + "type": "string" + }, + "block_value": { + "type": "string" + }, + "resilience": { + "type": "string" + }, + "arcane_resistance": { + "type": "string" + }, + "frost_resistance": { + "type": "string" + }, + "fire_resistance": { + "type": "string" + }, + "nature_resistance": { + "type": "string" + }, + "shadow_resistance": { + "type": "string" + }, + "rage": { + "type": "string" } }, "additionalProperties": false, @@ -664,7 +758,37 @@ "melee_hit", "melee_crit", "melee_haste", - "ranged_haste" + "ranged_haste", + "healing_power", + "spell_damage", + "arcane_power", + "fire_power", + "frost_power", + "holy_power", + "nature_power", + "shadow_power", + "spell_hit_rating", + "spell_crit_rating", + "spell_haste_rating", + "spell_penetration", + "feral_attack_power", + "melee_hit_rating", + "melee_crit_rating", + "melee_haste_rating", + "armor_penetration", + "all_hit_rating", + "all_crit_rating", + "all_haste_rating", + "defense_rating", + "block_rating", + "block_value", + "resilience", + "arcane_resistance", + "frost_resistance", + "fire_resistance", + "nature_resistance", + "shadow_resistance", + "rage" ] }, "mastery_spell_names": { diff --git a/sim/core/character.go b/sim/core/character.go index 33af93c7e4..0d7620cc05 100644 --- a/sim/core/character.go +++ b/sim/core/character.go @@ -4,6 +4,7 @@ import ( "fmt" "slices" "strconv" + "strings" "time" "github.com/wowsims/tbc/sim/core/proto" @@ -717,19 +718,26 @@ func (character *Character) GetMatchingItemProcAuras(statTypesToMatch []stats.St // Uses proto reflection to set fields in a talents proto (e.g. MageTalents, // WarriorTalents) based on a talentsStr. -func FillTalentsProto(data protoreflect.Message, talentsStr string) { +func FillTalentsProto(data protoreflect.Message, talentsStr string, treeSizes [3]int) { + treeStrs := strings.Split(talentsStr, "-") fieldDescriptors := data.Descriptor().Fields() - for talentIdx, talentValStr := range talentsStr { - talentVal, _ := strconv.Atoi(string(talentValStr)) - if talentVal != 0 { - talentOffset := talentIdx*3 + talentVal + var offset int + for treeIdx, treeStr := range treeStrs { + for talentIdx, talentValStr := range treeStr { + talentVal, _ := strconv.Atoi(string(talentValStr)) + talentOffset := offset + talentIdx + 1 fd := fieldDescriptors.ByNumber(protowire.Number(talentOffset)) if fd == nil { panic(fmt.Sprintf("Couldn't find proto field for talent #%d, full string: %s", talentOffset, talentsStr)) } - data.Set(fd, protoreflect.ValueOfBool(true)) + if fd.Kind() == protoreflect.BoolKind { + data.Set(fd, protoreflect.ValueOfBool(talentVal == 1)) + } else { // Int32Kind + data.Set(fd, protoreflect.ValueOfInt32(int32(talentVal))) + } } + offset += treeSizes[treeIdx] } } diff --git a/sim/druid/druid.go b/sim/druid/druid.go index b7263291da..0cd87386ac 100644 --- a/sim/druid/druid.go +++ b/sim/druid/druid.go @@ -6,6 +6,8 @@ import ( "github.com/wowsims/tbc/sim/core/stats" ) +var TalentTreeSizes = [3]int{21, 21, 20} + type Druid struct { core.Character SelfBuffs @@ -307,7 +309,7 @@ func New(char *core.Character, form DruidForm, selfBuffs SelfBuffs, talents stri druid.RipMaxNumTicks = druid.RipBaseNumTicks + 3 - core.FillTalentsProto(druid.Talents.ProtoReflect(), talents) + core.FillTalentsProto(druid.Talents.ProtoReflect(), talents, TalentTreeSizes) druid.EnableManaBar() druid.AddStatDependency(stats.Strength, stats.AttackPower, 1) diff --git a/sim/hunter/hunter.go b/sim/hunter/hunter.go index 47765d3c61..00b0e497e7 100644 --- a/sim/hunter/hunter.go +++ b/sim/hunter/hunter.go @@ -10,6 +10,8 @@ import ( const ThoridalTheStarsFuryItemID = 34334 +var TalentTreeSizes = [3]int{21, 20, 24} + type Hunter struct { core.Character @@ -61,7 +63,7 @@ func NewHunter(character *core.Character, options *proto.Player, hunterOptions * ClassSpellScaling: core.GetClassSpellScalingCoefficient(proto.Class_ClassHunter), } - core.FillTalentsProto(hunter.Talents.ProtoReflect(), options.TalentsString) + core.FillTalentsProto(hunter.Talents.ProtoReflect(), options.TalentsString, TalentTreeSizes) // focusPerSecond := 4.0 // kindredSpritsBonusFocus := core.TernaryFloat64(hunter.Spec == proto.Spec_SpecBeastMasteryHunter, 20, 0) diff --git a/sim/mage/mage.go b/sim/mage/mage.go index 72a5adab21..330dd9f534 100644 --- a/sim/mage/mage.go +++ b/sim/mage/mage.go @@ -8,6 +8,8 @@ import ( "github.com/wowsims/tbc/sim/core/stats" ) +var TalentTreeSizes = [3]int{23, 22, 22} + type Mage struct { core.Character @@ -143,7 +145,7 @@ func NewMage(character *core.Character, options *proto.Player, mageOptions *prot ClassSpellScaling: core.GetClassSpellScalingCoefficient(proto.Class_ClassMage), } - core.FillTalentsProto(mage.Talents.ProtoReflect(), options.TalentsString) + core.FillTalentsProto(mage.Talents.ProtoReflect(), options.TalentsString, TalentTreeSizes) //mage.mirrorImages = []*MirrorImage{mage.NewMirrorImage(), mage.NewMirrorImage(), mage.NewMirrorImage()} mage.EnableManaBar() diff --git a/sim/paladin/paladin.go b/sim/paladin/paladin.go index fc6d8a117c..10a267e3e4 100644 --- a/sim/paladin/paladin.go +++ b/sim/paladin/paladin.go @@ -6,6 +6,8 @@ import ( "github.com/wowsims/tbc/sim/core/stats" ) +var TalentTreeSizes = [3]int{20, 23, 22} + type Paladin struct { core.Character @@ -129,7 +131,7 @@ func NewPaladin(character *core.Character, talentsStr string, options *proto.Pal Seal: options.Seal, } - core.FillTalentsProto(paladin.Talents.ProtoReflect(), talentsStr) + core.FillTalentsProto(paladin.Talents.ProtoReflect(), talentsStr, TalentTreeSizes) paladin.PseudoStats.CanParry = true diff --git a/sim/priest/priest.go b/sim/priest/priest.go index 342659ebbb..c3c5e8fe54 100644 --- a/sim/priest/priest.go +++ b/sim/priest/priest.go @@ -8,6 +8,8 @@ import ( "github.com/wowsims/tbc/sim/core/stats" ) +var TalentTreeSizes = [3]int{22, 21, 21} + type Priest struct { core.Character SelfBuffs @@ -136,7 +138,7 @@ func New(char *core.Character, selfBuffs SelfBuffs, talents string) *Priest { Talents: &proto.PriestTalents{}, } - core.FillTalentsProto(priest.Talents.ProtoReflect(), talents) + core.FillTalentsProto(priest.Talents.ProtoReflect(), talents, TalentTreeSizes) priest.EnableManaBar() // priest.ShadowfiendPet = priest.NewShadowfiend() diff --git a/sim/rogue/rogue.go b/sim/rogue/rogue.go index 36f061aa2b..6032a9a236 100644 --- a/sim/rogue/rogue.go +++ b/sim/rogue/rogue.go @@ -14,6 +14,8 @@ const ( SpellFlagSealFate = core.SpellFlagAgentReserved4 ) +var TalentTreeSizes = [3]int{21, 24, 22} + const RogueBleedTag = "RogueBleed" type Rogue struct { @@ -203,7 +205,7 @@ func NewRogue(character *core.Character, options *proto.Player, talents string) ClassSpellScaling: core.GetClassSpellScalingCoefficient(proto.Class_ClassRogue), } - core.FillTalentsProto(rogue.Talents.ProtoReflect(), talents) + core.FillTalentsProto(rogue.Talents.ProtoReflect(), talents, TalentTreeSizes) // Passive rogue threat reduction: https://wotlk.wowhead.com/spell=21184/rogue-passive-dnd rogue.PseudoStats.ThreatMultiplier *= 0.71 diff --git a/sim/shaman/shaman.go b/sim/shaman/shaman.go index 9eaf60b173..92d2d90282 100644 --- a/sim/shaman/shaman.go +++ b/sim/shaman/shaman.go @@ -8,6 +8,8 @@ import ( "github.com/wowsims/tbc/sim/core/stats" ) +var TalentTreeSizes = [3]int{20, 21, 20} + // Start looking to refresh 5 minute totems at 4:55. const TotemRefreshTime5M = time.Second * 295 @@ -49,7 +51,7 @@ func NewShaman(character *core.Character, talents string, selfBuffs SelfBuffs, t } // shaman.waterShieldManaMetrics = shaman.NewManaMetrics(core.ActionID{SpellID: 57960}) - core.FillTalentsProto(shaman.Talents.ProtoReflect(), talents) + core.FillTalentsProto(shaman.Talents.ProtoReflect(), talents, TalentTreeSizes) // Add Shaman stat dependencies shaman.AddStatDependency(stats.BonusArmor, stats.Armor, 1) diff --git a/sim/warlock/warlock.go b/sim/warlock/warlock.go index ec28ebfe14..09e9bd4373 100644 --- a/sim/warlock/warlock.go +++ b/sim/warlock/warlock.go @@ -9,6 +9,8 @@ import ( "github.com/wowsims/tbc/sim/core/stats" ) +var TalentTreeSizes = [3]int{21, 22, 21} + type Warlock struct { core.Character Talents *proto.WarlockTalents @@ -101,7 +103,7 @@ func NewWarlock(character *core.Character, options *proto.Player, warlockOptions Talents: &proto.WarlockTalents{}, Options: warlockOptions, } - core.FillTalentsProto(warlock.Talents.ProtoReflect(), options.TalentsString) + core.FillTalentsProto(warlock.Talents.ProtoReflect(), options.TalentsString, TalentTreeSizes) warlock.EnableManaBar() warlock.AddStatDependency(stats.Strength, stats.AttackPower, 1) diff --git a/sim/warrior/warrior.go b/sim/warrior/warrior.go index 9e5e08abf2..78efcc7bb9 100644 --- a/sim/warrior/warrior.go +++ b/sim/warrior/warrior.go @@ -6,6 +6,8 @@ import ( "github.com/wowsims/tbc/sim/core/stats" ) +var TalentTreeSizes = [3]int{23, 21, 22} + type WarriorInputs struct { StanceSnapshot bool } @@ -173,7 +175,7 @@ func NewWarrior(character *core.Character, options *proto.WarriorOptions, talent WarriorInputs: inputs, ClassSpellScaling: core.GetClassSpellScalingCoefficient(proto.Class_ClassWarrior), } - core.FillTalentsProto(warrior.Talents.ProtoReflect(), talents) + core.FillTalentsProto(warrior.Talents.ProtoReflect(), talents, TalentTreeSizes) warrior.EnableRageBar(core.RageBarOptions{ MaxRage: 100, diff --git a/ui/core/components/detailed_results/player_damage.tsx b/ui/core/components/detailed_results/player_damage.tsx index 9b9b3ae84b..d5d928db3c 100644 --- a/ui/core/components/detailed_results/player_damage.tsx +++ b/ui/core/components/detailed_results/player_damage.tsx @@ -66,7 +66,7 @@ export class PlayerDamageMetricsTable extends MetricsTable { }, { name: i18n.t('results_tab.details.columns.dps'), - tooltip: i18n.t('results_tab.details.tooltips.dps'), + // tooltip: i18n.t('results_tab.details.tooltips.dps'), columnClass: 'dps-cell', sort: ColumnSortType.Descending, getValue: (player: UnitMetrics) => this.getPlayerDps(player), diff --git a/ui/core/components/detailed_results/player_damage_taken.tsx b/ui/core/components/detailed_results/player_damage_taken.tsx index 79e73d040d..94b8dc437f 100644 --- a/ui/core/components/detailed_results/player_damage_taken.tsx +++ b/ui/core/components/detailed_results/player_damage_taken.tsx @@ -70,7 +70,7 @@ export class PlayerDamageTakenMetricsTable extends MetricsTable { }, { name: i18n.t('results_tab.details.columns.dtps'), - tooltip: i18n.t('results_tab.details.tooltips.dtps'), + // tooltip: i18n.t('results_tab.details.tooltips.dtps'), columnClass: 'dps-cell', sort: ColumnSortType.Descending, getValue: (player: UnitMetrics) => this.getPlayerDtps(player), diff --git a/ui/core/components/individual_sim_ui/apl_actions.ts b/ui/core/components/individual_sim_ui/apl_actions.ts index cbe898fea0..23f6d81619 100644 --- a/ui/core/components/individual_sim_ui/apl_actions.ts +++ b/ui/core/components/individual_sim_ui/apl_actions.ts @@ -433,7 +433,7 @@ const actionKindFactories: { [f in NonNullable]: ActionKindConfig label: i18n.t('rotation_tab.apl.actions.channel.label'), submenu: ['casting'], shortDescription: i18n.t('rotation_tab.apl.actions.channel.tooltip'), - fullDescription: i18n.t('rotation_tab.apl.actions.channel.full'), + // fullDescription: i18n.t('rotation_tab.apl.actions.channel.full'), newValue: () => APLActionChannelSpell.create({ interruptIf: { value: { @@ -458,7 +458,7 @@ const actionKindFactories: { [f in NonNullable]: ActionKindConfig label: i18n.t('rotation_tab.apl.actions.cast_all_stat_buff_cooldowns.label'), submenu: ['casting'], shortDescription: i18n.t('rotation_tab.apl.actions.cast_all_stat_buff_cooldowns.tooltip'), - fullDescription: i18n.t('rotation_tab.apl.actions.cast_all_stat_buff_cooldowns.full'), + // fullDescription: i18n.t('rotation_tab.apl.actions.cast_all_stat_buff_cooldowns.full'), newValue: () => APLActionCastAllStatBuffCooldowns.create({ statType1: -1, statType2: -1, @@ -470,7 +470,7 @@ const actionKindFactories: { [f in NonNullable]: ActionKindConfig label: i18n.t('rotation_tab.apl.actions.autocast_other_cooldowns.label'), submenu: ['casting'], shortDescription: i18n.t('rotation_tab.apl.actions.autocast_other_cooldowns.tooltip'), - fullDescription: i18n.t('rotation_tab.apl.actions.autocast_other_cooldowns.full'), + // fullDescription: i18n.t('rotation_tab.apl.actions.autocast_other_cooldowns.full'), includeIf: (player: Player, isPrepull: boolean) => !isPrepull, newValue: APLActionAutocastOtherCooldowns.create, fields: [], @@ -523,7 +523,7 @@ const actionKindFactories: { [f in NonNullable]: ActionKindConfig label: i18n.t('rotation_tab.apl.actions.sequence.label'), submenu: ['sequences'], shortDescription: i18n.t('rotation_tab.apl.actions.sequence.tooltip'), - fullDescription: i18n.t('rotation_tab.apl.actions.sequence.full'), + // fullDescription: i18n.t('rotation_tab.apl.actions.sequence.full'), includeIf: (_, isPrepull: boolean) => !isPrepull, newValue: APLActionSequence.create, fields: [AplHelpers.stringFieldConfig('name'), actionListFieldConfig('actions')], @@ -532,7 +532,7 @@ const actionKindFactories: { [f in NonNullable]: ActionKindConfig label: i18n.t('rotation_tab.apl.actions.reset_sequence.label'), submenu: ['sequences'], shortDescription: i18n.t('rotation_tab.apl.actions.reset_sequence.tooltip'), - fullDescription: i18n.t('rotation_tab.apl.actions.reset_sequence.full'), + // fullDescription: i18n.t('rotation_tab.apl.actions.reset_sequence.full'), includeIf: (_, isPrepull: boolean) => !isPrepull, newValue: APLActionResetSequence.create, fields: [AplHelpers.stringFieldConfig('sequenceName')], @@ -541,7 +541,7 @@ const actionKindFactories: { [f in NonNullable]: ActionKindConfig label: i18n.t('rotation_tab.apl.actions.strict_sequence.label'), submenu: ['sequences'], shortDescription: i18n.t('rotation_tab.apl.actions.strict_sequence.tooltip'), - fullDescription: i18n.t('rotation_tab.apl.actions.strict_sequence.full'), + // fullDescription: i18n.t('rotation_tab.apl.actions.strict_sequence.full'), includeIf: (_, isPrepull: boolean) => !isPrepull, newValue: APLActionStrictSequence.create, fields: [actionListFieldConfig('actions')], diff --git a/ui/core/components/individual_sim_ui/apl_values.ts b/ui/core/components/individual_sim_ui/apl_values.ts index 7f506fed0c..a04a0ca3bd 100644 --- a/ui/core/components/individual_sim_ui/apl_values.ts +++ b/ui/core/components/individual_sim_ui/apl_values.ts @@ -1198,7 +1198,7 @@ const valueKindFactories: { [f in ValidAPLValueKind]: ValueKindConfig APLValueAnyTrinketStatProcsAvailable.create({ statType1: -1, @@ -1293,7 +1293,7 @@ const valueKindFactories: { [f in ValidAPLValueKind]: ValueKindConfig APLValueAnyStatBuffCooldownsMinDuration.create({ statType1: -1, diff --git a/ui/core/components/individual_sim_ui/bulk_tab.tsx b/ui/core/components/individual_sim_ui/bulk_tab.tsx index 7413135bf1..93d6e4839c 100644 --- a/ui/core/components/individual_sim_ui/bulk_tab.tsx +++ b/ui/core/components/individual_sim_ui/bulk_tab.tsx @@ -912,8 +912,8 @@ export class BulkTab extends SimTab { labelTooltip: i18n.t('bulk_tab.settings.freeze_ring.tooltip'), values: [ { name: i18n.t('common.none'), value: -1 }, - { name: i18n.t('gear_tab.slots.finger_1'), value: ItemSlot.ItemSlotFinger1 }, - { name: i18n.t('gear_tab.slots.finger_2'), value: ItemSlot.ItemSlotFinger2 }, + //{ name: i18n.t('gear_tab.slots.finger_1'), value: ItemSlot.ItemSlotFinger1 }, + //{ name: i18n.t('gear_tab.slots.finger_2'), value: ItemSlot.ItemSlotFinger2 }, ], changedEvent: _modObj => TypedEvent.onAny([this.settingsChangedEmitter, this.itemsChangedEmitter]), getValue: _modObj => { @@ -956,8 +956,8 @@ export class BulkTab extends SimTab { labelTooltip: i18n.t('bulk_tab.settings.freeze_trinket.tooltip'), values: [ { name: i18n.t('common.none'), value: -1 }, - { name: i18n.t('gear_tab.slots.trinket_1'), value: ItemSlot.ItemSlotTrinket1 }, - { name: i18n.t('gear_tab.slots.trinket_2'), value: ItemSlot.ItemSlotTrinket2 }, + // { name: i18n.t('gear_tab.slots.trinket_1'), value: ItemSlot.ItemSlotTrinket1 }, + // { name: i18n.t('gear_tab.slots.trinket_2'), value: ItemSlot.ItemSlotTrinket2 }, ], changedEvent: _modObj => TypedEvent.onAny([this.settingsChangedEmitter, this.itemsChangedEmitter]), getValue: _modObj => { diff --git a/ui/core/player_specs/hunter.ts b/ui/core/player_specs/hunter.ts index 16de834fb1..196c3f7de6 100644 --- a/ui/core/player_specs/hunter.ts +++ b/ui/core/player_specs/hunter.ts @@ -8,7 +8,7 @@ export class Hunter extends PlayerSpec { static specID = Spec.SpecHunter as Spec.SpecHunter; static classID = Class.ClassHunter as Class.ClassHunter; static friendlyName = 'Hunter'; - static simLink = getSpecSiteUrl('hunter', 'hunter'); + static simLink = getSpecSiteUrl('hunter', 'dps'); static isTankSpec = false; static isHealingSpec = false; diff --git a/ui/core/player_specs/mage.ts b/ui/core/player_specs/mage.ts index 7d5f2f70ec..277fd7aa09 100644 --- a/ui/core/player_specs/mage.ts +++ b/ui/core/player_specs/mage.ts @@ -8,7 +8,7 @@ export class Mage extends PlayerSpec { static specID = Spec.SpecMage as Spec.SpecMage; static classID = Class.ClassMage as Class.ClassMage; static friendlyName = 'Mage'; - static simLink = getSpecSiteUrl('mage', 'mage'); + static simLink = getSpecSiteUrl('mage', 'dps'); static isTankSpec = false; static isHealingSpec = false; diff --git a/ui/core/player_specs/rogue.ts b/ui/core/player_specs/rogue.ts index 662d55480b..bc0e39132c 100644 --- a/ui/core/player_specs/rogue.ts +++ b/ui/core/player_specs/rogue.ts @@ -8,7 +8,7 @@ export class Rogue extends PlayerSpec { static specID = Spec.SpecRogue as Spec.SpecRogue; static classID = Class.ClassRogue as Class.ClassRogue; static friendlyName = 'Rogue'; - static simLink = getSpecSiteUrl('rogue', 'rogue'); + static simLink = getSpecSiteUrl('rogue', 'dps'); static isTankSpec = false; static isHealingSpec = false; diff --git a/ui/core/player_specs/warlock.ts b/ui/core/player_specs/warlock.ts index 3ebd76f1da..6f3ce0b72d 100644 --- a/ui/core/player_specs/warlock.ts +++ b/ui/core/player_specs/warlock.ts @@ -8,7 +8,7 @@ export class Warlock extends PlayerSpec { static specID = Spec.SpecWarlock as Spec.SpecWarlock; static classID = Class.ClassWarlock as Class.ClassWarlock; static friendlyName = 'Warlock'; - static simLink = getSpecSiteUrl('warlock', 'warlock'); + static simLink = getSpecSiteUrl('warlock', 'dps'); static isTankSpec = false; static isHealingSpec = false; diff --git a/ui/core/talents/talents_picker.tsx b/ui/core/talents/talents_picker.tsx index 3fa913f718..e738667cdc 100644 --- a/ui/core/talents/talents_picker.tsx +++ b/ui/core/talents/talents_picker.tsx @@ -203,7 +203,7 @@ class TalentTreePicker extends Component { this.rootElem.appendChild( <>
- + {/* */}
- + - + - + - +