Es heißt, dass in den Höhlen von Mount Habitica ein schreckliches Übel lauert. Das Monster ist ein Großdrache von gewaltiger Macht dessen bloße Gegenwart den Willen der stärksten Helden des Landes beugt und in schlechte Angewohnheiten und Faulheit verkehrt, Laster der Schattenwyrm. Tapfere Habiteers, erhebt Euch und erschlagt dieses Untier ein für allemal, aber nur, wenn Ihr Euch zutraut seiner gewaltigen Macht zu widerstehen.
Denn wie könntet Ihr es wagen gegen die Bestie anzutreten solange Ihr Euch in ihrem Bann befindet? Werdet nicht die Beute von Faulheit und schlechten Angewohnheiten! Strengt euch an um den dunklen Einfluss des Drachen der Euch umfängt zu bannen!
",
"questVice1Boss": "Lasters Schatten",
@@ -127,7 +127,7 @@
"questSeahorseCompletion": "Der jetzt zahme Seehengst schwimmt gefügig zu Dir. \"Oh, sieh doch!\" sagt Kiwibot. \"Er will, dass wir uns um seine Kinder kümmern.\" Sie gibt dir drei Eier. \"Zieh sie gut auf,\" sagt sie. \"Du bist beim Dilatory Derby jederzeit willkommen!\"",
"questSeahorseBoss": "Seehengst",
"questSeahorseDropSeahorseEgg": "Seehengst (Ei)",
- "questSeahorseUnlockText": "Ermöglicht den Kauf von Seehengsteiern auf dem Marktplatz.",
+ "questSeahorseUnlockText": "Ermöglicht den Kauf von Seehengsteiern auf dem Marktplatz",
"questAtom1Text": "Angriff des Banalen, Teil 1: Abwasch-Katastrophe!",
"questAtom1Notes": "Du erreichst die Ufer des Waschbeckensees für eine wohlverdiente Auszeit... Aber der See ist verschmutzt mit nicht abgespültem Geschirr! Wie ist das passiert? Wie auch immer, Du kannst den See jedenfalls nicht in diesem Zustand lassen. Es gibt nur eine Sache die Du tun kannst: Abspülen und den Ferienort retten! Dazu musst Du aber Seife für den Abwasch finden. Viel Seife...",
"questAtom1CollectSoapBars": "Seifenstücke",
@@ -146,13 +146,13 @@
"questOwlCompletion": "Die Nachteul' verblasst, bevor die Nacht vergeht
Doch dennoch fühlst du, wie es in dir gähnt.
Vielleicht ist es Zeit, sich hinzulegen?
In deinem Bett siehst du ein Nestchen liegen!
Die Nachteul' weiß, es ist sehr schön
spät zu arbeiten und spät ins Bett zu gehn,
Aber deine neuen Haustiere werden leise krähen
und dir dann sagen, \"du sollst schlafen gehen\".",
"questOwlBoss": "Die Nachteule",
"questOwlDropOwlEgg": "Eule (Ei)",
- "questOwlUnlockText": "Ermöglicht den Kauf von Euleneiern auf dem Marktplatz.",
+ "questOwlUnlockText": "Ermöglicht den Kauf von Euleneiern auf dem Marktplatz",
"questPenguinText": "Der Federvieh-Frost",
"questPenguinNotes": "Obwohl es auf der Südspitze von Habitica ein heißer Sommertag ist, hat eine unnatürliche Kälte den Lively Lake befallen. Man hört das Heulen von starken, eisigen Winden und das Ufer fängt an zuzufrieren. Eisspitzen brechen aus dem Boden und verdrängen Gras und Dreck. @Melynnrose und @Breadstrings rennen zu dir hinüber.
\"Hilfe!\" sagt @Melynnrose. \"Wir haben einen riesigen Pinguin hergebracht, um den See zuzufrieren damit wir alle schlittschuhlaufen können, aber uns sind die Fische ausgegangen, mit denen wir ihn gefüttert haben!\"
\"Er wurde wütend und friert mit seinem Eis-Atem alles zu, was er sieht!\" sagt @Breadstrings. \"Bitte, du musst ihn überwältigen bevor wir alle von Eis bedeckt sind!\" Sieht aus, als ob du das Gemüt dieses Pinguins... etwas abkühlen musst.",
"questPenguinCompletion": "Mit der Niederlage des Pinguins beginnt das Eis zu schmelzen. Der riesige Pinguin setzt sich im Sonnenschein auf den Boden und schlürft einen Eimer Fische herunter. Er gleitet über den See und lässt dabei mit einem leichten Pusten nach unten glattes, glitzerndes Eis entstehen. Was für ein komischer Vogel! \"Es scheint so, als hätte er einige Eier hinterlassen,\" sagt @Painter de Cluster.
@Rattify lacht. \"Vielleicht werden diese Pinguine ein bisschen... gechillter sein?\"",
"questPenguinBoss": "Frostpinguin",
"questPenguinDropPenguinEgg": "Pinguin (Ei)",
- "questPenguinUnlockText": "Ermöglicht den Kauf von Pinguineiern auf dem Marktplatz.",
+ "questPenguinUnlockText": "Ermöglicht den Kauf von Pinguineiern auf dem Marktplatz",
"questStressbeastText": "Das Schreckliche Stressbiest aus den Stoïstillen Steppen",
"questStressbeastNotes": "Erfülle tägliche, sowie einmalige Aufgaben um dem Welt-Bossmonster Schaden zuzufügen! Unerfüllte tägliche Aufgaben füllen die Stressschlag Leiste. Ist die Leiste voll, wird das Welt-Bissmonster einen NPC angreifen. Ein Welt-Bossmonster fügt einzelnen Spielern oder Accounts auf keine Weise Schaden zufügen. Nur die nicht erfüllten täglichen Aufgaben von aktiven Spielern, die sich nicht im Gasthaus ausruhen zählen.
~*~
Das erste was wir vernehmen sind die Schritte, langsam und donnernd. Einer nach dem anderen öffnen die Haitianer ihre Haustüren und blicken dem entgegen und die Worte bleiben uns im Halse stecken.
Wir alle kennen das Stressbiest, natürlich - winzige, fiese Kreaturen, die uns im ungünstigsten Augenblick angreifen. Aber das? Das hier ragt in den Himmel hinauf, höher als die Gebäude, mit Pranken, die ohne Probleme einen Drachen zerschmettern könnten. Frostsplitter regnen aus dem stinkenden Fell herab und sein Gebrüll entfesselt einen eisigen Sturm, der die Dächer von unseren Häusern hebt. Von so einem gewaltigen Monster sprechen nur unsere ältesten Legenden.
\"Gebt acht, Haitianer!\", ruft SabreCat, \"Barrikadiert euch in euren Häusern - dies ist das schreckliche Stressbiest!\"
\"Dieses Ding muss Jahrhunderte von Stress in sich tragen!\", sagt Kiwibot, während er die Türen des Gasthauses verrammelt und die Fenster zuschlägt.
\"Die Stoïstillen Steppen\", meint Lemnos mit grimmigem Gesicht, \"Die ganze Zeit dachten wir sie wären ein friedlicher Ort, aber sie müssen ihren Stress irgendwo versteckt haben. Über Generationen hinweg ist das hier aus ihm geworden, und nun hat es sich befreit und griff sie an - und uns!\"
Es gibt nur eine Möglichkeit das Stressbiest zu vertreiben, schrecklich oder nicht, und die ist es, es mit erfüllten täglichen und einmaligen Aufgaben anzugreifen! Wir müssen zusammen stehen um gegen diesen furchteinflößenden Feind zu bestehen - geht sicher, dass ihr eure Aufgaben nicht unerfüllt lasst, das könnte das Stressbiest so sehr reizen, dass es vielleicht anfängt um sich zu schlagen...",
"questStressbeastBoss": "Das schreckliche Stressbiest",
@@ -178,50 +178,50 @@
"questTRexUndeadRageDescription": "Diese Leiste füllt sich, wenn Du deine täglichen Aufgaben nicht erfüllst. Wenn sie voll ist, heilt sich der skelettierte Tyrannosaurus um 30% seiner übrigen Lebenspunkte.",
"questTRexUndeadRageEffect": "'Der Skelettierte Tyrannosaurus benutzt KNÖCHERNE HEILUNG!'\n\nDas Monster lässt ein furchtbares Brüllen ertönen und einige seiner gesplitterten Knochen setzen sich wieder zusammen!",
"questTRexDropTRexEgg": "Tyrannosaurus (Ei)",
- "questTRexUnlockText": "Schaltet die Option Tyrannosauruseier auf dem Marktplatz zu kaufen frei.",
+ "questTRexUnlockText": "Ermöglicht den Kauf von Tyrannosauruseier auf dem Marktplatz.",
"questRockText": "Entkomme dem Höhlenungetüm",
"questRockNotes": "Beim Durchqueren des Habitica Mäandergebirges schlagen Deine Freunde und Du ein Lager in einer Höhle auf, welche mit funkelnden Kristallen übersät ist. Als Du jedoch am nächsten Morgen aufwachst ist der Eingang verschwunden und der Höhlenboden unter dir beginnt sich zu bewegen.
\"Der Berg lebt!\" schreit dein Kamerad @pfeffernusse. \"Das sind keine Kristalle - das sind Zähne!\"
@Painter de Cluster ergreift Deine Hand. \"Wir müssen einen anderen Weg nach draußen finden. Bleib bei mir und lasse Dich nicht ablenken, sonst sind wir vielleicht für immer hier drinnen gefangen!\"",
"questRockBoss": "Kristallkoloss",
"questRockCompletion": "Dank Deiner harten Arbeit konntest Du zu guter Letzt einen sicheren Weg durch den lebenden Berg finden. \nNach der langen Dunkelheit genießt Du die wärmenden Sonnenstrahlen, als Dich Dein Freund @intune auf ein Funkeln am Boden nahe der Höhle aufmerksam macht.\nDas Funkeln kommt von einem kleinen Stein, der von einer Goldader durchzogen ist. \nWährend Du ihn aufhebst siehst Du, dass um ihn herum weitere merkwürdig geformte Steine liegen. Sind das... Eier?",
"questRockDropRockEgg": "Fels (Ei)",
- "questRockUnlockText": "Schaltet die Option Felseier auf dem Marktplatz zu kaufen frei.",
+ "questRockUnlockText": "Ermöglicht den Kauf von Felseier auf dem Marktplatz",
"questBunnyText": "Das Killerkaninchen",
"questBunnyNotes": "Nach vielen Tagen voller Schwierigkeiten erreichst Du den Gipfel des Berges des Aufschiebens und stehst vor den imposanten Toren der Festung der Verwahrlosung. Du liest die Inschrift im Stein. \"Hier lebt die Kreatur, die Deine größten Ängste verkörpert, der Grund für dein Nichtstun. Klopf an und stelle dich Deinem Dämon!\" Deine Hände beginnen zu zittern als Du Dir dieses Grauen vor Augen führst und Du spürst plötzlich den Drang zu fliehen, wie Du es schon so viele Male getan hast. @Draayder hält dich zurück. \"Bleib ruhig, mein Freund! Die Zeit ist endlich gekommen. Du musst dies tun!\"
Du klopfst und die Torflügel schwingen nach innen. Aus der Dunkelheit vor Dir hörst Du ein ohrenbetäubendes Brüllen und Du ziehst deine Waffe.",
"questBunnyBoss": "Killerkaninchen",
"questBunnyCompletion": "Von einem letzten Schlag getroffen sinkt das Killerkaninchen zu Boden. Funkelnde Nebelschwaden steigen aus dem riesigen Körper auf, während dieser schrumpft und sich in ein kleines Häschen verwandelt. Keine Spur mehr von dem furchteinflössenden Monster, dem Du Dich wenige Momente zuvor stellen musstest. Das winzige Näschen zuckt zweimal in die Luft und schon hoppelt das Häschen davon. Dabei lässt es einige Eier zurück @Gully lacht: \"Jaja, der Berg des Aufschiebens hat so eine Art selbst die kleinsten Herausforderungen riesig groß erscheinen zu lassen ... Lasst uns die Eier einsammeln und uns auf den Weg nach Hause machen.\"",
"questBunnyDropBunnyEgg": "Hase (Ei)",
- "questBunnyUnlockText": "Schaltet die Option Haseneier auf dem Marktplatz zu kaufen frei.",
+ "questBunnyUnlockText": "Ermöglicht den Kauf von Haseneier auf dem Marktplatz",
"questSlimeText": "Der Glibber König",
"questSlimeNotes": "Wie immer arbeitest Du gut gelaunt an Deinen Aufgaben, als Du plötzlich bemerkst, wie Du Dich immer langsamer bewegst. \"Als würde man durch einen Sumpf wandern\", grummelt @Leephon, \"Nein, das fühlt sich eher so an als ob man durch Glibber watet!\" @starsystemic meint: \"Der schleimige Glibber König hat dieses Zeug über ganz Habitica verteilt. Es verstopft die Arbeitsschritte. Alles wird verlangsamt.\" Du siehst Dich um und bemerkst, dass die Straßen sich langsam mit durchsichtigem Glibber in allen Farben füllen und die Habitianer daran hindert ihre Aufgaben zu erledigen. Im Gegensatz zu den meisten anderen, die die Flucht ergreifen, nimmst Du einen Mop zur Hand und machst Dich bereit für die Schlacht.",
"questSlimeBoss": "Glibber König",
"questSlimeCompletion": "Mit einem letzten Mopstoß stößt Du den Glibber König in die Falle, einen riesigen Donut, den @Overomega, @LordDarkly und @Shaner, die gewitzten Anführer der Feingebäck-Gilde, herangebracht haben. Anerkennend klopfen Dir die Habitianer auf den Rücken, als Du fühlst, wie Dir jemand etwas in die Tasche rutschen lässt. Es ist die Belohnung für Deinen süßen Erfolg: drei Marshmallow Schleim Eier.",
"questSlimeDropSlimeEgg": "Marshmallow Schleim (Ei)",
- "questSlimeUnlockText": "Schaltet Schleim Eier auf dem Marktplatz zum Kaufen frei",
+ "questSlimeUnlockText": "Ermöglicht den Kauf von Schleim Eier auf dem Marktplatz",
"questSheepText": "Der Donnerbock",
- "questSheepNotes": "Als du mit deinen Freunden durch das ländliche Aufgabistan wanderst und eine \"kurze Pause\" von deinen Verpflichtungen einlegst, findest du einen kleinen Garnladen. Du bist so in deine Aufgabenaufschieberei vertieft, dass du die Unheil verkündenden Wolken am Horizont kaum bemerkst. \"Ich habe ein schlechtes Gefühl bei diesem Wetter\", murmelt @Misceo und du schaust nach oben. Die stürmischen Wolken brauen sich zusammen und sie sehen fast aus wie... \"Wir haben keine Zeit, in die Wolken zu schauen\", ruft @starsystemic. \"Es greift an!\" Der Donnerbock rast los und schleudert Blitze direkt auf dich zu!",
+ "questSheepNotes": "Als Du mit Deinen Freunden durch das ländliche Aufgabistan wanderst und eine \"kurze Pause\" von Deinen Verpflichtungen einlegst, findest Du einen gemütlichen Garnladen. Du bist so in Deine Aufgabenaufschieberei vertieft, dass du die Unheil verkündenden Wolken am Horizont kaum bemerkst. \"Ich habe ein schlechtes Gefühl bei diesem Wetter\", murmelt @Misceo und du schaust nach oben. Stürmischen Wolken brauen sich zusammen und sie sehen fast aus wie ... \"Wir haben keine Zeit, in die Wolken zu schauen\", ruft @starsystemic. \"Er greift an!\" Der Donnerbock rast los und schleudert Blitze direkt auf Dich zu!",
"questSheepBoss": "Donnerbock",
"questSheepCompletion": "Beeindruckt von deinem Fleiß, lässt die Wut des Donnerbocks nach. Er schießt drei riesige Hagelkörner in deine Richtung und verschwindet dann mit leisem Grollen. Bei näherer Betrachtung entdeckst du, dass die Hagelkörner eigentlich drei flauschige Eier sind. Du hebst sie auf und schlenderst unter blauem Himmel nach Hause.",
"questSheepDropSheepEgg": "Schaf (Ei)",
"questSheepUnlockText": "Ermöglicht den Kauf von Schafseiern auf dem Marktplatz",
- "questKrakenText": "Der Kraken von Unfertige",
- "questKrakenNotes": "Als du durch die Unfertige Bucht segelst, ist es ein warmer, sonniger Tag, aber deine Gedanken sind voller Sorgen über alles was du noch zu erledigen hast. Es scheint so, als ob sobald eine Aufgabe erledigt ist, eine andere auftaucht, und dann noch eine...
Plötzlich wird das Boot von einem furchtbaren Ruck erschüttert, und schleimige Tentakeln schlängeln sich an allen Seiten aus dem Wasser! \"Der Kraken von Unfertige greift uns an!\" schreit Wolvenhalo.
\"Schnell!\" ruft dir Lemoness zu. \"Schlage so viele Tentakeln und Aufgaben nieder wie du kannst, bevor neue auftauchen und ihren Platz einnehmen!\"",
- "questKrakenBoss": "Der Kraken von Unfertige",
+ "questKrakenText": "Der Kraken von Unfertik",
+ "questKrakenNotes": "Als Du durch die Unfertige Bucht segelst, ist es ein warmer, sonniger Tag, aber Deine Gedanken sind voller Sorgen über alles was Du noch zu erledigen hast. Es scheint so, als ob sobald eine Aufgabe erledigt ist, eine andere auftaucht, und dann noch eine...
Plötzlich wird das Boot von einem furchtbaren Ruck erschüttert, und schleimige Tentakeln schlängeln sich an allen Seiten aus dem Wasser! \"Der Kraken von Unfertik greift uns an!\" schreit Wolvenhalo.
\"Schnell!\" ruft dir Lemoness zu. \"Schlage so viele Tentakeln und Aufgaben nieder wie Du kannst, bevor neue auftauchen und ihren Platz einnehmen!\"",
+ "questKrakenBoss": "Der Kraken von Unfertik",
"questKrakenCompletion": "Als der Kraken flieht, treiben mehrere Eier an die Wasseroberfläche. Lemoness untersucht sie zunächst argwöhnisch, dann ruft sie freudestrahlend \"Tintenfischeier! Hier, nimm sie als Belohnung für alles was Du erledigt hast!\"",
"questKrakenDropCuttlefishEgg": "Tintenfisch (Ei)",
- "questKrakenUnlockText": "Ermöglicht den Kauf von Tintenfischeiern auf dem Marktplatz.",
+ "questKrakenUnlockText": "Ermöglicht den Kauf von Tintenfischeiern auf dem Marktplatz",
"questWhaleText": "Jammern des Wals",
- "questWhaleNotes": "Du kommt am Diligent Hafen an und hoffst, dass du mit einem U-Boot zum Dilatory Derby fahren kannst. Plötzlich zwingt dich ein ohrenbetäubendes Grölen dazu anzuhalten und deine Ohren zuzuhalten. \"Wal in Sicht!\", schreit Kapitän @krazjega, während er auf einen riesigen, klagenden Wal deutet. \"Es ist nicht sicher U-Boote herauszuschicken während sie um sich schlägt!\"
\"Schnell\", ruft @UncommonCriminal. \"Hilf mir die arme Kreatur zu beruhigen, damit wir herausfinden können, wieso sie diesen ganzen Krach macht!\"",
+ "questWhaleNotes": "Du kommst am Diligent Hafen an und hoffst, dass Du mit einem U-Boot zum Dilatory Derby fahren kannst. Plötzlich zwingt Dich ein ohrenbetäubendes Grölen dazu anzuhalten und Deine Ohren zuzuhalten. \"Wal in Sicht!\", schreit Kapitän @krazjega, während er auf einen riesigen, klagenden Wal deutet. \"Es ist nicht sicher U-Boote herauszuschicken während sie um sich schlägt!\"
\"Schnell\", ruft @UncommonCriminal. \"Hilf mir die arme Kreatur zu beruhigen, damit wir herausfinden können, wieso sie diesen ganzen Krach macht!\"",
"questWhaleBoss": "Jammernder Wal",
"questWhaleCompletion": "Nach der ganzen harten Arbeit verstummt das donnernde Jammern des Wales. \"Scheint als wäre sie in der Flut schlechter Angewohnheiten fast ertrunken\", erklärt @zoebeagle, \"Dank deiner ununterbrochenen Bemühungen konnten wir die Fluten abwenden!\" Als du in das U-Boot steigen willst fallen dir in der ruhigen See einige Eier auf.",
"questWhaleDropWhaleEgg": "Wal (Ei)",
- "questWhaleUnlockText": "Ermöglicht den Kauf von Waleiern auf dem Marktplatz.",
- "questDilatoryDistress1Text": "Aufschiebendes Elend, Teil 1: Flaschenpost",
- "questDilatoryDistress1Notes": "Eine Nachricht in einer Flasche aus der neu wieder aufgebauten Stadt Dilatory traf ein! Darin steht: \"Liebe Habiticaner, wir brauchen erneut eure Hilfe. Unsere Prinzessin ist verschwunden und die Stadt wir von einigen unbekannten Wasserdämonen belagert! Die Fangschreckenkrebse halten uns die Angreifer vom Leibe. Bitte helft uns!\" Um die weite Reise zur versunkenen Stadt zu durchstehen, muss man fähig sein unter Wasser zu atmen. Glücklicherweise können die Alchimisten @Benga und @hazel dies möglich machen! Du musst nur die richtigen Zutaten finden.",
+ "questWhaleUnlockText": "Ermöglicht den Kauf von Waleiern auf dem Marktplatz",
+ "questDilatoryDistress1Text": "Dilatory in Gefahr, Teil 1: Flaschenpost",
+ "questDilatoryDistress1Notes": "Eine Nachricht in einer Flasche aus der neu wieder aufgebauten Stadt Dilatory traf ein! Darin steht: \"Liebe Habiticaner, wir brauchen erneut eure Hilfe. Unsere Prinzessin ist verschwunden und die Stadt wird von einigen unbekannten Wasserdämonen belagert! Die Fangschreckenkrebse halten uns die Angreifer vom Leibe. Bitte helft uns!\" Um die weite Reise zur versunkenen Stadt zu durchstehen, muss man fähig sein unter Wasser zu atmen. Glücklicherweise können die Alchimisten @Benga und @hazel dies möglich machen! Du musst nur die richtigen Zutaten finden.",
"questDilatoryDistress1Completion": "Du ziehst die Flossenrüstung an und schwimmst so schnell du kannst nach Dilatory. Bisher haben das Meeresvolk und ihre verbündeten Fangschreckenkrebse es geschafft die Monster aus der Stadt fernzuhalten, aber sie sind drauf und dran zu verlieren. Kaum bist du innerhalb der Schlossmauern, als die entsetzliche Belagerung durchbricht!",
"questDilatoryDistress1CollectFireCoral": "Feuerkorallen",
"questDilatoryDistress1CollectBlueFins": "Blaue Schwanzflossen",
"questDilatoryDistress1DropArmor": "Flossenbesetztes Ozeangewand (Rüstung)",
- "questDilatoryDistress2Text": "Säumiges Elend, Teil 2: Kreaturen der Gletscherspalte",
+ "questDilatoryDistress2Text": "Dilatory in Gefahr, Teil 2: Kreaturen der Gletscherspalte",
"questDilatoryDistress2Notes": "Die Belagerung kann meilenweit entfernt gesehen werden: tausende körperlose Schädel drängen sich durch ein Portal zwischen den Wänden der Spalte und streben Dilatory entgegen.
Du triffst König Manta mit eingefallenen Augen und besorgtem Gesicht in seinem Kriegszimmer. \"Meine Tochter Adva verschwand in der dunklen Meeresspalte kurz bevor die Belagerung begann. Bitte finde sie und bringe sie sicher wieder zurück! Ich werde dir mein Feuerkorallendiadem leihen, um dir zu helfen. Wenn du erfolgreich bist, ist es deins.\"",
"questDilatoryDistress2Completion": "Du bezwingst die albtraumhalfte Totenschädelhorde, aber du hast nicht das Gefühl näher dran zu sein Adva zu finden. Du fragst @Kiwibot, den königlichen Fährtensucher, ob sie irgendeine Idee hat. \"Die Fangschreckenkrebse, welche die Stadt verteidigen, sollten Advas Flucht gesehen haben\", antwortet @Kiwibot. \"Versuche ihnen in die dunkle Meeresspalte zu folgen.\"",
"questDilatoryDistress2Boss": "Wasserschädel Schwarm",
@@ -231,25 +231,25 @@
"questDilatoryDistress2DropSkeletonPotion": "Skelettierter Schlüpftrank",
"questDilatoryDistress2DropCottonCandyBluePotion": "Zuckerwattenblauer Schlüpftrank",
"questDilatoryDistress2DropHeadgear": "Feuerkorallendiadem (Kopfbedeckung)",
- "questDilatoryDistress3Text": "Säumiges Elend, Teil 3: Nicht nur ein Dienstmädchen",
- "questDilatoryDistress3Notes": "Du folgst den Fangschreckenkrebsen tief in die Meeresspalte und entdeckst eine Unterwasserfestung. Prinzessin Adva, von weiteren Wasserschädeln begleitet, erwartet dich in der Haupthalle. \"Mein Vater hat euch gesandt, oder? Berichtet ihm, dass ich es ablehne zurückzukehren. Ich bin damit zufrieden hier zu bleiben und Zauberei zu betreiben. Verschwinde jetzt oder du wirst den Zorn der neuen Meereskönigin spüren!\" Adva scheint unnachgiebig zu sein, aber während sie spricht bemerkst du einen seltsamen, bedrohlich glühenden Rubinanhänger an ihrem Hals... Vielleicht würden ihr Wahnvorstellungen aufhören, wenn du ihn zerbrichst?",
- "questDilatoryDistress3Completion": "Finally, you manage to pull the bewitched pendant from Adva's neck and throw it away. Adva clutches her head. \"Where am I? What happened here?\" After hearing your story, she frowns. \"This necklace was given to me by a strange ambassador - a lady called 'Tzina'. I don't remember anything after that!\"
Back at Dilatory, Manta is overjoyed by your success. \"Allow me to reward you with this trident and shield! I ordered them from @aiseant and @starsystemic as a gift for Adva, but... I'd rather not put weapons in her hands any time soon.\"",
+ "questDilatoryDistress3Text": "Dilatory in Gefahr, Teil 3: Nicht nur ein Dienstmädchen",
+ "questDilatoryDistress3Notes": "Du folgst den Fangschreckenkrebsen tief in die Meeresspalte und entdeckst eine Unterwasserfestung. Prinzessin Adva, von weiteren Wasserschädeln begleitet, erwartet dich in der Haupthalle. \"Mein Vater hat euch gesandt, oder? Berichtet ihm, dass ich es ablehne zurückzukehren. Ich bin damit zufrieden hier zu bleiben und Zauberei zu betreiben. Verschwinde jetzt oder du wirst den Zorn der neuen Meereskönigin spüren!\" Adva scheint unnachgiebig zu sein, aber während sie spricht bemerkst du einen seltsamen, bedrohlich glühenden Rubinanhänger an ihrem Hals ... Vielleicht würden ihre Wahnvorstellungen aufhören, wenn Du ihn zerbrichst?",
+ "questDilatoryDistress3Completion": "Schließlich gelingt es Dir den verhexten Anhänger von Advas Hals zu nehmen und wirfst ihn weg. Adva fasst sich an den Kopf: \"Wo bin ich? Was ist hier passiert?\" Nachdem sie Deine Geschichte gehört hat, runzelt sie ihre Stirn: \"Dieses Amulett wurde mir von einer seltsamen Botschafterin überreicht - Eine Dame namens 'Tzina'. Danach erinnere ich mich an nichts mehr!\"
Zurück in Dilatory ist Manta überglücklich über Deinen Erfolg. \"Erlaube mir, Dich mit diesem Dreizack und diesem Schild zu belohnen! Ich habe sie bei @aiseant und @starsystemic als Geschenk für Adva anfertigen lassen, aber ... Ich möchte in nächster Zeit lieber keine Waffen mehr in ihre Hände geben.",
"questDilatoryDistress3Boss": "Adva, die putschende Meerjungfrau",
"questDilatoryDistress3DropFish": "Fisch (Futter)",
"questDilatoryDistress3DropWeapon": "Dreizack der zerschmetternden Gezeiten (Waffe)",
"questDilatoryDistress3DropShield": "Mondperlenschild (Schildhand Item)",
- "questCheetahText": "So ein Gepard",
- "questCheetahNotes": "As you hike across the Sloensteadi Savannah with your friends @PainterProphet, @tivaquinn, @Unruly Hyena, and @Crawford, you're startled to see a Cheetah screeching past with a new Habitican clamped in its jaws. Under the Cheetah's scorching paws, tasks burn away as though complete -- before anyone has the chance to actually finish them! The Habitican sees you and yells, \"Please help me! This Cheetah is making me level too quickly, but I'm not getting anything done. I want to slow down and enjoy the game. Make it stop!\" You fondly remember your own fledgling days, and know that you have to help the newbie by stopping the Cheetah!",
- "questCheetahCompletion": "The new Habitican is breathing heavily after the wild ride, but thanks you and your friends for your help. \"I'm glad that Cheetah won't be able to grab anyone else. It did leave some Cheetah eggs for us, so maybe we can raise them into more trustworthy pets!\"",
+ "questCheetahText": "Der Mogel-Gepard",
+ "questCheetahNotes": "Während Du mit Deinen Freunden @PainterProphet, @tivaquinn, @Unruly Hyena und @Crawford durch die Ruhilangsam-Savanne wanderst, schreckst Du plötzlich hoch, als Du einen Mogel-Geparden vorbeischnellen siehst, der einen kreischenden Jung-Habiticaner mit dem Maul gepackt hat. Unter den feurigen Pfoten des Geparden verbrennen die Aufgaben, als ob sie erledigt wären -- bevor überhaupt jemand die Möglichkeit dazu hat, diese tatsächlich abzuschließen! Der Habiticaner sieht Dich und ruft: \"Bitte hilf mir! Der Mogel-Gepard lässt meinen Level zu schnell ansteigen, ohne dass ich wirklich etwas erledigen kann. Ich will langsamer machen und das Spiel genießen. Halte ihn auf!\" Liebevoll erinnerst Du Dich an die Tage, and denen Du selbst flügge wurdest, und Du weißt, dass Du dem Neuling helfen musst, indem Du den Mogel-Geparden aufhältst!",
+ "questCheetahCompletion": "Der Jung-Habiticaner atmet schwer nach dem wilden Ritt, aber er dankt Dir und Deinen Freunden für eure Hilfe: \"Ich bin froh, dass der Gepard niemand anderen mehr schnappen kann. Er hat aber ein paar Gepardeneier für uns hinterlassen, vielleicht können wir die zu vertrauenswürdigeren Haustieren großziehen!\"",
"questCheetahBoss": "Gepard",
"questCheetahDropCheetahEgg": "Gepard (Ei)",
- "questCheetahUnlockText": "Schaltet kaufbare Gepradeneier im Marktplatz frei",
+ "questCheetahUnlockText": "Ermöglicht den Kauf von Gepardeneier auf dem Marktplatz",
"questHorseText": "Reite den Alptraum",
- "questHorseNotes": "While relaxing in the Tavern with @beffymaroo and @JessicaChase, the talk turns to good-natured boasting about your adventuring accomplishments. Proud of your deeds, and perhaps getting a bit carried away, you brag that you can tame any task around. A nearby stranger turns toward you and smiles. One eye twinkles as he invites you to prove your claim by riding his horse.\nAs you all head for the stables, @UncommonCriminal whispers, \"You may have bitten off more than you can chew. That's no horse - that's a Night-Mare!\" Looking at its stamping hooves, you begin to regret your words...",
- "questHorseCompletion": "It takes all your skill, but finally the horse stamps a couple of hooves and nuzzles you in the shoulder before allowing you to mount. You ride briefly but proudly around the Tavern grounds while your friends cheer. The stranger breaks into a broad grin.\n\"I can see that was no idle boast! Your determination is truly impressive. Take these eggs to raise horses of your own, and perhaps we'll meet again one day.\" You take the eggs, the stranger tips his hat... and vanishes.",
+ "questHorseNotes": "Während Du Dich im Gasthaus mit @beffymaroo und @JessicaChase ausruhst, entwickelt sich das Gespräch zu einer gutartigen Angeberei über Deine Abenteuer-Erfolge. Stolz auf Deine Taten und vielleicht etwas mitgerissen, prahlst Du, dass Du jede Aufgabe in der Nähe zähmen kannst. Ein beistehender Fremder dreht sich zu Dir um und lächelt. Mit einem Augenzwinkern läd er Dich dazu ein, Deine Behauptung unter Beweis zu stellen, indem Du sein Pferd reitest.\nAls ihr euch gemeinsam zu den Ställen begebt, flüstert @UncommonCriminal: \"Du hast den Mund wahrscheinlich etwas zu voll genommen. Das ist kein Pferd, das ist ein Alptraum!\" Als Du die stampfenden Hufe betrachtest, fängst Du an Deine Worte zu bereuen ...",
+ "questHorseCompletion": "Es beansprucht Dein ganzes Können, aber schließlich stampft das Pferd mit ein paar seiner Hufe und reibt seine Schnauze an Deiner Schulter, bevor es Dir erlaubt aufzusteigen. Du reitest kurz aber stolz um das Gasthaus-Gelände, während Deine Freunde Dir zujubeln. Der Fremde grinst breit.\n\"Wie ich sehe war das keine leere Prahlerei! Deine Entschlossenheit ist wahrlich beeindruckend. Nimm diese Eier und ziehe Deine eigenen Pferde groß. Vielleicht treffen wir uns ja eines Tages wieder.\" Du nimmst die Eier entgegen, der Fremde tippt seinen Hut an ... und verschwindet.",
"questHorseBoss": "Alptraum",
"questHorseDropHorseEgg": "Hengst (Ei)",
- "questHorseUnlockText": "Schaltet die Option Hengsteier auf dem Marktplatz zu kaufen frei.",
+ "questHorseUnlockText": "Ermöglicht den Kauf von Hengsteier auf dem Marktplatz",
"questBurnoutText": "Burnout und die Geister der Erschöpfung",
"questBurnoutNotes": "Es ist weit nach Mitternacht, still und erstickend heiß als Redphoenix und Späheranführer Kiwibot plötzlich durch die Stadttore platzen. \"Wir müssen sämtliche Holzgebäude evakuieren!\", schreit Redphoenix. \"Beeilung!\"
Kiwibot stützt sich an die Wand als sie Luft holt. \"Es erschöpft die Menschen und verwandelt sie in Erschöpfungsgeister! Deshalb hat sich alles verzögert. Das ist, wo die Vermissten hin verschwunden sind. Es stiehlt ihre Energie!\"
\"Es?\", fragt Lemoness.
Und dann nimmt die Hitze Gestalt an.
Es steigt von der Erde empor, als wogende, wirbelnde Masse und die Luft wird erfüllt von einem Gestank nach Rauch und Schwefel. Flammen lecken über den geschmolzenen Boden und verkrümmen sich zu Gliedmaßen und winden sich in entsetzliche Höhen. Glimmende Augen öffnen sich und die Kreatur stößt ein tiefes und knackendes Lachen aus.
Kiwibot flüstert ein einzelnes Wort.
\"Burnout.\"",
"questBurnoutCompletion": "Burnout is DEFEATED!
With a great, soft sigh, Burnout slowly releases the ardent energy that was fueling its fire. As the monster curls quietly into ashes, its stolen energy shimmers through the air, rejuvenating the Exhaust Spirits and returning them to their true forms.
Ian, Daniel, and the Seasonal Sorceress cheer as Habiticans rush to greet them, and all the missing citizens of the Flourishing Fields embrace their friends and families. The final Exhaust Spirit transforms into the Joyful Reaper herself!
\"Look!\" whispers @Baconsaur, as the ashes begin to glitter. Slowly, they resolve into hundreds of shining phoenixes!
One of the glowing birds alights on the Joyful Reaper's skeletal arm, and she grins at it. \"It has been a long time since I've had the exquisite privilege to behold a phoenix in the Flourishing Fields,\" she says. \"Although given recent occurrences, I must say, this is highly thematically appropriate!\"
Her tone sobers, although (naturally) her grin remains. \"We're known for being hard-working here, but we are also known for our feasts and festivities. Rather ironic, I suppose, that as we strove to plan a spectacular party, we refused to permit ourselves any time for fun. We certainly won't make the same mistake twice!\"
She claps her hands. \"Now - let's celebrate!\"",
@@ -263,15 +263,15 @@
"questBurnoutBossRageSeasonalShop": "`Burnout uses EXHAUST STRIKE!`\n\nAhh!!! Our incomplete Dailies have fed the flames of Burnout, and now it has enough energy to strike again! It lets loose a gout of spectral flame that sears the Seasonal Shop. You're horrified to see that the cheery Seasonal Sorceress has been transformed into a drooping Exhaust Spirit.\n\nWe have to rescue our NPCs! Hurry, Habiticans, complete your tasks and defeat Burnout before it strikes for a third time!",
"questBurnoutBossRageTavern": "`Burnout uses EXHAUST STRIKE!`\n\nMany Habiticans have been hiding from Burnout in the Tavern, but no longer! With a screeching howl, Burnout rakes the Tavern with its white-hot hands. As the Tavern patrons flee, Daniel is caught in Burnout's grip, and transforms into an Exhaust Spirit right in front of you!\n\nThis hot-headed horror has gone on for too long. Don't give up... we're so close to vanquishing Burnout for once and for all!",
"questFrogText": "Sumpf des Chaos-Froschs",
- "questFrogNotes": "As you and your friends are slogging through the Swamps of Stagnation, @starsystemic points at a large sign. \"Stay on the path -- if you can.\"
\"Surely that isn't hard!\" @RosemonkeyCT says. \"It's broad and clear.\"
But as you continue, you notice that path is gradually overtaken by the muck of the swamp, laced with bits of strange blue debris and clutter, until it's impossible to proceed.
As you look around, wondering how it got this messy, @Jon Arjinborn shouts, \"Look out!\" An angry frog leaps from the sludge, clad in dirty laundry and lit by blue fire. You will have to overcome this poisonous Clutter Frog to progress!",
- "questFrogCompletion": "The frog cowers back into the muck, defeated. As it slinks away, the blue slime fades, leaving the way ahead clear.
Sitting in the middle of the path are three pristine eggs. \"You can even see the tiny tadpoles and through the clear casing!\" @Breadstrings says. \"Here, you should take them.\"",
+ "questFrogNotes": "Als Du Dich mit Deinen Freunden durch den Sumpf des Stillstands schlägst, deutet @starsystemic auf ein großes Schild: \"Auf dem Weg bleiben -- wenn möglich.\"
\"Das ist sicher nicht schwer\" sagt @RosemonkeyCT. \"Er ist breit und frei.\"
Aber als Ihr weitergeht, bemerkst Du, dass der Weg langsam immer mehr vom Moor des Sumpfs eingenommen wird, übersät mit Stücken blauen Gerölls und Müll. Irgendwann ist es unmöglich voranzukommen.
Als Du Dich umsiehst und Dich fragst, wie es hier so verschmutzt werden konnte, ruft @Jon Arjinborn: \"Passt auf!\" Ein wütender Frosch springt aus dem Schlamm hervor, bekleidet mit dreckigen Lumpen und von blauem Feuer entfacht. Du musst diesen giftigen Chaos-Frosch überwältigen um weiterzukommen!",
+ "questFrogCompletion": "Der Frosch kauert sich zurück ins Moor, besiegt. Als er sich langsam davonschleicht, löst sich der blaue Schleim auf und gibt den Weg vor euch frei.
In der Mitte des Weges befinden sich drei makellose Eier. \"Man kann sogar die winzigen Kaulquappen durch die klare Schale hindurch erkennen!\" sagt @Breadstrings. \"Hier, Du solltest sie nehmen.\"",
"questFrogBoss": "Chaos-Frosch",
"questFrogDropFrogEgg": "Frosch (Ei)",
"questFrogUnlockText": "Ermöglicht den Kauf von Froscheiern auf dem Marktplatz",
- "questSnakeText": "The Serpent of Distraction",
- "questSnakeNotes": "It takes a hardy soul to live in the Sand Dunes of Distraction. The arid desert is hardly a productive place, and the shimmering dunes have led many a traveler astray. However, something has even the locals spooked. The sands have been shifting and upturning entire villages. Residents claim a monster with an enormous serpentine body lies in wait under the sands, and they have all pooled together a reward for whomever will help them find and stop it. The much-lauded snake charmers @EmeraldOx and @PainterProphet have agreed to help you summon the beast. Can you stop the Serpent of Distraction?",
- "questSnakeCompletion": "With assistance from the charmers, you banish the Serpent of Distraction. Though you were happy to help the inhabitants of the Dunes, you can't help but feel a little sad for your fallen foe. While you contemplate the sights, @LordDarkly approaches you. \"Thank you! It's not much, but I hope this can express our gratitude properly.\" He hands you some Gold and... some Snake eggs! You will see that majestic animal again after all.",
- "questSnakeBoss": "Serpent of Distraction",
- "questSnakeDropSnakeEgg": "Snake (Egg)",
- "questSnakeUnlockText": "Unlocks purchasable Snake eggs in the Market"
+ "questSnakeText": "Die Schlange der Ablenkung",
+ "questSnakeNotes": "Man braucht eine abgehärtete Seele, um in den Sanddünen der Ablenkung zu leben. Die ausgedörrte Wüste ist kaum ein produktiver Ort, und die glänzenden Dünen haben schon so manchen Reisenden in die Irre geführt. Jedoch erschreckt sogar die Einheimischen etwas. Der Wüstensand verschiebt und hebt ganze Dörfer an. Anwohner behaupten ein Monster mit einem gewaltigen Schlangenkörper liegt und wartet dort unter dem Sand. Deshalb haben sie gemeinsam zusammengelegt und eine Belohnung für denjenigen gesammelt, der ihnen hilft es zu finden und aufzuhalten. Die vielgelobten Schlangenbeschwörer @EmeraldOx und @PainterProphet haben zugestimmt Dir bei der Herbeirufung der Bestie zu beizustehen.",
+ "questSnakeCompletion": "Mit der Hilfe der Beschwörer besiegst Du die Schlange der Ablenkung. Und obwohl Du froh bist, den Einwohnern der Dünen geholfen zu haben, kannst Du nicht anders als Deinen gefallenen Gegner ein wenig zu bedauern. Während Du über den Anblick nachdenkst, nähert sich Dir @LordDarkly: \"Danke! Es ist zwar nicht viel, aber ich hoffe das kann unsere Dankbarkeit richtig zum Ausdruck bringen.\" Er überreicht Dir etwas Gold und ... ein paar Schlangeneier! Nach alledem wirst Du schließlich doch das majestätische Tier wiedersehen.",
+ "questSnakeBoss": "Schlange der Ablenkung",
+ "questSnakeDropSnakeEgg": "Schlange (Ei)",
+ "questSnakeUnlockText": "Ermöglicht den Kauf von Schlangeneiern auf dem Marktplatz"
}
\ No newline at end of file
diff --git a/common/locales/de/settings.json b/common/locales/de/settings.json
index b3333b16d7..c36917a379 100644
--- a/common/locales/de/settings.json
+++ b/common/locales/de/settings.json
@@ -14,7 +14,7 @@
"startCollapsedPop": "Mit dieser Option wird die Liste der Tags verdeckt, wenn Du eine Aufgabe das erste mal bearbeitest.",
"startAdvCollapsed": "Erweiterte Optionen standartmäßig verdecken",
"startAdvCollapsedPop": "Mit dieser Option werden die erweiterten Optionen verdeckt, wenn Du eine Aufgabe das erste mal bearbeitest.",
- "dontShowAgain": "Don't show this again",
+ "dontShowAgain": "Nicht mehr anzeigen",
"suppressLevelUpModal": "Don't show popup when gaining a level",
"suppressHatchPetModal": "Don't show popup when hatching a pet",
"suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
@@ -143,5 +143,5 @@
"gemCapExtra": "Gem Cap Extra:",
"mysticHourglasses": "Mystische Stundengläser",
"paypal": "PayPal",
- "amazonPayments": "Amazon Payments"
+ "amazonPayments": "Amazon-Zahlungen"
}
\ No newline at end of file
diff --git a/common/locales/de/tasks.json b/common/locales/de/tasks.json
index 7a7d6b0e94..e04ff4d9f7 100644
--- a/common/locales/de/tasks.json
+++ b/common/locales/de/tasks.json
@@ -77,7 +77,7 @@
"streakText": "Hat <%= streaks %> 21-tägige Strähnen von täglichen Aufgaben erreicht",
"streakSingular": "Perfektionist",
"streakSingularText": "Hat eine 21-tägige Strähne bei einer täglichen Aufgaben erreicht",
- "perfectName": "Perfekt(e) Tag(e)",
+ "perfectName": "Perfekte Tage",
"perfectText": "Du hast alle täglichen Aufgaben an <%= perfects %> Tagen erfüllt. Mit diesem Erfolg erhältst Du eine Level/2 Stärkung aller Attribute für den nächsten Tag. Alle Level über 100 haben keine zusätzliche Auswirkung auf die Attribute.",
"perfectSingular": "Perfekt(e) Tag(e)",
"perfectSingularText": "Du hast alle täglichen Aufgaben an einem Tag erfüllt. Mit diesem Erfolg erhältst Du eine Level/2 Stärkung aller Attribute für den nächsten Tag. Alle Level über 100 haben keine zusätzliche Auswirkung auf die Attribute.",
diff --git a/common/locales/en/groups.json b/common/locales/en/groups.json
index f4c2fb2005..18092f214d 100644
--- a/common/locales/en/groups.json
+++ b/common/locales/en/groups.json
@@ -147,6 +147,6 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>'s Party",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
diff --git a/common/locales/en/noscript.json b/common/locales/en/noscript.json
new file mode 100644
index 0000000000..2587821006
--- /dev/null
+++ b/common/locales/en/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
diff --git a/common/locales/en@pirate/generic.json b/common/locales/en@pirate/generic.json
index 4072d983ec..17a6aa3836 100644
--- a/common/locales/en@pirate/generic.json
+++ b/common/locales/en@pirate/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Celebrated <%= number %> Namin' Days! Thanks fer bein' a fantastic user.",
"achievementDilatory": "Savior o' Dilatory",
"achievementDilatoryText": "Helped defeat th' Dread Drag'on 'o Dilatory durin' th' 2014 Summer Splash Event!",
- "costumeContest": "2014 Costume Contest",
- "costumeContestText": "Participated in th' 2014 Halloween Costume Contest. Cast yer eyes on some o' the entries at blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Mate since",
"lastLoggedIn": "- Last sailed on",
"notPorted": "This feature is not yet ported from th' original site.",
diff --git a/common/locales/en@pirate/groups.json b/common/locales/en@pirate/groups.json
index f4c97ad1c6..c53eecffd5 100644
--- a/common/locales/en@pirate/groups.json
+++ b/common/locales/en@pirate/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>'s Crew",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/en@pirate/noscript.json b/common/locales/en@pirate/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/en@pirate/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/en_GB/generic.json b/common/locales/en_GB/generic.json
index 77e679d413..89d84892af 100644
--- a/common/locales/en_GB/generic.json
+++ b/common/locales/en_GB/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Celebrated <%= number %> Naming Days! Thanks for being a fantastic user.",
"achievementDilatory": "Saviour of Dilatory",
"achievementDilatoryText": "Helped defeat the Dread Dragon of Dilatory during the 2014 Summer Splash Event!",
- "costumeContest": "2014 Costume Contest",
- "costumeContestText": "Participated in the 2014 Halloween Costume Contest. See some of the entries at blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Member since",
"lastLoggedIn": "- Last logged in",
"notPorted": "This feature is not yet ported from the original site.",
diff --git a/common/locales/en_GB/groups.json b/common/locales/en_GB/groups.json
index 014da6ceba..970e905b6e 100644
--- a/common/locales/en_GB/groups.json
+++ b/common/locales/en_GB/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>'s Party",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/en_GB/noscript.json b/common/locales/en_GB/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/en_GB/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/es/backgrounds.json b/common/locales/es/backgrounds.json
index 2b8d0c9a1d..5334af6eae 100644
--- a/common/locales/es/backgrounds.json
+++ b/common/locales/es/backgrounds.json
@@ -114,16 +114,16 @@
"backgroundTavernNotes": "Visita la Taberna de Habitica.",
"backgrounds102015": "SET 17: lanzado en octobre del 2015",
"backgroundHarvestMoonText": "Luna de cosecha",
- "backgroundHarvestMoonNotes": "Cackle under the Harvest Moon.",
- "backgroundSlimySwampText": "Slimy Swamp",
- "backgroundSlimySwampNotes": "Slog through a Slimy Swamp.",
+ "backgroundHarvestMoonNotes": "Charla bajo la Luna de Cosecha",
+ "backgroundSlimySwampText": "Pantano Musgoso",
+ "backgroundSlimySwampNotes": "Cruza a través del Pantano musgoso",
"backgroundSwarmingDarknessText": "La Oscuridad de Enjambre",
"backgroundSwarmingDarknessNotes": "Temblar en la Oscuridad de Enjambre",
- "backgrounds112015": "SET 18: Released November 2015",
- "backgroundFloatingIslandsText": "Floating Islands",
- "backgroundFloatingIslandsNotes": "Hop across the Floating Islands.",
- "backgroundNightDunesText": "Night Dunes",
- "backgroundNightDunesNotes": "Walk peacefully through the Night Dunes.",
- "backgroundSunsetOasisText": "Sunset Oasis",
- "backgroundSunsetOasisNotes": "Bask in the Sunset Oasis."
+ "backgrounds112015": "SET 18: Lanzado en Noviembre del 2015",
+ "backgroundFloatingIslandsText": "Islas Flotantes",
+ "backgroundFloatingIslandsNotes": "Salta a través de las Islas Flotantes",
+ "backgroundNightDunesText": "Dunas de Noche",
+ "backgroundNightDunesNotes": "Camina tranquilamente a través de las Dunas de noche ",
+ "backgroundSunsetOasisText": "Puesta en el Oasis",
+ "backgroundSunsetOasisNotes": "Toma sol en la Puesta del Oasis"
}
\ No newline at end of file
diff --git a/common/locales/es/challenge.json b/common/locales/es/challenge.json
index d7280b0c3e..f497c6b2f8 100644
--- a/common/locales/es/challenge.json
+++ b/common/locales/es/challenge.json
@@ -60,8 +60,8 @@
"noPermissionEditChallenge": "No tienes permiso para editar este desafío",
"noPermissionDeleteChallenge": "No tienes permiso para eliminar este desafío",
"noPermissionCloseChallenge": "No tienes permiso para cerrar este desafío",
- "congratulations": "Congratulations!",
- "hurray": "Hurray!",
- "noChallengeOwner": "no owner",
- "noChallengeOwnerPopover": "This challenge does not have an owner because the person who created the challenge deleted their account."
+ "congratulations": "Felicidades!",
+ "hurray": "Muy bien!",
+ "noChallengeOwner": "sin dueño",
+ "noChallengeOwnerPopover": "Este Desafío no tiene dueño o la persona que lo creó borró su cuenta."
}
\ No newline at end of file
diff --git a/common/locales/es/character.json b/common/locales/es/character.json
index 28add8a231..55a2804b71 100644
--- a/common/locales/es/character.json
+++ b/common/locales/es/character.json
@@ -52,7 +52,7 @@
"classEquipBonus": "Bonus de Clase",
"battleGear": "Equipo de Batalla",
"battleGearText": "Este es el equipo que llevarás en batalla; los puntos que otorguen se tendrán en cuenta cuando interactúes con tus tareas.",
- "autoEquipBattleGear": "Auto-equip new gear",
+ "autoEquipBattleGear": "Auto-equipar nuevo equipo",
"costume": "Disfraz",
"costumeText": "Si prefieres el aspecto de otro equipo al que estás usando, marca la casilla «Usar Disfraz» para llevarlo como disfraz mientras usas tu equipo de batalla debajo.",
"useCostume": "Llevar Disfraz",
@@ -65,10 +65,10 @@
"ultimGearText": "Has conseguido el conjunto de armas y armadura de mayor nivel en las siguientes clases:",
"level": "Nivel",
"levelUp": "¡Subiste de Nivel!",
- "gainedLevel": "You gained a level!",
- "leveledUp": "By accomplishing your real-life goals, you've grown to Level <%= level %>!",
- "fullyHealed": "You have been fully healed!",
- "huzzah": "Huzzah!",
+ "gainedLevel": "Has ganado un nivel!",
+ "leveledUp": "Por cumplir tus tareas en la vida real has subido al Nivel <%= level %>!",
+ "fullyHealed": "Has recobrado tu salud!",
+ "huzzah": "Oh si!",
"mana": "Maná",
"hp": "PV",
"mp": "PM",
diff --git a/common/locales/es/content.json b/common/locales/es/content.json
index a329e89dda..6ae4363505 100644
--- a/common/locales/es/content.json
+++ b/common/locales/es/content.json
@@ -95,11 +95,11 @@
"questEggHorseText": "Caballo",
"questEggHorseMountText": "Caballo",
"questEggHorseAdjective": "un galopante",
- "questEggFrogText": "Frog",
- "questEggFrogMountText": "Frog",
+ "questEggFrogText": "Rana",
+ "questEggFrogMountText": "Rana",
"questEggFrogAdjective": "a princely",
- "questEggSnakeText": "Snake",
- "questEggSnakeMountText": "Snake",
+ "questEggSnakeText": "Serpiente",
+ "questEggSnakeMountText": "Serpiente",
"questEggSnakeAdjective": "a slithering",
"eggNotes": "Find a hatching potion to pour on this egg, and it will hatch into <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Base",
diff --git a/common/locales/es/faq.json b/common/locales/es/faq.json
index 026f278de1..3afd5a1a19 100644
--- a/common/locales/es/faq.json
+++ b/common/locales/es/faq.json
@@ -13,8 +13,8 @@
"iosFaqAnswer3": "Tus tareas cambian de color según que tan bien las cumplas! Cada tarea nueva empieza neutralmente con el color amarillo. Realiza tareas Diarias o Hábitos positivos consecutivamente y se volverán azules. Descuida una tarea Diaria o realiza un Habito negativo y se volverán rojos. Entre mas roja sea una tarea, más recompensas recibirás, pero si son tareas Diarias o Hábitos negativos, te harán mas daño! Esto ayuda a motivarte a realizar las tareas que te están dando problemas.",
"webFaqAnswer3": "Tus tareas cambian de color según que tan bien las cumplas! Cada tarea nueva empieza neutralmente con el color amarillo. Realiza tareas Diarias o Hábitos positivos consecutivamente y se volverán azules. Descuida una tarea Diaria o realiza un Habito negativo y se volverán rojos. Entre mas roja sea una tarea, más recompensas recibirás, pero si son tareas Diarias o Hábitos negativos, te harán mas daño! Esto ayuda a motivarte a realizar las tareas que te están dando problemas.",
"faqQuestion4": "¿Por qué mi avatar pierde salud y cómo puedo recuperarla?",
- "iosFaqAnswer4": "There are several things that can cause you to take damage. First, if you left Dailies incomplete overnight, they will damage you. Second, if you tap a bad Habit, it will damage you. Finally, if you are in a Boss Battle with your Party and one of your Party mates did not complete all their Dailies, the Boss will attack you.\n\n The main way to heal is to gain a level, which restores all your health. You can also buy a Health Potion with gold from the Rewards column. Plus, at level 10 or above, you can choose to become a Healer, and then you will learn healing skills. If you are in a Party with a Healer, they can heal you as well.",
- "webFaqAnswer4": "There are several things that can cause you to take damage. First, if you left Dailies incomplete overnight, they will damage you. Second, if you click a bad Habit, it will damage you. Finally, if you are in a Boss Battle with your party and one of your party mates did not complete all their Dailies, the Boss will attack you.\n
\n The main way to heal is to gain a level, which restores all your Health. You can also buy a Health Potion with Gold from the Rewards column. Plus, at level 10 or above, you can choose to become a Healer, and then you will learn healing skills. If you are in a party (under Social > Party) with a Healer, they can heal you as well.",
+ "iosFaqAnswer4": "Existen varias maneras de perder salud en el juego. Primero, si dejas tareas Diarias incompletas tras pasar la medianoche, recibirás daño. Segundo, si le das click a un mal Habito, también perderás salud. Finalmente, si estas en una batalla de jefe con tu grupo y uno de los miembros de grupo no completa todas sus tareas Diarias, el jefe te atacará.\n\n La mejor manera de recuperar tu salud es subiendo de nivel, ya que recupera tu salud al máximo. También, puedes comprar una poción de salud con oro desde la columna de Recompensas. Ademas, en el nivel 10 o más, puedes escoger en volverte un Sanador y aprenderás habilidades de curamiento. Si estas en un grupo con un Sanador, ellos también te pueden sanar.",
+ "webFaqAnswer4": "Existen varias maneras de perder salud en el juego. Primero, si dejas tareas Diarias incompletas tras pasar la medianoche, recibirás daño. Segundo, si le das click a un mal Habito, también perderás salud. Finalmente, si estas en una batalla de jefe con tu grupo y uno de los miembros de grupo no completa todas sus tareas Diarias, el jefe te atacará.\n
\nLa mejor manera de recuperar tu salud es subiendo de nivel, ya que recupera tu salud al máximo. También, puedes comprar una poción de salud con oro desde la columna de Recompensas. Ademas, en el nivel 10 o más, puedes escoger en volverte un Sanador y aprenderás habilidades de curamiento. Si estas en un grupo ( en Social> Grupo) con un Sanador, ellos también te pueden sanar.",
"faqQuestion5": "¿Cómo puedo jugar a Habitica con mis amigos?",
"iosFaqAnswer5": "The best way is to invite them to a Party with you! Parties can go on quests, battle monsters, and cast skills to support each other. Go to Menu > Party and click \"Create New Party\" if you don't already have a Party. Then tap on the Members list, and tap Invite in the upper right-hand corner to invite your friends by entering their User ID (a string of numbers and letters that they can find under Settings > Account Details on the app, and Settings > API on the website). On the website, you can also invite friends via email, which we will add to the app in a future update.\n\nOn the website, you and your friends can also join Guilds, which are public chat rooms. Guilds will be added to the app in a future update!",
"webFaqAnswer5": "The best way is to invite them to a party with you, under Social > Party! Parties can go on quests, battle monsters, and cast skills to support each other. You can also join guilds together (Social > Guilds). Guilds are chat rooms focusing on a shared interest or the pursuit of a common goal, and can be public or private. You can join as many guilds as you'd like, but only one party.\n
\n For more detailed info, check out the wiki pages on [Parties](http://habitrpg.wikia.com/wiki/Party) and [Guilds](http://habitrpg.wikia.com/wiki/Guilds).",
diff --git a/common/locales/es/front.json b/common/locales/es/front.json
index 93f7eec4c3..c1fb40679f 100644
--- a/common/locales/es/front.json
+++ b/common/locales/es/front.json
@@ -180,13 +180,13 @@
"merchandiseInquiries": "Consultas de Merchandise",
"marketingInquiries": "Consultas de Marketing/Social Media",
"tweet": "Tuitear",
- "apps": "Apps",
- "notifyAndroidApp": "Want us to notify you when the Android app is ready? Sign up for this mailing list!",
- "checkOutIOSApp": "Check out our new iOS App!",
+ "apps": "Aplicaciones",
+ "notifyAndroidApp": "Quieres que te notifiquemos cuando nuestra aplicación para Android esté lista? Suscríbete a esta lista de correo!",
+ "checkOutIOSApp": "Revisa nuestra nueva aplicación en iOS!",
"imagine1": "Imagine if improving your life were as fun as playing a game.",
- "landingCopy1": "Advance in the game by completing your real-life tasks.",
+ "landingCopy1": "Progresa en el juego completando tareas de la vida real.",
"landingCopy2": "Battle monsters with friends to stay accountable to your goals.",
"landingCopy3": "Join over <%= userCount %> people having fun as they improve their lives.",
- "alreadyHaveAccount": "I already have an account!",
- "getStartedNow": "Get Started Now!"
+ "alreadyHaveAccount": "Ya tengo una cuenta!",
+ "getStartedNow": "Empieza ahora!"
}
\ No newline at end of file
diff --git a/common/locales/es/generic.json b/common/locales/es/generic.json
index 681695781b..c72246da4c 100644
--- a/common/locales/es/generic.json
+++ b/common/locales/es/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "¡ Celebró <%= number %> Bautizos! Gracias por ser un magnífico usuario.",
"achievementDilatory": "Salvador de Dilatoria",
"achievementDilatoryText": "¡Ayudó a derrotar al Dread Drag'on de Dilatoria durante el evento Summer Splash del 2014!",
- "costumeContest": "Concurso de Disfraces 2014",
- "costumeContestText": "Participó en el Concurso de Disfraces de Halloween 2014. Mira otra entradas en blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Miembro desde",
"lastLoggedIn": "- Última conexión",
"notPorted": "Esta función no se ha traido del sitio original",
diff --git a/common/locales/es/groups.json b/common/locales/es/groups.json
index ec6e4035cd..ce51ac4589 100644
--- a/common/locales/es/groups.json
+++ b/common/locales/es/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "El chat de este grupo está vacío. Escribe un mensaje en el cuadro de arriba para romper el hielo.",
"guildChatEmpty": "El chat de este gremio está vacío. Escribe un mensaje en el cuadro de arriba para empezar una conversación.",
"possessiveParty": "Grupo de <%= name %>",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/es/noscript.json b/common/locales/es/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/es/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/es/npc.json b/common/locales/es/npc.json
index 21a11636e1..a3d54efa6a 100644
--- a/common/locales/es/npc.json
+++ b/common/locales/es/npc.json
@@ -14,7 +14,7 @@
"displayItemForGold": "Do you want to sell a <%= itemType %>?",
"displayEggForGold": "Do you want to sell a <%= itemType %> Egg?",
"displayPotionForGold": "Do you want to sell a <%= itemType %> Potion?",
- "sellForGold": "Sell it for <%= gold %> Gold",
+ "sellForGold": "Véndelo por <%= gold %> de oro",
"buyGems": "Comprar Gemas",
"justin": "Justin",
"ian": "Ian",
diff --git a/common/locales/es_419/faq.json b/common/locales/es_419/faq.json
index e1c6002d73..f6a7b7dbce 100644
--- a/common/locales/es_419/faq.json
+++ b/common/locales/es_419/faq.json
@@ -4,8 +4,8 @@
"iosFaqAnswer0": "Primero crea las tareas que piensas hacer en tu día a día Luego, a medida completes las tareas en la vida real, marca la casilla correspondiente, esto te dará oro y experiencia. El oro sirve para comprar equipamiento e Items, asi como también, recompensas personalizadas. El ganar experiencia, hará que tu personaje suba de nivel y puedas desbloquear contenido como Mascotas, Habilidades y Misiones! Puedes personalizar tu personaje en el menu Usuario > Avatar.\n\nAlgunas datos para ir empezando: Cliquea el (+) en el borde superior derecho para agregar tareas nuevas. Pulsa en una tarea existente para editarla y arrástrala hacia la izquierda si deseas borrarla. Puedes ordenar tus tareas usando Etiquetas en el borde superior izquierdo asi como también puedes contraer las listas de control cliqueando en la burbuja que se encuentra a su lado.",
"webFaqAnswer0": "Primero crea las tareas que piensas hacer en tu día a día Luego, a medida completes las tareas en la vida real, marca la casilla correspondiente, esto te dará oro y experiencia. El oro sirve para comprar equipamiento e Items, asi como también, recompensas personalizadas. El ganar experiencia, hará que tu personaje suba de nivel y puedas desbloquear contenido como Mascotas, Habilidades y Misiones! Para mas detalle, la wiki posee un excelente tutorial paso por paso sobre el juego [Aqui Mismo](http://habitica.wikia.com/wiki/Habitica_Wiki).",
"faqQuestion1": "¿Cómo creo mis tareas?",
- "iosFaqAnswer1": "Good Habits (the ones with a +) are tasks that you can do many times a day, such as eating vegetables. Bad Habits (the ones with a -) are tasks that you should avoid, like biting nails. Habits with a + and a - have a good choice and a bad choice, like taking the stairs vs. taking the elevator. Good Habits award experience and gold. Bad Habits subtract health.\n\n Dailies are tasks that you have to do every day, like brushing your teeth or checking your email. You can adjust the days that a Daily is due by tapping to edit it. If you skip a Daily that is due, your avatar will take damage overnight. Be careful not to add too many Dailies at once!\n\n To-Dos are your To-Do list. Completing a To-Do earns you gold and experience. You never lose health from To-Dos. You can add a due date to a To-Do by tapping to edit.",
- "webFaqAnswer1": "Good Habits (the ones with a ) are tasks that you can do many times a day, such as eating vegetables. Bad Habits (the ones with a ) are tasks that you should avoid, like biting nails. Habits with a and a have a good choice and a bad choice, like taking the stairs vs. taking the elevator. Good Habits award Experience and Gold. Bad Habits subtract Health.\n
\n Dailies are tasks that you have to do every day, like brushing your teeth or checking your email. You can adjust the days that a Daily is due by clicking the pencil item to edit it. If you skip a Daily that is due, your avatar will take damage overnight. Be careful not to add too many Dailies at once!\n
\n To-Dos are your To-Do list. Completing a To-Do earns you Gold and Experience. You never lose Health from To-Dos. You can add a due date to a To-Do by clicking the pencil icon to edit.",
+ "iosFaqAnswer1": "Buenos hábitos (los que tienen un signo +) son tareas que puedes hacer varias veces durante el día, tal como comer vegetales. Malos hábitos (los que tienen un signo -) son tareas que deberías evitar, como comerte las uñas. Hábitos con un signo + y un signo - te dejan una buena opción y una mala opción, como subir las escaleras vs. tomar el ascensor. Los buenos hábitos te recompensan con experiencia y oro. Los malos hábitos te quitan salud.",
+ "webFaqAnswer1": "Buenos hábitos (los que tienen un signo ) son tareas que puedes hacer varias veces durante el día, tal como comer vegetales. Malos hábitos (los que tienen un signo ) son tareas que deberías evitar, como comerte las uñas. Hábitos con un signo y un signo te dejan una buena opción y una mala opción, como subir las escaleras vs. tomar el ascensor. Los buenos hábitos te recompensan con experiencia y oro. Los malos hábitos te quitan salud.\n
\nLas tareas diarias son tareas que tienes que hacer todos los días, como cepillarte los dientes o revisar tu correo. Puedes ajustar los días en que las Tareas Diarias vencen al haciendo click en el lápiz para editarla. Si dejas de hacer una Tarea Diaria el día que vence, tu avatar recibirá daño durante la noche. ¡Ten cuidado de no añadir demasiadas Tareas Diarias a la vez!\n
\nPendientes son tu lista de cosas por hacer. Completar un Pendiente te hace ganar oro y experiencia. Nunca pierdes salud a causa de un Pendiente. Puedes añadir una fecha de vencimiento a un Pendiente haciendo click en el lápiz para editarlo.",
"faqQuestion2": "¿Cuáles podrían ser ejemplos de tareas?",
"iosFaqAnswer2": "The wiki has four lists of sample tasks to use as inspiration:\n
\n * [Sample Habits](http://habitica.wikia.com/wiki/Sample_Habits)\n * [Sample Dailies](http://habitica.wikia.com/wiki/Sample_Dailies)\n * [Sample To-Dos](http://habitica.wikia.com/wiki/Sample_To-Dos)\n * [Sample Custom Rewards](http://habitica.wikia.com/wiki/Sample_Custom_Rewards)",
"webFaqAnswer2": "The wiki has four lists of sample tasks to use as inspiration:\n * [Sample Habits](http://habitica.wikia.com/wiki/Sample_Habits)\n * [Sample Dailies](http://habitica.wikia.com/wiki/Sample_Dailies)\n * [Sample To-Dos](http://habitica.wikia.com/wiki/Sample_To-Dos)\n * [Sample Custom Rewards](http://habitica.wikia.com/wiki/Sample_Custom_Rewards)",
@@ -30,13 +30,13 @@
"faqQuestion9": "¿Cómo peleo contra los monstruos y hago Misiones?",
"iosFaqAnswer9": "First, you need to join or start a Party (see above). Although you can battle monsters alone, we recommend playing in a group, because this will make Quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating!\n\n Next, you need a Quest Scroll, which are stored under Menu > Items. There are three ways to get a scroll:\n\n - At level 15, you get a Quest-line, aka three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively. \n - When you invite people to your Party, you'll be rewarded with the Basi-List Scroll!\n - You can buy Quests from the Quests Page on the [website](https://habitica.com/#/options/inventory/quests) for Gold and Gems. (We will add this feature to the app in a future update.)\n\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading by pulling down on the screen may be required to see the Boss's health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your Party at the same time that you damage the Boss. \n\n After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.",
"webFaqAnswer9": "First, you need to join or start a party (under Social > Party). Although you can battle monsters alone, we recommend playing in a group, because this will make quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating!\n
\n Next, you need a Quest Scroll, which are stored under Inventory > Quests. There are three ways to get a scroll:\n
\n * When you invite people to your party, you’ll be rewarded with the Basi-List Scroll!\n * At level 15, you get a Quest-line, i.e., three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively.\n * You can buy Quests from the Quests Page (Inventory > Quests) for Gold and Gems.\n
\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading may be required to see the Boss's Health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your party at the same time that you damage the Boss.\n
\n After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.",
- "faqQuestion10": "What are Gems, and how do I get them?",
+ "faqQuestion10": "¿Qué son las gemas y cómo las obtengo?",
"iosFaqAnswer10": "Gems are purchased with real money by tapping on the gem icon in the header. When people buy gems, they are helping us to keep the site running. We're very grateful for their support!\n\n In addition to buying gems directly, there are three other ways players can gain gems:\n\n * Win a Challenge on the [website](https://habitica.com) that has been set up by another player under Social > Challenges. (We will be adding Challenges to the app in a future update!)\n * Subscribe on the [website](https://habitica.com/#/options/settings/subscription) and unlock the ability to buy a certain number of gems per month.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\n Keep in mind that items purchased with gems do not offer any statistical advantages, so players can still make use of the app without them!",
"webFaqAnswer10": "Gems are [purchased with real money](https://habitica.com/#/options/settings/subscription), although [subscribers](https://habitica.com/#/options/settings/subscription) can purchase them with Gold. When people subscribe or buy Gems, they are helping us to keep the site running. We're very grateful for their support!\n
\n In addition to buying Gems directly or becoming a subscriber, there are two other ways players can gain Gems:\n
\n * Win a Challenge that has been set up by another player under Social > Challenges.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica)\n
\n Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the site without them!",
"faqQuestion11": "¿Cómo reporto un error o pido una nueva función?",
- "iosFaqAnswer11": "You can report a bug, request a feature, or send feedback under Menu > Report a Bug and Menu > Send Feedback! We'll do everything we can to assist you.",
+ "iosFaqAnswer11": "Puedes reportar un error, solicitar una funcionalidad o enviarnos tus comentarios yendo a Menu > Reportar Error y Menu > ¡Enviar comentarios! Haremos todo lo posible por ayudarte.",
"webFaqAnswer11": "Bug reports are collected on GitHub. Go to [Help > Report a Bug](https://github.com/HabitRPG/habitrpg/issues/2760) and follow the instructions. Don't worry, we'll get you fixed up soon!\n
\n Feature requests are collected on Trello. Go to [Help > Request a Feature](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) and follow the instructions. Ta-da!",
- "faqQuestion12": "How do I battle a World Boss?",
+ "faqQuestion12": "¿Cómo peleo con un Jefe Mundial?",
"iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
"webFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n
\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n
\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n
\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
"iosFaqStillNeedHelp": "Si tienes una pregunta que no se encuentra en la lista, pregúntanos en el chat de la Taberna en Menú > Taberna! Estaremos encantados de responderte.",
diff --git a/common/locales/es_419/generic.json b/common/locales/es_419/generic.json
index 7f07471aae..37d55140fc 100644
--- a/common/locales/es_419/generic.json
+++ b/common/locales/es_419/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "¡Celebró <%= number %> Días del Nombramiento de Habitica! Gracias por ser un usuario fantástico.",
"achievementDilatory": "Salvador de dilatoria",
"achievementDilatoryText": "¡Ayudó a vencer el Temido Drag'on de Dilatoria durante el Evento de bienvenida del verano de 2014!",
- "costumeContest": "Concurso de disfraces del 2014",
- "costumeContestText": "Participó en el Concurso de disfraces de Halloween del 2014. ¡Ve algunas de las entradas en blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Miembro desde",
"lastLoggedIn": "- Última conexión",
"notPorted": "Esta función aún no se ha traído del sitio original.",
diff --git a/common/locales/es_419/groups.json b/common/locales/es_419/groups.json
index 6544d1a3ce..483a0e7696 100644
--- a/common/locales/es_419/groups.json
+++ b/common/locales/es_419/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "¡El chat de tu equipo está vacío! Escribe un mensaje en el recuadro de arriba para empezar a conversar.",
"guildChatEmpty": "¡El chat de este gremio está vacío! Escribe un mensaje en el recuadro de arriba para empezar a conversar.",
"possessiveParty": "El equipo de <%= name %>",
- "requestAcceptGuidelines": "Si quieres publicar mensajes en la Taberna o en cualquier chat de grupo o gremio, por favor primero lee nuestras Normas de la Comunidad y selecciona el botón \"Acepto las Normas\" para indicar que las aceptas."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/es_419/noscript.json b/common/locales/es_419/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/es_419/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/es_419/pets.json b/common/locales/es_419/pets.json
index 60c80ac2b0..a32c59397f 100644
--- a/common/locales/es_419/pets.json
+++ b/common/locales/es_419/pets.json
@@ -59,15 +59,15 @@
"useGems": "Si deseas una mascota pero no puedes esperar más para el botín, ¡usa Gemas en Inventario > Mercardo para comprar una!",
"hatchAPot": "¿Eclosionar un <%= egg %> <%= potion %>?",
"hatchedPet": "You hatched a <%= potion %> <%= egg %>!",
- "displayNow": "Display Now",
- "displayLater": "Display Later",
+ "displayNow": "Mostrar Ahora",
+ "displayLater": "Mostrar Más Tarde",
"earnedCompanion": "With all your productivity, you've earned a new companion. Feed it to make it grow!",
"feedPet": "¿Dar de comer <%= article %><%= text %> a tu <%= name %>?",
"useSaddle": "¿Ensillar <%= pet %>?",
"raisedPet": "You grew a <%= pet %>!",
"earnedSteed": "By completing your tasks, you've earned a faithful steed!",
- "rideNow": "Ride Now",
- "rideLater": "Ride Later",
+ "rideNow": "Montar Ahora",
+ "rideLater": "Montar Más Tarde",
"petName": "<%= egg %> <%= potion %>",
"mountName": "<%= mount %> <%= potion %>",
"petKeyName": "Llave de la caseta",
diff --git a/common/locales/fr/challenge.json b/common/locales/fr/challenge.json
index 73020422fc..b88ace32fc 100644
--- a/common/locales/fr/challenge.json
+++ b/common/locales/fr/challenge.json
@@ -60,8 +60,8 @@
"noPermissionEditChallenge": "Vous n'avez pas le droit d'éditer ce défi.",
"noPermissionDeleteChallenge": "Vous n'avez pas le droit de supprimer ce défi.",
"noPermissionCloseChallenge": "Vous n'avez pas le droit de fermer ce défi.",
- "congratulations": "Congratulations!",
- "hurray": "Hurray!",
+ "congratulations": "Félicitations !",
+ "hurray": "Hourra !",
"noChallengeOwner": "Sans propriétaire",
"noChallengeOwnerPopover": "Ce défi n'a pas de propriétaire, parce que la personne qui a créé le défi a supprimé son compte."
}
\ No newline at end of file
diff --git a/common/locales/fr/character.json b/common/locales/fr/character.json
index 962271a97b..1d8c276133 100644
--- a/common/locales/fr/character.json
+++ b/common/locales/fr/character.json
@@ -65,10 +65,10 @@
"ultimGearText": "S'est équipé avec les meilleurs armes et les meilleures armures pour les classes suivantes :",
"level": "Niveau",
"levelUp": "Montée de niveau !",
- "gainedLevel": "You gained a level!",
- "leveledUp": "By accomplishing your real-life goals, you've grown to Level <%= level %>!",
- "fullyHealed": "You have been fully healed!",
- "huzzah": "Huzzah!",
+ "gainedLevel": "Vous avez passé un niveau !",
+ "leveledUp": "En atteignant vos buts dans la vie réelle, vous êtes arrivé au niveau<%= level %> !.",
+ "fullyHealed": "Vous avez été complètement guéri !",
+ "huzzah": "Bravo !",
"mana": "Mana",
"hp": "Vie",
"mp": "PM",
diff --git a/common/locales/fr/content.json b/common/locales/fr/content.json
index a7bdbaa6f7..71919b718c 100644
--- a/common/locales/fr/content.json
+++ b/common/locales/fr/content.json
@@ -98,9 +98,9 @@
"questEggFrogText": "Grenouille",
"questEggFrogMountText": "Grenouille",
"questEggFrogAdjective": "un princier",
- "questEggSnakeText": "Snake",
- "questEggSnakeMountText": "Snake",
- "questEggSnakeAdjective": "a slithering",
+ "questEggSnakeText": "Serpent",
+ "questEggSnakeMountText": "Serpent",
+ "questEggSnakeAdjective": "un rampant",
"eggNotes": "Trouvez une potion d’éclosion à verser sur cet œuf et il en sortira <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "de Base",
"hatchingPotionWhite": "Blanc",
diff --git a/common/locales/fr/front.json b/common/locales/fr/front.json
index 1e509f50f3..b64cb1159e 100644
--- a/common/locales/fr/front.json
+++ b/common/locales/fr/front.json
@@ -74,7 +74,7 @@
"infhQuote": "[Habitica] m'a vraiment aidé à définir une structure à mon quotidien à l'université.",
"invalidEmail": "Une adresse mail valide est nécessaire pour lancer une réinitialisation du mot de passe.",
"irishfeet123Quote": "J'ai de terribles habitudes avec le nettoyage de ma place à table après le repas, et je laissais mes tasses partout. [Habitica] a réglé ça !",
- "joinOthers": "Join <%= userCount %> people making it fun to achieve goals!",
+ "joinOthers": "Rejoignez <%= userCount %> personnes qui s'amusent en réalisant leurs objectifs !",
"kazuiQuote": "Avant [Habitica], j'étais coincé sur ma thèse, et insatisfait avec ma discipline personnelle à propos des tâches ménagère, et des choses comme apprendre le vocabulaire ou étudier la théorie de Go. Il s'avère que découper toutes ces tâches en petites listes de vérification gérables m'a permis de rester motivé et continuellement actif.",
"landingadminlink": "solutions administratives",
"landingend": "Pas encore convaincu·e ?",
@@ -183,10 +183,10 @@
"apps": "Applications",
"notifyAndroidApp": "Vous voulez savoir quand l'application Android sera prête ? Inscrivez-vous à la mailing list !",
"checkOutIOSApp": "Découvrez notre nouvelle application iOS !",
- "imagine1": "Imagine if improving your life were as fun as playing a game.",
- "landingCopy1": "Advance in the game by completing your real-life tasks.",
- "landingCopy2": "Battle monsters with friends to stay accountable to your goals.",
- "landingCopy3": "Join over <%= userCount %> people having fun as they improve their lives.",
- "alreadyHaveAccount": "I already have an account!",
- "getStartedNow": "Get Started Now!"
+ "imagine1": "Imaginez si progresser dans votre vie était aussi amusant que de jouer.",
+ "landingCopy1": "Progressez dans le jeu en effectuant vos tâches réelles. ",
+ "landingCopy2": "Combattez des monstres avec vos amis pour vous aider à vous responsabiliser pour atteindre vos buts.",
+ "landingCopy3": "Rejoignez plus de <%= userCount %> personnes qui s'amusent en progressant dans leur vie.",
+ "alreadyHaveAccount": "J'ai déjà un compte !",
+ "getStartedNow": "Commencer maintenant !"
}
\ No newline at end of file
diff --git a/common/locales/fr/generic.json b/common/locales/fr/generic.json
index ab35d27f62..265aa8dc2f 100644
--- a/common/locales/fr/generic.json
+++ b/common/locales/fr/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Fêté <%= number %> Jours d'Appellation ! Merci à vous pour être un utilisateur fantastique.",
"achievementDilatory": "Sauveur de Dilatoire",
"achievementDilatoryText": "A contribué à vaincre le Redoutable Drag'on de Dilatoire au cours du \"Summer Splash Event\" 2014 !",
- "costumeContest": "Concours de Costumes 2014",
- "costumeContestText": "A participé au Concours de Costumes d'Halloween 2014. Découvrez certaines des participations sur blog.habitica.com/tagged/cosplay !",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Membre depuis",
"lastLoggedIn": "- Dernière connexion",
"notPorted": "Cette fonction n'a pas encore été importée depuis le site original.",
@@ -135,16 +136,16 @@
"thankyou3": "Je suis très reconnaissant - merci !",
"thankyouCardAchievementTitle": "Grandement Reconnaissant",
"thankyouCardAchievementText": "Merci d'être reconnaissant ! A envoyé ou reçu <%= cards %> cartes de remerciements.",
- "streakAchievement": "You earned a streak achievement!",
- "firstStreakAchievement": "21-Day Streak",
- "streakAchievementCount": "<%= streaks %> 21-Day Streaks",
- "twentyOneDays": "You've completed your Daily for 21 days in a row!",
- "dontBreakStreak": "Amazing job. Don't break the streak!",
- "dontStop": "Don't Stop Now!",
- "levelUpShare": "I leveled up in Habitica by improving my real-life habits!",
- "questUnlockShare": "I unlocked a new quest in Habitica!",
- "hatchPetShare": "I hatched a new pet by completing my real-life tasks!",
- "raisePetShare": "I raised a pet into a mount by completing my real-life tasks!",
- "wonChallengeShare": "I won a challenge in Habitica!",
- "achievementShare": "I earned a new achievement in Habitica!"
+ "streakAchievement": "Vous avez obtenu un succès de combo !",
+ "firstStreakAchievement": "Combo de 21 jours",
+ "streakAchievementCount": "<%= streaks %> combos de 21 jours",
+ "twentyOneDays": "Vous avez effectué votre tâche Quotidienne 21 jours d'affilée !",
+ "dontBreakStreak": "Bien joué ! Continuez à augmenter votre combo !",
+ "dontStop": "N'abandonnez pas !",
+ "levelUpShare": "J'ai pris un niveau en Habitica en faisant des progrès dans mes habitudes réelles !",
+ "questUnlockShare": "J'ai déverrouillé une nouvelle quête sur Habitica !",
+ "hatchPetShare": "J'ai fait éclore un familier en terminant des tâches de ma vie réelle!",
+ "raisePetShare": "J'ai transformé un familier en monture en terminant des tâches de ma vie réelle!",
+ "wonChallengeShare": "J'ai gagné un défi sur Habitica !",
+ "achievementShare": "J'ai gagné un nouveau succès sur Habitica !"
}
\ No newline at end of file
diff --git a/common/locales/fr/groups.json b/common/locales/fr/groups.json
index 9b7bbb12bd..98dee15487 100644
--- a/common/locales/fr/groups.json
+++ b/common/locales/fr/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Votre discussion d'équipe est vide ! Écrivez un message dans le champ ci-dessus pour commencer la discussion.",
"guildChatEmpty": "La discussion de cette guilde est vide ! Écrivez un message dans le champ ci-dessus pour commencer la discussion.",
"possessiveParty": "Équipe de <%= name %>",
- "requestAcceptGuidelines": "Avant de poster un message dans la Taverne, dans votre Équipe ou dans une Guilde, veuillez lire nos <%= linkStart %>Règles de Vie en Communauté<%= linkEnd %> et cliquer sur le bouton ci-dessous pour indiquer que vous les avez compris ."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/fr/noscript.json b/common/locales/fr/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/fr/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/fr/pets.json b/common/locales/fr/pets.json
index 8f53006985..9e73c229d3 100644
--- a/common/locales/fr/pets.json
+++ b/common/locales/fr/pets.json
@@ -58,16 +58,16 @@
"firstDrop": "Vous avez débloqué le système d'objets ! À présent lorsque vous complétez des tâches, vous avez une petite chance de trouver un objet. Vous venez de trouver un <%= eggText %> Œuf ! <%= eggNotes %>",
"useGems": "Si vous voulez un Familier et que vous n'en pouvez plus d'attendre de le trouver, utilisez des Gemmes dans Inventaire > Marchépour l'acheter !",
"hatchAPot": "Faire éclore un <%= egg %> <%= potion %> ?",
- "hatchedPet": "You hatched a <%= potion %> <%= egg %>!",
- "displayNow": "Display Now",
- "displayLater": "Display Later",
- "earnedCompanion": "With all your productivity, you've earned a new companion. Feed it to make it grow!",
+ "hatchedPet": "Vous avez fait éclore un <%= egg %><%= potion %>!",
+ "displayNow": "Afficher tout de suite",
+ "displayLater": "Afficher plus tard",
+ "earnedCompanion": "Grâce à votre productivité, vous avez gagné un nouveau compagnon. Nourrissez-le pour le faire grandir !",
"feedPet": "Donner <%= article %><%= text %> à <%= name %> ?",
"useSaddle": "Seller <%= pet %> ?",
- "raisedPet": "You grew a <%= pet %>!",
- "earnedSteed": "By completing your tasks, you've earned a faithful steed!",
- "rideNow": "Ride Now",
- "rideLater": "Ride Later",
+ "raisedPet": "Vous avez élevé un·e <%= pet %> !",
+ "earnedSteed": "En effectuant vos tâches, vous avez gagné un fidèle coursier !",
+ "rideNow": "Monter tout de suite",
+ "rideLater": "Monter plus tard",
"petName": "<%= egg %> <%= potion %>",
"mountName": "<%= mount %> <%= potion %>",
"petKeyName": "Clé du Chenil",
diff --git a/common/locales/fr/quests.json b/common/locales/fr/quests.json
index 3afa17d79c..a619951a9a 100644
--- a/common/locales/fr/quests.json
+++ b/common/locales/fr/quests.json
@@ -38,12 +38,12 @@
"bossDmg2": "Seuls les participants pourront combattre le boss et partager le butin de la quête.",
"bossDmg1Broken": "Chaque tâche Quotidienne ou À Faire et chaque Habitude positive effectuée inflige des dommages au boss... Frappez plus fort avec des tâches plus rouges ou avec les sorts Frappe Brutale et Explosion de Flammes... Le boss infligera des dommages à chacun des participants de la quête pour chaque Quotidienne manquée (multipliés par la Force du boss) en plus des dommages normaux... Alors protégez votre équipe en effectuant vos Quotidiennes... Tout dommage causé par vous et par le boss est pris en compte au cron (la réinitialisation de votre journée)...",
"bossDmg2Broken": "Seuls les participants pourront combattre le boss et partager le butin de la quête...",
- "tavernBossInfo": "Complétez les Quotidiennes et les Tâches À faire et mainenez vous bonnes habitudes pour blesser le Boss Mondial! Les Quotidiennes incomplètes remplissent la jauge d'Attaques d'Echappement. Lorsque la jauge d'Attaques d'échappement est pleine, le Boss Mondial attaquera un PNJ. Un Boss Mondial ne blessera jamais de joueurs individiels ou leurs comptes d'aucune façon. Seules les tâches des comptes actifs ne reposant pas à l'Auberge seront compabilisées.",
- "tavernBossInfoBroken": "Effectuez vos tâches Quotidiennes et À Faire et maintenez vos Habitudes positives pour blesser le Boss Mondial... Chaque Quotidienne non effectuée remplit la barre d'Attaque d'Échappement... Lorsque la barre d'Attaque d'Échappement est pleine, le Boss Mondial attaquera un PNJ... Un Boss Mondial ne blessera jamais des joueurs individuels ou des comptes de quelque façon que ce soit... Seules les tâches des comptes actifs de joueurs qui ne se reposent pas à l'Auberge sont prises en compte...",
+ "tavernBossInfo": "Complétez les Quotidiennes et les Tâches À faire et maintenez vous bonnes habitudes pour blesser le Boss Mondial ! Les Quotidiennes incomplètes remplissent la jauge d'Harassement. Lorsque la jauge d'Harassement est pleine, le Boss Mondial attaquera un PNJ. Un Boss Mondial ne blessera jamais de joueurs individuels ou leurs comptes d'aucune façon. Seules les tâches des comptes actifs ne reposant pas à l'Auberge seront comptabilisées.",
+ "tavernBossInfoBroken": "Effectuez vos tâches Quotidiennes et À Faire et maintenez vos Habitudes positives pour blesser le Boss Mondial... Chaque Quotidienne non effectuée remplit la barre d'Harassement... Lorsque la barre d'Harassement est pleine, le Boss Mondial attaquera un PNJ... Un Boss Mondial ne blessera jamais des joueurs individuels ou des comptes de quelque façon que ce soit... Seules les tâches des comptes actifs de joueurs qui ne se reposent pas à l'Auberge sont prises en compte...",
"bossColl1": "Pour obtenir des objets, accomplissez vos tâches positives. Vous trouvez les objets de quêtes de la même façon que vous trouvez les objets normaux mais vous ne les verrez que le jour suivant. À ce moment, tous les objets de quêtes que vous aurez trouvés seront comptabilisés et s'ajouteront à la pile.",
"bossColl2": "Seuls les participants peuvent collecter des objets et partager le butin de la quête.",
- "bossColl1Broken": "Pour collectionnner des objets, accomplissez vos tâches positives... Vous trouverez les objets de quête exactement comme les objets normaux, mais vous ne les verrez que le jour suivant, lorsque tous les objets trouvés seront comptabilisés dans votre collection...",
- "bossColl2Broken": "Seuls les participants peuvent collectioner des objets et partager le butin de la quête",
+ "bossColl1Broken": "Pour collectionner des objets, accomplissez vos tâches positives... Vous trouverez les objets de quête exactement comme les objets normaux, mais vous ne les verrez que le jour suivant, lorsque tous les objets trouvés seront comptabilisés dans votre collection...",
+ "bossColl2Broken": "Seuls les participants peuvent collectionner des objets et partager le butin de la quête",
"abort": "Abandonner",
"leaveQuest": "Quitter la Quête",
"sureLeave": "Êtes-vous sûr de vouloir quitter la quête en cours ? Tout votre progrès dans cette quête sera perdu.",
@@ -77,6 +77,6 @@
"startQuest": "Commencer la Quête",
"whichQuestStart": "Quelle quête voulez-vous démarrer ?",
"getMoreQuests": "Obtenez plus de quêtes",
- "unlockedAQuest": "You unlocked a quest!",
- "leveledUpReceivedQuest": "You leveled up to Level <%= level %> and received a quest scroll!"
+ "unlockedAQuest": "Vous avez déverrouillé une quête !",
+ "leveledUpReceivedQuest": "Vous avez atteint le niveau <%= level %> et reçu un parchemin de quête !"
}
\ No newline at end of file
diff --git a/common/locales/fr/questscontent.json b/common/locales/fr/questscontent.json
index 3fa6d9b496..b8ffb3e076 100644
--- a/common/locales/fr/questscontent.json
+++ b/common/locales/fr/questscontent.json
@@ -267,11 +267,11 @@
"questFrogCompletion": "La grenouille se replie dans la vase, vaincue. Tandis qu'elle s'éloigne en titubant, la vase bleue disparaît, laissant la voie libre.
Au beau milieu du chemin se trouvent trois oeufs immaculés. \"L'enveloppe est tellement claire qu'on peut même voir les têtards au travers!\" dit @Breadstrings. \"Tiens, tu devrais les prendre.\"",
"questFrogBoss": "La Grenouille du Désordre",
"questFrogDropFrogEgg": "Grenouille (Œuf)",
- "questFrogUnlockText": "Déverrouille l'achat d’œufs de grenouilles au Marché",
- "questSnakeText": "The Serpent of Distraction",
- "questSnakeNotes": "It takes a hardy soul to live in the Sand Dunes of Distraction. The arid desert is hardly a productive place, and the shimmering dunes have led many a traveler astray. However, something has even the locals spooked. The sands have been shifting and upturning entire villages. Residents claim a monster with an enormous serpentine body lies in wait under the sands, and they have all pooled together a reward for whomever will help them find and stop it. The much-lauded snake charmers @EmeraldOx and @PainterProphet have agreed to help you summon the beast. Can you stop the Serpent of Distraction?",
- "questSnakeCompletion": "With assistance from the charmers, you banish the Serpent of Distraction. Though you were happy to help the inhabitants of the Dunes, you can't help but feel a little sad for your fallen foe. While you contemplate the sights, @LordDarkly approaches you. \"Thank you! It's not much, but I hope this can express our gratitude properly.\" He hands you some Gold and... some Snake eggs! You will see that majestic animal again after all.",
- "questSnakeBoss": "Serpent of Distraction",
- "questSnakeDropSnakeEgg": "Snake (Egg)",
- "questSnakeUnlockText": "Unlocks purchasable Snake eggs in the Market"
+ "questFrogUnlockText": "Déverrouille l'achat d’œufs de grenouille au Marché",
+ "questSnakeText": "Le Serpent de la Distraction",
+ "questSnakeNotes": "Vivre dans les Dunes sablonneuses de la Distraction requiert une âme vaillante. En effet, le désert aride n'encourage que trop peu la productivité et les dunes scintillantes ont détourné plus d'un voyageur du droit chemin. Toutefois, une chose effraie même les gens du coin : le désert change et retourne des villages entiers. Les résidents déclarent qu'un monstre au long corps sinueux se cache, en attente, sous les sables du désert. Pour récompenser celui ou celle qui leur viendra en aide en trouvant et en arrêtant cette créature, ils ont mis en commun un butin. Les très célèbres charmeurs de serpent @EmeraldOx et @PainterProphet ont accepté de vous aider à invoquer la bête. Arriverez-vous à arrêter le Serpent de la Distraction?",
+ "questSnakeCompletion": "Grâce à l'assistance des charmeurs, vous bannissez le Serpent de la Distraction. Même si vous êtes heureux d'avoir aidé les habitants des Dunes, vous ne pouvez vous empêcher de ressentir un peu de tristesse pour votre ennemi tombé au combat. Alors que vous contemplez la vue, @LordDarkly vous approche : « Merci ! C'est peu, mais j'espère que ça l'exprime bien notre reconnaissance. » Il vous remet un peu d'Or et... des œufs de serpent ! Vous reverrez donc ce majestueux animal après tout.",
+ "questSnakeBoss": "Serpent de Distraction",
+ "questSnakeDropSnakeEgg": "Serpent (Œuf)",
+ "questSnakeUnlockText": "Déverrouille l'achat d’œufs de serpent au Marché"
}
\ No newline at end of file
diff --git a/common/locales/fr/rebirth.json b/common/locales/fr/rebirth.json
index e2c6a0f1d7..b39703662a 100644
--- a/common/locales/fr/rebirth.json
+++ b/common/locales/fr/rebirth.json
@@ -16,7 +16,7 @@
"rebirthEarnAchievement": "Vous avez également obtenu un Succès pour avoir commencé une nouvelle aventure !",
"beReborn": "Renaître",
"rebirthAchievement": "Vous avez commencé une nouvelle aventure ! C'est votre Renaissance n°<%= number %> et le niveau le plus élevé que vous avez atteint est <%= level %>. Pour cumuler ce Succès, commencez votre nouvelle aventure une fois que vous aurez atteint un niveau encore plus élevé !",
- "rebirthAchievement100": "Vous avez commencé une nouvelle aventure ! C'est votre Renaissance <%= number %>, et le plus haut niveau que vous ayez atteint est 100 ou plus. Pour optimiser ce succès, commencez votre prochaine nouvelle aventure lorsque vous aurez atteint la prochaine centaine !",
+ "rebirthAchievement100": "Vous avez commencé une nouvelle aventure ! C'est votre Renaissance <%= number %>, et le plus haut niveau que vous ayez atteint est 100 ou plus. Pour obtenir ce succès une fois de plus, commencez votre prochaine nouvelle aventure lorsque vous aurez atteint la prochaine centaine !",
"rebirthBegan": "A commencé une Nouvelle Aventure",
"rebirthText": "A débuté <%= rebirths %> Nouvelles Aventures",
"rebirthOrb": "A utilisé un Orbe de Renaissance pour recommencer à zéro après avoir atteint le niveau",
diff --git a/common/locales/fr/settings.json b/common/locales/fr/settings.json
index 1f06c60851..2e86abc4db 100644
--- a/common/locales/fr/settings.json
+++ b/common/locales/fr/settings.json
@@ -14,11 +14,11 @@
"startCollapsedPop": "Avec cette option cochée, la liste des étiquettes d'une tâche sera cachée à l'ouverture de la tâche pour modification.",
"startAdvCollapsed": "Options Avancées des tâches réduites",
"startAdvCollapsedPop": "Avec cette option cochée, les Options Avancées seront cachées quand vous modifierez une tâche pour la première fois.",
- "dontShowAgain": "Don't show this again",
- "suppressLevelUpModal": "Don't show popup when gaining a level",
- "suppressHatchPetModal": "Don't show popup when hatching a pet",
- "suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
- "suppressStreakModal": "Don't show popup when attaining a Streak achievement",
+ "dontShowAgain": "Ne pas montrer ceci de nouveau",
+ "suppressLevelUpModal": "Ne pas montrer de popup lors d'un gain de niveau",
+ "suppressHatchPetModal": "Ne pas montrer de popup lors de l'éclosion d'un familier",
+ "suppressRaisePetModal": "Ne pas montrer de popup lors de la transformation d'un familier en monture",
+ "suppressStreakModal": "Ne pas montrer de popup à l'atteinte d'un combo réussi",
"showTour": "Montrer la visite guidée",
"restartTour": "Relance la visite guidée d'introduction vue lors de votre première visite sur Habitica.",
"showBailey": "Montrer Bailey",
@@ -93,7 +93,7 @@
"loginNameDescription2": "Utilisateur -> Profil",
"loginNameDescription3": "pour modifier le nom qui apparaît sur votre avatar et dans les messages.",
"emailNotifications": "Notifications par Mail",
- "wonChallenge": "You won a Challenge!",
+ "wonChallenge": "Vous avez gagné un Défi !",
"newPM": "Message Privé Reçu",
"giftedGems": "Gemmes Offertes",
"giftedGemsInfo": "<%= amount %> Gemmes - de <%= name %>",
diff --git a/common/locales/he/generic.json b/common/locales/he/generic.json
index b4936f86e0..24c2e71f6a 100644
--- a/common/locales/he/generic.json
+++ b/common/locales/he/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "חגג <%= number %> ימים לציון קריאת Habitica בשמה! תודה על היותך שחקן נהדר! ",
"achievementDilatory": "המושיע/ה של עצלניה",
"achievementDilatoryText": "סייע/ה להביס את הדרעקון האיום של עצלניה באירוע \"שפריץ הקיץ\" של 2014!",
- "costumeContest": "תחרות התחפושות 2014",
- "costumeContestText": "השתתפ/ה בתחרות התחפושות של ליל כל הקדושים בשנת 2014. אפשר לראות חלק מהתחפושות בבלוג שלנו:\nblog.habitica.com/tagged/cosplay",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- חבר/ה מאז",
"lastLoggedIn": "- התחבר/ה לאחרונה",
"notPorted": "התכונה הזו עוד לא יובאה מהאתר המקורי",
diff --git a/common/locales/he/groups.json b/common/locales/he/groups.json
index b94c000559..54dfbf0f6c 100644
--- a/common/locales/he/groups.json
+++ b/common/locales/he/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>'s Party",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/he/noscript.json b/common/locales/he/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/he/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/hu/generic.json b/common/locales/hu/generic.json
index ea1b6a1eed..8c856da870 100644
--- a/common/locales/hu/generic.json
+++ b/common/locales/hu/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Részt vettél <%= number %> Habitika Elnevezési Napon! Köszönjük, hogy ilyen fantasztikus felhasználó vagy.",
"achievementDilatory": "A halogatók megmentője",
"achievementDilatoryText": "Segített legyőzni a Rettenet Késlekedő Sárkányát a 2014 Nyári Loccsanás esemény alatt.",
- "costumeContest": "2014 Jelmez Verseny",
- "costumeContestText": "Részt vett a 2014-es Halloween-i jelmezversenyen. Megnézhetsz néhány versenyzőt a blog.habitica.com/tagged/cosplay címen!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- óta tag",
"lastLoggedIn": "- Utolsó bejelentkezés",
"notPorted": "Ezt a funkciót még nem helyeztük át az eredeti honlapról.",
diff --git a/common/locales/hu/groups.json b/common/locales/hu/groups.json
index 7bee358a7c..7aae2a4000 100644
--- a/common/locales/hu/groups.json
+++ b/common/locales/hu/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>'s Party",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/hu/noscript.json b/common/locales/hu/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/hu/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/it/challenge.json b/common/locales/it/challenge.json
index 812623c046..2b0982dcf2 100644
--- a/common/locales/it/challenge.json
+++ b/common/locales/it/challenge.json
@@ -60,8 +60,8 @@
"noPermissionEditChallenge": "Non hai i permessi per modificare questa sfida",
"noPermissionDeleteChallenge": "Non hai i permessi per eliminare questa sfida",
"noPermissionCloseChallenge": "Non hai i permessi per concludere questa sfida",
- "congratulations": "Congratulations!",
- "hurray": "Hurray!",
+ "congratulations": "Congratulazioni!",
+ "hurray": "Evviva!",
"noChallengeOwner": "nessun proprietario",
"noChallengeOwnerPopover": "Questa sfida non ha un proprietario perché la persona che ha creato la sfida ha eliminato il proprio account."
}
\ No newline at end of file
diff --git a/common/locales/it/character.json b/common/locales/it/character.json
index f2ac6aaa28..e7cceb1379 100644
--- a/common/locales/it/character.json
+++ b/common/locales/it/character.json
@@ -65,10 +65,10 @@
"ultimGearText": "Ha potenziato al massimo armi e armatura per le seguenti classi:",
"level": "Livello",
"levelUp": "Livello aumentato!",
- "gainedLevel": "You gained a level!",
- "leveledUp": "By accomplishing your real-life goals, you've grown to Level <%= level %>!",
- "fullyHealed": "You have been fully healed!",
- "huzzah": "Huzzah!",
+ "gainedLevel": "Nuovo lìvello!",
+ "leveledUp": "Completando obiettivi nella vita reale, hai raggiunto il livello <%= level %>!",
+ "fullyHealed": "Salute ripristinata!",
+ "huzzah": "Urrà!",
"mana": "Mana",
"hp": "PV",
"mp": "PM",
diff --git a/common/locales/it/content.json b/common/locales/it/content.json
index c5a7e44127..054e0537cd 100644
--- a/common/locales/it/content.json
+++ b/common/locales/it/content.json
@@ -81,7 +81,7 @@
"questEggSlimeMountText": "Gelatina di Marshmallow",
"questEggSlimeAdjective": "un dolce",
"questEggSheepText": "Pecorella",
- "questEggSheepMountText": "Pecorella",
+ "questEggSheepMountText": "Pecora",
"questEggSheepAdjective": "una soffice",
"questEggCuttlefishText": "Seppia",
"questEggCuttlefishMountText": "Seppia",
@@ -98,9 +98,9 @@
"questEggFrogText": "Rana",
"questEggFrogMountText": "Rana",
"questEggFrogAdjective": "una principesca",
- "questEggSnakeText": "Snake",
- "questEggSnakeMountText": "Snake",
- "questEggSnakeAdjective": "a slithering",
+ "questEggSnakeText": "Serpente",
+ "questEggSnakeMountText": "Serpente",
+ "questEggSnakeAdjective": "un sinuoso",
"eggNotes": "Trova una pozione per far schiudere questo uovo, e nascerà <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Base",
"hatchingPotionWhite": "Bianco",
diff --git a/common/locales/it/death.json b/common/locales/it/death.json
index 703609d994..4138d7cd64 100644
--- a/common/locales/it/death.json
+++ b/common/locales/it/death.json
@@ -1,7 +1,7 @@
{
"lostAllHealth": "Hai finito i punti salute!",
"dontDespair": "Non disperarti!",
- "deathPenaltyDetails": "Hai perso un livello, il tuo oro e un pezzo di equipaggiamento, ma puoi recuperare tutto lavorando sodo! Buona fortuna - vedrai che ce la farai.",
+ "deathPenaltyDetails": "Hai perso un livello, il tuo oro e un oggetto del tuo equipaggiamento, ma potrai recuperare tutto lavorando sodo! Buona fortuna - vedrai che ce la farai.",
"refillHealthTryAgain": "Ripristina salute e riprovaci",
"dyingOftenTips": "Succede spesso? Qui trovi qualche consiglio! (in inglese)",
"losingHealthWarning": "Attenzione - stai perdendo Salute!",
diff --git a/common/locales/it/faq.json b/common/locales/it/faq.json
index 046cde82f0..d6ff25aa4b 100644
--- a/common/locales/it/faq.json
+++ b/common/locales/it/faq.json
@@ -18,7 +18,7 @@
"faqQuestion5": "Come faccio per giocare in Habitica con i miei amici?",
"iosFaqAnswer5": "Il miglior modo é invitarli in un Gruppo con te! I Gruppi possono intraprendere missioni, sconfiggere mostri, e usare abilità per sopportarsi l'un l'altro. Vai su Menu > Gruppo e clicca \"Crea Nuovo Gruppo\" se non ne hai ancora uno. Dopodiché tocca la lista dei Membri, e tocca Invita nell'angolo in alto a destra per invitare i tuoi amici inserendo il loro ID Utente (una serie di numeri e lettere che possono trovare sotto Impostazioni > Dettagli Account sull'app, e sotto Impostazioni > API sul sito). Sul sito, puoi anche invitare i tuoi amici via email, che aggiungeremo all'applicazione in un aggiornamento futuro.\n\nSul sito, tu e i tuoi amici potete anche unirvi a una Gilda, che sono chat room pubbliche. Le Gilde saranno aggiunte all'app in un aggiornamento futuro!",
"webFaqAnswer5": "Il modo migliore e' quello di invitarli a fare Squadra con te, dal menu' Social > Squadra! Le Squadre possono partecipare alle missioni, combattere i mostri e dividersi le abilita' per aiutarsi a vicenda. Insieme potete inoltre unirvi alle Gilde (Social > Gilde). Le Gilde sono delle chat rivolte ad un interesse condiviso o al raggiungimento di un obiettivo comune, possono essere pubbliche o private. Puoi unirti a tutte le Gilde che desideri ma ad un'unica Squadra.\n
\nPer informazioni piu' dettagliate, puoi guardare sulla pagina wiki [Parties](http://habitrpg.wikia.com/wiki/Party) and [Guilds](http://habitrpg.wikia.com/wiki/Guilds).",
- "faqQuestion6": "Come posso prendere un Animale o una Cavalcatura?",
+ "faqQuestion6": "Come posso ottenere un Animale o una Cavalcatura?",
"iosFaqAnswer6": "Dopo il livello 3 sbloccherai il Sistema di Drop. Ogni volta che completi un'attività avrai una possibilità di vincere un Uovo, una Pozione di schiusura o del Cibo. Questi verranno archiviati in Menù > Inventario.\n\nPer far nascere un Animale avrai bisogno di un Uovo e di una Pozione di schiusura. Premi sull'uovo per scegliere la specie che vuoi far schiudere, e seleziona quindi la Pozione di Schiusura per determinare il colore! Torna su Menù > Animali per equipaggiare il tuo nuovo animale al tuo Avatar premendoci sopra.\n\nPuoi anche far evolvere i tuoi Animali in Cavalcature cibandoli in Menù > Animali. Clicca sul Cibo nel riquadro a destra \"Cibo e Selle\", quindi seleziona l'Animale. Dovrai alimentare l'Animale diverse volte prima di farlo diventare una Cavalcatura, ma se riesci a trovare il suo cibo preferito crescerà molto più in fretta. Fai diverse prove o [Spoiler qui](http://habitica.wikia.com/wiki/Food#Food_Preferences). Una volta che hai una Cavalcatura, vai in Menù > Cavalcature e selezionala per equipaggiarla al tuo avatar.\n\nPotrai inoltre ricevere Uova dalle Missioni Animali completandole.(Vedi sotto per saperne di più sulle Missioni)",
"webFaqAnswer6": "Dopo il livello 3 sbloccherai il Sistema di Drop. Ogni volta che completi un'attività avrai una possibilità di vincere un Uovo, una Pozione di Schiusura o del Cibo. Questi verranno immagazzinati in Inventario > Mercato.\n
\nPer far nascere un Animale avrai bisogno di un Uovo e di una Pozione di schiusura. Premi sull'uovo per scegliere la specie che vuoi far schiudere, e seleziona quindi la Pozione di Schiusura per determinarne il colore! Vai su Inventario > Animali per equipaggiare il tuo nuovo animale al tuo Avatar cliccandoci sopra.\n
\nPuoi anche far evolvere i tuoi Animali in Cavalcature cibandoli in Inventario > Animali. Clicca su un animale e seleziona quindi un pezzo di Cibo dal menù a destra per dargli da mangiare! Dovrai alimentare l'Animale diverse volte prima di farlo diventare una Cavalcatura, ma se riesci a trovare il suo cibo preferito, crescerà molto più in fretta. Fai diverse prove, o [Spoiler qui](http://habitica.wikia.com/wiki/Food#Food_Preferences). Una volta che hai una Cavalcatura, vai in Inventario > Cavalcature e selezionala per equipaggiarla al tuo avatar.\n
\nPotrai inoltre ricevere Uova dalle Missioni Animali completandole. (Vedi sotto per saperne di più sulle Missioni.)",
"faqQuestion7": "Come faccio a diventare un Guerriero, un Mago, un'Assassino o un Guaritore?",
@@ -37,7 +37,7 @@
"iosFaqAnswer11": "Puoi segnalare un bug, richiedere una funzione, o inviare commenti in Menu > Segnala un Bug e Menu > Invia Commenti! Faremo tutto il possibile per aiutarti.",
"webFaqAnswer11": "Errori vengono raggruppati su GitHub. Vai su [Aiuto> denuncia Errore] (https://github.com/HabitRPG/habitrpg/issues/2760) e segui le istruzioni. non ti preoccupare, ripareremo tutto presto.\n
\nRichieste per funzioni nuove vengono consegnate su Trello. Vai su [Aiuto> Richiesta funzione] (https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) e segui le istruzioni. Ta-da!",
"faqQuestion12": "Come combatto un Boss Mondiale?",
- "iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
+ "iosFaqAnswer12": "I World boss sono mostri speciali che appaiono nella Taverna. Tutti i giocatori attivi sul sito combattono automaticamente questo tipo di boss e ogni attività compiuta e abilità reca danno al Boss. \n\nSi può, allo stesso tempo, avere una normale Sfida. Le tue attività e abilità conteranno sia contro il World boss che contro il boss della sfida che la tua squadra sta portandno avanti.\n\nUn World Boss non potrà mai danneggiare te o il tuo account, in nessun modo. Possiede però una barra indicatrice della rabbia che si riempie quando i giocatori saltano le loro attività giornaliere. Se la barra della collera si riempirà, il World boss attaccherà uno dei personaggio non giocatori del sito, la cui immagine cambierà.\n\nPuoi leggere altri contenuti sui [World boss precendenti](http://habitica.wikia.com/wiki/World_Bosses) sul wiki.",
"webFaqAnswer12": "I Boss Mondiali sono mostri speciali che appaiono nella Taverna. Gli utenti attivi Automaticamente combattono il Boss e le loro attività danneggiano il Boss come al solito. \n
\nPuoi anche essere in una missione normale contemporaneamente e le tue attività e abilita' conteranno contro entrambi il Boss mondiale e il Boss/Missione nella tua squadra. \n
\nUn Boss Mondiale non danneggerà mai il tuo conto in qualsiasi modo. Invece, ha una sbarra Rabbia che si riempe quando utenti saltano Dailies. Se la sbarra rabbia e piena , attaccherà uno dei personaggi non giocatori e le loro immagini cambieranno.\n
\nPuoi leggere di più su precedenti boss mondiali [qui] (http://habitica.wikia.com/wiki/World_Bosses)",
"iosFaqStillNeedHelp": "Se hai una domanda non presente in questa lista, vieni a chiedere nella chat della Taverna in Social > Taverna! Saremo felici di aiutarti.",
"webFaqStillNeedHelp": "Se hai una domanda non presente in questa lista, se conosci l'inglese vieni a chiedere nella [Newbies Guild](https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a)! Saremo felici di aiutarti."
diff --git a/common/locales/it/front.json b/common/locales/it/front.json
index 6e9a36a42d..1ab8375cdc 100644
--- a/common/locales/it/front.json
+++ b/common/locales/it/front.json
@@ -57,7 +57,7 @@
"forgotPass": "Password dimenticata",
"frabjabulousQuote": " [Habitica] è la ragione per cui ho ottenuto un fantastico lavoro ben retribuito... e ancor più miracolosamente, ora uso il filo interdentale ogni giorno!",
"free": "Unisciti, è gratis!",
- "gamifyButton": "Fai della tua vita un gioco!",
+ "gamifyButton": "Rendi la tua vita un gioco!",
"goalSample1": "Fai pratica col pianoforte per 1 ora",
"goalSample2": "Lavora all'articolo da pubblicare",
"goalSample3": "Lavora al post per il blog",
@@ -74,7 +74,7 @@
"infhQuote": "[Habitica] mi ha davvero aiutato a dare una struttura alla mia vita universitaria.",
"invalidEmail": "Per resettare la password è necessario un indirizzo email valido.",
"irishfeet123Quote": "Avevo l'orribile abitudine di non ripulire completamente il mio posto dopo mangiato e lasciare tazze ovunque. [Habitica] si è rivelato essere la cura!",
- "joinOthers": "Join <%= userCount %> people making it fun to achieve goals!",
+ "joinOthers": "Unisciti a <%= userCount %> persone che si divertono raggiungendo i propri obiettivi!",
"kazuiQuote": "Prima di [Habitica] ero bloccata con la mia tesi, nonchè insoddisfatta della mia disciplina riguardo i lavori di casa e cose come imparare vocaboli e studiare la teoria del Go. A quanto pare separare queste attività in liste più piccole e maneggevoli è il modo giusto per mantenermi motivata e costantemente al lavoro.",
"landingadminlink": "pacchetti amministrativi",
"landingend": "Non sei ancora convinto?",
@@ -182,11 +182,11 @@
"tweet": "Tweet",
"apps": "Applicazioni",
"notifyAndroidApp": "Vuoi che ti notifichiamo quando l'app per Android é pronta? Iscriviti a questa mailing list!",
- "checkOutIOSApp": "Dai un'occhiata alla nostra nuova App per iOS!",
- "imagine1": "Imagine if improving your life were as fun as playing a game.",
- "landingCopy1": "Advance in the game by completing your real-life tasks.",
- "landingCopy2": "Battle monsters with friends to stay accountable to your goals.",
- "landingCopy3": "Join over <%= userCount %> people having fun as they improve their lives.",
- "alreadyHaveAccount": "I already have an account!",
- "getStartedNow": "Get Started Now!"
+ "checkOutIOSApp": "Dai un'occhiata alla nostra nuova app per iOS!",
+ "imagine1": "Immagina se migliorare la tua vita fosse divertente come un videogioco.",
+ "landingCopy1": "Avanza nel gioco completando attività nella vita reale.",
+ "landingCopy2": "Combatti mostri insieme ai tuoi amici per tenerti motivato e responsabile delle tue attività.",
+ "landingCopy3": "Unisciti a più di <%= userCount %> persone che si divertono migliorando la propria vita.",
+ "alreadyHaveAccount": "Ho già un account!",
+ "getStartedNow": "Comincia ora!"
}
\ No newline at end of file
diff --git a/common/locales/it/gear.json b/common/locales/it/gear.json
index 29d5d3fffd..552b0fa056 100644
--- a/common/locales/it/gear.json
+++ b/common/locales/it/gear.json
@@ -157,7 +157,7 @@
"weaponArmoireBatWandText": "Bacchetta del Pipstrello",
"weaponArmoireBatWandNotes": "Questa bacchetta può trasformare qualunque attività in un pipistrello! Salutalo e guardalo volare via. Aumenta l'Intelligenza <%= int %> di e la Percezione di <%= per % . Baule Incantato: Oggetto Indipendente.",
"weaponArmoireShepherdsCrookText": "Uncino del Pastore",
- "weaponArmoireShepherdsCrookNotes": "Useful for herding gryphons. Increases Constitution by <%= con %>. Enchanted Armoire: Shepherd Set (Item 1 of 3).",
+ "weaponArmoireShepherdsCrookNotes": "Utile per l'allevamento di grifoni. Aumenta la Costituzione di <%= con %>. Baule Incantato: Set del Pastore (Oggetto 1 di 3).",
"armor": "armatura",
"armorBase0Text": "Vestiti semplici",
"armorBase0Notes": "Vestiario comune. Non conferisce alcun bonus.",
@@ -278,7 +278,7 @@
"armorSpecialFall2015MageText": "Stitched Robes",
"armorSpecialFall2015MageNotes": "Every stitch in this armor shimmers with enchantment. Increases Intelligence by <%= int %>. Limited Edition 2015 Autumn Gear.",
"armorSpecialFall2015HealerText": "Potioner Robes",
- "armorSpecialFall2015HealerNotes": "What? Of course that was a potion of constitution. No, you are definitely not turning into a frog! Don't be ribbiticulous. Increases Constitution by <%= con %>. Limited Edition 2015 Autumn Gear.",
+ "armorSpecialFall2015HealerNotes": "Cosa? Certo che quella era una posizione della Costituzione. No, non stai assolutamente diventando una rana! Non essere ridicolo. Aumenta la Costituzione di <%= con %>. Edizione Limitata Equipaggiamento Autunnale 2015.",
"armorMystery201402Text": "Vesti del Messaggero",
"armorMystery201402Notes": "Lucenti e robuste, queste vesti hanno diverse tasche per trasportare le lettere. Non conferisce alcun bonus. Oggetto per abbonati, febbraio 2014.",
"armorMystery201403Text": "Armatura del Proteggiforeste",
@@ -438,14 +438,14 @@
"headSpecialSummer2015MageNotes": "Un potere nascosto brilla nelle maglie di questa sciarpa. Aumenta la Percezione di <%= per %>. Edizione Limitata Equipaggiamento Estate 2015.",
"headSpecialSummer2015HealerText": "Cappello da Marinaio",
"headSpecialSummer2015HealerNotes": "Con il tuo cappello da marinaio piantato fermamente in testa, puoi navigare anche i mari più tempestosi! Aumenta l'intelligenza di <%= int %>. Edizione Limitata Equipaggiamento Estate 2015.",
- "headSpecialFall2015RogueText": "Bat-tle Wings",
+ "headSpecialFall2015RogueText": "Ali da Bat-taglia",
"headSpecialFall2015RogueNotes": "Echolocate your enemies with this powerful helm! Increases Perception by <%= per %>. Limited Edition 2015 Autumn Gear.",
"headSpecialFall2015WarriorText": "Scarecrow Hat",
"headSpecialFall2015WarriorNotes": "Everyone would want this hat--if they only had a brain. Increases Strength by <%= str %>. Limited Edition 2015 Autumn Gear.",
"headSpecialFall2015MageText": "Stitched Hat",
"headSpecialFall2015MageNotes": "Every stitch in this hat augments its power. Increases Perception by <%= per %>. Limited Edition 2015 Autumn Gear.",
- "headSpecialFall2015HealerText": "Hat of Frog",
- "headSpecialFall2015HealerNotes": "This is an extremely serious hat that is worthy of only the most advanced potioners. Increases Intelligence by <%= int %>. Limited Edition 2015 Autumn Gear.",
+ "headSpecialFall2015HealerText": "Cappello di rana",
+ "headSpecialFall2015HealerNotes": "Questo é un cappello estremamente serio di cui sono degli solo gli alchimisti più avanzati. Aumenta l'Intelligenza di <%= int %>. Edizione Limitata Equipaggiamento Autunnale 2015.",
"headSpecialGaymerxText": "Elmo del Guerriero Arcobaleno",
"headSpecialGaymerxNotes": "Per celebrare la \"stagione dell'orgoglio\" e il GaymerX, questo speciale elmo è decorato con un raggiante e colorato tema arcobaleno! Il GaymerX è un evento dedicato al gaming e al \"LGBTQ\", ed è aperto a tutti. Si svolge all'InterContinental di San Francisco dall'11 al 13 luglio! Non conferisce alcun bonus.",
"headMystery201402Text": "Elmo Alato",
@@ -481,17 +481,17 @@
"headArmoireVioletFloppyHatText": "Moscio Cappello Violetto",
"headArmoireVioletFloppyHatNotes": "Molti incantesimi sono stati cuciti in questo semplice cappello, dandogli un piacevole colore viola. Aumenta la Percezione di <%= per %>, l'Intelligenza di <%= int %>, e la Costituzione di <%= con %>. Baule Incantato: Oggetto Indipendente. ",
"headArmoireGladiatorHelmText": "Elmo da Gladiatore",
- "headArmoireGladiatorHelmNotes": "To be a gladiator you must be not only strong.... but cunning. Increases Intelligence by <%= int %> and Perception by <%= per %>. Enchanted Armoire: Gladiator Set (Item 1 of 3).",
+ "headArmoireGladiatorHelmNotes": "Per essere un gladiatore non devi solo essere forte... Ma anche astuto. Aumenta l'Intelligenza di <%= int%> e la Percezione di <%= per %>. Baule Incantato: Set da Gladiatore (Oggetto 1 di 3).",
"headArmoireRancherHatText": "Rancher Hat",
"headArmoireRancherHatNotes": "Round up your pets and wrangle your mounts while wearing this magical Rancher Hat! Increases Strength by <%= str %>, Perception by <%= per %>, and Intelligence by <%= int %>. Enchanted Armoire: Rancher Set (Item 1 of 3).",
"headArmoireBlueHairbowText": "Fiocchetto Blu",
"headArmoireBlueHairbowNotes": "Become perceptive, tough, and smart while wearing this beautiful Blue Hairbow! Increases Perception by <%= per %>, Constitution by <%= con %>, and Intelligence by <%= int %>. Enchanted Armoire: Independent Item.",
"headArmoireRoyalCrownText": "Corona Regale",
"headArmoireRoyalCrownNotes": "Hooray for the ruler, mighty and strong! Increases Strength by <%= str %>. Enchanted Armoire: Royal Set (Item 1 of 3).",
- "headArmoireGoldenLaurelsText": "Golden Laurels",
- "headArmoireGoldenLaurelsNotes": "These golden laurels reward those who have conquered bad habits. Increases Perception and Constitution by <%= attrs %> each. Enchanted Armoire: Golden Toga Set (Item 2 of 3).",
- "headArmoireHornedIronHelmText": "Horned Iron Helm",
- "headArmoireHornedIronHelmNotes": "Fiercely hammered from iron, this horned helmet is nearly impossible to break. Increases Constitution by <%= con %> and Strength by <%= str %>. Enchanted Armoire: Horned Iron Set (Item 1 of 3).",
+ "headArmoireGoldenLaurelsText": "Allori Dorati",
+ "headArmoireGoldenLaurelsNotes": "Questi allori dorati ricompensano coloro che hanno conquistato le cattive abitudini. Aumenta Percezione e Costituzione di <%= attrs%> ciascuna. Baule Incantato: Set Toga Dorata (Oggetto 2 di 3).",
+ "headArmoireHornedIronHelmText": "Elmo di Ferro Cornuto",
+ "headArmoireHornedIronHelmNotes": "Fieramente forgiato di ferro, questo elmetto cornuto é quasi impossibile da rompere. Aumenta la Costituzione di <%= con %> e la Forza di <%= str%>. Baule Incantato: Set Ferro Cornuto (Oggetto 1 di 3).",
"headArmoireYellowHairbowText": "Fiocchetto Giallo",
"headArmoireYellowHairbowNotes": "Diventa percettivo, forte, e intelligente indossando questo meraviglioso Fiocchetto Giallo! Aumenta la Percezione, la Forza, e l'Intelligenza di <%= attrs %> ciascuna. Baule Incantato: Oggetto Indipendente.",
"headArmoireRedFloppyHatText": "Cappello Floscio Rosso",
@@ -502,10 +502,10 @@
"headArmoireBlackCatNotes": "Questo cappello nero sta... facendo le fusa. E agitando la sua coda. E respirando? Sì, hai solo un gatto che dorme sulla tua testa. Aumenta l'Intelligenza e la Percezione di <%= attrs %> ciascuna. Baule Incantato: Oggetto indipendente.",
"headArmoireOrangeCatText": "Cappello Gatto Arancione",
"headArmoireOrangeCatNotes": "Questo cappello arancione sta... facendo le fusa. E agitando la sua coda. E respirando? Sì, hai solo un gatto che dorme sulla tua testa. Aumenta la Forza e la Costituzione di <%= attrs %> ciascuna. Baule Incantato: Oggetto indipendente.",
- "headArmoireBlueFloppyHatText": "Blue Floppy Hat",
- "headArmoireBlueFloppyHatNotes": "Many spells have been sewn into this simple hat, giving it a brilliant blue color. Increases Constitution, Intelligence, and Perception by <%= attrs %> each. Enchanted Armoire: Independent Item.",
- "headArmoireShepherdHeaddressText": "Shepherd Headdress",
- "headArmoireShepherdHeaddressNotes": "Sometimes the gryphons that you herd like to chew on this headdress, but it makes you seem more intelligent nonetheless. Increases Intelligence by <%= int %>. Enchanted Armoire: Shepherd Set (Item 3 of 3).",
+ "headArmoireBlueFloppyHatText": "Flaccido Cappello Blu",
+ "headArmoireBlueFloppyHatNotes": "Molti incantesimi sono stati cuciti in questo semplice cappello, dandogli un colore blu brillante. Aumenta Costituzione, Intelligenza e Percezione di <%= attrs %> ciascuna. Baule Incantato: Oggetto Indipendente.",
+ "headArmoireShepherdHeaddressText": "Cappello del Pastore",
+ "headArmoireShepherdHeaddressNotes": "Talvolta i grifoni che allevi si divertono a masticare questo cappello, ma ti fa comunque sembrare piú intelligente. Aumenta l'Intelligenza di <%= int %>. Baule Incantato: Set Pastore (Oggetto 3 di 3).",
"offhand": "oggetto per mano da scudo",
"shieldBase0Text": "Nessun equipaggiamento nella mano da scudo",
"shieldBase0Notes": "Nessuno scudo o arma secondaria.",
@@ -533,8 +533,8 @@
"shieldSpecial0Notes": "Vede oltre il velo della morte, e usa quello che vi trova per terrorizzare i nemici. Aumenta la Percezione di <%= per %>.",
"shieldSpecial1Text": "Scudo di Cristallo",
"shieldSpecial1Notes": "Frantuma le frecce e deflette le parole dei pessimisti. Aumenta tutti gli attributi di <%= attrs %>.",
- "shieldSpecialMoonpearlShieldText": "Moonpearl Shield",
- "shieldSpecialMoonpearlShieldNotes": "Designed for fast swimming, and also some defense. Increases Constitution by <%= con %>.",
+ "shieldSpecialMoonpearlShieldText": "Scudo di Perle Lunari",
+ "shieldSpecialMoonpearlShieldNotes": "Costruito per nuotare rapidamente, e anche avere qualche difesa. Aumenta la Costituzione di <%= con %>.",
"shieldSpecialGoldenknightText": "Massiccio Martello Miliare di Mustaine",
"shieldSpecialGoldenknightNotes": "Mostri, malattie, maledizioni: martellali! Aumenta Costituzione e Percezione di <%= attrs %> ciascuno.",
"shieldSpecialYetiText": "Scudo dell'Addestra-Yeti",
diff --git a/common/locales/it/generic.json b/common/locales/it/generic.json
index 9afe18a331..1659c95bed 100644
--- a/common/locales/it/generic.json
+++ b/common/locales/it/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Ha celebrato <%= number %> Habitica Naming Day! Grazie per essere un utente fantastico.",
"achievementDilatory": "Eroe dei Dilatori",
"achievementDilatoryText": "Ha contribuito alla sconfitta del Drago Terrore dei Dilatori durante l'evento Summer Splash 2014!",
- "costumeContest": "Gara Mascherata 2014",
- "costumeContestText": "Ha partecipato alla Gara Mascherata di Halloween 2014. Puoi trovare alcune foto su blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Membro dal:",
"lastLoggedIn": "- Ultimo accesso:",
"notPorted": "Questa funzionalità non è ancora stata trasposta dal sito originale.",
@@ -135,16 +136,16 @@
"thankyou3": "Hai tutta la mia gratitudine!",
"thankyouCardAchievementTitle": "Grandemente Grato",
"thankyouCardAchievementText": "Grazie per aver espresso la tua gratitudine! Inviate o ricevute <%= cards %> cartoline-grazie.",
- "streakAchievement": "You earned a streak achievement!",
- "firstStreakAchievement": "21-Day Streak",
- "streakAchievementCount": "<%= streaks %> 21-Day Streaks",
- "twentyOneDays": "You've completed your Daily for 21 days in a row!",
+ "streakAchievement": "Hai guadagnato una Medaglia Serie!",
+ "firstStreakAchievement": "Serie di 21 giorni",
+ "streakAchievementCount": "<%= streaks %> Serie di 21 giorni",
+ "twentyOneDays": "Hai completato la tua Daily per 21 giorni di fila!",
"dontBreakStreak": "Amazing job. Don't break the streak!",
- "dontStop": "Don't Stop Now!",
- "levelUpShare": "I leveled up in Habitica by improving my real-life habits!",
- "questUnlockShare": "I unlocked a new quest in Habitica!",
+ "dontStop": "Non Fermarti Ora!",
+ "levelUpShare": "Sono salito di livello in Habitica migliorando le mie abitudini nella vita reale!",
+ "questUnlockShare": "Ho sbloccato una nuova missione in Habitica!",
"hatchPetShare": "I hatched a new pet by completing my real-life tasks!",
"raisePetShare": "I raised a pet into a mount by completing my real-life tasks!",
- "wonChallengeShare": "I won a challenge in Habitica!",
- "achievementShare": "I earned a new achievement in Habitica!"
+ "wonChallengeShare": "Ho vinto una sfida in Habitica!",
+ "achievementShare": "Ho guadagnato una nuova medaglia in Habitica!"
}
\ No newline at end of file
diff --git a/common/locales/it/groups.json b/common/locales/it/groups.json
index 46f66c4f5c..fbc4f24032 100644
--- a/common/locales/it/groups.json
+++ b/common/locales/it/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "La chat della squadra è vuota! Scrivi un messaggio nella casella qui sopra per cominciare una conversazione.",
"guildChatEmpty": "La chat della gilda è vuota! Scrivi un messaggio nella casella qui sopra per cominciare una conversazione.",
"possessiveParty": "Squadra di <%= name %>",
- "requestAcceptGuidelines": "Se si desidera inviare messaggi in taverna o di qualsiasi partito o la chat della gilda, si prega di leggere prima la nostra <%= linkStart %>Orientamenti Comunitari<%= linkEnd %> e quindi fare clic sul pulsante qui sotto per indicare di accettarle."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/it/limited.json b/common/locales/it/limited.json
index 7011616688..406a0f89b6 100644
--- a/common/locales/it/limited.json
+++ b/common/locales/it/limited.json
@@ -30,7 +30,7 @@
"seasonalShopText": "Benvenuto nel Negozio Stagionale! Abbiamo in vendita degli oggetti primaverili in Edizione Stagionale. Ogni cosa qui sarà acquistabile durante l'evento \"Spring Fling\" ogni anno, ma siamo aperti solo fino al 30 aprile! Quindi fai scorta adesso, sennò dovrai aspettare il prossimo anno per poter acquistare questi oggetti!",
"seasonalShopSummerText": "Benvenuto nel Negozio Stagionale! Abbiamo in vendita degli oggetti estivi in Edizione Stagionale. Ogni cosa qui sarà acquistabile durante l'evento \"Summer Splash\" ogni anno, ma siamo aperti solo fino al 31 luglio! Quindi fai scorta adesso, sennò dovrai aspettare il prossimo anno per poter acquistare questi oggetti!",
"seasonalShopFallText": "Benvenuto nel Negozio Stagionale! Abbiamo in vendita degli oggetti autunnali in Edizione Stagionale. Ogni cosa qui sarà acquistabile durante l'evento \"Fall Festival\" ogni anno, ma siamo aperti solo fino al 31 ottobre! Quindi fai scorta adesso, sennò dovrai aspettare il prossimo anno per poter acquistare questi oggetti!",
- "seasonalShopFallTextBroken": "Oh... Benvenuto al Negozio Stagionale... Abbiamo in vendita oggetti dell'Edizione Stagionale autunnale o qualcosa adel genere... Tutto quello che c'é qui sara disponibile per l'acquisto durante l'evento Festival d'Autunno di ogni anno, ma siamo aperti sono fino al 31 Ottobre... Penso che dovresti rifornirti ora altrimenti dovrai aspettare... e aspettare... e aspettare... *sigh*",
+ "seasonalShopFallTextBroken": "Oh... Benvenuto al Negozio Stagionale... Abbiamo in vendita oggetti dell'Edizione Stagionale autunnale, o qualcosa del genere... Tutto quello che vedi qui sarà disponibile per l'acquisto durante l'evento Festival d'Autunno di ogni anno, ma siamo aperti sono fino al 31 Ottobre... Penso che dovresti rifornirti ora altrimenti dovrai aspettare... e aspettare... e aspettare... *sigh*",
"seasonalShopRebirth": "Se hai usato la Sfera della Rinascita, potrai riacquistare questo equipaggiamento dalla colonna delle Ricompense. All'inizio potrai comprare solo gli oggetti per la tua classe attuale (Guerriero, se non l'hai ancora scelta/cambiata), ma niente paura, gli altri oggetti specifici per le varie classi diventeranno disponibili se ti converti a quella classe.",
"candycaneSet": "Caramello (Mago)",
"skiSet": "Nevassassino (Assassino)",
@@ -60,6 +60,6 @@
"monsterOfScienceSet": "Mostro della Scienza (Guerriero)",
"witchyWizardSet": "Incantesimi Stregone (Mago)",
"mummyMedicSet": "Medico Mummia (Guaritore)",
- "vampireSmiterSet": "Castigatore di Vampiro (Assassino)",
+ "vampireSmiterSet": "Vampiro Castigatore (Assassino)",
"fallEventAvailability": "Disponibile fino al 31 ottobre"
}
\ No newline at end of file
diff --git a/common/locales/it/noscript.json b/common/locales/it/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/it/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/it/pets.json b/common/locales/it/pets.json
index 013cde3e61..7c70246bfc 100644
--- a/common/locales/it/pets.json
+++ b/common/locales/it/pets.json
@@ -58,16 +58,16 @@
"firstDrop": "Hai sbloccato il sistema di drop! Ora, quando completi un'attività, hai una piccola probabilità di trovare un oggetto, tra cui uova, pozioni e cibo! Hai appena trovato un Uovo di <%= eggText %>! <%= eggNotes %>",
"useGems": "Se hai messo gli occhi su un animale, ma non vuoi più aspettare per averlo, usa le gemme in Inventario > Mercato per comparne uno!",
"hatchAPot": "Far nascere <%= egg %> <%= potion %>?",
- "hatchedPet": "You hatched a <%= potion %> <%= egg %>!",
- "displayNow": "Display Now",
- "displayLater": "Display Later",
+ "hatchedPet": "E' nato un <%= egg %> <%= potion %>!",
+ "displayNow": "Mostra ora",
+ "displayLater": "Mostra più tardi",
"earnedCompanion": "With all your productivity, you've earned a new companion. Feed it to make it grow!",
"feedPet": "Dare da mangiare <%= article %><%= text %> al tuo <%= name %>?",
"useSaddle": "Mettere la sella a <%= pet %>?",
"raisedPet": "You grew a <%= pet %>!",
- "earnedSteed": "By completing your tasks, you've earned a faithful steed!",
- "rideNow": "Ride Now",
- "rideLater": "Ride Later",
+ "earnedSteed": "Completando le tue attività, hai ottenuto un fidato destriero!",
+ "rideNow": "Cavalca ora",
+ "rideLater": "Cavalca più tardi",
"petName": "<%= egg %> <%= potion %>",
"mountName": "<%= mount %> <%= potion %>",
"petKeyName": "Chiave dell'Allevamento",
diff --git a/common/locales/it/quests.json b/common/locales/it/quests.json
index cc2bf9419a..3a51572445 100644
--- a/common/locales/it/quests.json
+++ b/common/locales/it/quests.json
@@ -77,6 +77,6 @@
"startQuest": "Comincia missione",
"whichQuestStart": "Che missione vuoi cominciare?",
"getMoreQuests": "Ottieni altre missioni",
- "unlockedAQuest": "You unlocked a quest!",
+ "unlockedAQuest": "Hai sbloccato una missione!",
"leveledUpReceivedQuest": "You leveled up to Level <%= level %> and received a quest scroll!"
}
\ No newline at end of file
diff --git a/common/locales/it/settings.json b/common/locales/it/settings.json
index c366ee6dfd..8fe1e95c57 100644
--- a/common/locales/it/settings.json
+++ b/common/locales/it/settings.json
@@ -14,11 +14,11 @@
"startCollapsedPop": "Selezionando questa opzione, la lista dei tag dell'attività che stai modificando verrà inizialmente nascosta.",
"startAdvCollapsed": "Comprimi opzioni avanzate",
"startAdvCollapsedPop": "Selezionando questa opzione, la sezione delle opzioni avanzate verrà nascosta quando modifichi un'attività.",
- "dontShowAgain": "Don't show this again",
- "suppressLevelUpModal": "Don't show popup when gaining a level",
- "suppressHatchPetModal": "Don't show popup when hatching a pet",
- "suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
- "suppressStreakModal": "Don't show popup when attaining a Streak achievement",
+ "dontShowAgain": "Non mostrare di nuovo",
+ "suppressLevelUpModal": "Non mostrare popup quando sali di livello",
+ "suppressHatchPetModal": "Non mostrare popup quando fai schiudere un uovo",
+ "suppressRaisePetModal": "Non mostrare popup quando trasformi un animale in una cavalcatura",
+ "suppressStreakModal": "Non mostrare popup quando ottieni la medaglia Serie",
"showTour": "Mostra il tour introduttivo",
"restartTour": "Resetta il tour introduttivo della prima volta che hai utilizzato Habitica.",
"showBailey": "Mostra Bailey",
@@ -93,7 +93,7 @@
"loginNameDescription2": "Utente->Profilo",
"loginNameDescription3": "per cambiare il nome che appare nel tuo avatar e nei messaggi della chat.",
"emailNotifications": "Notifiche via email",
- "wonChallenge": "You won a Challenge!",
+ "wonChallenge": "Hai vinto una Sfida!",
"newPM": "Hai ricevuto un messaggio privato",
"giftedGems": "Ti vengono regalate delle Gemme",
"giftedGemsInfo": "<%= amount %> Gemme - da <%= name %>",
@@ -131,12 +131,12 @@
"getCodes": "Ottieni Codici",
"webhooks": "Webhooks",
"enabled": "Abilitato",
- "webhookURL": "Webhook URL",
+ "webhookURL": "URL Webhook",
"add": "Aggiungi",
"buyGemsGoldCap": "Limite alzato a <%= amount %>",
"mysticHourglass": "<%= amount %> Clessidra Mistica",
"mysticHourglassText": "Le Clessidre Mistiche ti permettono di acquistare i set di Oggetti Misteriosi del mese precedente.",
- "purchasedPlanId": "Recurring $<%= price %> each <%= months %> Month(s) (<%= plan %>)",
+ "purchasedPlanId": "<%= price %>$ ogni <%= months %> mese/i (<%= plan %>)",
"purchasedPlanExtraMonths": "Ti rimangono <%= months %> mesi di credito di abbonamento.",
"consecutiveSubscription": "Abbonamento Consecutivo",
"consecutiveMonths": "Mesi Consecutivi:",
diff --git a/common/locales/it/tasks.json b/common/locales/it/tasks.json
index df1aab09ff..1d51194b80 100644
--- a/common/locales/it/tasks.json
+++ b/common/locales/it/tasks.json
@@ -98,7 +98,7 @@
"newbieGuild": "Hai altre domande? Chiedile nella <%= linkStart %>Gilda dei Newbies<%= linkEnd %>!",
"dailyHelp1": "Le Daily si ripetono <%= emphasisStart %>ogni giorno<%= emphasisEnd %> in cui sono attive. Clicca <%= pencilIcon %> per cambiare i giorni in cui sono attive.",
"dailyHelp2": "Se non completi le Daily attive perdi Salute quando la giornata finisce.",
- "dailyHelp3": "Dailies turn <%= emphasisStart %>redder<%= emphasisEnd %> when you miss them, and <%= emphasisStart %>bluer<%= emphasisEnd %> when you complete them. The redder the Daily, the more it will reward you... or hurt you.",
+ "dailyHelp3": "Le attività giornaliere diventano <%= emphasisStart %>rosso scuro<%= emphasisEnd %> quando non le porti a termine, e <%= emphasisStart %>blu scuro<%= emphasisEnd %> quando le completi. Più l'attività giornaliera è rossa, più questa ti premierà... o danneggerà.",
"dailyHelp4": "Per cambiare quando il tuo giorno finisce, vai su <%= linkStart %> Impostazioni > Sito <%= linkEnd %> > Inizio Giorno Personalizzato.",
"dailyHelp5": "Per cercare ispirazione, prova a guardare questi esempi di Daily! (in inglese)",
"toDoHelp1": "Le To-Do appena create sono gialle, e più tempo ci metti a completarle più diventano rosse (aumentano di valore).",
@@ -107,7 +107,7 @@
"toDoHelp4": "Per trovare inspirazione, dai un'occhiata a queste attività d'esempio!",
"rewardHelp1": "L'equipaggiamento che compri per il tuo avatar viene messo in <%= linkStart %>Inventario > Equipaggiamento<%= linkEnd %>.",
"rewardHelp2": "L'equipaggiamento condiziona le tue statistiche (<%= linkStart %>Utente > Statistiche<%= linkEnd %>).",
- "rewardHelp3": "Equipaggiamenti speciali compariranno qui durante gli Eventi Globali.",
+ "rewardHelp3": "Gli equipaggiamenti speciali compariranno qui durante gli Eventi Globali.",
"rewardHelp4": "Non aver paura di impostare le tue ricompense! guarda qualche esempio qui.",
"clickForHelp": "Fai click per suggerimenti"
}
\ No newline at end of file
diff --git a/common/locales/ja/generic.json b/common/locales/ja/generic.json
index e8331f0b88..6d28e177ee 100644
--- a/common/locales/ja/generic.json
+++ b/common/locales/ja/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Celebrated <%= number %> Naming Days! Thanks for being a fantastic user.",
"achievementDilatory": "先延ばしの救世主",
"achievementDilatoryText": "2014サマースプラッシュイベント期間中「先延ばしのドレッド・ドラゴン」の打倒バトルに戦いました!",
- "costumeContest": "2014年衣装コンテスト",
- "costumeContestText": "2014 ハロウィン仮装コンテストに参加しました。 blog.habitica.com/tagged/cosplay でいくつかのエントリを参照してください!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "メンバー登録日",
"lastLoggedIn": "最近ログイン",
"notPorted": "この機能はオリジナルサイトからまだ移植されていません",
diff --git a/common/locales/ja/groups.json b/common/locales/ja/groups.json
index d06aebd015..4f78dc7b58 100644
--- a/common/locales/ja/groups.json
+++ b/common/locales/ja/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>のパーティー",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/ja/noscript.json b/common/locales/ja/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/ja/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/nl/challenge.json b/common/locales/nl/challenge.json
index 1476654bce..8d5046e7cc 100644
--- a/common/locales/nl/challenge.json
+++ b/common/locales/nl/challenge.json
@@ -60,8 +60,8 @@
"noPermissionEditChallenge": "Je hebt geen toestemming om deze uitdaging te bewerken",
"noPermissionDeleteChallenge": "Je hebt geen toestemming om deze uitdaging te verwijderen",
"noPermissionCloseChallenge": "Je hebt geen toestemming om deze uitdaging te sluiten",
- "congratulations": "Congratulations!",
- "hurray": "Hurray!",
+ "congratulations": "Gefeliciteerd!",
+ "hurray": "Hoera!",
"noChallengeOwner": "geen eigenaar",
"noChallengeOwnerPopover": "Deze uitdaging heeft geen eigenaar omdat de eigenaar zijn of haar account heeft verwijderd."
}
\ No newline at end of file
diff --git a/common/locales/nl/character.json b/common/locales/nl/character.json
index c7df02facf..01deebaa09 100644
--- a/common/locales/nl/character.json
+++ b/common/locales/nl/character.json
@@ -65,10 +65,10 @@
"ultimGearText": "Heeft de hoogst haalbare wapen- en uitrustingset voor de volgende klassen:",
"level": "Niveau",
"levelUp": "Niveau erbij!",
- "gainedLevel": "You gained a level!",
- "leveledUp": "By accomplishing your real-life goals, you've grown to Level <%= level %>!",
- "fullyHealed": "You have been fully healed!",
- "huzzah": "Huzzah!",
+ "gainedLevel": "Je bent een niveau gestegen!",
+ "leveledUp": "Door het voltooien van je doelen in het echte leven, ben je gevorderd naar niveau <%= level %>!",
+ "fullyHealed": "Je bent volledig genezen!",
+ "huzzah": "Hoezee!",
"mana": "Mana",
"hp": "GP",
"mp": "MP",
diff --git a/common/locales/nl/communityguidelines.json b/common/locales/nl/communityguidelines.json
index 3f36562605..6e3e92ac12 100644
--- a/common/locales/nl/communityguidelines.json
+++ b/common/locales/nl/communityguidelines.json
@@ -73,7 +73,7 @@
"commGuideHeadingWiki": "Wiki",
"commGuidePara045": "De Habitica-wiki verzamelt informatie over de website. Er zijn ook een paar fora, vergelijkbaar met de gildes in Habitica. Daarom zijn alle regels voor openbare ruimtes van toepassing.",
"commGuidePara046": "De Habitica-wiki kan beschouwd worden als een database voor alles wat met Habitica te maken heeft. Er zijn artikelen over de functionaliteiten van de site, spelhandleidingen, tips voor hoe je kunt bijdragen aan Habitica en plekken waar je je gilde of groep kunt aanprijzen of kunt stemmen over bepaalde onderwerpen",
- "commGuidePara047": "Omdat de wiki gehost wordt door Wikia zijn, naast de regels die door Habitica en de Habitica-wiki vastgesteld zijn, ook de algemene voorwaarden van Wikia van toepassing.",
+ "commGuidePara047": "Omdat de wiki gehost wordt door Wikia, zijn, naast de regels die door Habitica en de Habitica-wiki vastgesteld zijn, ook de algemene voorwaarden van Wikia van toepassing.",
"commGuidePara048": "De wiki is een samenwerking tussen alle redacteurs, dus er zijn enkele aanvullende richtlijnen van toepassing:",
"commGuideList04A": "Vraag nieuwe pagina's of grote veranderingen aan op het Wiki Trello-board",
"commGuideList04B": "Sta open voor suggesties over jouw redactievoorstellen",
@@ -139,7 +139,7 @@
"commGuidePara062": "De e-mail waarin de gevolgen van je acties worden uitgelegd (of, voor kleine gevolgen, de aankondiging door een beheerder of medewerker) is een goede bron van informatie. Werk mee aan de beperkingen die je zijn opgelegd, en probeer te voldoen aan de voorwaarden voor het opheffen van de beperkingen.",
"commGuidePara063": "Als je de gevolgen niet begrijpt, of niet begrijpt wat je overtreding is geweest, vraag dan de medewerkers of beheerders om hulp zodat je in de toekomst niet weer de fout in gaat.",
"commGuideHeadingContributing": "Een bijdrage leveren aan Habitica",
- "commGuidePara064": "Habitica is een open-sourceproject, wat betekent dat iedere Habiticaan bij kan dragen! Degenen die dat doen, worden beloond volgens de hieronder beschreven beloningsniveaus:",
+ "commGuidePara064": "Habitica is een open-sourceproject, wat betekent dat iedere Habiticaan bij mag dragen! Degenen die dat doen, worden beloond volgens de hieronder beschreven beloningsniveaus:",
"commGuideList12A": "Habitica-bijdragersbadge, plus 3 edelstenen",
"commGuideList12B": "Bijdragersharnas, plus 3 edelstenen.",
"commGuideList12C": "Bijdragershelm, plus 3 edelstenen.",
@@ -154,7 +154,7 @@
"commGuideList13C": "Rangen beginnen niet \"opnieuw\" in verschillende velden. Bij het inschatten van de moeilijkheidsgraad kijken we naar al je bijdrages, zodat mensen die een klein beetje kunst leveren, en daarna een kleine bug repareren, en daarna een beetje in de wiki doen niet sneller vooruitgang boeken dan mensen die hard werken aan een enkele taak. Dat houdt de zaak eerlijk!",
"commGuideList13D": "Gebruikers met een voorwaardelijke straf kunnen de volgende rang niet bereiken. Beheerders hebben het recht om vooruitgang te bevriezen als gebruikers overtredingen begaan. Als dit gebeurt zal de gebruiker altijd op de hoogte gebracht worden van de beslissing en hoe dat te corrigeren. Het is ook mogelijk dat rangen afgenomen worden door overtredingen of voorwaardelijke straffen.",
"commGuideHeadingFinal": "Het laaste stuk",
- "commGuidePara067": "Dat waren ze dan, dappere Habiticaan - de gemeenschapsrichtlijnen! Veeg het zweet van je voorhoofd en geef jezelf wat XP als beloning voor het lezen hiervan. Als je vragen of zorgen hebt over deze gemeenschapsrichtlijnen, stuur dan een mail naar Lemoness (leslie@habitica.com) en ze zal je met plezier vertellen hoe alles werkt.",
+ "commGuidePara067": "Dat waren ze dan, dappere Habiticaan - de gemeenschapsrichtlijnen! Veeg het zweet van je voorhoofd en geef jezelf wat XP als beloning voor het lezen hiervan. Als je vragen of zorgen hebt over deze gemeenschapsrichtlijnen, stuur dan een mail naar Lemoness (leslie@habitica.com) en ze zal met plezier dingen voor je ophelderen.",
"commGuidePara068": "Trek de wijde wereld in, dappere avonturier, en versla je dagelijkse taken!",
"commGuideHeadingLinks": "Nuttige links",
"commGuidePara069": "De volgende talentvolle artiesten hebben een bijdrage geleverd aan deze illustraties:",
diff --git a/common/locales/nl/content.json b/common/locales/nl/content.json
index 7a46f9a24b..f63699f12f 100644
--- a/common/locales/nl/content.json
+++ b/common/locales/nl/content.json
@@ -98,9 +98,9 @@
"questEggFrogText": "Kikker",
"questEggFrogMountText": "Kikker",
"questEggFrogAdjective": "prinselijke",
- "questEggSnakeText": "Snake",
- "questEggSnakeMountText": "Snake",
- "questEggSnakeAdjective": "a slithering",
+ "questEggSnakeText": "Slang",
+ "questEggSnakeMountText": "Slang",
+ "questEggSnakeAdjective": "een kronkelende",
"eggNotes": "Vind een uitbroedtoverdrank om over dit ei te gieten en er zal een <%= eggAdjective(locale) %> <%= eggText(locale) %> uitkomen.",
"hatchingPotionBase": "Normale",
"hatchingPotionWhite": "Witte",
diff --git a/common/locales/nl/faq.json b/common/locales/nl/faq.json
index 54b4111503..f2e4d137e4 100644
--- a/common/locales/nl/faq.json
+++ b/common/locales/nl/faq.json
@@ -1,10 +1,10 @@
{
"frequentlyAskedQuestions": "Veelgestelde vragen",
"faqQuestion0": "Ik ben in de war. Waar kan ik een overzicht vinden? ",
- "iosFaqAnswer0": "Allereerst zet je de taken op die je in je dagelijkse leven wil doen. Vervolgens, als je de taken volbrengt en afvinkt, verdien je ervaring en goud. Goud wordt gebruikt om uitrusting en sommige voorwerpen te kopen, evenals voor persoonlijke beloningen. Ervaring zorgt ervoor dat je karakter omhoog gaat in level en dat je spelinhoud als huisdieren, vaardigheden en queesten vrijspeeld! Je kunt je karakter aanpassen onder Menu > Avatar aanpassen.\n\nWat simpele dingen om te beginnen: klik op de (+) in de rechterbovenhoek om een nieuwe taak toe te voeren. druk op een bestaande taak om hem aan te passen en veeg hem naar links om de taak te verwijderen. Je kunt taken sorteren door labels te gebruiken in de linkerbovenhoek en checklists in- en uitklappen door op het checklist-bolletje te duwen.",
+ "iosFaqAnswer0": "Allereerst zet je de taken op die je in je dagelijkse leven wil doen. Vervolgens, als je de taken volbrengt en afvinkt, verdien je ervaring en goud. Goud wordt gebruikt om uitrusting en sommige voorwerpen te kopen, evenals voor persoonlijke beloningen. Ervaring zorgt ervoor dat je karakter omhoog gaat in niveau en dat je spelinhoud als huisdieren, vaardigheden en queesten vrijspeelt! Je kunt je karakter aanpassen onder Menu > Avatar aanpassen.\n\nWat simpele dingen om te beginnen: klik op de (+) in de rechterbovenhoek om een nieuwe taak toe te voegen. Tik op een bestaande taak om hem aan te passen en veeg hem naar links om de taak te verwijderen. Je kunt taken sorteren door labels te gebruiken in de linkerbovenhoek en checklists in- en uitklappen door op het checklist-bolletje te klikken.",
"webFaqAnswer0": "Allereerst zet je de taken op die je in je dagelijkse leven wil doen. Vervolgens, als je de taken volbrengt en afvinkt, verdien je ervaring en goud. Goud wordt gebruikt om uitrusting en sommige voorwerpen te kopen, evenals voor persoonlijke beloningen. Ervaring zorgt ervoor dat je karakter omhoog gaat in level en dat je spelinhoud als huisdieren, vaardigheden en queesten vrijspeeld! Voor meer informatie heeft de wiki een uitstekende stap-voor-stap uitleg van het spel. [Hier te vinden.](http://habitica.wikia.com/wiki/Habitica_Wiki).",
"faqQuestion1": "Hoe stel ik mijn taken in?",
- "iosFaqAnswer1": "Goede gewoonten (degenen met een +) zijn taken die je meerdere keren per dag kunt doen, zoals groenten eten. Slechte gewoonten (degenen met een -) zijn taken die je zou moeten nalaten, zoals op je nagels bijten. Gewoonten met een + en een - hebben een goede en een slechte keuze, bijvoorbeeld de trap nemen tegenover de lift nemen. Goede gewoonten belonen je met ervaring en goud. Slechte gewoonten doen je levenspunten verliezen.\n\nDagelijkse taken zijn taken die je iedere dag moet doen, zoals je tanden poetsen of je e-mail bekijken. Je kunt de dagen aanpassen waarop je een bepaalde dagelijkse taak moet doen door erop te drukken en hem te bewerken. Als je een dagelijkse taak overslaat op een dag dat hij gedaan moet worden, zal je avatar gedurende de nacht schade oplopen. Wees voorzichtig en voeg niet teveel dagelijkse taken tegelijk toe!\n\nTo-do's zijn de dingen die je nog een keer moet doen. Een to-do afvinken levert geld en ervaringspunten op. Je kunt nooit levenspunten kwijtraken door een to-do. Je kunt een geplande voltooiingsdatum toevoegen aan een to-do toevoegen door er op te drukken om hem aan te passen.",
+ "iosFaqAnswer1": "Goede gewoonten (degenen met een +) zijn taken die je meerdere keren per dag kunt doen, zoals groenten eten. Slechte gewoonten (degenen met een -) zijn taken die je zou moeten nalaten, zoals op je nagels bijten. Gewoonten met een + en een - hebben een goede en een slechte keuze, bijvoorbeeld de trap nemen tegenover de lift nemen. Goede gewoonten belonen je met ervaring en goud. Slechte gewoonten doen je levenspunten verliezen.\n\nDagelijkse taken zijn taken die je iedere dag moet doen, zoals je tanden poetsen of je e-mail bekijken. Je kunt de dagen aanpassen waarop je een bepaalde dagelijkse taak moet doen door erop te drukken en hem te bewerken. Als je een dagelijkse taak overslaat op een dag dat hij gedaan moet worden, zal je avatar gedurende de nacht schade oplopen. Wees voorzichtig en voeg niet teveel dagelijkse taken tegelijk toe!\n\nTo-do's zijn de dingen die je nog een keer moet doen. Een to-do afvinken levert geld en ervaringspunten op. Je kunt nooit levenspunten kwijtraken door een to-do. Je kunt een geplande voltooiingsdatum toevoegen aan een to-do door er op te tikken om hem aan te passen.",
"webFaqAnswer1": "Goede gewoonten (degenen met een ) zijn taken die je meerdere keren per dag kunt doen, zoals groenten eten. Slechte gewoonten (degenen met een ) zijn taken die je zou moeten nalaten, zoals op je nagels bijten. Gewoonten met een en een hebben een goede en een slechte keuze, bijvoorbeeld de trap nemen tegenover de lift nemen. Goede gewoonten belonen je met ervaring en goud. Slechte gewoonten doen je levenspunten verliezen.\n
\nDagelijkse taken zijn taken die je iedere dag moet doen, zoals je tanden poetsen of je e-mail bekijken. Je kunt de dagen aanpassen waarop je een bepaalde dagelijkse taak moet doen door erop te drukken en hem te bewerken. Als je een dagelijkse taak overslaat op een dag dat hij gedaan moet worden, zal je avatar gedurende de nacht schade oplopen. Wees voorzichtig en voeg niet teveel dagelijkse taken tegelijk toe!\n
\nTo-do's zijn de dingen die je nog een keer moet doen. Een to-do afvinken levert geld en ervaringspunten op. Je kunt nooit levenspunten kwijtraken door een to-do. Je kunt een geplande voltooiingsdatum toevoegen aan een to-do toevoegen door er op te drukken om hem aan te passen.",
"faqQuestion2": "Welke soort taken kunnen er zijn?",
"iosFaqAnswer2": "De wiki heeft vier lijsten van voorbeeldtaken om als inspiratie te gebruiken:\n
\n* [Voorbeeld gewoontes](http://habitica.wikia.com/wiki/Sample_Habits)\n* [Voorbeeld dagelijkse taken](http://habitica.wikia.com/wiki/Sample_Dailies)\n* [Voorbeeld to-do's](http://habitica.wikia.com/wiki/Sample_To-Dos)\n* [Voorbeeld persoonlijke beloningen](http://habitica.wikia.com/wiki/Sample_Custom_Rewards)",
@@ -26,19 +26,19 @@
"webFaqAnswer7": "Je kan pas kiezen om een krijger, magiër, dief of heler te worden als je niveau 10 bereikt hebt. (Alle spelers beginnen standaard als krijger.) Elke klasse heeft andere uitrusting, verschillende vaardigheden die ze kunnen uitspreken na niveau 11 en meer verschillende voordelen. Krijgers kunnen veel schade aanrichten bij eindbazen, schade weerstaan van taken en hun groep sterker maken. Magiërs kunnen ook makkelijk schade aanrichten bij eindbazen, evenals sneller niveaus behalen en extra mana geven aan de groep. Dieven verdienen het meeste geld en vinden sneller voorwerpen en kunnen hun groep hetzelfde laten doen. Tenslotte kunnen helers hunzelf, en mensen uit hun groep, helen.\n
\nAls je nog niet direct een klasse wilt kiezen -- als je bijvoorbeeld nog al je uitrusting wilt kopen voor je huidige klasse -- kun je op \"later beslissen\" klikken en later kiezen bij Gebruiker > Statistieken.",
"faqQuestion8": "Wat is de blauwe statusbalk die in de bovenbalk verschijnt na level 10?",
"iosFaqAnswer8": "The blauwe balk die verscheen toen je level 10 bereikte en een klasse koos, is je mana-balk. Als je een hoger level wordt, speel je speciale vaardigheden vrij die mana kostne om te gebruiken. Elke klasse heeft andere vaardigheden, die vanaf level 11 verschijnen onder Menu > Gebruik vaardigheden. Anders dan bij je gezondheidsbalk, reset je mana-balk niet als je een nieuw level bereikt. In plaats daarvan krijg je meer mana wanneer je goede gewoonten, dagelijkse taken en to-do's doet en verlies je het wanneer je hebt toegegeven aan slechte gewoonten. Je krijgt 'snachts ook wat mana terug -- hoe meer dagelijkse taken je voltooide, hoe meer je verdient.",
- "webFaqAnswer8": "The blue bar that appeared when you hit level 10 and chose a Class is your Mana bar. As you continue to level up, you will unlock special Skills that cost Mana to use. Each Class has different Skills, which appear after level 11 in a special section in the Rewards Column. Unlike your Health bar, your Mana bar does not reset when you gain a level. Instead, Mana is gained when you complete Good Habits, Dailies, and To-Dos, and lost when you indulge bad Habits. You’ll also regain some Mana overnight -- the more Dailies you completed, the more you will gain.",
+ "webFaqAnswer8": "The blauwe balk die verscheen toen je level 10 bereikte en een klasse koos, is je mana-balk. Als je een hoger level wordt, speel je speciale vaardigheden vrij die mana kosten om te gebruiken. Elke klasse heeft andere vaardigheden, die vanaf level 11 verschijnen onder Menu > Gebruik vaardigheden. Anders dan bij je gezondheidsbalk, reset je mana-balk niet als je een nieuw level bereikt. In plaats daarvan krijg je meer mana wanneer je goede gewoonten, dagelijkse taken en to-do's doet en verlies je het wanneer je hebt toegegeven aan slechte gewoonten. Je krijgt 'snachts ook wat mana terug -- hoe meer dagelijkse taken je voltooide, hoe meer je verdient.",
"faqQuestion9": "Hoe vecht ik tegen monsters en ga ik op queesten?",
- "iosFaqAnswer9": "First, you need to join or start a Party (see above). Although you can battle monsters alone, we recommend playing in a group, because this will make Quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating!\n\n Next, you need a Quest Scroll, which are stored under Menu > Items. There are three ways to get a scroll:\n\n - At level 15, you get a Quest-line, aka three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively. \n - When you invite people to your Party, you'll be rewarded with the Basi-List Scroll!\n - You can buy Quests from the Quests Page on the [website](https://habitica.com/#/options/inventory/quests) for Gold and Gems. (We will add this feature to the app in a future update.)\n\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading by pulling down on the screen may be required to see the Boss's health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your Party at the same time that you damage the Boss. \n\n After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.",
- "webFaqAnswer9": "First, you need to join or start a party (under Social > Party). Although you can battle monsters alone, we recommend playing in a group, because this will make quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating!\n
\n Next, you need a Quest Scroll, which are stored under Inventory > Quests. There are three ways to get a scroll:\n
\n * When you invite people to your party, you’ll be rewarded with the Basi-List Scroll!\n * At level 15, you get a Quest-line, i.e., three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively.\n * You can buy Quests from the Quests Page (Inventory > Quests) for Gold and Gems.\n
\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading may be required to see the Boss's Health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your party at the same time that you damage the Boss.\n
\n After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.",
- "faqQuestion10": "Wat zijn Edelstenen en hoe krijg ik ze?",
- "iosFaqAnswer10": "Gems are purchased with real money by tapping on the gem icon in the header. When people buy gems, they are helping us to keep the site running. We're very grateful for their support!\n\n In addition to buying gems directly, there are three other ways players can gain gems:\n\n * Win a Challenge on the [website](https://habitica.com) that has been set up by another player under Social > Challenges. (We will be adding Challenges to the app in a future update!)\n * Subscribe on the [website](https://habitica.com/#/options/settings/subscription) and unlock the ability to buy a certain number of gems per month.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\n Keep in mind that items purchased with gems do not offer any statistical advantages, so players can still make use of the app without them!",
- "webFaqAnswer10": "Gems are [purchased with real money](https://habitica.com/#/options/settings/subscription), although [subscribers](https://habitica.com/#/options/settings/subscription) can purchase them with Gold. When people subscribe or buy Gems, they are helping us to keep the site running. We're very grateful for their support!\n
\n In addition to buying Gems directly or becoming a subscriber, there are two other ways players can gain Gems:\n
\n * Win a Challenge that has been set up by another player under Social > Challenges.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica)\n
\n Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the site without them!",
+ "iosFaqAnswer9": "Eerst moet je je aansluiten bij een groep of er een beginnen (zie hierboven). Hoewel je monsters alleen kunt bestrijden, raden we spelen in een groep aan, omdat het queesten veel makkelijker maakt. Plus, een vriend hebben om je aan te moedigen als je je taken voltooid is erg motiverend!\n\nVervolgens heb je een queeste-perkamentrol nodig, die zijn opgeslagen onder Menu > Voorwerpen. Er zijn drie manieren om een perkamentrol te krijgen:\n\n-Op niveau 15 krijg je een queeste-reeks, oftewel drie gelieerde queesten. Meer queeste-reeksen speel je vrij op levels 30, 40 en 60.\n-Als je vrienden uitnodigd voor je groep, ontvang je de Basi-List perkamentrol@\n-Je kunt queesten kopen van de queesten pagina op de [website](https://habitica.com/#/options/inventory/quests) voor goud en edelstenen. (We zullen deze functie in een toekomstige update aan de app toevoegen.)\n\nOm de baas te bestrijdenof voorwerpen te verzamelen voor een Verzamel-queeste, moet je gewoon je taken voltooien, 'snachts zal de schade die ze doen berekend worden. (Herladen door het scherm naar beneden te trekken kan nodig zijn om de levensbalk van de baas omlaag te zien gaan.) Als je een baas aan het bevechten bent en je hebt dagelijkse taken gemist, dan schaadt de baas je groep op hetzelfde moment als jullie de baas schaden.\n\nNa level 11 krijgen Magiërs en Krijgers vaardigheden die ervoor zorgen dat ze extra schade kunnen doen aan de baas, dus dit zijn goede klassen om te kiezen op level 10 als je rake klappen uit wilt delen.",
+ "webFaqAnswer9": "Eerst moet je je aansluiten bij een groep of er een beginnen (onder Sociaal > Groep). Hoewel je monsters alleen kunt bestrijden, raden we spelen in een groep aan, omdat het queesten veel makkelijker maakt. Plus, een vriend hebben om je aan te moedigen als je je taken voltooid is erg motiverend!\n
\nVervolgens heb je een queeste-perkamentrol nodig, die zijn opgeslagen onder Menu > Voorwerpen. Er zijn drie manieren om een perkamentrol te krijgen:\n
\n-Op niveau 15 krijg je een queeste-reeks, oftewel drie gelieerde queesten. Meer queeste-reeksen speel je vrij op levels 30, 40 en 60.\n-Als je vrienden uitnodigd voor je groep, ontvang je de Basi-List perkamentrol@\n-Je kunt queesten kopen van de queesten pagina (Boedel > Queesten) voor goud en edelstenen.\n
\nOm de baas te bestrijdenof voorwerpen te verzamelen voor een Verzamel-queeste, moet je gewoon je taken voltooien, 'snachts zal de schade die ze doen berekend worden. (Verversen van de pagina kan nodig zijn om de levensbalk van de baas omlaag te zien gaan.) Als je een baas aan het bevechten bent en je hebt dagelijkse taken gemist, dan schaadt de baas je groep op hetzelfde moment als jullie de baas schaden.\n
\nNa level 11 krijgen Magiërs en Krijgers vaardigheden die ervoor zorgen dat ze extra schade kunnen doen aan de baas, dus dit zijn goede klassen om te kiezen op level 10 als je rake klappen uit wilt delen.",
+ "faqQuestion10": "Wat zijn edelstenen en hoe krijg ik ze?",
+ "iosFaqAnswer10": "Edelstenen kunnen gekocht worden met echt geld, door op het edelstenen-icoon te klikken in de menubalk. Wanneer mensen edelstenen kopen, helpen ze ons om de site draaiende te houden. We zijn erg dankbaar voor hun steun!\n\nBuiten ze direct te kopen, zijn er drie andere manieren waarop spelers edelstenen kunnen krijgen:\n\n* Win op de [website](https://habitica.com) een uitdaging die door een andere speler is opgezet onder Sociaal > Uitdagingen. (We zullen uitdagingen aan de app toevoegen in een toekomstige update)\n* Abonneer je op de [website](https://habitica.com/#/options/settings/subscription) en ontgrendel de mogelijkheid om een aantal edelstenen per maand met goud te kopen.\n* Draag met je vaardigheden bij aan het Habitica-project. Bekijk deze wiki voor meer details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\nHoudt in gedachten dat voorwerpen die gekocht zijn met edelstenen geen statistische voordelen bieden, zodat spelers ook zonder ze van de app gebruik kunnen maken!",
+ "webFaqAnswer10": "Edelstenen kunnen [gekocht worden met echt geld](https://habitica.com/#/options/settings/subscription), hoewel [abonnees](https://habitica.com/#/options/settings/subscription) ze kunnen kopen met goud. Wanneer mensen zich abonneren of edelstenen kopen, helpen ze ons de site draaiende te houden. We zijn erg dankbaar voor hun steun!\n
\nBuiten ze direct te kopen of een abonnee te worden, zijn er twee andere manieren waarop spelers edelstenen kunnen krijgen:\n
\n* Win een uitdaging die door een andere speler is opgezet onder Sociaal > Uitdagingen.\n* Draag met je vaardigheden bij aan het Habitica-project. Bekijk deze wiki voor meer details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n
\nHoudt in gedachten dat voorwerpen die gekocht zijn met edelstenen geen statistische voordelen bieden, zodat spelers ook zonder ze van de app gebruik kunnen maken!",
"faqQuestion11": "Hoe rapporteer ik een bug of vraag ik een feature aan?",
"iosFaqAnswer11": "Je kunt een bug rapporteren, een functionaliteit aan vragen of feedback versturen onder Menu > Fout melden en Menu > Stuur feedback! We zullen alles doen wat we kunnen om je te helpen.",
"webFaqAnswer11": "Rapporten van bugs worden verzameld op GitHub. Ga naar [Help > Fout melden](https://github.com/HabitRPG/habitrpg/issues/2760) en volg de instructies. Maak je geen zorgen, we zullen het snel maken!\n
\nVerzoeken voor functies zijn verzameld op Trello. ga naar [Help > Functie aanvragen](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) en volg de instructies. Ta-da!",
"faqQuestion12": "Hoe strijd ik tegen een Wereldbaas?",
- "iosFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
- "webFaqAnswer12": "World Bosses are special monsters that appear in the Tavern. All active users are automatically battling the Boss, and their tasks and skills will damage the Boss as usual.\n
\n You can also be in a normal Quest at the same time. Your tasks and skills will count towards both the World Boss and the Boss/Collection Quest in your party.\n
\n A World Boss will never hurt you or your account in any way. Instead, it has a Rage Bar that fills when users skip Dailies. If its Rage bar fills, it will attack one of the Non-Player Characters around the site and their image will change.\n
\n You can read more about [past World Bosses](http://habitica.wikia.com/wiki/World_Bosses) on the wiki.",
+ "iosFaqAnswer12": "Wereldbazen zijn speciale monsters die in de herberg verschijnen. Alle actieve gebruikers vechten automatisch tegen de baas en hun taken en vaardigheden beschadigen de baas zoals gebruikelijk.\n\nJe kunt ook tegelijkertijd een normale queeste aan het doen zijn. Je taken en vaardigheden tellen dan zowel tegen de wereldbaas als tegen de baas/ verzamelqueeste van je groep.\n\nEen wereldbaas zal jou of je account nooit beschadigen. In plaats daarvan heeft het een furie-balk die vult wanneer gebruikers dagelijkse taken overslaan. Als de furie-balk gevuld is, valt de baas een van de NPC's op de site aan en hun afbeelding verandert dan.\n\nJe kunt meer lezen over [wereldbazen uit het verleden](http://habitica.wikia.com/wiki/World_Bosses) op de wiki.",
+ "webFaqAnswer12": "Wereldbazen zijn speciale monsters die in de herberg verschijnen. Alle actieve gebruikers vechten automatisch tegen de baas en hun taken en vaardigheden beschadigen de baas zoals gebruikelijk.\n
\nJe kunt ook tegelijkertijd een normale queeste aan het doen zijn. Je taken en vaardigheden tellen dan zowel tegen de wereldbaas als tegen de baas/ verzamelqueeste van je groep.\n
\nEen wereldbaas zal jou of je account nooit beschadigen. In plaats daarvan heeft het een furie-balk die vult wanneer gebruikers dagelijkse taken overslaan. Als de furie-balk gevuld is, valt de baas een van de NPC's op de site aan en hun afbeelding verandert dan.\n
\nJe kunt meer lezen over [wereldbazen uit het verleden](http://habitica.wikia.com/wiki/World_Bosses) op de wiki.",
"iosFaqStillNeedHelp": "Als je een vraag hebt die niet in deze lijst staat, vraag het in de herberg-chat onder Sociaal > Herberg! We zijn blij dat we kunnen helpen.",
"webFaqStillNeedHelp": "Als je een vraag hebt die niet op deze lijst staat, vraag het in de [Newbies gilde](https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a)! We zijn blij je te kunnen helpen."
}
\ No newline at end of file
diff --git a/common/locales/nl/front.json b/common/locales/nl/front.json
index cacd37f776..95c08a6753 100644
--- a/common/locales/nl/front.json
+++ b/common/locales/nl/front.json
@@ -32,7 +32,7 @@
"companyPrivacy": "Privacy",
"companyTerms": "Voorwaarden",
"companyVideos": "Video's",
- "contribUse": "Tools die worden gebruikt om aan Habitica bij te dragen",
+ "contribUse": "Habitica-bijdragers gebruiken",
"dragonsilverQuote": "Je wil niet weten hoeveel tijd- en taakmanagementprogramma's ik al heb geprobeerd over de jaren... [Habitica] is de enige die ik heb gebruikt die daadwerkelijk helpt om dingen gedaan te krijgen en niet alleen alles op een lijstje te zetten.",
"dreimQuote": "Toen ik [Habitica] afgelopen zomer ontdekte, was ik net gezakt voor de helft van mijn examens. Dankzij de dagelijkse taken kon ik mezelf discipline aanleren, zo ben ik een maand geleden daadwerkelijk voor al mijn examens geslaagd met heel goede cijfers.",
"elmiQuote": "Elke ochtend heb ik zin om ' s ochtends op te staan zodat ik wat goud kan verdienen!",
@@ -74,7 +74,7 @@
"infhQuote": "[Habitica] heeft me echt geholpen om structuur aan te brengen in mijn leven op de universiteit.",
"invalidEmail": "Om het wachtwoord te resetten is een geldig e-mailadres vereist.",
"irishfeet123Quote": "Ik had verschrikkelijke gewoontes wat betreft opruimen na het eten en liet overal kopjes slingeren. [Habitica] heeft me daarvan genezen!",
- "joinOthers": "Join <%= userCount %> people making it fun to achieve goals!",
+ "joinOthers": "Sluit je aan bij <%= userCount %> anderen en maak het leuk om je doelen te bereiken!",
"kazuiQuote": "Voor [Habitica] zat ik vast met mijn thesis en was ik ontevreden met mijn persoonlijke discipline op het gebied van het huishouden en dingen zoals vocabulaire leren en Go-theorie leren. Het blijkt dat deze taken opbreken in kleinere, behapbare checklijsten precies is wat nodig was om me gemotiveerd te houden.",
"landingadminlink": "administratieve pakketten",
"landingend": "Nog niet overtuigd?",
@@ -183,10 +183,10 @@
"apps": "Apps",
"notifyAndroidApp": "Wil je bericht van ons ontvangen als de Android app klaar is? Schrijf je in op deze mailinglijst!",
"checkOutIOSApp": "Probeer onze nieuwe iOS App uit!",
- "imagine1": "Imagine if improving your life were as fun as playing a game.",
- "landingCopy1": "Advance in the game by completing your real-life tasks.",
- "landingCopy2": "Battle monsters with friends to stay accountable to your goals.",
- "landingCopy3": "Join over <%= userCount %> people having fun as they improve their lives.",
- "alreadyHaveAccount": "I already have an account!",
- "getStartedNow": "Get Started Now!"
+ "imagine1": "Stel je een leven voor dat net zo leuk is als het spelen van een spel.",
+ "landingCopy1": "Vorder door je taken in het echte leven af te vinken.",
+ "landingCopy2": "Speel met vrienden tegen eindbazen om verantwoordelijk te zijn in je levensdoelen.",
+ "landingCopy3": "Sluit je aan bij <%= userCount %> anderen die spelenderwijs hun levens verbeteren!",
+ "alreadyHaveAccount": "Ik heb al een account!",
+ "getStartedNow": "Ga aan de slag!"
}
\ No newline at end of file
diff --git a/common/locales/nl/gear.json b/common/locales/nl/gear.json
index 4c2c0080a7..3c19e5d3a5 100644
--- a/common/locales/nl/gear.json
+++ b/common/locales/nl/gear.json
@@ -127,9 +127,9 @@
"weaponSpecialSummer2015HealerText": "Staf van de golven",
"weaponSpecialSummer2015HealerNotes": "Heelt zee-ziekte en zeeziekte! Verhoogt Intelligentie met <%= int %>. Beperkte oplage zomeruitrusting 2015.",
"weaponSpecialFall2015RogueText": "Vleermuisbijl",
- "weaponSpecialFall2015RogueNotes": "Angstige dagelijkse taken vrezen het flappen van deze bijl. Verhoogt kracht met <%= str %>. Beperkte oplage herfstuitrusting 2015.",
+ "weaponSpecialFall2015RogueNotes": "Angstige dagelijkse taken vrezen het meppen van deze bijl. Verhoogt kracht met <%= str %>. Beperkte oplage herfstuitrusting 2015.",
"weaponSpecialFall2015WarriorText": "Houten plank",
- "weaponSpecialFall2015WarriorNotes": "Goed om dingen te verhogen in maïsvelden en/of taken te slaan, Verhoogt kracht met <%= str %>. Beperkte oplage herfstuitrusting 2015.",
+ "weaponSpecialFall2015WarriorNotes": "Goed om dingen te verhogen in maïsvelden en/of taken te slaan. Verhoogt kracht met <%= str %>. Beperkte oplage herfstuitrusting 2015.",
"weaponSpecialFall2015MageText": "Betoverde draad",
"weaponSpecialFall2015MageNotes": "Een machtige Haak Heks kan deze betoverde draad controleren zonder hem zelfs maar aan te raken! Verhoogt intelligentie met <%= int %> en perceptie met <%= per %>. Beperkte oplage herfstuitrusting 2015.",
"weaponSpecialFall2015HealerText": "Moerasslijmtoverdrank",
@@ -503,9 +503,9 @@
"headArmoireOrangeCatText": "Oranje kattenhoed",
"headArmoireOrangeCatNotes": "Deze oranje hoed is... aan het spinnen. En zwaait met zijn staart. En ademt? Ja, je hebt gewoon een slapende kat op je hoofd. Verhoogt kracht en lichaam elk met <%= attrs %>. Betoverd kabinet: Onafhankelijk voorwerp.",
"headArmoireBlueFloppyHatText": "Blauwe flaphoed",
- "headArmoireBlueFloppyHatNotes": "Many spells have been sewn into this simple hat, giving it a brilliant blue color. Increases Constitution, Intelligence, and Perception by <%= attrs %> each. Enchanted Armoire: Independent Item.",
+ "headArmoireBlueFloppyHatNotes": "Vele spreuken zijn genaaid in deze eenvoudige hoed, daardoor kreeg het deze briljante blauwe kleur. Verhoogt Lichaam, Intelligentie en Perceptie elk met <%= attrs%>. Betoverd kabinet: Onafhankelijk voorwerp.",
"headArmoireShepherdHeaddressText": "Herders Hoofdtooi",
- "headArmoireShepherdHeaddressNotes": "Sometimes the gryphons that you herd like to chew on this headdress, but it makes you seem more intelligent nonetheless. Increases Intelligence by <%= int %>. Enchanted Armoire: Shepherd Set (Item 3 of 3).",
+ "headArmoireShepherdHeaddressNotes": "Soms houden jouw griffioenen ervan om van deze hoofdtooi te snoepen, maar het maakt je daardoor des te intelligenter. Verhoogt Intelligentie met <%= int %>. Betoverd kabinet: Herder set (voorwerp 3 van 3). ",
"offhand": "artikel voor schildhand",
"shieldBase0Text": "Geen uitrusting voor schildhand",
"shieldBase0Notes": "Geen schild of tweede wapen.",
@@ -578,11 +578,11 @@
"shieldSpecialSummer2015HealerText": "Stevig schild",
"shieldSpecialSummer2015HealerNotes": "Gebruik dit schild om scheepsratten aan de kant te beuken. Verhoogt Lichaam met <%= con %>. Beperkte oplage zomeruitrusting 2015.",
"shieldSpecialFall2015RogueText": "Vleermuisbijl",
- "shieldSpecialFall2015RogueNotes": "Angstige dagelijkse taken vrezen het flappen van deze bijl. Verhoogt kracht met <%= str %>. Beperkte oplage herfstuitrusting 2014.",
+ "shieldSpecialFall2015RogueNotes": "Angstige dagelijkse taken vrezen het meppen van deze bijl. Verhoogt kracht met <%= str %>. Beperkte oplage herfstuitrusting 2015.",
"shieldSpecialFall2015WarriorText": "Tas met vogelzaad",
- "shieldSpecialFall2015WarriorNotes": "Het is waar dat je de kraaien BANG moet maken, maar er is niets mis met vrienden maken! Verhoogt lichaam met <%= con %>. Beperkte oplage 2015 herstuitrustsing.",
+ "shieldSpecialFall2015WarriorNotes": "Het is waar dat je de kraaien BANG moet maken, maar er is niets mis met vrienden maken! Verhoogt lichaam met <%= con %>. Beperkte oplage 2015 herfstuitrusting.",
"shieldSpecialFall2015HealerText": "Roerstok",
- "shieldSpecialFall2015HealerNotes": "Deze stok kan alles roeren zonder te smelten, op te lossen of vlam te vatten! Het kan ook gebruikt worden om fel te prikken in vijandige taken. Verhoogt lichaam met <%= con %>. Bepertkte oplage 2015 herfstuitrusting 2014.",
+ "shieldSpecialFall2015HealerNotes": "Deze stok kan alles roeren zonder te smelten, op te lossen of vlam te vatten! Het kan ook gebruikt worden om fel te prikken in vijandige taken. Verhoogt lichaam met <%= con %>. Beperkte oplage 2015 herfstuitrusting.",
"shieldMystery301405Text": "Klokkenschild",
"shieldMystery301405Notes": "Je hebt alle tijd van de wereld met dit enorme klokkenschild! Verleent geen voordelen. Abonnee-uitrusting juni 3015.",
"shieldArmoireGladiatorShieldText": "Gladiatorenschild",
diff --git a/common/locales/nl/generic.json b/common/locales/nl/generic.json
index 89a4f98044..d79337eb36 100644
--- a/common/locales/nl/generic.json
+++ b/common/locales/nl/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Heeft <%= number %> naamdagen gevierd! Dankjewel dat je een fantastische gebruiker bent.",
"achievementDilatory": "Redder van Dralen",
"achievementDilatoryText": "Heeft geholpen de Donkere Draak van Dralen te verslaan tijdens het Zomerse Spetterevenement 2014!",
- "costumeContest": "Verkleedwedstrijd 2014",
- "costumeContestText": "Heeft meegedaan aan de verkleedwedstrijd voor Halloween 2014. Bekijk enkele van de inzendingen op blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Lid sinds",
"lastLoggedIn": "- Laatst ingelogd op",
"notPorted": "Deze functie is nog niet overgedragen van de originele site.",
@@ -135,16 +136,16 @@
"thankyou3": "Ik ben je heel dankbaar - dankjewel!",
"thankyouCardAchievementTitle": "Duizendmaal Dank",
"thankyouCardAchievementText": "Bedankt voor het dankbaar zijn! Je hebt <%= cards %> bedankkaartjes verstuurd of ontvangen.",
- "streakAchievement": "You earned a streak achievement!",
- "firstStreakAchievement": "21-Day Streak",
- "streakAchievementCount": "<%= streaks %> 21-Day Streaks",
- "twentyOneDays": "You've completed your Daily for 21 days in a row!",
- "dontBreakStreak": "Amazing job. Don't break the streak!",
- "dontStop": "Don't Stop Now!",
- "levelUpShare": "I leveled up in Habitica by improving my real-life habits!",
- "questUnlockShare": "I unlocked a new quest in Habitica!",
- "hatchPetShare": "I hatched a new pet by completing my real-life tasks!",
- "raisePetShare": "I raised a pet into a mount by completing my real-life tasks!",
- "wonChallengeShare": "I won a challenge in Habitica!",
- "achievementShare": "I earned a new achievement in Habitica!"
+ "streakAchievement": "Je hebt een serie prestaties verdiend!",
+ "firstStreakAchievement": "Serie van 21 dagen",
+ "streakAchievementCount": "<%= streaks %> Series van 21 dagen",
+ "twentyOneDays": "Je hebt een dagelijkse taak 21 dagen achterelkaar voltooid!",
+ "dontBreakStreak": "Geweldig gedaan. Doorbreek de serie niet!",
+ "dontStop": "Nu niet stoppen!",
+ "levelUpShare": "Ik ben een niveau gevorderd in Habitica door mijn gewoontes uit het echte leven te verbeteren!",
+ "questUnlockShare": "Ik heb een nieuwe queeste vrijgespeeld in Habitica!",
+ "hatchPetShare": "Ik heb een nieuw huisdier uitgebroed door mijn taken uit het echte leven te voltooien!",
+ "raisePetShare": "Ik heb een huisdier opgevoed naar een rijdier door mijn taken uit het echte leven te voltooien!",
+ "wonChallengeShare": "Ik heb een uitdaging gewonnen in Habitica!",
+ "achievementShare": "Ik heb een nieuwe prestatie behaald in Habitica!"
}
\ No newline at end of file
diff --git a/common/locales/nl/groups.json b/common/locales/nl/groups.json
index f218099ff7..5d70c05ae1 100644
--- a/common/locales/nl/groups.json
+++ b/common/locales/nl/groups.json
@@ -16,7 +16,7 @@
"askQuestionNewbiesGuild": "Vraag stellen (Newbies Guild)",
"tavernTalk": "Herbergchat",
"tavernAlert1": "Let op: ontwikkelaars zien het niet als je hier een bug meldt. Gebruik daar liever",
- "tavernAlert2": "gebruik GitHub",
+ "tavernAlert2": "GitHub voor",
"moderatorIntro1": "Herberg- en gildebeheerders zijn:",
"communityGuidelines": "Gemeenschapsrichtlijnen",
"communityGuidelinesRead1": "Lees alsjeblieft onze",
@@ -26,7 +26,7 @@
"updatedParty": "Groepsinstellingen bijgewerkt.",
"noPartyText": "Of je zit niet in een groep, of het duurt een tijdje om je groep in te laden. Je kunt eventueel een nieuwe groep aanmaken en vrienden uitnodigen; als je je bij een bestaande groep aan wil sluiten, laat ze dan onderstaand unieke gebruikers-ID invoeren en kom dan hier terug voor de uitnodiging:",
"LFG": "Ga om je nieuwe groep te promoten of om een groep te vinden naar het gilde voor <%= linkStart %>berichten: groep gezocht<%= linkEnd %>.",
- "wantExistingParty": "Wil je bij een bestaande groep aansluiten? Ga dan naar de <%= linkStart %>Party Wanted Guild<%= linkEnd %> en post deze Gebruikers ID:",
+ "wantExistingParty": "Wil je je bij een bestaande groep aansluiten? Ga dan naar de <%= linkStart %>Party Wanted Guild<%= linkEnd %> en post deze Gebruikers ID:",
"joinExistingParty": "Aansluiten bij de groep van iemand anders",
"create": "Creëren",
"userId": "Gebruikers-ID",
@@ -115,7 +115,7 @@
"sendGift": "Geschenk versturen",
"inviteFriends": "Vrienden Uitnodigen",
"inviteByEmail": "Per email uitnodigen",
- "inviteByEmailExplanation": "Habitica karakters gemaakt via deze email, zullen automatisch in je groep uitgenodigd worden.",
+ "inviteByEmailExplanation": "Als een vriend mee doet met Habitica via deze email, zal hij automatisch in je groep uitgenodigd worden.",
"inviteFriendsNow": "Nu vrienden uitnodigen",
"inviteFriendsLater": "Later vrienden uitnodigen",
"inviteAlertInfo": "Als je vrienden kent die al Habitica gebruiken, nodig ze uit met een Gebruikers ID hier.",
@@ -139,13 +139,13 @@
"likePost": "Klik hier als je dit bericht leuk vindt!",
"partyExplanation1": "Speel Habitica met vrienden en blijf verantwoordelijk!",
"partyExplanation2": "Strijd tegen monsters en maak uitdagingen!",
- "partyExplanation3": "Nodig je vrienden uit om een Quest Scroll te krijgen!",
+ "partyExplanation3": "Nodig je vrienden uit om een queeste-perkamentrol te krijgen!",
"wantToStartParty": "Wil je een groep oprichten?",
- "exclusiveQuestScroll": "Als je een vriend in je groep uitnodigd, krijg je een exclusieve Quest Scroll om de Basi-list samen te bestrijden!",
+ "exclusiveQuestScroll": "Als je een vriend in je groep uitnodigt, krijg je een exclusieve queeste-perkamentrol om de Basi-list samen te bestrijden!",
"nameYourParty": "Geef je nieuwe groep een naam!",
"partyEmpty": "Je bent het enige lid van je groep. Nodig je vrienden uit!",
"partyChatEmpty": "Je groepschat is leeg! Typ een bericht in het bovenstaande vak om een conversatie te beginnen.",
"guildChatEmpty": "De gildechat is leeg! Typ een bericht in het bovenstaande vak om een conversatie te beginnen.",
"possessiveParty": "<%= name %>s groep",
- "requestAcceptGuidelines": "Als je berichten in de Herberg of een groep- of gildechat wilt plaatsen, lees dan eerst onze <%= linkStart %>Gemeenschapsrichtlijnen<%= linkEnd %> en klik dan op de knop onderaan om aan te geven dat je ze accepteert."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/nl/limited.json b/common/locales/nl/limited.json
index 832ac79369..a4eb48798e 100644
--- a/common/locales/nl/limited.json
+++ b/common/locales/nl/limited.json
@@ -30,7 +30,7 @@
"seasonalShopText": "Welkom in de Seizoenswinkel! We hebben op dit moment seizoensgoederen uit de lente-editie op voorraad. Alles wat je hier ziet is te koop tijdens het jaarlijkse Lente-evenement, maar we zijn slechts open tot 30 april! Koop nu wat je wilt hebben, want anders moet je een jaar wachten tot deze artikelen weer te krijgen zijn!",
"seasonalShopSummerText": "Welkom in de Seizoenswinkel!! We hebben nu seizoensspulletjes uit de zomereditie in het assortiment. Alles hier is ieder jaar te koop tijdens het Zomerspetterevenement, maar we zijn slechts open tot 31 juli. Zorg er dus voor dat je nu inslaat of je moet een jaar wachten om deze voorwerpen te kunnen kopen!",
"seasonalShopFallText": "Welkom in de Seizoenswinkel! We hebben op het moment najaars seizoenseditie spullen in voorraad. Alles is te koop tijdens het Najaars Volksfeest-evenement ieder jaar, maar we zijn maar open tot 31 oktober. Dus zorg dat je nu inslaat of je moet een jaar wachten voordat je deze voorwerpen weer kunt kopen!",
- "seasonalShopFallTextBroken": "Oh... Welkom in de Seizoenswinkel... We hebben op het moment najaars spullen in voorraad, ofzo... Alles is te koop tijdens het Najaars Volksfeest-evenement ieder jaar, maar we zijn maar open tot 31 oktober... Zorg maar dat je inslaat anders zou je moeten wachten... wachten... en nog een wachten... *zucht*",
+ "seasonalShopFallTextBroken": "Oh... Welkom in de Seizoenswinkel... We hebben op het moment najaars spullen in voorraad, ofzo... Alles is te koop tijdens het Najaars Volksfeest-evenement ieder jaar, maar we zijn maar open tot 31 oktober... Zorg maar dat je inslaat anders zou je moeten wachten... wachten... en nog eens wachten... *zucht*",
"seasonalShopRebirth": "Als je een Bol der Hergeboorte gebruikt hebt, kun je deze uitrustingsstukken weer kopen in de beloningen kolom. In het begin kun je alleen de uitrustingsstukken van je huidige klasse kopen (dat is standaard Krijger), maar vrees niet, de uitrustingsstukken die bij een andere klasse horen komen weer beschikbaar als je die klasse kiest.",
"candycaneSet": "Zuurstok (Magiër)",
"skiSet": "Skimoordenaar (Dief)",
@@ -58,8 +58,8 @@
"reefSeahealerSet": "Zeeheler uit het Rif (heler)",
"roguishPirateSet": "Doortrapte piraat (dief)",
"monsterOfScienceSet": "Monster van de Wetenschap (Krijger)\n=",
- "witchyWizardSet": "Hekserige Tovernaar (Magiër)",
- "mummyMedicSet": "Mummy Medicus (Heler)",
+ "witchyWizardSet": "Hekserige Tovenaar (Magiër)",
+ "mummyMedicSet": "Mummie Medicus (Heler)",
"vampireSmiterSet": "Vampier Uitbanner (Dief)",
"fallEventAvailability": "Beschikbaar tot 31 oktober"
}
\ No newline at end of file
diff --git a/common/locales/nl/noscript.json b/common/locales/nl/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/nl/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/nl/npc.json b/common/locales/nl/npc.json
index 0ffebd6de3..00fb3f4a4e 100644
--- a/common/locales/nl/npc.json
+++ b/common/locales/nl/npc.json
@@ -58,10 +58,10 @@
"tourPartyPage": "Jouw groep helpt je verantwoordelijk te blijven. Nodig je vrienden uit en speel een queeste-perkamentrol vrij!",
"tourGuildsPage": "Gildes zijn chatgroepen met gezamenlijke interesses: door de spelers, voor de spelers. Bekijk de lijst en word lid van de gildes die je interesseren. Kijk eens bij de populaire Newbies-gilde, waar iedereen vragen kan stellen over Habitica!",
"tourChallengesPage": "Uitdagingen zijn takenlijsten met een thema, aangemaakt door andere gebruikers! Als je meedoet aan een uitdaging worden de bijbehorende taken toegevoegd aan je account. Wedijver met andere gebruikers om edelstenen te winnen!",
- "tourMarketPage": "Vanaf niveau 4 kun je eieren en uitbroedtoverdranken vinden als je een taak afvinkt. Ze verschijnen hier - gebruik ze om huisdieren te maken! Je kunt ook artikelen kopen in de markt.",
+ "tourMarketPage": "Vanaf niveau 3 kun je eieren en uitbroedtoverdranken vinden als je een taak afvinkt. Ze verschijnen hier - gebruik ze om huisdieren uit te broeden! Je kunt ook artikelen kopen in de markt.",
"tourHallPage": "Welkom in de Heldenhal, waar mensen die een bijdrage leveren aan Habitica worden geëerd. Door programmeren, kunst, muziek, schrijven, of zelfs door behulpzaam te zijn hebben zij edelstenen, exclusieve uitrusting en prestigieuze titels verdiend. Als je wilt, kun jij ook bijdragen aan Habitica!",
- "tourPetsPage": "Dit is de Stal! Na niveau 4 kan je huisdieren laten uitkomen door middel van eieren en toverdranken. Als je een huisdier laat uitkomen in de markt verschijnt het hier! Klik op het plaatje van een huisdier om het aan je avatar toe te voegen. Voer je huisdieren met het voedsel wat je vindt na niveau 4 om ze te laten uitgroeien tot krachtige rijdieren.",
- "tourMountsPage": "Als je een huisdier genoeg hebt gevoerd en het in een rijdier verandert, verschijnt het hier. (Huisdieren, rijdieren en voedsel zijn beschikbaar na niveau 4.) Klik op een rijdier om op te zadelen!",
+ "tourPetsPage": "Dit is de Stal! Na niveau 3 kan je huisdieren laten uitkomen door middel van eieren en toverdranken. Als je een huisdier laat uitkomen in de markt verschijnt het hier! Klik op het plaatje van een huisdier om het aan je avatar toe te voegen. Voer je huisdieren met het voedsel wat je vindt na niveau 3 om ze te laten uitgroeien tot krachtige rijdieren.",
+ "tourMountsPage": "Als je een huisdier genoeg hebt gevoerd en het in een rijdier verandert, verschijnt het hier. (Huisdieren, rijdieren en voedsel zijn beschikbaar na niveau 3.) Klik op een rijdier om op te zadelen!",
"tourEquipmentPage": "Hier wordt je uitrusting opgeslagen. Je strijduitrusting heeft effect op je statistieken. Als je wilt dat je avatar er anders uitziet zonder dat de statistieken veranderen, zet dan \"Kostuum gebruiken\" aan.",
"tourOkay": "Oké!",
"tourAwesome": "Super!",
diff --git a/common/locales/nl/pets.json b/common/locales/nl/pets.json
index 4bae51010e..4f08aaf6ed 100644
--- a/common/locales/nl/pets.json
+++ b/common/locales/nl/pets.json
@@ -58,16 +58,16 @@
"firstDrop": "Je hebt het vondstensysteem vrijgespeeld! Als je nu een taak volbrengt, heb je een kleine kans om een voorwerp te vinden, zoals eieren, drankjes en voedsel! Je hebt net een <%= eggText %> ei gevonden! <%= eggNotes %>",
"useGems": "Als je je oog hebt laten vallen op een huisdier, maar niet wilt wachten tot je het juiste ei of drankje vindt, gebruik dan edelstenen in Boedel > Markt om er één te kopen!",
"hatchAPot": "<%= potion %> <%= egg %> uitbroeden?",
- "hatchedPet": "You hatched a <%= potion %> <%= egg %>!",
- "displayNow": "Display Now",
- "displayLater": "Display Later",
- "earnedCompanion": "With all your productivity, you've earned a new companion. Feed it to make it grow!",
+ "hatchedPet": "Je heb een <%= potion %> <%= egg %> uitgebroed!",
+ "displayNow": "Toon nu",
+ "displayLater": "Toon later",
+ "earnedCompanion": "Door al jouw productiviteit heb je een nieuwe kameraad verdiend. Voer hem en laat hem groeien! ",
"feedPet": "<%= text %> aan je <%= name %> voeren?",
"useSaddle": "<%= pet %> zadelen?",
- "raisedPet": "You grew a <%= pet %>!",
- "earnedSteed": "By completing your tasks, you've earned a faithful steed!",
- "rideNow": "Ride Now",
- "rideLater": "Ride Later",
+ "raisedPet": "Je hebt een <%= pet %> laten opgroeien!",
+ "earnedSteed": "Door het voltooien van taken heb je een trouw ros verdiend!",
+ "rideNow": "Berijd nu",
+ "rideLater": "Berijd later",
"petName": "<%= potion %> <%= egg %>",
"mountName": "<%= potion %> <%= mount %>",
"petKeyName": "Sleutel van de Hokken",
diff --git a/common/locales/nl/quests.json b/common/locales/nl/quests.json
index e480ebb990..4de13a5a7f 100644
--- a/common/locales/nl/quests.json
+++ b/common/locales/nl/quests.json
@@ -77,6 +77,6 @@
"startQuest": "Queeste starten",
"whichQuestStart": "Welke queeste wil je beginnen?",
"getMoreQuests": "Verkrijg meer queesten",
- "unlockedAQuest": "You unlocked a quest!",
- "leveledUpReceivedQuest": "You leveled up to Level <%= level %> and received a quest scroll!"
+ "unlockedAQuest": "Je hebt een queeste vrijgespeeld!",
+ "leveledUpReceivedQuest": "Je hebt niveau <%= level %> bereikt en hebt een queeste ontvangen!"
}
\ No newline at end of file
diff --git a/common/locales/nl/questscontent.json b/common/locales/nl/questscontent.json
index 8b1d9708b7..90f7b56d9f 100644
--- a/common/locales/nl/questscontent.json
+++ b/common/locales/nl/questscontent.json
@@ -268,10 +268,10 @@
"questFrogBoss": "Belemmerende Kikker",
"questFrogDropFrogEgg": "Kikker (ei)",
"questFrogUnlockText": "Maakt het kopen van kikkereieren in de markt mogelijk",
- "questSnakeText": "The Serpent of Distraction",
- "questSnakeNotes": "It takes a hardy soul to live in the Sand Dunes of Distraction. The arid desert is hardly a productive place, and the shimmering dunes have led many a traveler astray. However, something has even the locals spooked. The sands have been shifting and upturning entire villages. Residents claim a monster with an enormous serpentine body lies in wait under the sands, and they have all pooled together a reward for whomever will help them find and stop it. The much-lauded snake charmers @EmeraldOx and @PainterProphet have agreed to help you summon the beast. Can you stop the Serpent of Distraction?",
- "questSnakeCompletion": "With assistance from the charmers, you banish the Serpent of Distraction. Though you were happy to help the inhabitants of the Dunes, you can't help but feel a little sad for your fallen foe. While you contemplate the sights, @LordDarkly approaches you. \"Thank you! It's not much, but I hope this can express our gratitude properly.\" He hands you some Gold and... some Snake eggs! You will see that majestic animal again after all.",
- "questSnakeBoss": "Serpent of Distraction",
- "questSnakeDropSnakeEgg": "Snake (Egg)",
- "questSnakeUnlockText": "Unlocks purchasable Snake eggs in the Market"
+ "questSnakeText": "De Slang van Afleiding",
+ "questSnakeNotes": "Je hebt de moed van een doorgewinterde ziel nodig om in de Duinen van Afleiding te kunnen leven. De dorre woestijn is verre van een productive plek, en de glimmende duinen hebben meerdere reizigers laten verdwalen. Echter, iets heeft de lokale bevolking laten schrikken. Het zand is gaan verschuiven en heeft hele dorpen omgedraaid. De inwoners beweren dat er een gigantisch monster met een slangachtig lichaam op de loer ligt onder het zand, en ze hebben een gezamelijke beloning voor degene die hen zal helpen om hem te vinden en te stoppen. De veelgeprezen slangenbezweerders @EmeraldOx en @PainterProphet hebben je aangeboden om je te helpen het beest op te roepen. Kan jij de Slang van Afleiding stoppen?",
+ "questSnakeCompletion": "Met hulp van de slangenbezweerder heb je de Slang van Afleiding verbannen. Ook al was je blij om de bewoners van de duinen te helpen, ben je ook een beetje verdrietig dat je het beest hebt weggejaagd. Terwijl je in de verte staart, komt @LordDarkly naar je toe: \"Dankjewel! Het is niet veel, maar ik hoop dat het gebaar genoeg is.\" Hij overhandigt je goud en... slangeneieren! Je zal dat majestueuze dier toch nog terug zien.",
+ "questSnakeBoss": "Slang van Afleiding",
+ "questSnakeDropSnakeEgg": "Slang (ei)",
+ "questSnakeUnlockText": "Maakt het kopen van slangeneieren in de markt mogelijk"
}
\ No newline at end of file
diff --git a/common/locales/nl/settings.json b/common/locales/nl/settings.json
index 9217cbe077..5e9e824b85 100644
--- a/common/locales/nl/settings.json
+++ b/common/locales/nl/settings.json
@@ -14,11 +14,11 @@
"startCollapsedPop": "Deze optie verbergt aanvankelijk de lijst met labels als je een taak opent om hem te bewerken.",
"startAdvCollapsed": "Geavanceerde opties in taken aanvankelijk ingeklapt laten zien",
"startAdvCollapsedPop": "Deze optie verbergt de geavanceerde opties wanneer je voor het eerst een taak opent om hem te bewerken.",
- "dontShowAgain": "Don't show this again",
- "suppressLevelUpModal": "Don't show popup when gaining a level",
- "suppressHatchPetModal": "Don't show popup when hatching a pet",
- "suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
- "suppressStreakModal": "Don't show popup when attaining a Streak achievement",
+ "dontShowAgain": "Dit bericht niet meer tonen",
+ "suppressLevelUpModal": "Geen pop up tonen als ik een hoger niveau bereik",
+ "suppressHatchPetModal": "Geen pop up tonen als ik een huisdier uitbroed",
+ "suppressRaisePetModal": "Geen pop up tonen als ik een huisdier opvoed naar een rijdier",
+ "suppressStreakModal": "Geen pop up tonen als ik een serie-prestatie bereik",
"showTour": "Rondleiding starten",
"restartTour": "Herhaal de introductierondleiding van toen je net begon met Habitica.",
"showBailey": "Bailey laten zien",
@@ -93,7 +93,7 @@
"loginNameDescription2": "Gebruiker->Profiel",
"loginNameDescription3": "om de naam die bij je avatar en chatberichten verschijnt aan te passen.",
"emailNotifications": "E-mailberichten",
- "wonChallenge": "You won a Challenge!",
+ "wonChallenge": "Je hebt een uitdaging gewonnen!",
"newPM": "Privébericht ontvangen",
"giftedGems": "Geschonken edelstenen",
"giftedGemsInfo": "<%= amount %> edelstenen - van <%= name %>",
diff --git a/common/locales/pl/backgrounds.json b/common/locales/pl/backgrounds.json
index ca9ac487ee..af5f72d57f 100644
--- a/common/locales/pl/backgrounds.json
+++ b/common/locales/pl/backgrounds.json
@@ -120,10 +120,10 @@
"backgroundSwarmingDarknessText": "Zarojona Ciemność",
"backgroundSwarmingDarknessNotes": "Drżyj w Zarojonej Ciemności",
"backgrounds112015": "ZESTAW 18: Opublikowany w listopadzie 2015",
- "backgroundFloatingIslandsText": "Floating Islands",
- "backgroundFloatingIslandsNotes": "Hop across the Floating Islands.",
+ "backgroundFloatingIslandsText": "Latające Wyspy",
+ "backgroundFloatingIslandsNotes": "Skacz przez Latające Wyspy.",
"backgroundNightDunesText": "Nocne wydmy",
- "backgroundNightDunesNotes": "Walk peacefully through the Night Dunes.",
+ "backgroundNightDunesNotes": "Wybierz się na spacer przez Nocne Wydmy.",
"backgroundSunsetOasisText": "Oaza o zachodzie słońca",
"backgroundSunsetOasisNotes": "Odpocznij w oazie o zachodzie słońca."
}
\ No newline at end of file
diff --git a/common/locales/pl/challenge.json b/common/locales/pl/challenge.json
index ce0e4f83b4..de7998d9c4 100644
--- a/common/locales/pl/challenge.json
+++ b/common/locales/pl/challenge.json
@@ -60,8 +60,8 @@
"noPermissionEditChallenge": "Nie posiadasz uprawnień, by edytować to wyzwanie",
"noPermissionDeleteChallenge": "Nie posiadasz uprawnień, by usunąć to wyzwanie",
"noPermissionCloseChallenge": "Nie posiadasz uprawnień, by zamknąć to wyzwanie",
- "congratulations": "Congratulations!",
- "hurray": "Hurray!",
+ "congratulations": "Gratulacje!",
+ "hurray": "Hurra!",
"noChallengeOwner": "brak właściciela",
"noChallengeOwnerPopover": "To wyzwanie nie posiada właściciela, ponieważ osoba zakładająca to wyzwanie usunęła swoje konto."
}
\ No newline at end of file
diff --git a/common/locales/pl/content.json b/common/locales/pl/content.json
index cbbc71e539..2f80067053 100644
--- a/common/locales/pl/content.json
+++ b/common/locales/pl/content.json
@@ -98,9 +98,9 @@
"questEggFrogText": "Żaba",
"questEggFrogMountText": "Żaba",
"questEggFrogAdjective": "książęca",
- "questEggSnakeText": "Snake",
- "questEggSnakeMountText": "Snake",
- "questEggSnakeAdjective": "a slithering",
+ "questEggSnakeText": "Wąż",
+ "questEggSnakeMountText": "Wąż",
+ "questEggSnakeAdjective": "wijący się",
"eggNotes": "Znajdź eliksir wyklucia i wylej go na to jajo, a wykluje się z niego <%= eggAdjective(locale) %> <%= eggText(locale) %>. ",
"hatchingPotionBase": "Zwyczajny",
"hatchingPotionWhite": "Biały",
diff --git a/common/locales/pl/front.json b/common/locales/pl/front.json
index 40a63ff2b3..7adb728986 100644
--- a/common/locales/pl/front.json
+++ b/common/locales/pl/front.json
@@ -74,7 +74,7 @@
"infhQuote": "[Habitica] naprawdę pomogła mi poukładać sobie życie na studiach.",
"invalidEmail": "Do zresetowania hasła potrzebny jest ważny adres e-mail.",
"irishfeet123Quote": "Miałam okropne nawyki związane z porządnym sprzątaniem po posiłkach i rozstawianiem wszędzie kubków. [Habitica] to wyleczyła!",
- "joinOthers": "Join <%= userCount %> people making it fun to achieve goals!",
+ "joinOthers": "Dołącz do <%= userCount %> osób, które bawią się, osiągając cele!",
"kazuiQuote": "Przed [Habitiką] utknęłam na swojej pracy dyplomowej, byłam też niezadowolona ze stanu swojej osobistej dyscypliny wykonywania prac domowych i prowadzenia spraw takich jak nauka słówek czy studiowanie teorii go. Okazało się, że rozbicie zadań na łatwiejsze do wykonania kroki jest wyjątkowo dobrym sposobem na podtrzymywanie motywacji i nieporzucanie pracy.",
"landingadminlink": "pakietami dla administratorów",
"landingend": "Wciąż nieprzekonany?",
@@ -180,13 +180,13 @@
"merchandiseInquiries": "Zapytania handlowe",
"marketingInquiries": "Zapytania marketingowe/społecznościowe",
"tweet": "Tweetuj",
- "apps": "Apps",
+ "apps": "Aplikacje",
"notifyAndroidApp": "Chcesz, żebyśmy cię powiadomili, kiedy aplikacja na Androida będzie gotowa? Zapisz się na naszą listę mailingową!",
"checkOutIOSApp": "Wypróbuj naszą nową aplikację na system iOS!",
"imagine1": "Imagine if improving your life were as fun as playing a game.",
"landingCopy1": "Advance in the game by completing your real-life tasks.",
"landingCopy2": "Battle monsters with friends to stay accountable to your goals.",
"landingCopy3": "Join over <%= userCount %> people having fun as they improve their lives.",
- "alreadyHaveAccount": "I already have an account!",
- "getStartedNow": "Get Started Now!"
+ "alreadyHaveAccount": "Już mam swoje konto!",
+ "getStartedNow": "Zacznij teraz!"
}
\ No newline at end of file
diff --git a/common/locales/pl/generic.json b/common/locales/pl/generic.json
index 8e1d6ddf9b..903cefca87 100644
--- a/common/locales/pl/generic.json
+++ b/common/locales/pl/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Świętował <%= number %> dni nadania nazwy! Dzięki za bycie fantastycznym użytkownikiem.",
"achievementDilatory": "Zbawca Atleńtydy",
"achievementDilatoryText": "Pomógł pokonać Straszliwego Smoka Atleńtydy podczas Obchodów Letniego Plusku 2014!",
- "costumeContest": "Konkurs Kostiumowy 2014",
- "costumeContestText": "Brał udział w Konkursie Kostiumów Halloweenowych w 2014. Przejrzyj niektóre zgłoszenia na blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Członek od",
"lastLoggedIn": "- Ostatnio zalogowany",
"notPorted": "Ta funkcja nie jest jeszcze zaimportowana z oryginalnej strony.",
@@ -136,8 +137,8 @@
"thankyouCardAchievementTitle": "Ogromnie wdzięczny",
"thankyouCardAchievementText": "Dzięki za bycie wdzięcznym! Wysłał lub otrzymał <%= cards %> kartek z podziękowaniem.",
"streakAchievement": "You earned a streak achievement!",
- "firstStreakAchievement": "21-Day Streak",
- "streakAchievementCount": "<%= streaks %> 21-Day Streaks",
+ "firstStreakAchievement": "21-dniowa seria",
+ "streakAchievementCount": "<%= streaks %> 21-dniowych serii",
"twentyOneDays": "You've completed your Daily for 21 days in a row!",
"dontBreakStreak": "Amazing job. Don't break the streak!",
"dontStop": "Don't Stop Now!",
@@ -146,5 +147,5 @@
"hatchPetShare": "I hatched a new pet by completing my real-life tasks!",
"raisePetShare": "I raised a pet into a mount by completing my real-life tasks!",
"wonChallengeShare": "I won a challenge in Habitica!",
- "achievementShare": "I earned a new achievement in Habitica!"
+ "achievementShare": "Zdobyto nowe osiągnięcie w Habitice!"
}
\ No newline at end of file
diff --git a/common/locales/pl/groups.json b/common/locales/pl/groups.json
index 7fb3d2b115..7eb94a4e1d 100644
--- a/common/locales/pl/groups.json
+++ b/common/locales/pl/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Twój czat drużynowy jest pusty! Napisz wiadomość w powyższym okienku, by zacząć rozmowę.",
"guildChatEmpty": "Czat tej gildii jest pusty! Napisz wiadomość w powyższym okienku, by zacząć rozmowę.",
"possessiveParty": "Drużyna należąca do <%= name %>",
- "requestAcceptGuidelines": "Jeśli chcesz opublikować wiadomość w Karczmie lub na czacie dowolnej drużyny lub gildii, to najpierw przeczytaj <%= linkStart %>wytyczne wspólnotowe<%= linkEnd %>, a następnie kliknij przycisk poniżej, by je zaakceptować."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/pl/noscript.json b/common/locales/pl/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/pl/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/pl/pets.json b/common/locales/pl/pets.json
index f59d37ddff..827a706125 100644
--- a/common/locales/pl/pets.json
+++ b/common/locales/pl/pets.json
@@ -65,7 +65,7 @@
"feedPet": "Nakarmić <%= text %> twojego <%= name %>?",
"useSaddle": "Osiodłać <%= pet %>?",
"raisedPet": "You grew a <%= pet %>!",
- "earnedSteed": "By completing your tasks, you've earned a faithful steed!",
+ "earnedSteed": "Dzięki ukończeniu swoich zadań masz teraz wiernego wierzchowca!",
"rideNow": "Ride Now",
"rideLater": "Ride Later",
"petName": "<%= potion %> <%= egg %>",
diff --git a/common/locales/pl/quests.json b/common/locales/pl/quests.json
index d42b40b1a8..554c787d99 100644
--- a/common/locales/pl/quests.json
+++ b/common/locales/pl/quests.json
@@ -77,6 +77,6 @@
"startQuest": "Rozpocznij Misje",
"whichQuestStart": "Którą misję chcesz rozpocząć?",
"getMoreQuests": "Zdobądź więcej misji",
- "unlockedAQuest": "You unlocked a quest!",
+ "unlockedAQuest": "Odblokowałeś misję!",
"leveledUpReceivedQuest": "You leveled up to Level <%= level %> and received a quest scroll!"
}
\ No newline at end of file
diff --git a/common/locales/pl/questscontent.json b/common/locales/pl/questscontent.json
index 428cc51c5d..cac1a08ee2 100644
--- a/common/locales/pl/questscontent.json
+++ b/common/locales/pl/questscontent.json
@@ -272,6 +272,6 @@
"questSnakeNotes": "It takes a hardy soul to live in the Sand Dunes of Distraction. The arid desert is hardly a productive place, and the shimmering dunes have led many a traveler astray. However, something has even the locals spooked. The sands have been shifting and upturning entire villages. Residents claim a monster with an enormous serpentine body lies in wait under the sands, and they have all pooled together a reward for whomever will help them find and stop it. The much-lauded snake charmers @EmeraldOx and @PainterProphet have agreed to help you summon the beast. Can you stop the Serpent of Distraction?",
"questSnakeCompletion": "With assistance from the charmers, you banish the Serpent of Distraction. Though you were happy to help the inhabitants of the Dunes, you can't help but feel a little sad for your fallen foe. While you contemplate the sights, @LordDarkly approaches you. \"Thank you! It's not much, but I hope this can express our gratitude properly.\" He hands you some Gold and... some Snake eggs! You will see that majestic animal again after all.",
"questSnakeBoss": "Serpent of Distraction",
- "questSnakeDropSnakeEgg": "Snake (Egg)",
+ "questSnakeDropSnakeEgg": "Wąż (jajo)",
"questSnakeUnlockText": "Unlocks purchasable Snake eggs in the Market"
}
\ No newline at end of file
diff --git a/common/locales/pl/settings.json b/common/locales/pl/settings.json
index faccbafad3..d3799a3668 100644
--- a/common/locales/pl/settings.json
+++ b/common/locales/pl/settings.json
@@ -14,7 +14,7 @@
"startCollapsedPop": "Jeśli ta opcja jest włączona, lista tagów w zadaniach będzie ukryta, gdy po raz pierwszy otworzysz zadanie do edycji.",
"startAdvCollapsed": "Zaawansowane Opcje w zadaniach startują zwinięte",
"startAdvCollapsedPop": "Jeśli ta opcja jest włączona, Zaawansowane Opcje będą ukryte, gdy po raz pierwszy otworzysz zadanie do edycji.",
- "dontShowAgain": "Don't show this again",
+ "dontShowAgain": "Nie pokazuj mi tego więcej",
"suppressLevelUpModal": "Don't show popup when gaining a level",
"suppressHatchPetModal": "Don't show popup when hatching a pet",
"suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
diff --git a/common/locales/pt/backgrounds.json b/common/locales/pt/backgrounds.json
index 021b3c9a71..9461dfba8f 100644
--- a/common/locales/pt/backgrounds.json
+++ b/common/locales/pt/backgrounds.json
@@ -119,11 +119,11 @@
"backgroundSlimySwampNotes": "Se arrastar por Pântano Pegajoso",
"backgroundSwarmingDarknessText": "Escuridão Fervilhante",
"backgroundSwarmingDarknessNotes": "Trema na Escuridão Fervilhante",
- "backgrounds112015": "SET 18: Released November 2015",
+ "backgrounds112015": "SET 18: Lançado em Novembro de 2015",
"backgroundFloatingIslandsText": "Ilhas Flutuantes",
- "backgroundFloatingIslandsNotes": "Hop across the Floating Islands.",
+ "backgroundFloatingIslandsNotes": "Salte através das Ilhas Flutuantes.",
"backgroundNightDunesText": "Dunas Noturnas",
- "backgroundNightDunesNotes": "Walk peacefully through the Night Dunes.",
+ "backgroundNightDunesNotes": "Caminhar calmamente através das Dunas à Noite",
"backgroundSunsetOasisText": "Oasis do pôr do sol",
- "backgroundSunsetOasisNotes": "Bask in the Sunset Oasis."
+ "backgroundSunsetOasisNotes": "Tostar no Oásis Pôr de Sol"
}
\ No newline at end of file
diff --git a/common/locales/pt/challenge.json b/common/locales/pt/challenge.json
index b2aa7cccdd..d5a7586365 100644
--- a/common/locales/pt/challenge.json
+++ b/common/locales/pt/challenge.json
@@ -60,8 +60,8 @@
"noPermissionEditChallenge": "Você não têm permissões para editar esse desafio",
"noPermissionDeleteChallenge": "Você não têm permissões para deletar esse desafio",
"noPermissionCloseChallenge": "Você não têm permissões para fechar esse desafio",
- "congratulations": "Congratulations!",
- "hurray": "Hurray!",
+ "congratulations": "Parabéns!",
+ "hurray": "Hurra!",
"noChallengeOwner": "sem dono",
"noChallengeOwnerPopover": "Esse desafio não possui um dono porque quem criou o desafio apagou sua conta."
}
\ No newline at end of file
diff --git a/common/locales/pt/character.json b/common/locales/pt/character.json
index 76a88f2790..969589c1da 100644
--- a/common/locales/pt/character.json
+++ b/common/locales/pt/character.json
@@ -65,9 +65,9 @@
"ultimGearText": "Atualizou para o conjunto de arma e armadura máxima para as seguintes classes:",
"level": "Nível",
"levelUp": "Subiu de Nível!",
- "gainedLevel": "You gained a level!",
- "leveledUp": "By accomplishing your real-life goals, you've grown to Level <%= level %>!",
- "fullyHealed": "You have been fully healed!",
+ "gainedLevel": "Você subiu de nível!",
+ "leveledUp": "Atingindo seus objetivos na vida real, você subiu para o nível<%= level %>!",
+ "fullyHealed": "Você foi completamente curado!",
"huzzah": "Huzzah!",
"mana": "Mana",
"hp": "PV",
diff --git a/common/locales/pt/content.json b/common/locales/pt/content.json
index f971b43f49..2f25fd60f2 100644
--- a/common/locales/pt/content.json
+++ b/common/locales/pt/content.json
@@ -98,9 +98,9 @@
"questEggFrogText": "Sapo",
"questEggFrogMountText": "Sapo",
"questEggFrogAdjective": "um principesco",
- "questEggSnakeText": "Snake",
- "questEggSnakeMountText": "Snake",
- "questEggSnakeAdjective": "a slithering",
+ "questEggSnakeText": "Cobra",
+ "questEggSnakeMountText": "Cobra",
+ "questEggSnakeAdjective": "a escorregar",
"eggNotes": "Ache uma poção de eclosão para usar nesse ovo e ele irá eclodir em um <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Básico",
"hatchingPotionWhite": "Branco",
diff --git a/common/locales/pt/faq.json b/common/locales/pt/faq.json
index 189fb071e1..44b4b2ae51 100644
--- a/common/locales/pt/faq.json
+++ b/common/locales/pt/faq.json
@@ -6,7 +6,7 @@
"faqQuestion1": "Como configuro minhas tarefas?",
"iosFaqAnswer1": "Bons Hábitos (aqueles com um +) são tarefas que você pode fazer várias vezes por dia, como comer vegetais. Maus Hábitos (aqueles com um -) são tarefas que você deve evitar, como roer unha. Hábitos com um + e um - tem uma escolha boa e uma escolha ruim, como usar as escadas vs. usar o elevador. Bons Hábitos te dão ouro e experiência. Maus Hábitos subtraem vida.\n\nTarefas Diárias são tarefas que você deve fazer todos os dias, como escovar os dentes ou conferir seu e-mail. Você pode ajustar os dias em que uma tarefa Diária é valida ao edita-la. Se você perder uma Diária que está valendo, seu avatar irá tomar dano no fim do dia. Tome cuidado para não adicionar muitas Diárias de uma vez!\n\nAfazeres é a sua lista de afazeres. Cumprir um Afazer te dá ouro e experiência. Você nunca perde vida com Afazeres. Você pode adicionar um prazo a um Afazer ao edita-lo.",
"webFaqAnswer1": "Bons Hábitos (aqueles com um ) são tarefas que você pode fazer várias vezes por dia, como comer vegetais. Maus Hábitos (aqueles com um ) são tarefas que você deve evitar, como roer unha. Hábitos com um e um tem uma escolha boa e uma escolha ruim, como usar as escadas vs. usar o elevador. Bons Hábitos te dão ouro e experiência. Maus Hábitos subtraem vida.\n
\nTarefas Diárias são tarefas que você deve fazer todos os dias, como escovar os dentes ou conferir seu e-mail. Você pode ajustar os dias em que uma tarefa Diária é valida ao edita-la. Se você perder uma Diária que está valendo, seu avatar irá tomar dano no fim do dia. Tome cuidado para não adicionar muitas Diárias de uma vez!\n
\nAfazeres é a sua lista de afazeres. Cumprir um Afazer te dá ouro e experiência. Você nunca perde vida com Afazeres. Você pode adicionar um prazo a um Afazer ao edita-lo.",
- "faqQuestion2": "O que são tarefas modelo?",
+ "faqQuestion2": "Há algumas tarefas modelo?",
"iosFaqAnswer2": "Nossa wiki tem quatro listas de tarefas modelo para usar como inspiração:\n
\n* [Amostra de Hábitos](http://habitica.wikia.com/wiki/Sample_Habits)\n* [Amostra de tarefas Diárias](http://habitica.wikia.com/wiki/Sample_Dailies)\n* [Amostra de Afazeres](http://habitica.wikia.com/wiki/Sample_To-Dos)\n* [Amostra de Recompensas Personalizadas](http://habitica.wikia.com/wiki/Sample_Custom_Rewards)",
"webFaqAnswer2": "Nossa wiki tem quatro listas de tarefas modelo para usar como inspiração:\n* [Amostra de Hábitos](http://habitica.wikia.com/wiki/Sample_Habits)\n* [Amostra de tarefas Diárias](http://habitica.wikia.com/wiki/Sample_Dailies)\n* [Amostra de Afazeres](http://habitica.wikia.com/wiki/Sample_To-Dos)\n* [Amostra de Recompensas Personalizadas](http://habitica.wikia.com/wiki/Sample_Custom_Rewards)",
"faqQuestion3": "Porque minhas tarefas mudam de cor?",
@@ -16,7 +16,7 @@
"iosFaqAnswer4": "Existem diversas coisas que podem te fazer tomar dano. Primeiro, se você deixar uma tarefa Diária incompleta até o fim do dia, ela te dará dano. Segundo, se você tiver um mau Hábito, ele te dará dano. Finalmente, se você estiver em uma Batalha de Chefe com sua Equipe e um de seus companheiros não completou todas suas tarefas Diárias, o Chefe irá te atacar.\n\nO principal modo de se curar é ganhando um nível, que restaura toda sua vida. Você também pode comprar uma Poção de Vida com ouro na coluna de Recompensas. Além disso, no nível 10 ou depois, você pode escolher se tornar um Curandeiro, e então você aprenderá habilidades de cura. Se você está em uma equipe com um Curandeiro, ele pode te curar também.",
"webFaqAnswer4": "Existem diversas coisas que podem te fazer tomar dano. Primeiro, se você deixar uma tarefa Diária incompleta até o fim do dia, ela te dará dano. Segundo, se você tiver um mau Hábito, ele te dará dano. Finalmente, se você estiver em uma Batalha de Chefe com sua Equipe e um de seus companheiros não completou todas suas tarefas Diárias, o Chefe irá te atacar.\n
\nO principal modo de se curar é ganhando um nível, que restaura toda sua vida. Você também pode comprar uma Poção de Vida com ouro na coluna de Recompensas. Além disso, no nível 10 ou depois, você pode escolher se tornar um Curandeiro, e então você aprenderá habilidades de cura. Se você está em uma equipe (em Social > Equipe) com um Curandeiro, ele pode te curar também.",
"faqQuestion5": "Como jogo Habitica com meus amigos?",
- "iosFaqAnswer5": "The best way is to invite them to a Party with you! Parties can go on quests, battle monsters, and cast skills to support each other. Go to Menu > Party and click \"Create New Party\" if you don't already have a Party. Then tap on the Members list, and tap Invite in the upper right-hand corner to invite your friends by entering their User ID (a string of numbers and letters that they can find under Settings > Account Details on the app, and Settings > API on the website). On the website, you can also invite friends via email, which we will add to the app in a future update.\n\nOn the website, you and your friends can also join Guilds, which are public chat rooms. Guilds will be added to the app in a future update!",
+ "iosFaqAnswer5": "O melhor jeito é convida-los para uma Equipe com você! Equipes podem fazer missões, batalhar monstros e usar habilidades para ajudar um ao outro. Vá em Menu > Equipe e clique \"Criar Nova Equipe\" se você ainda não tiver uma Equipe. Em seguida toque na lista de Membros e toque em Convidar, no canto superior direito, para convidar amigos usando suas IDs de Usuário (uma linha de números e letras que pode ser encontrada em Configurações > Detalhes da Conta no aplicativo, e Configurações > API no site). No site, você também pode convidar amigos via email, que também adicionaremos ao aplicativo em uma atualização futura.\n\nNo site, você e seus amigos também podem se unir a Guildas, que são salas de bate-papo públicas. Guildas serão adicionadas ao aplicativo em uma atualização futura!",
"webFaqAnswer5": "O melhor jeito é convida-los para uma equipe com você, em Social > Equipe! Equipes podem fazer missões, batalhar monstros e usar habilidades que ajudam um ao outro. Vocês também podem se unir a Guildas juntos (Social > Guildas). Guildas são salas de bate -papo focadas em um interesse em comum ou na busca de um mesmo objetivo, e podem ser tanto públicas como privadas. Você pode participar de quantas guildas desejar, mas apenas uma equipe.\n
\nPara informações mais detalhadas, confira nossas paginas na wiki em [Equipes](http://habitrpg.wikia.com/wiki/Party) e [Guildas](http://habitrpg.wikia.com/wiki/Guilds).",
"faqQuestion6": "Como consigo um Mascote ou Montaria?",
"iosFaqAnswer6": "No nível 3, você irá destravar o sistema de Drop. Toda vez que você completar uma tarefa, você terá uma chance aleatória de receber um ovo, uma poção de eclosão ou um pedaço de comida. Eles serão guardados em Menu > Itens.\n\nPara eclodir um Mascote, você precisará de um ovo e uma poção de eclosão. Toque no ovo para determinar que espécie você quer eclodir e selecione \"Eclodir Ovo.\" Depois escolha uma poção de eclosão para determinar sua cor! Vá para Menu > Mascotes para equipar o novo Mascote ao seu avatar ao toca-lo.\n\nVocê também pode transformar seus Mascotes em Montarias ao alimenta-los em Menu > Mascotes. Selecione um Mascote, e depois escolha \"Alimentar Mascote\"! Você tera que alimentar um mascote várias vezes antes dele se tornar uma Montaria, mas se você conseguir descobrir qual é sua comida favorita, ele crescerá mais rapidamente. Use tentativa e erro, ou [veja os spoilers aqui](http://habitica.wikia.com/wiki/Food#Food_Preferences). Logo que conseguir uma Montaria, vá para Menu > Montarias e toque nele para equipa-lo ao seu avatar.\n\nVocê também pode conseguir ovos para Mascotes de Missão ao completar certas Missões. (Veja abaixo para aprender mais sobre Missões.)",
@@ -28,17 +28,17 @@
"iosFaqAnswer8": "A barra azul que apareceu após você chegar no nível 10 e escolher sua Classe é sua barra de Mana. A medida que você continua ganhando níveis, você desbloqueará Habilidades especiais que custarão Mana para serem usadas. Cada Classe tem diferentes Habilidades, que aparecerão após o nível 11 em Menu > Usar Habilidades. Diferente da barra de vida, sua Mana não enche quando você ganha um nível. Ao invés disso, Mana é adquirida quando você completa Bons Hábitos, Diárias e Afazeres, e perdida quando você cede à Maus Hábitos. Você também irá recuperar um pouco de Mana ao fim do dia -- quanto mais Diárias você completar, mais você irá ganhar.",
"webFaqAnswer8": "A barra azul que apareceu após você chegar no nível 10 e escolher sua Classe é sua barra de Mana. A medida que você continua ganhando níveis, você desbloqueará Habilidades especiais que custarão Mana para serem usadas. Cada Classe tem diferentes Habilidades, que aparecerão após o nível 11 em uma seção especial na Coluna de Recompensas. Diferente da barra de vida, sua Mana não enche quando você ganha um nível. Ao invés disso, Mana é adquirida quando você completa Bons Hábitos, Diárias e Afazeres, e perdida quando você cede à Maus Hábitos. Você também irá recuperar um pouco de Mana ao fim do dia -- quanto mais Diárias você completar, mais você irá ganhar.",
"faqQuestion9": "Como eu faço para enfrentar monstros e participar de Missões?",
- "iosFaqAnswer9": "First, you need to join or start a Party (see above). Although you can battle monsters alone, we recommend playing in a group, because this will make Quests much easier. Plus, having a friend to cheer you on as you accomplish your tasks is very motivating!\n\n Next, you need a Quest Scroll, which are stored under Menu > Items. There are three ways to get a scroll:\n\n - At level 15, you get a Quest-line, aka three linked quests. More Quest-lines unlock at levels 30, 40, and 60 respectively. \n - When you invite people to your Party, you'll be rewarded with the Basi-List Scroll!\n - You can buy Quests from the Quests Page on the [website](https://habitica.com/#/options/inventory/quests) for Gold and Gems. (We will add this feature to the app in a future update.)\n\n To battle the Boss or collect items for a Collection Quest, simply complete your tasks normally, and they will be tallied into damage overnight. (Reloading by pulling down on the screen may be required to see the Boss's health bar go down.) If you are fighting a Boss and you missed any Dailies, the Boss will damage your Party at the same time that you damage the Boss. \n\n After level 11 Mages and Warriors will gain Skills that allow them to deal additional damage to the Boss, so these are excellent classes to choose at level 10 if you want to be a heavy hitter.",
+ "iosFaqAnswer9": "Primeiro, você precisa criar ou se juntar a uma Equipe (veja acima). Apesar de você poder enfrentar monstros sozinho, nós recomendamos jogar com um grupo, pois isso deixará as Missões muito mais fáceis. Além disso, ter um amigo para comemorar com você ao completar tarefas é bem mais motivante!\n\nEm seguida, você precisará de um Pergaminho de Missão, que são guardados em Menu > Itens. Existem três maneiras de conseguir um pergaminho:\n\n-No nível 15, você receberá uma série de Missões, que são três missões interligadas. Mais séries de Missões são desbloqueadas nos níveis 30, 40 e 60, respectivamente.\n-Quando você convida pessoas para sua Equipe, você será recompensado com o Pergaminho da Basi-Lista!\n-Você pode comprar Missões na página de Missões no [site] (https://habitica.com/#/options/inventory/quests) usando Ouro e Gemas. (Nós adicionaremos essa função ao aplicativo em uma atualização futura)\n\nPara enfrentar o Chefão ou coletar itens para uma Missão de coleção, simplesmente complete suas tarefas normalmente e elas serão convertidas em dano no fim do dia. (Recarregar a página pode ser necessário para ver a vida do Chefe diminuir.) Se você está lutando contra um Chefão e você perdeu alguma Diárias, o Chefe causará dano à Equipe ao mesmo tempo que você causará dano a ele.\n\nApós o nível 11, Magos e Guerreiros ganham Habilidades que permitem causar dano adicional ao Chefe, então essas são classes execelentes para escolher após o nível 10 se você quiser ter um ataque poderoso.",
"webFaqAnswer9": "Primeiro, você precisa criar ou se juntar a uma Equipe (em Social > Equipe). Apesar de você poder enfrentar monstros sozinho, nós recomendamos jogar com um grupo, pois isso deixará as Missões muito mais fáceis. Além disso, ter um amigo para comemorar com você ao completar tarefas é bem mais motivante!\n
\nEm seguida, você precisará de um Pergaminho de Missão, que são guardados em Inventário > Missões. Existem três maneiras de conseguir um pergaminho:\n
\n*Quando você convida pessoas para sua Equipe, você sera recompensado com o Pergaminho da Basi-Lista!\n*No nível 15, você receberá uma série de Missões, que são três missões interligadas. Mais séries de Missões são desbloqueadas nos níveis 30, 40 e 60, respectivamente.\n*Você pode comprar Missões na página de Missões (Inventário > Missões) usando Ouro e Gemas.\n
\nPara enfrentar o Chefão ou coletar itens para uma Missão de coleção, simplesmente complete suas tarefas normalmente e elas serão convertidas em dano no fim do dia. (Recarregar a página pode ser necessário para ver a vida do Chefe diminuir.) Se você está lutando contra um Chefão e você perdeu alguma Diárias, o Chefe causará dano à Equipe ao mesmo tempo que você causará dano a ele.\n
\nApós o nível 11, Magos e Guerreiros ganham Habilidades que permitem causar dano adicional ao Chefe, então essas são classes execelentes para escolher após o nível 10 se você quiser ter um ataque poderoso.",
- "faqQuestion10": "What are Gems, and how do I get them?",
- "iosFaqAnswer10": "Gemas são compradas com dinheiro real ao tocar no ícone no cabeçalho. Quando as pessoas compram jóias, elas estão nos ajudando a manter o site funcionando. Nós somos muito gratos pelo seu suporte!\n\nEm adição a comprar jóias diretamente, existem três outras maneiras que jogadores podem obter jóias:\n\n* Vença um Desafio no [site](https://habitica.com) que foi criado por outro jogador em Social > Desafios. (Nós iremos adicionar Desafios para o app numa futura atualização!)\n* Faça assinatura no [site](https://habitica.com/#/options/settings/subscription) and destrave a capacidade de comprar um certo número de jóias por mês.\n* Contribua com seus talentos para o projeto Habitica. Veja na página da wiki para mais detalhes: [Contribuindo com o Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\nTenha em mente que items comprados com jóias não oferecem nenhuma vantagem estatística, então os jogadores podem usar o app sem elas!",
- "webFaqAnswer10": "Gemas são [compradas com dinheiro real](https://habitica.com/#/options/settings/subscription), apesar de que [assinantes](https://habitica.com/#/options/settings/subscription) podem compra-las usando Ouro. Quando alguém assina o site ou compra jóias, esta pessoa está nos ajudando a manter o site funcionando. Ficamos muito agradecidos com esse suporte!\n
\nAlém de comprar jóias diretamente, existem outras três maneiras de se conseguir jóias:\n
\n* Vença um Desafio feito por outro jogador em Social > Challenges.\n* Contribua com seus talentos para o projeto do Habitica. Veja essa pagina da wiki para mais detalhes: [Contribuindo com o Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica)\n
\nTenha em mente que itens comprados com jóias não oferecem nenhuma vantagem estatística, então todos podem utilizar o site sem elas!",
+ "faqQuestion10": "O que são Gemas, e como as consigo?",
+ "iosFaqAnswer10": "Gemas são compradas com dinheiro real ao tocar no ícone de gema no cabeçalho. Quando alguém compra gemas, esta pessoa está nos ajudando a manter o site funcionando. Ficamos muito agradecidos com esse suporte! \n\nAlém de comprar gemas diretamente, existem outras três maneiras de se conseguir gemas: \n\n* Vença um Desafio no [site](https://habitica.com) feito por outro jogador em Social > Desafios. (Nós adicionaremos Desafios ao aplicativo em uma atualização futura!) \n* Inscreva-se no site [website](https://habitica.com/#/options/settings/subscription) e desbloqueie a habilidade de comprar um certo numero de gemas por mês. \n* Contribua com seus talentos para o projeto do Habitica. Veja essa pagina da wiki para mais detalhes: [Contribuindo com o Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica) \n\nTenha em mente que itens comprados com gemas não oferecem nenhuma vantagem estatística, então todos podem utilizar o aplicativo sem elas!",
+ "webFaqAnswer10": "Gemas são [compradas com dinheiro real](https://habitica.com/#/options/settings/subscription), apesar de que [assinantes](https://habitica.com/#/options/settings/subscription) podem compra-las usando Ouro. Quando alguém assina o site ou compra jóias, esta pessoa está nos ajudando a manter o site funcionando. Ficamos muito agradecidos com esse suporte!\n
\nAlém de comprar jóias diretamente, existem outras três maneiras de se conseguir jóias:\n
\n* Vença um Desafio feito por outro jogador em Social > Desafios.\n* Contribua com seus talentos para o projeto do Habitica. Veja essa pagina da wiki para mais detalhes: [Contribuindo com o Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica)\n
\nTenha em mente que itens comprados com jóias não oferecem nenhuma vantagem estatística, então todos podem utilizar o site sem elas!",
"faqQuestion11": "Como eu relato um bug ou solicito uma funcionalidade?",
- "iosFaqAnswer11": "Você pode relatar um bug, solicitar uma funcionalidade ou enviar sua opinião através do menu Ajuda > Reportar um Problema e Ajuda > Fazer uma pergunta! Vamos fazer tudo que pudermos para ajudá-lo.",
+ "iosFaqAnswer11": "Você pode relatar um bug, solicitar uma funcionalidade ou enviar sua opinião através do menu Ajuda > Reportar um Problema e Ajuda > Enviar Opnião! Vamos fazer tudo que pudermos para ajudá-lo.",
"webFaqAnswer11": "Relatos de bugs são armazenados no GitHub. Vá para [Ajuda > Relatar um Bug](https://github.com/HabitRPG/habitrpg/issues/2760) e siga as instruções. Não se preocupe, nós o consertaremos em breve!\n
\nSolicitações de funcionalidade são armazenadas no Trello. Vá para [Ajuda > Solicitar Funcionalidade] (https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) e siga as instruções. Ta-dan!",
"faqQuestion12": "Como luto contra um Chefão Global?",
"iosFaqAnswer12": "Chefões Globais são monstros especiais que aparecem na Taverna. Todos os usuários ativos estão o enfrentando automaticamente, suas tarefas e habilidades causarão dano no Chefão como de costume.\n\nVocê pode estar em uma Missão normal ao mesmo tempo. Suas tarefas e habilidades contarão para ambos Chefão Global e missões de Chefão/Coleta da sua equipe.\n\nUm Chefão Global nunca irá machucar você ou sua conta de qualquer maneira. Ao invés disso, ele tem uma Barra de Raiva que encherá quando usuários perdem Tarefas Diárias. Se a Barra de Raiva encher, ele atacará um dos Personagens-Não-Jogavéis do site e a imagem deles mudará.\n\nVocê pode ler mais sobre [past Chefões Globais](http://habitica.wikia.com/wiki/World_Bosses) na wiki.",
"webFaqAnswer12": "Chefões Globais são monstros especiais que aparecem na Taverna. Todos os usuários ativos estão o enfrentando automaticamente, suas tarefas e habilidades causarão dano no Chefão como de costume.\n
\nVocê pode estar em uma Missão normal ao mesmo tempo. Suas tarefas e habilidades contarão para ambos Chefão Global e missões de Chefão/Coleta da sua equipe.\n
\nUm Chefão Global nunca irá machucar você ou sua conta de qualquer maneira. Ao invés disso, ele tem uma Barra de Raiva que encherá quando usuários perdem Tarefas Diárias. Se a Barra de Raiva encher, ele atacará um dos Personagens-Não-Jogavéis do site e a imagem deles mudará.\n
\nVocê pode ler mais sobre [past Chefões Globais](http://habitica.wikia.com/wiki/World_Bosses) na wiki.",
- "iosFaqStillNeedHelp": "Se você tem uma pergunta que não está nesta lista, venha perguntar no chat da Taverna. Basta seguir o caminho Social > Taverna! Ficaremos felizes em ajudar você.",
+ "iosFaqStillNeedHelp": "Se você tem uma pergunta que não está nesta lista, venha perguntar no chat da Taverna. Basta seguir o caminho Menu> Taverna! Ficaremos felizes em ajudar você.",
"webFaqStillNeedHelp": "Se você tem uma pergunta que não está nesta lista, venha perguntar na [Guilda The Newbies](https://habitica.com/#/options/groups/guilds/5481ccf3-5d2d-48a9-a871-70a7380cee5a). Ficaremos contentes em ajudar você."
}
\ No newline at end of file
diff --git a/common/locales/pt/front.json b/common/locales/pt/front.json
index f363fcc8c6..e77fc33a0a 100644
--- a/common/locales/pt/front.json
+++ b/common/locales/pt/front.json
@@ -180,13 +180,13 @@
"merchandiseInquiries": "Consultas de Merchandise",
"marketingInquiries": "Consultas de Marketing/Mídias Sociais",
"tweet": "Tweet",
- "apps": "Apps",
+ "apps": "Aplicativos",
"notifyAndroidApp": "Want us to notify you when the Android app is ready? Sign up for this mailing list!",
- "checkOutIOSApp": "Check out our new iOS App!",
- "imagine1": "Imagine if improving your life were as fun as playing a game.",
+ "checkOutIOSApp": "Confira o nosso novo aplicativo para iOS!",
+ "imagine1": "Imagine se melhorar a sua vida fosse tão divertido quanto jogar um jogo.",
"landingCopy1": "Advance in the game by completing your real-life tasks.",
"landingCopy2": "Battle monsters with friends to stay accountable to your goals.",
- "landingCopy3": "Join over <%= userCount %> people having fun as they improve their lives.",
- "alreadyHaveAccount": "I already have an account!",
- "getStartedNow": "Get Started Now!"
+ "landingCopy3": "Junte-se a <%= userCount %> pessoas se divertindo enquanto melhoram as suas vidas!",
+ "alreadyHaveAccount": "Eu já tenho uma conta!",
+ "getStartedNow": "Comece agora!"
}
\ No newline at end of file
diff --git a/common/locales/pt/generic.json b/common/locales/pt/generic.json
index bf8598cbf9..7b7836f045 100644
--- a/common/locales/pt/generic.json
+++ b/common/locales/pt/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Celebrou <%= number %> Dias da Nomeação! Obrigado por ser um usuário fantástico!",
"achievementDilatory": "Salvador de Dilatory",
"achievementDilatoryText": "Ajudou a derrotar o Dread Drag'on de Dilatory durante o Evento Summer Splash 2014!",
- "costumeContest": "Concurso de Fantasia 2014",
- "costumeContestText": "Participou no Concurso de Fantasia de Halloween 2014. Veja algumas inscrições em blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Membro desde",
"lastLoggedIn": "- Última conexão em",
"notPorted": "Essa funcionalidade ainda não foi portada do site original.",
@@ -95,7 +96,7 @@
"audioTheme_luneFoxTheme": "Tema da Raposa Lunar",
"askQuestion": "Fazer uma Pergunta",
"reportBug": "Reportar um Problema",
- "contributeToHRPG": "Contribuir para o Habitica",
+ "contributeToHRPG": "Contribuir com o Habitica",
"overview": "Visão Geral para Novos Usuários.",
"January": "Janeiro",
"February": "Fevereiro",
@@ -135,16 +136,16 @@
"thankyou3": "Estou muito grato - obrigado!",
"thankyouCardAchievementTitle": "Incrívelmente grato",
"thankyouCardAchievementText": "Agradeço por ser grato! Mandou ou recebeu <%= cards %> cartões de agradecimento.",
- "streakAchievement": "You earned a streak achievement!",
- "firstStreakAchievement": "21-Day Streak",
- "streakAchievementCount": "<%= streaks %> 21-Day Streaks",
- "twentyOneDays": "You've completed your Daily for 21 days in a row!",
- "dontBreakStreak": "Amazing job. Don't break the streak!",
- "dontStop": "Don't Stop Now!",
- "levelUpShare": "I leveled up in Habitica by improving my real-life habits!",
- "questUnlockShare": "I unlocked a new quest in Habitica!",
- "hatchPetShare": "I hatched a new pet by completing my real-life tasks!",
- "raisePetShare": "I raised a pet into a mount by completing my real-life tasks!",
- "wonChallengeShare": "I won a challenge in Habitica!",
- "achievementShare": "I earned a new achievement in Habitica!"
+ "streakAchievement": "Você conquistou um combo de sequencias!",
+ "firstStreakAchievement": "Combo de 21 Dias",
+ "streakAchievementCount": "<%= streaks %> Combos de 21 Dias",
+ "twentyOneDays": "Você completou sua Diária por 21 dias seguidos!",
+ "dontBreakStreak": "Trabalho incrível. Não quebre sua sequencia!",
+ "dontStop": "Não pare agora!",
+ "levelUpShare": "Aumentei meu nível em Habitica melhorando meus hábitos na vida real!",
+ "questUnlockShare": "Desbloqueei uma nova missão no Habitica!",
+ "hatchPetShare": "Choquei um novo mascote completando minhas tarefas da vida real!",
+ "raisePetShare": "Transformei meu mascote em uma montaria completando minhas tarefas da vida real!",
+ "wonChallengeShare": "Venci um desafio no Habitica!",
+ "achievementShare": "Ganhei uma nova conquista no Habitica!"
}
\ No newline at end of file
diff --git a/common/locales/pt/groups.json b/common/locales/pt/groups.json
index 35212309ba..2e8edf3189 100644
--- a/common/locales/pt/groups.json
+++ b/common/locales/pt/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Seu bate-papo da equipe está vazio! Digite uma mensagem na caixa acima para começar a conversar.",
"guildChatEmpty": "O bate-papo desta guilda está vazio! Digite uma mensagem na caixa abaixo para começar a conversar.",
"possessiveParty": "Equipe de <%= name %>",
- "requestAcceptGuidelines": "Se você quiser publicar mensagens na Taverna, em qualquer equipe ou chat de guild, primeiro leia nossas <%= linkStart %>Diretrizes da Comunidade<%= linkEnd %> e depois clique no botão abaixo para indicar que você as aceita."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/pt/noscript.json b/common/locales/pt/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/pt/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/pt/pets.json b/common/locales/pt/pets.json
index 003d51feae..5a55bf7f34 100644
--- a/common/locales/pt/pets.json
+++ b/common/locales/pt/pets.json
@@ -58,16 +58,16 @@
"firstDrop": "Você liberou o Sistema de Drops! Agora quando completar tarefas, você terá uma pequena chance de encontrar um item, incluindo ovos, poções e comida! Você acabou de encontrar um <%= eggText %>Ovo! <%= eggNotes %>",
"useGems": "Se você está de olho em um mascote, mas não consegue esperar mais para encontrá-lo, use Gemas em Inventário > Mercado para comprar um!",
"hatchAPot": "Chocar um <%= potion %> <%= egg %>?",
- "hatchedPet": "You hatched a <%= potion %> <%= egg %>!",
- "displayNow": "Display Now",
- "displayLater": "Display Later",
- "earnedCompanion": "With all your productivity, you've earned a new companion. Feed it to make it grow!",
+ "hatchedPet": "Você chocou um <%= potion %> <%= egg %>!",
+ "displayNow": "Mostrar Agora",
+ "displayLater": "Mostrar Depois",
+ "earnedCompanion": "Com toda sua produtividade, você conseguiu um novo companheiro. Dê comida para faze-lo crescer!",
"feedPet": "Alimentar <%= article %><%= text %> para o seu <%= name %>?",
"useSaddle": "Selar <%= pet %>?",
- "raisedPet": "You grew a <%= pet %>!",
- "earnedSteed": "By completing your tasks, you've earned a faithful steed!",
- "rideNow": "Ride Now",
- "rideLater": "Ride Later",
+ "raisedPet": "Você criou um <%= pet %>!",
+ "earnedSteed": "Por completar suas tarefas, você recebeu uma fiel montaria!",
+ "rideNow": "Montar Agora",
+ "rideLater": "Montar Depois",
"petName": "<%= egg %> <%= potion %>",
"mountName": "<%= mount %> <%= potion %>",
"petKeyName": "Chave dos Canis",
diff --git a/common/locales/pt/quests.json b/common/locales/pt/quests.json
index fbd0349c5a..27840b0f76 100644
--- a/common/locales/pt/quests.json
+++ b/common/locales/pt/quests.json
@@ -77,6 +77,6 @@
"startQuest": "Iniciar missão",
"whichQuestStart": "Que missão deseja iniciar?",
"getMoreQuests": "Conseguir mais missões",
- "unlockedAQuest": "You unlocked a quest!",
- "leveledUpReceivedQuest": "You leveled up to Level <%= level %> and received a quest scroll!"
+ "unlockedAQuest": "Você desbloqueou uma missão!",
+ "leveledUpReceivedQuest": "Você subiu para o nível <%= level %> e recebeu um pergaminho de missão!"
}
\ No newline at end of file
diff --git a/common/locales/pt/questscontent.json b/common/locales/pt/questscontent.json
index 1ca8a7d923..bf1bbe4cbf 100644
--- a/common/locales/pt/questscontent.json
+++ b/common/locales/pt/questscontent.json
@@ -268,10 +268,10 @@
"questFrogBoss": "Sapo Bagunceiro",
"questFrogDropFrogEgg": "Sapo (Ovo)",
"questFrogUnlockText": "Desbloqueia ovos de Sapo para compra no Mercado",
- "questSnakeText": "The Serpent of Distraction",
+ "questSnakeText": "A Serpente da Distração",
"questSnakeNotes": "It takes a hardy soul to live in the Sand Dunes of Distraction. The arid desert is hardly a productive place, and the shimmering dunes have led many a traveler astray. However, something has even the locals spooked. The sands have been shifting and upturning entire villages. Residents claim a monster with an enormous serpentine body lies in wait under the sands, and they have all pooled together a reward for whomever will help them find and stop it. The much-lauded snake charmers @EmeraldOx and @PainterProphet have agreed to help you summon the beast. Can you stop the Serpent of Distraction?",
"questSnakeCompletion": "With assistance from the charmers, you banish the Serpent of Distraction. Though you were happy to help the inhabitants of the Dunes, you can't help but feel a little sad for your fallen foe. While you contemplate the sights, @LordDarkly approaches you. \"Thank you! It's not much, but I hope this can express our gratitude properly.\" He hands you some Gold and... some Snake eggs! You will see that majestic animal again after all.",
- "questSnakeBoss": "Serpent of Distraction",
- "questSnakeDropSnakeEgg": "Snake (Egg)",
+ "questSnakeBoss": "Serpente da Distração",
+ "questSnakeDropSnakeEgg": "Cobra (Ovo)",
"questSnakeUnlockText": "Unlocks purchasable Snake eggs in the Market"
}
\ No newline at end of file
diff --git a/common/locales/pt/settings.json b/common/locales/pt/settings.json
index bdfd40cebc..9784737c40 100644
--- a/common/locales/pt/settings.json
+++ b/common/locales/pt/settings.json
@@ -14,11 +14,11 @@
"startCollapsedPop": "Com essa opção ativada, a lista de etiquetas das tarefas será omitida quando você abrir uma tarefa para edição.",
"startAdvCollapsed": "Opções Avançadas das tarefas começam omitidas",
"startAdvCollapsedPop": "Com essa opção ativada, Opções Avançadas estarão omitidas quando você abrir uma tarefa para edição.",
- "dontShowAgain": "Don't show this again",
- "suppressLevelUpModal": "Don't show popup when gaining a level",
- "suppressHatchPetModal": "Don't show popup when hatching a pet",
- "suppressRaisePetModal": "Don't show popup when raising a pet into a mount",
- "suppressStreakModal": "Don't show popup when attaining a Streak achievement",
+ "dontShowAgain": "Não mostre isso novamente",
+ "suppressLevelUpModal": "Não mostre um popup quando subir de nível",
+ "suppressHatchPetModal": "Não mostre um popup quando nascer uma mascote",
+ "suppressRaisePetModal": "Não mostre um popup quando uma mascote evoluir para montaria",
+ "suppressStreakModal": "Não mostre um popup quando alcançar uma conquista combo.",
"showTour": "Mostrar Tour",
"restartTour": "Reiniciar o tour de introdução de quando você se juntou ao Habitica.",
"showBailey": "Mostrar Bailey",
@@ -93,7 +93,7 @@
"loginNameDescription2": "Usuário -> Perfil",
"loginNameDescription3": "para alterar o nome que será apresentado em seu avatar e mensagens de chat.",
"emailNotifications": "Notificações de E-mail",
- "wonChallenge": "You won a Challenge!",
+ "wonChallenge": "Você ganhou um desafio!",
"newPM": "Recebeu Mensagem Privada",
"giftedGems": "Gemas Presenteadas",
"giftedGemsInfo": "<%= amount %> Gemas - por <%= name %>",
diff --git a/common/locales/ro/generic.json b/common/locales/ro/generic.json
index ad23abb7fb..e634284f55 100644
--- a/common/locales/ro/generic.json
+++ b/common/locales/ro/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Celebrated <%= number %> Naming Days! Thanks for being a fantastic user.",
"achievementDilatory": "Salvatorul de la amânare",
"achievementDilatoryText": "A ajutat la înfrângerea înfiorătorului Drag'on al Amânării în timpul evenimentului stropirii din vara lui 2014",
- "costumeContest": "2014 Costume Contest",
- "costumeContestText": "Participated in the 2014 Halloween Costume Contest. See some of the entries at blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Membru din",
"lastLoggedIn": "- S-a autentificat ultima oară pe",
"notPorted": "Această facilitate nu a fost încă preluată de la situl original.",
diff --git a/common/locales/ro/groups.json b/common/locales/ro/groups.json
index 417ef177a3..143b6e1764 100644
--- a/common/locales/ro/groups.json
+++ b/common/locales/ro/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>'s Party",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/ro/noscript.json b/common/locales/ro/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/ro/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/ru/backgrounds.json b/common/locales/ru/backgrounds.json
index 1c3ad0a1f9..b57e0d3131 100644
--- a/common/locales/ru/backgrounds.json
+++ b/common/locales/ru/backgrounds.json
@@ -119,11 +119,11 @@
"backgroundSlimySwampNotes": "Проберитесь сквозь склизкое болото.",
"backgroundSwarmingDarknessText": "Кромешная тьма",
"backgroundSwarmingDarknessNotes": "Тряситесь от страха в кромешной тьме!",
- "backgrounds112015": "SET 18: Released November 2015",
- "backgroundFloatingIslandsText": "Floating Islands",
+ "backgrounds112015": "Набор 18: Выпущен в ноябре 2015",
+ "backgroundFloatingIslandsText": "Плавающие острова",
"backgroundFloatingIslandsNotes": "Hop across the Floating Islands.",
- "backgroundNightDunesText": "Night Dunes",
- "backgroundNightDunesNotes": "Walk peacefully through the Night Dunes.",
+ "backgroundNightDunesText": "Ночные Дюны",
+ "backgroundNightDunesNotes": "Тихая прогулка через Ночные Дюны",
"backgroundSunsetOasisText": "Sunset Oasis",
"backgroundSunsetOasisNotes": "Bask in the Sunset Oasis."
}
\ No newline at end of file
diff --git a/common/locales/ru/challenge.json b/common/locales/ru/challenge.json
index 65460c1e44..1e3a4e30e5 100644
--- a/common/locales/ru/challenge.json
+++ b/common/locales/ru/challenge.json
@@ -60,8 +60,8 @@
"noPermissionEditChallenge": "У вас нет прав на редактирование этого испытания.",
"noPermissionDeleteChallenge": "У вас нет прав на удаление этого испытания.",
"noPermissionCloseChallenge": "У вас нет прав на закрытие этого испытания.",
- "congratulations": "Congratulations!",
- "hurray": "Hurray!",
+ "congratulations": "Поздравляю!",
+ "hurray": "Ура!",
"noChallengeOwner": "нет владельца",
"noChallengeOwnerPopover": "Это испытание не имеет владельца, потому что игрок, который его создал, удалил свой аккаунт."
}
\ No newline at end of file
diff --git a/common/locales/ru/character.json b/common/locales/ru/character.json
index 3dff519666..f4c948010e 100644
--- a/common/locales/ru/character.json
+++ b/common/locales/ru/character.json
@@ -65,10 +65,10 @@
"ultimGearText": "Полностью усовершенствовал(а) оружие и комплект доспехов для следующих классов:",
"level": "Уровень",
"levelUp": "Новый уровень!",
- "gainedLevel": "You gained a level!",
- "leveledUp": "By accomplishing your real-life goals, you've grown to Level <%= level %>!",
- "fullyHealed": "You have been fully healed!",
- "huzzah": "Huzzah!",
+ "gainedLevel": "Вы получили уровень!",
+ "leveledUp": "За выполнение ваших жизненных целей вы выросли до <%= level %> уровня!",
+ "fullyHealed": "Вы полностью исцелены!",
+ "huzzah": "Ура!",
"mana": "Мана",
"hp": "здоровья",
"mp": "М",
diff --git a/common/locales/ru/content.json b/common/locales/ru/content.json
index b72d11fb35..a55734f63e 100644
--- a/common/locales/ru/content.json
+++ b/common/locales/ru/content.json
@@ -98,9 +98,9 @@
"questEggFrogText": "Лягушонок",
"questEggFrogMountText": "Лягушонок",
"questEggFrogAdjective": "царственный",
- "questEggSnakeText": "Snake",
- "questEggSnakeMountText": "Snake",
- "questEggSnakeAdjective": "a slithering",
+ "questEggSnakeText": "Змея",
+ "questEggSnakeMountText": "Змея",
+ "questEggSnakeAdjective": "скользкая",
"eggNotes": "Найдите инкубационный эликсир, чтобы полить им это яйцо, и из него вылупится <%= eggAdjective(locale) %> <%= eggText(locale) %>.",
"hatchingPotionBase": "Обыкновенный",
"hatchingPotionWhite": "Белый",
diff --git a/common/locales/ru/front.json b/common/locales/ru/front.json
index 692e18f084..6b24834f9d 100644
--- a/common/locales/ru/front.json
+++ b/common/locales/ru/front.json
@@ -187,6 +187,6 @@
"landingCopy1": "Advance in the game by completing your real-life tasks.",
"landingCopy2": "Battle monsters with friends to stay accountable to your goals.",
"landingCopy3": "Join over <%= userCount %> people having fun as they improve their lives.",
- "alreadyHaveAccount": "I already have an account!",
+ "alreadyHaveAccount": "У меня уже есть аккаунт!",
"getStartedNow": "Get Started Now!"
}
\ No newline at end of file
diff --git a/common/locales/ru/generic.json b/common/locales/ru/generic.json
index 2a734db49b..85b8df6f4a 100644
--- a/common/locales/ru/generic.json
+++ b/common/locales/ru/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Участвовал в праздновании Дня Наречения Habitica <%= number %> раз! Благодарность замечательному пользователю.",
"achievementDilatory": "Спаситель Промедления",
"achievementDilatoryText": "Помог(ла) уничтожить Повелителя Откладываемых-На-Завтра Заданий в дни Летнего Всплеска 2014.",
- "costumeContest": "Конкурс костюмов 2014",
- "costumeContestText": "Участвовал(-а) в конкурсе костюмов на Хэллоуин в 2014 году. Некоторые работы можно увидеть на странице blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Участник с",
"lastLoggedIn": "- Последний вход",
"notPorted": "Эта функция еще не перенесена со старого сайта.",
@@ -140,11 +141,11 @@
"streakAchievementCount": "<%= streaks %> 21-Day Streaks",
"twentyOneDays": "You've completed your Daily for 21 days in a row!",
"dontBreakStreak": "Amazing job. Don't break the streak!",
- "dontStop": "Don't Stop Now!",
+ "dontStop": "Не останавливайся сейчас!",
"levelUpShare": "I leveled up in Habitica by improving my real-life habits!",
- "questUnlockShare": "I unlocked a new quest in Habitica!",
+ "questUnlockShare": "Я разблокировал новый квест в Habitica!",
"hatchPetShare": "I hatched a new pet by completing my real-life tasks!",
"raisePetShare": "I raised a pet into a mount by completing my real-life tasks!",
- "wonChallengeShare": "I won a challenge in Habitica!",
- "achievementShare": "I earned a new achievement in Habitica!"
+ "wonChallengeShare": "Я выиграл испытание в Habitica!",
+ "achievementShare": "Я получил новое достижение в Habitica!"
}
\ No newline at end of file
diff --git a/common/locales/ru/groups.json b/common/locales/ru/groups.json
index 73c81e8de7..f734287af4 100644
--- a/common/locales/ru/groups.json
+++ b/common/locales/ru/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Чат вашей команды пустует! Наберите сообщение в поле сверху, чтобы начать общаться.",
"guildChatEmpty": "Чат этой гильдии пустует! Наберите сообщение в поле сверху, чтобы начать общаться.",
"possessiveParty": "Команда игрока <%= name %>.",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/ru/noscript.json b/common/locales/ru/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/ru/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/ru/pets.json b/common/locales/ru/pets.json
index 0b0e6dd872..4acbda3cb9 100644
--- a/common/locales/ru/pets.json
+++ b/common/locales/ru/pets.json
@@ -59,8 +59,8 @@
"useGems": "Если вы хотите питомца, но не можете больше ждать, когда он выпадет, купите его за самоцветы в меню Инвентарь > Рынок!",
"hatchAPot": "Вылупится <%= potion %> <%= egg %>. Использовать эликсир?",
"hatchedPet": "You hatched a <%= potion %> <%= egg %>!",
- "displayNow": "Display Now",
- "displayLater": "Display Later",
+ "displayNow": "Показать сейчас",
+ "displayLater": "Показать позже",
"earnedCompanion": "With all your productivity, you've earned a new companion. Feed it to make it grow!",
"feedPet": "Скормить <%= article %><%= text %> вашему питомцу: <%= name %>?",
"useSaddle": "Оседлать <%= pet %>?",
diff --git a/common/locales/ru/quests.json b/common/locales/ru/quests.json
index 4cc03b1f9b..ca4416e9e9 100644
--- a/common/locales/ru/quests.json
+++ b/common/locales/ru/quests.json
@@ -77,6 +77,6 @@
"startQuest": "Начать квест",
"whichQuestStart": "Какой квест вы хотите начать?",
"getMoreQuests": "Получить больше квестов",
- "unlockedAQuest": "You unlocked a quest!",
+ "unlockedAQuest": "Вы разблокировали квест!",
"leveledUpReceivedQuest": "You leveled up to Level <%= level %> and received a quest scroll!"
}
\ No newline at end of file
diff --git a/common/locales/ru/settings.json b/common/locales/ru/settings.json
index 972f4c306e..2341598b14 100644
--- a/common/locales/ru/settings.json
+++ b/common/locales/ru/settings.json
@@ -93,7 +93,7 @@
"loginNameDescription2": "Пользователь->Профиль",
"loginNameDescription3": "чтобы изменить имя, которое появляется на вашем аватаре и в чате.",
"emailNotifications": "Уведомления по электронной почте",
- "wonChallenge": "You won a Challenge!",
+ "wonChallenge": "Вы выиграли испытание",
"newPM": "Получено личное сообщение",
"giftedGems": "Подаренные самоцветы",
"giftedGemsInfo": "<%= amount %> самоцветов от <%= name %>",
diff --git a/common/locales/sk/generic.json b/common/locales/sk/generic.json
index 60aecb388e..f653fb654a 100644
--- a/common/locales/sk/generic.json
+++ b/common/locales/sk/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Celebrated <%= number %> Naming Days! Thanks for being a fantastic user.",
"achievementDilatory": "Savior of Dilatory",
"achievementDilatoryText": "Helped defeat the Dread Drag'on of Dilatory during the 2014 Summer Splash Event!",
- "costumeContest": "2014 Costume Contest",
- "costumeContestText": "Participated in the 2014 Halloween Costume Contest. See some of the entries at blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Členom od",
"lastLoggedIn": "- Posledné prihlásenie",
"notPorted": "Táto funkcia ešte nie je prenesená z pôvodnej stránky.",
diff --git a/common/locales/sk/groups.json b/common/locales/sk/groups.json
index 22a4a68e6c..4e4a4e06b8 100644
--- a/common/locales/sk/groups.json
+++ b/common/locales/sk/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>'s Party",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/sk/noscript.json b/common/locales/sk/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/sk/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/sr/generic.json b/common/locales/sr/generic.json
index 1c1ab1fd5f..ec9b393f0b 100644
--- a/common/locales/sr/generic.json
+++ b/common/locales/sr/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Celebrated <%= number %> Naming Days! Thanks for being a fantastic user.",
"achievementDilatory": "Spasilac odlagača",
"achievementDilatoryText": "Borac iz bitke protiv Gospodara Odlaganja Zadataka tokom letnjeg festivala 2014.",
- "costumeContest": "Takmičenje pod maskama 2014.",
- "costumeContestText": "Učestvovao u takmičenju kostima za Noć veštica 2014. Radove učesnika možete videti na blog.habitica.com/tagged/cosplay",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Član od",
"lastLoggedIn": "- Poslednji put prijavljen",
"notPorted": "Ova funkcija još uvek nije preneta sa starog sajta",
diff --git a/common/locales/sr/groups.json b/common/locales/sr/groups.json
index f77121d83f..c2ce55c778 100644
--- a/common/locales/sr/groups.json
+++ b/common/locales/sr/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>'s Party",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/sr/noscript.json b/common/locales/sr/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/sr/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/sv/generic.json b/common/locales/sv/generic.json
index e6ece65ac2..db05b7d7ef 100644
--- a/common/locales/sv/generic.json
+++ b/common/locales/sv/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Celebrated <%= number %> Naming Days! Thanks for being a fantastic user.",
"achievementDilatory": "Dilatorys Befriare",
"achievementDilatoryText": "Helped defeat the Dread Drag'on of Dilatory during the 2014 Summer Splash Event!",
- "costumeContest": "2014 Kostym Tävling",
- "costumeContestText": "Participated in the 2014 Halloween Costume Contest. See some of the entries at blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Medlem sedan",
"lastLoggedIn": "- Senast inloggad",
"notPorted": "Denna funktion är inte flyttad från orginalhemsidan ännu.",
diff --git a/common/locales/sv/groups.json b/common/locales/sv/groups.json
index 9888ec8f0c..d4bc25881e 100644
--- a/common/locales/sv/groups.json
+++ b/common/locales/sv/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>'s Party",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/sv/noscript.json b/common/locales/sv/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/sv/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/uk/generic.json b/common/locales/uk/generic.json
index 1c75b9e9a6..35d634ef7a 100644
--- a/common/locales/uk/generic.json
+++ b/common/locales/uk/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Celebrated <%= number %> Naming Days! Thanks for being a fantastic user.",
"achievementDilatory": "Рятівник Неквапливості",
"achievementDilatoryText": "Допомогав перемогти Жахливого Драк'она Неквапливості напротязі Літнього Сплеску Подій 2014!",
- "costumeContest": "Костюмоване змагання 2014",
- "costumeContestText": "Брав участь у Хеллоуінському костюмованому змаганні 2014. Переглянути деякі роботи blog.habitica.com/tagged/cosplay!",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- Грає з:",
"lastLoggedIn": "- Востаннє заходив:",
"notPorted": "Ми ще не перенесли цю особливість з оригінального сайту.",
diff --git a/common/locales/uk/groups.json b/common/locales/uk/groups.json
index d4af208f4d..9fff0d255e 100644
--- a/common/locales/uk/groups.json
+++ b/common/locales/uk/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "Your party chat is empty! Type a message in the box above to start chatting.",
"guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.",
"possessiveParty": "<%= name %>'s Party",
- "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/uk/noscript.json b/common/locales/uk/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/uk/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/zh/challenge.json b/common/locales/zh/challenge.json
index 9f8d5f566a..7d3f390d47 100644
--- a/common/locales/zh/challenge.json
+++ b/common/locales/zh/challenge.json
@@ -60,8 +60,8 @@
"noPermissionEditChallenge": "你没有权限修改这个挑战。",
"noPermissionDeleteChallenge": "你没有权限删除这个挑战。",
"noPermissionCloseChallenge": "你没有权限关闭这个挑战。",
- "congratulations": "Congratulations!",
- "hurray": "Hurray!",
+ "congratulations": "恭喜!",
+ "hurray": "好哇!",
"noChallengeOwner": "没有主持人",
"noChallengeOwnerPopover": "这项挑战没有主持人,因为创建了这个挑战项目的用户删除了他们的帐号"
}
\ No newline at end of file
diff --git a/common/locales/zh/character.json b/common/locales/zh/character.json
index d4293016af..93e0f678b0 100644
--- a/common/locales/zh/character.json
+++ b/common/locales/zh/character.json
@@ -65,10 +65,10 @@
"ultimGearText": "已经将以下职业的武器和装备升级到满级:",
"level": "级",
"levelUp": "升级了!",
- "gainedLevel": "You gained a level!",
- "leveledUp": "By accomplishing your real-life goals, you've grown to Level <%= level %>!",
- "fullyHealed": "You have been fully healed!",
- "huzzah": "Huzzah!",
+ "gainedLevel": "你升了一级!",
+ "leveledUp": "通过完成你现实生活中的目标,你已经达到了第l <%= level %>级!",
+ "fullyHealed": "你的生命值已经完全恢复了!",
+ "huzzah": "啊打~!",
"mana": "魔法值",
"hp": "生命值",
"mp": "MP",
diff --git a/common/locales/zh/content.json b/common/locales/zh/content.json
index ba621443fd..489d8f36db 100644
--- a/common/locales/zh/content.json
+++ b/common/locales/zh/content.json
@@ -98,9 +98,9 @@
"questEggFrogText": "青蛙",
"questEggFrogMountText": "青蛙",
"questEggFrogAdjective": "一只王子一般的",
- "questEggSnakeText": "Snake",
- "questEggSnakeMountText": "Snake",
- "questEggSnakeAdjective": "a slithering",
+ "questEggSnakeText": "蛇",
+ "questEggSnakeMountText": "蛇",
+ "questEggSnakeAdjective": "一条嘶嘶的",
"eggNotes": "将一瓶孵化药水倒在这个宠物蛋上,你就能孵化出一只<%= eggAdjective(locale) %><%= eggText(locale) %>。",
"hatchingPotionBase": "普通",
"hatchingPotionWhite": "白色",
diff --git a/common/locales/zh/faq.json b/common/locales/zh/faq.json
index d3c3376113..9163bd9d9e 100644
--- a/common/locales/zh/faq.json
+++ b/common/locales/zh/faq.json
@@ -31,11 +31,11 @@
"iosFaqAnswer9": "首先,你需要加入或者成立一个战队 (见上面内容),虽然你可以一个人对抗怪物们,我们还是建议组队作战,因为这样可以让任务变得简单很多。另外,在完成任务时有一个可以鼓励你的朋友也是非常有动力的!\n\n然后,你需要一个任务卷轴,在目录 > 道具 下面可以找到,得到一个任务卷轴有三个办法:\n\n- 在15级的时候,你会得到一条任务线,有三个互相联系的任务,在30,40和60级还会解锁更多任务线\n- 当你邀请朋友加入你的战队,你会被奖励基础卷轴!\n- 在网页版你可以在[这里] (https://habitica.com/#/options/inventory/quests) 用金币和宝石购买任务。(我们会在未来把这项功能加到手机APP上)\n\n要在一项收集任务中击败BOSS收集道具,只需要照常完成你的日常任务,每过一夜,它们会被追踪到对BOSS的伤害值上 (下拉页面刷新就能看见BOSS的生命值在降低)。如果在和BOSS对战时错过了某些日常任务,BOSS会在你和你的队友对BOSS造成伤害的同时反伤你们。\n\n在11级时法师和战士可以学习到能造成更多伤害的技能,所以在第10级选择职业时,如果你想做一个高输出角色,这两个职业是极佳的选择。",
"webFaqAnswer9": "首先,你需要加入或者成立一个战队 (见 社交 > 队伍),虽然你可以一个人对抗怪物们,我们还是建议组队作战,因为这样可以让任务变得简单很多。另外,在完成任务时有一个可以鼓励你的朋友也是非常有动力的! \n
\n然后,你需要一个任务卷轴,在目录 > 道具 下面可以找到,得到一个任务卷轴有三个办法: \n
\n* 在15级的时候,你会得到一条任务线,有三个互相联系的任务,在30,40和60级还会解锁更多任务线 - 当你邀请朋友加入你的战队,你会被奖励基础卷轴! \n* 在网页版你可以在任务页面 (见 物品栏 > 任务) 用金币和宝石购买任务。\n
\n要在一项收集任务中击败BOSS收集道具,只需要照常完成你的日常任务,每过一夜,它们会被追踪到对BOSS的伤害值上 (下拉页面刷新就能看见BOSS的生命值在降低)。如果在和BOSS对战时错过了某些日常任务,BOSS会在你和你的队友对BOSS造成伤害的同时反伤你们。 \n
\n在11级时法师和战士可以学习到能造成更多伤害的技能,所以在第10级选择职业时,如果你想做一个高输出角色,这两个职业是极佳的选择。",
"faqQuestion10": "什么是宝石?我如何获得宝石?",
- "iosFaqAnswer10": "Gems are purchased with real money by tapping on the gem icon in the header. When people buy gems, they are helping us to keep the site running. We're very grateful for their support!\n\n In addition to buying gems directly, there are three other ways players can gain gems:\n\n * Win a Challenge on the [website](https://habitica.com) that has been set up by another player under Social > Challenges. (We will be adding Challenges to the app in a future update!)\n * Subscribe on the [website](https://habitica.com/#/options/settings/subscription) and unlock the ability to buy a certain number of gems per month.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\n Keep in mind that items purchased with gems do not offer any statistical advantages, so players can still make use of the app without them!",
- "webFaqAnswer10": "Gems are [purchased with real money](https://habitica.com/#/options/settings/subscription), although [subscribers](https://habitica.com/#/options/settings/subscription) can purchase them with Gold. When people subscribe or buy Gems, they are helping us to keep the site running. We're very grateful for their support!\n
\n In addition to buying Gems directly or becoming a subscriber, there are two other ways players can gain Gems:\n
\n * Win a Challenge that has been set up by another player under Social > Challenges.\n * Contribute your skills to the Habitica project. See this wiki page for more details: [Contributing to Habitica](http://habitica.wikia.com/wiki/Contributing_to_Habitica)\n
\n Keep in mind that items purchased with Gems do not offer any statistical advantages, so players can still make use of the site without them!",
+ "iosFaqAnswer10": "宝石需要通过点击标题栏上的宝石图标,用真实的金钱购买。购买宝石可以帮助我们维护网站的运营,我们对这些支持表示衷心感谢!\n\n除了直接购买宝石以外,还有另外三个办法可以得到宝石:\n\n* 在 [网页版](https://habitica.com) 进入 社交 > 挑战 赢得另一个玩家设立的挑战项目。(我们会将挑战项目在未来加入手机APP)\n\n* 在 [网页版](https://habitica.com/#/options/settings/subscription) 进行订阅,可以解锁每月用金币购买一定数量宝石的权限\n\n* 为Habitica项目做出贡献。在这个维基页面查看更多细节: [为Habitica做贡献](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n\n请记住,使用宝石购买的道具并不具有额外的优势,所以玩家们完全可以不使用宝石继续使用本程序!",
+ "webFaqAnswer10": "宝石需要通过点击标题栏上的宝石图标,用[真实的金钱]购买 (https://habitica.com/#/options/settings/subscription),网站的[订阅者] (https://habitica.com/#/options/settings/subscription) 可以用金币购买宝石。无论何种方式获得宝石,都可以帮助我们维护网站的运营,我们对这些支持表示衷心感谢!\n
\n除了直接购买宝石和成为订阅者以外,还有另外两个办法可以得到宝石:\n
\n* 进入 社交 > 挑战 赢得另一个玩家设立的挑战项目\n* 为Habitica项目做出贡献。在这个维基页面查看更多细节: [为Habitica做贡献](http://habitica.wikia.com/wiki/Contributing_to_Habitica).\n
\n请记住,使用宝石购买的道具并不具有额外的优势,所以玩家们完全可以不使用宝石继续使用本程序!",
"faqQuestion11": "我怎么才能报告一个bug,或者请求增加功能?",
"iosFaqAnswer11": "你可以在菜单>报告bug以及菜单>提供反馈下面报告bug,请求增加功能,或者提供你的反馈。我们会尽力协助你。",
- "webFaqAnswer11": "Bug reports are collected on GitHub. Go to [Help > Report a Bug](https://github.com/HabitRPG/habitrpg/issues/2760) and follow the instructions. Don't worry, we'll get you fixed up soon!\n
\n Feature requests are collected on Trello. Go to [Help > Request a Feature](https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) and follow the instructions. Ta-da!",
+ "webFaqAnswer11": "错误报告都在GitHub里留有记录,进入[帮助 > 报告一个错误] (https://github.com/HabitRPG/habitrpg/issues/2760) 并按照说明提交问题。不用担心,我们会马上解决的!\n
\n新功能增添请求都被收集在Trello,进入[帮助 > 请求一个新功能] (https://trello.com/c/odmhIqyW/440-read-first-table-of-contents) ,然后按照说明提交请求,见证奇迹的时刻到了!",
"faqQuestion12": "如何参与世界级的首领战?",
"iosFaqAnswer12": "世界级首领是出现在酒馆的特殊怪物。所有活跃的玩家都会自动参与首领战,玩家们的完成的任务和技能都会对首领造成伤害。\n\n你可以像平时那样完成探索任务。你完成的任务和技能会被算入世界级首领以及你队伍首领的进度当中。\n\n世界级首领并不会伤害你以及你的账户。它会有一个愤怒值,取决于用户跳过的每日任务。如果愤怒值满了,它会攻击一个NPC并使这个NPC的形象产生永久性改变。\n\n你可以获知更多关于过去的[世界级首领的信息]。\n请参阅(http://habitica.wikia.com/wiki/World_Bosses) ",
"webFaqAnswer12": "世界级首领是出现在酒馆的特殊怪物。所有活跃的玩家都会自动参与首领战,玩家们的完成的任务和技能都会对首领造成伤害。\n
\n你可以像平时那样完成探索任务。你完成的任务和技能会被算入世界级首领以及你队伍首领的进度当中。\n
\n世界级首领并不会伤害你以及你的账户。它会有一个愤怒值,取决于用户跳过的每日任务。如果愤怒值满了,它会攻击一个NPC并使这个NPC的形象产生永久性改变。\n
\n你可以获知更多关于过去的[世界级首领的信息]。\n请参阅(http://habitica.wikia.com/wiki/World_Bosses) ",
diff --git a/common/locales/zh/front.json b/common/locales/zh/front.json
index 1b5fab4920..5736a30985 100644
--- a/common/locales/zh/front.json
+++ b/common/locales/zh/front.json
@@ -6,13 +6,13 @@
"althaireQuote": "持续地去完成任务真的能鼓励我去完成我每天要做的事和其他所有待办事项,激励我最多的是我不能辜负我的战友。",
"andeeliaoQuote": "超赞的东西,前几天刚开始尝试,现在已经让我的生活变得更加充实丰富!",
"autumnesquirrelQuote": "我在工作,做家务,付账单的时候已经不那么拖延症了。",
- "businessSample1": "Confirm 1 page of Inventory",
+ "businessSample1": "确认1页库存清单",
"businessSample2": "20分钟的文档整理",
"businessSample3": "整理收件箱",
- "businessSample4": "Prepare 1 Document for Client",
- "businessSample5": "Call Clients/Put Off Phone Calls",
+ "businessSample4": "替委托人准备1页文件",
+ "businessSample5": "给客户打电话/推迟电话",
"businessText": "在工作中利用Habitica",
- "choreSample1": "Put Dirty Clothes in Hamper",
+ "choreSample1": "把脏衣服丢进洗衣篮里去",
"choreSample2": "20分钟的家务",
"choreSample3": "洗了大量的餐具",
"choreSample4": "整理房间",
@@ -32,13 +32,13 @@
"companyPrivacy": "隐私",
"companyTerms": "条款",
"companyVideos": "视频",
- "contribUse": "Habitica contributors use",
- "dragonsilverQuote": "I can't tell you how many time and task tracking systems I've tried over the decades... [Habitica] is the only thing I've used that actually helps me get things done rather than just list them.",
- "dreimQuote": "When I discovered [Habitica] last summer, I had just failed about half of my exams. Thanks to the Dailies... I was able to organize and discipline myself, and I actually passed all my exams with really good grades a month ago.",
- "elmiQuote": "Every morning I'm looking forward to getting up so I can earn some gold!",
+ "contribUse": "Habitica贡献者们使用",
+ "dragonsilverQuote": "我简直数不清这几十年来我试过多少任务追踪系统,[Habitica]是唯一一个帮助我真正做好事情,而不仅仅是把他们列个单子的。",
+ "dreimQuote": "当我去年夏天发现[Habitica]的时候,我刚挂掉了我一半的课程。感谢日常任务……我能够管住我自己了,还顺利在上个月高分通过了我所有的考试。",
+ "elmiQuote": "每个早上我都盼着醒过来,这样我就能赚到更多金币!",
"email": "邮箱",
"emailNewPass": "把新密码发到我的邮箱",
- "evagantzQuote": "My very first dentist appointment where the hygienist was actually excited about my flossing habits. Thanks [Habitica]!",
+ "evagantzQuote": "在我和牙医第一次见面时,他对我用牙线洁牙的习惯高兴极了,谢谢了[Habitica]!",
"examplesHeading": "玩家们用Habitica来管理……",
"featureAchievementByline": "想做一件非常棒的事情吗?炫耀一下得到的徽章吧!",
"featureAchievementHeading": "成就徽章",
@@ -55,7 +55,7 @@
"footerMobile": "手机版",
"footerSocial": "社交",
"forgotPass": "找回密码",
- "frabjabulousQuote": "[Habitica] is the reason I got a killer, high-paying job... and even more miraculous, I'm now a daily flosser!",
+ "frabjabulousQuote": "[Habitica]是我能够找到一个强大的高收入工作的原因……更神奇的是,我现在还每天洁牙!",
"free": "免费加入",
"gamifyButton": "生活即游戏!",
"goalSample1": "练习钢琴1小时",
@@ -74,7 +74,7 @@
"infhQuote": "[Habitica]真的帮了我,让我把研究生生活整理得井井有条。",
"invalidEmail": "执行密码重置需要一个有效的电子邮件地址。",
"irishfeet123Quote": "我曾经习惯很烂,在吃饭之后不好好收拾,茶杯放得到处都是, [Habitica]解决了这个问题!",
- "joinOthers": "Join <%= userCount %> people making it fun to achieve goals!",
+ "joinOthers": "加入 <%= userCount %> 个玩家的队伍,让完成任务变得有趣!",
"kazuiQuote": "Before [Habitica], I was stuck with my thesis, as well as dissatisfied with my personal discipline regarding housework and things like learning vocabulary and studying Go theory. It turns out breaking down these tasks into smaller manageable checklists is quite the thing to keep me motivated and constantly working.",
"landingadminlink": "管理包",
"landingend": "还没被说服?",
@@ -84,7 +84,7 @@
"landingfeatureslink": "功能",
"landingp1": "The problem with most productivity apps on the market is that they provide no incentive to continue using them. Habitica fixes this by making habit building fun! By rewarding you for your successes and penalizing you for slip-ups, Habitica provides external motivation for completing your day-to-day activities.",
"landingp2": "当你坚持一个好习惯,完成一个日常任务,或清除一个旧的待办事项,Habitica马上用经验和金币奖励你。你获得经验后会升级,增加属性并解锁更多功能,例如职业和宠物。金币可以用来购买提升经验的物品,或你创建的个人奖励。即便是最小的成功也会立刻给你奖励,使你变得不那么拖延。",
- "landingp2header": "激励",
+ "landingp2header": "即时激励",
"landingp3": "Whenever you indulge in a bad habit or fail to complete one of your daily tasks, you lose health. If your health drops too low, you lose some of the progress you've made. By providing immediate consequences, Habitica can help break bad habits and procrastination cycles before they cause real-world problems.",
"landingp3header": "后果",
"landingp4": "With an active community, Habitica provides the accountability you need to stay on task. With the party system, you can bring in a group of your closest friends to cheer you on. The guild system allows you to find people with similar interests or obstacles, so you can share your goals and swap tips on how to tackle your problems. In Habitica, the community means that you have both the support and the accountability you need to succeed.",
@@ -94,7 +94,7 @@
"loginAndReg": "登录/登记",
"loginFacebookAlt": "用FB登录/登记",
"logout": "登出",
- "marketing1Header": "通过玩游戏改善你的生活",
+ "marketing1Header": "玩好游戏,过好生活",
"marketing1Lead1": "Habitica是一个帮助你改变生活习惯的游戏。他通过把你的所有任务(习惯,日常任务和待办事项) 转变成你需要打败的敌人来“游戏化”你的生活。你做的越好,你在游戏进展得越顺利。如果你生活中除了差错,你的角色在游戏中也会退步。",
"marketing1Lead2": "获取装备。改善你的习惯来武装你的角色。拿你的装备向朋友们炫耀吧",
"marketing1Lead2Title": "获取装备",
@@ -138,9 +138,9 @@
"questByline1": "和朋友一起玩,督促自己完成任务。",
"questByline2": "各自接受挑战,一起达成目标!",
"questHeading1": "与朋友一起大战怪兽!",
- "questHeading2": "If you slack off, they all get hurt!",
+ "questHeading2": "你的懒惰会伤及伙伴!",
"register": "注册",
- "rewardByline1": "Spend gold on virtual and real-life rewards.",
+ "rewardByline1": "为虚拟和真实的奖励花点金币。",
"rewardByline2": "即时奖励,给你持续动力!",
"rewardHeading": "达成目标,就能赚取金币!",
"sampleDailies": "每日任务示例",
@@ -153,40 +153,40 @@
"schoolSample4": "第1章的注释",
"schoolSample5": "读1个章节",
"sixteenBitFilQuote": "多亏 [Habitica],现在我的工作和任务都能及时完成了。我太盼望升到下一级了!",
- "skysailorQuote": "My party and our quests keep me engaged in the game, which keeps me motivated to get things done and change my life in positive ways",
+ "skysailorQuote": "我的队伍和我们的任务让我沉浸在这个游戏里,时刻激励我去做完自己的事情,改善自己的生活",
"socialTitle": "Habitica - 游戏化你的生活",
- "supermouse35Quote": "I'm exercising more and I haven't forgotten to take my meds for months! Thanks, Habit. :D",
+ "supermouse35Quote": "我锻炼的更多了,而且已经连续几个月没有忘记体检了!谢了,Habit:D",
"sync": "同步",
"tasks": "任务",
"teamSample1": "计划星期二的会议日程",
- "teamSample2": "Brainstorm Growth Hacking",
+ "teamSample2": "Growth Hacking头脑风暴",
"teamSample3": "讨论本周的KPI",
"teams": "团队",
"terms": "使用条款",
"testimonialHeading": "看看大家怎么说……",
"tutorials": "教程",
"unlockByline1": "完成目标,提升等级。",
- "unlockByline2": "Unlock new motivational tools, such as pet collecting, random rewards, spell-casting, and more!",
+ "unlockByline2": "解锁新的激励机制,比如收集宠物,随机奖励,施放魔法,还有更多!",
"unlockHeadline": "当你保持生产,你会解锁新内容哦!",
"useUUID": "用户ID / API令牌 (面向 Facebook 用户)",
"username": "用户名",
"watchVideos": "观看视频",
"work": "工作",
- "zelahQuote": "With [Habitica], I can be persuaded to go to bed on time by the thought of gaining points for an early night or losing health for a late one!",
+ "zelahQuote": "因为 [Habitica] 的帮助,我能够准时上床休息了,因为我老想着早睡能挣经验,晚睡会掉血!",
"reportAccountProblems": "报告账户问题",
"reportCommunityIssues": "报告社区问题",
- "generalQuestionsSite": "General Questions about the Site",
- "businessInquiries": "Business Inquiries",
- "merchandiseInquiries": "Merchandise Inquiries",
- "marketingInquiries": "Marketing/Social Media Inquiries",
+ "generalQuestionsSite": "关于本站的常见问题",
+ "businessInquiries": "业务咨询",
+ "merchandiseInquiries": "商业咨询",
+ "marketingInquiries": "市场营销/媒体咨询",
"tweet": "发布推特",
"apps": "手机应用",
"notifyAndroidApp": "希望我们在安卓应用发布时通知你吗?注册这个邮件通知!",
"checkOutIOSApp": "看看我们的新IOS应用!",
- "imagine1": "Imagine if improving your life were as fun as playing a game.",
- "landingCopy1": "Advance in the game by completing your real-life tasks.",
- "landingCopy2": "Battle monsters with friends to stay accountable to your goals.",
- "landingCopy3": "Join over <%= userCount %> people having fun as they improve their lives.",
- "alreadyHaveAccount": "I already have an account!",
- "getStartedNow": "Get Started Now!"
+ "imagine1": "想想,像玩游戏一样改善你的生活",
+ "landingCopy1": "通过在现实生活中完达成目标在游戏中升级。",
+ "landingCopy2": "和朋友一起和怪兽战斗,督促自己完成任务。",
+ "landingCopy3": "加入超过 <%= userCount %> 名玩家的队伍,用力玩用力生活。",
+ "alreadyHaveAccount": "我有一个账号了!",
+ "getStartedNow": "现在就开始!"
}
\ No newline at end of file
diff --git a/common/locales/zh/gear.json b/common/locales/zh/gear.json
index 63eec79016..dea579a71a 100644
--- a/common/locales/zh/gear.json
+++ b/common/locales/zh/gear.json
@@ -695,12 +695,12 @@
"eyewearMystery201503Notes": "别被这些璀璨的宝石闪瞎了!无属性加成。2015年三月捐赠者物品。",
"eyewearMystery201506Text": "Neon Snorkel",
"eyewearMystery201506Notes": "This neon snorkel lets its wearer see underwater. Confers no benefit. June 2015 Subscriber Item.",
- "eyewearMystery201507Text": "Rad Sunglasses",
- "eyewearMystery201507Notes": "These sunglasses let you stay cool even when the weather is hot. Confers no benefit. July 2015 Subscriber Item.",
+ "eyewearMystery201507Text": "酷的太阳镜",
+ "eyewearMystery201507Notes": "天气热的时候,这副太阳镜能帮你保持冷静。 没有属性加成。2015年7月捐赠者物品。",
"eyewearMystery301404Text": "眼戴护目镜",
"eyewearMystery301404Notes": "没有什么小饰品能比一副护目镜更炫了——可能,除了单片眼镜。3015年3月捐赠者物品。",
"eyewearMystery301405Text": "单片眼镜",
"eyewearMystery301405Notes": "没有什么饰品能比单片眼镜更炫——可能,除了护目镜。没有属性加成。3015年7月订阅者物品",
- "eyewearArmoirePlagueDoctorMaskText": "Plague Doctor Mask",
- "eyewearArmoirePlagueDoctorMaskNotes": "An authentic mask worn by the doctors who battle the Plague of Procrastination. Confers no benefit. Enchanted Armoire: Plague Doctor Set (Item 2 of 3)."
+ "eyewearArmoirePlagueDoctorMaskText": "瘟疫医生面具",
+ "eyewearArmoirePlagueDoctorMaskNotes": "防治延迟瘟疫的医生袋的地道面具。没有属性加成。魔法衣橱: 瘟疫医生系列 (3件的第2件)。"
}
\ No newline at end of file
diff --git a/common/locales/zh/generic.json b/common/locales/zh/generic.json
index e2bc440ed2..513889a461 100644
--- a/common/locales/zh/generic.json
+++ b/common/locales/zh/generic.json
@@ -69,8 +69,9 @@
"habiticaDayPluralText": "Celebrated <%= number %> Naming Days! Thanks for being a fantastic user.",
"achievementDilatory": "拖延的救世者",
"achievementDilatoryText": "2014年夏季世界事件中协助打败了恐怖的拖延巨龙!",
- "costumeContest": "2014服装大赛",
- "costumeContestText": "参加2014年万圣节服装大赛!详情请见blog.habitica.com/tagged/cosplay",
+ "costumeContest": "Costume Contestant",
+ "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!",
+ "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!",
"memberSince": "- 加入于",
"lastLoggedIn": "- 最后上线于",
"notPorted": "这个功能未从原版网站中导出。",
@@ -135,16 +136,16 @@
"thankyou3": "I'm very grateful - thank you!",
"thankyouCardAchievementTitle": "Greatly Grateful",
"thankyouCardAchievementText": "Thanks for being thankful! Sent or received <%= cards %> Thank-You cards.",
- "streakAchievement": "You earned a streak achievement!",
- "firstStreakAchievement": "21-Day Streak",
- "streakAchievementCount": "<%= streaks %> 21-Day Streaks",
- "twentyOneDays": "You've completed your Daily for 21 days in a row!",
+ "streakAchievement": "你得到一个连击成就!",
+ "firstStreakAchievement": "21天连击",
+ "streakAchievementCount": "<%= streaks %> 21天连击",
+ "twentyOneDays": "你连21天完成了你的日常任务!",
"dontBreakStreak": "Amazing job. Don't break the streak!",
- "dontStop": "Don't Stop Now!",
+ "dontStop": "加油!别停!",
"levelUpShare": "I leveled up in Habitica by improving my real-life habits!",
"questUnlockShare": "I unlocked a new quest in Habitica!",
"hatchPetShare": "I hatched a new pet by completing my real-life tasks!",
"raisePetShare": "I raised a pet into a mount by completing my real-life tasks!",
- "wonChallengeShare": "I won a challenge in Habitica!",
- "achievementShare": "I earned a new achievement in Habitica!"
+ "wonChallengeShare": "我在Habitica赢了一个挑战!",
+ "achievementShare": "我在Habitica得到了一个新成就!"
}
\ No newline at end of file
diff --git a/common/locales/zh/groups.json b/common/locales/zh/groups.json
index 94016e3bae..0324914002 100644
--- a/common/locales/zh/groups.json
+++ b/common/locales/zh/groups.json
@@ -147,5 +147,5 @@
"partyChatEmpty": "队伍聊天框里空空如也!在上面的聊天框打字来开始聊天。",
"guildChatEmpty": "公会聊天框里空空如也!在上面的聊天框打字来开始聊天。",
"possessiveParty": "<%= name %>的队伍",
- "requestAcceptGuidelines": "如果你想在酒馆里,或是队伍和公会里张贴信息,请先阅读<%= linkStart %>交流须知<%= linkEnd %>并点击按钮,表示接受其中的条款。 "
+ "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them."
}
\ No newline at end of file
diff --git a/common/locales/zh/messages.json b/common/locales/zh/messages.json
index 126ee8c6ae..4cbabff3f1 100644
--- a/common/locales/zh/messages.json
+++ b/common/locales/zh/messages.json
@@ -38,7 +38,7 @@
"messageAuthEmailTaken": "邮箱已被使用",
"messageAuthNoUserFound": "没有找到这个用户",
"messageAuthMustBeLoggedIn": "你必须登入",
- "messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request",
+ "messageAuthMustIncludeTokens": "你的请求内容里必须包括uid(user id)和勋章",
"messageGroupNotFound": "没有找到这个小组,或者你没有权限",
"messageGroupAlreadyInParty": "你已加入这个队伍,请刷新页面",
"messageGroupOnlyLeaderCanUpdate": "只有小组官员才可以更新小组信息",
@@ -46,10 +46,10 @@
"messageGroupCannotRemoveSelf": "你不能将自己移除",
"messageGroupChatBlankMessage": "你不能发送空白消息",
"messageGroupChatLikeOwnMessage": "不能赞自己的消息,不要做这种人。",
- "messageGroupChatFlagOwnMessage": "Can't report your own message.",
- "messageGroupChatFlagAlreadyReported": "You have already reported this message",
+ "messageGroupChatFlagOwnMessage": "无法上报你自己的信息。",
+ "messageGroupChatFlagAlreadyReported": "你已经举报过此信息。",
"messageGroupChatNotFound": "找不到消息。",
- "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!",
- "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.",
- "messageUserOperationNotFound": "<%= operation %> operation not found"
+ "messageGroupChatAdminClearFlagCount": "只有管理员可以去除计数!",
+ "messageUserOperationProtected": "路径 `<%= operation %>`因受到保护未保存。",
+ "messageUserOperationNotFound": "<%= operation %> 无法找到此操作。"
}
\ No newline at end of file
diff --git a/common/locales/zh/noscript.json b/common/locales/zh/noscript.json
new file mode 100644
index 0000000000..6057268ef2
--- /dev/null
+++ b/common/locales/zh/noscript.json
@@ -0,0 +1,6 @@
+{
+ "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled",
+ "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly",
+ "jsDisabledText": "Habitica can't properly display the site without it!",
+ "jsDisabledLink": "Please enable JavaScript to continue!"
+}
\ No newline at end of file
diff --git a/common/locales/zh/pets.json b/common/locales/zh/pets.json
index c590dca400..30eadad52d 100644
--- a/common/locales/zh/pets.json
+++ b/common/locales/zh/pets.json
@@ -58,16 +58,16 @@
"firstDrop": "你解锁了物品掉落功能!从今以后,只要你完成每个任务都会有一定的几率能找到一件物品,包括蛋,药水和食物。刚刚你找到了一颗<%= eggText %>蛋!<%= eggNotes %>",
"useGems": "如果你很想拥有某只宠物,但又不想慢慢等蛋掉落的话,你可以在 物品柜>市场用宝石购买!",
"hatchAPot": "孵化一隻<%= potion %><%= egg %>?",
- "hatchedPet": "You hatched a <%= potion %> <%= egg %>!",
- "displayNow": "Display Now",
- "displayLater": "Display Later",
- "earnedCompanion": "With all your productivity, you've earned a new companion. Feed it to make it grow!",
+ "hatchedPet": "你孵化了 <%= potion %> <%= egg %>!",
+ "displayNow": "现在显示",
+ "displayLater": "稍后显示",
+ "earnedCompanion": "因为你的不懈努力,你又获得了一个新的伙伴,好好喂养它,让它成长!",
"feedPet": "喂你的<%= name %>一个<%= article %><%= text %>?",
"useSaddle": "把鞍用在<%= pet %>上?",
- "raisedPet": "You grew a <%= pet %>!",
- "earnedSteed": "By completing your tasks, you've earned a faithful steed!",
- "rideNow": "Ride Now",
- "rideLater": "Ride Later",
+ "raisedPet": "你让 <%= pet %> 长大了!",
+ "earnedSteed": "通过完成你的任务,你获得了一匹忠诚的坐骑!",
+ "rideNow": "现在骑上",
+ "rideLater": "稍后骑上",
"petName": "<%= potion %> <%= egg %>",
"mountName": "<%= potion %> <%= mount %>",
"petKeyName": "狗舍的钥匙",
diff --git a/common/locales/zh/quests.json b/common/locales/zh/quests.json
index 2de3a0bcd9..e7d468272d 100644
--- a/common/locales/zh/quests.json
+++ b/common/locales/zh/quests.json
@@ -77,6 +77,6 @@
"startQuest": "开始探索任务",
"whichQuestStart": "你想要开始哪个探索任务?",
"getMoreQuests": "获取更多探索任务",
- "unlockedAQuest": "You unlocked a quest!",
- "leveledUpReceivedQuest": "You leveled up to Level <%= level %> and received a quest scroll!"
+ "unlockedAQuest": "你解锁了一个任务!",
+ "leveledUpReceivedQuest": "你达到了 第 <%= level %> 级 ,并且收到了一个任务卷轴!"
}
\ No newline at end of file
diff --git a/common/locales/zh/questscontent.json b/common/locales/zh/questscontent.json
index c667e92c0e..22f288ba25 100644
--- a/common/locales/zh/questscontent.json
+++ b/common/locales/zh/questscontent.json
@@ -66,14 +66,14 @@
"questVice2Notes": "当你挣脱了恶习的控制,你感觉到一股你已然忘却的力量涌回了你的体内。带着必胜的信念,你的队伍又一次充满自信的踏上了前往Habitica山的路。你们在山洞的入口停了下来。从洞里不断涌出漆黑的暗影,像雾一样笼罩着洞口。洞里漆黑一片,伸手不见五指。从灯笼里发出的光根本无法触及暗影笼罩的区域。据说只有用魔力点亮的光可以渗入巨龙的阴霾中。如果能找到足够多的神光水晶,你就可以找到去巨龙那里的路了。",
"questVice2CollectLightCrystal": "神光水晶",
"questVice2DropVice3Quest": "恶习之龙第3部 (卷轴)",
- "questVice3Text": "Vice, Part 3: Vice Awakens",
+ "questVice3Text": "恶习之龙,第3部:恶习缓醒",
"questVice3Notes": "在不断的努力之下,你的队伍终于发现了恶习之龙的巢穴.这个庞大的怪物用厌恶的眼神盯着你的队伍.黑暗的漩涡围绕着你们,一个声音在你们的脑海中耳语.“又有更多愚蠢的Habitica居民来阻止我了吗?有意思.你们会后悔来到这里的.”这只长满鳞片的巨物抬起了头,回过身来准备攻击.你们的机会来了!尽你们所能,最后一次击败恶习吧!",
"questVice3Completion": "阴影从洞穴中消散,一切归于沉寂。你们做到了!你们打败了恶习!你和你的队伍终于可以松一口气了。勇敢的Habiteers,尽情享受胜利的喜悦吧,但是请铭记你在打败恶习的过程中学到的一切,继续向前迈进吧。还有更多的习惯等着你,还有更凶猛的恶魔需要征服!",
"questVice3Boss": "阴影恶习之龙",
"questVice3DropWeaponSpecial2": "Stephen Weber的龙矛",
"questVice3DropDragonEgg": "龙 (宠物蛋)",
"questVice3DropShadeHatchingPotion": "深色孵化药水",
- "questMoonstone1Text": "The Moonstone Chain, Part 1: The Moonstone Chain",
+ "questMoonstone1Text": "月长石顶链第1部:月长石顶链",
"questMoonstone1Notes": "
一个可怕的麻烦困扰着Habiticans.已经消失很久的坏习惯回来复仇了.盘子没有清洗,课本很长时间没有看,拖延症开始猖獗!
你跟踪着你自己的一些归来的坏习惯,来到了淤塞之沼,并发现了这一切的元凶:可怕的死灵巫师,雷茜德维特.你冲了进去,挥舞着你的武器,但是它们都穿过了她幽灵一般的身体,没有造成任何伤害.
\"别费劲儿了,\"她用粗糙刺耳的声音嘶嘶得说.\"没有月长石项链的话,没有什么可以伤害我--而且宝石大师@aurakami很久以前就将月长石分散到了Habitica的各处!\"虽然你气喘吁吁的撤退了...但是你知道你需要做什么.
", "questMoonstone1CollectMoonstone": "月长石", "questMoonstone1DropMoonstone2Quest": "月长石项链第2部:再犯巫师 (卷轴)", @@ -81,7 +81,7 @@ "questMoonstone2Notes": "勇敢的武器铸造师@Inventrix帮你将附魔的月长石铸造成了一条项链.你现在已经准备好面对雷茜德维特了,但是当你进入淤塞之沼的时候,感觉寒气逼人.
腐朽的气息在你的耳边低语.\"又回来了?真令人高兴啊...\"你冲向前去,猛地刺出,在月长石项链的光芒下,你的武器击中了她的肉体.\"你再次将我与这个世界束缚在了一起,\"雷茜德维特咆哮着,\"而且这次该是你离开这个世界了!\"
", "questMoonstone2Boss": "死灵法师", "questMoonstone2DropMoonstone3Quest": "月长石项链第3部:再犯改造 (卷轴)", - "questMoonstone3Text": "The Moonstone Chain, Part 3: Recidivate Transformed", + "questMoonstone3Text": "月长石顶链,第3部:再犯改造", "questMoonstone3Notes": "再犯蜷缩在地上,你用月长石项链给她致命一击.可怕的事情发生了,她抓住了宝石,眼中闪耀着胜利的火焰.
\"愚蠢的生物!”她喊道.\"这些月长石的确能够让我回复成物质形态,但是并不像你想象的那样.当满月在黑暗中变圆的时候,我的力量也会变得强大,我从阴影之中召唤了你们最为恐惧的家伙!\"
一股浓烈的雾从沼泽中升起,雷茜德维特的身体扭曲变形成了让人恐惧的形状--恶习的不死之身,恐惧的再生了.
", "questMoonstone3Completion": "当不死巨龙倒下时,你的呼吸变得困难,汗水刺激着你的眼睛。 再犯的遗体风化成薄薄的灰雾, 当清风吹拂时飘散了。你听到Habitican们一劳永逸地打败他们的坏习惯时发出的一阵遥远悠长的呼喊。这时,驯兽师
@Baconsaur 骑着狮鹫从天空中俯冲下来,“我在天空中看到了你战斗的尾声,我被深深感动了。请拿上这件附魔了的长袍——你的勇敢诉说着你高尚的心灵,我相信这是理所应当拥有的。”
", "questMoonstone3Boss": "死者-恶习", @@ -91,7 +91,7 @@ "questGoldenknight1Notes": "黄金骑士得知了可怜的Habitican们的情况。没有将你们的每日任务全部完成?记录下一个不好的习惯?她会以此为理由来不断的骚扰你,教你怎样像她一样。她是完美的Habitican的经典范例,而你只不过是一个失败者。但是,虽然这的确有点儿不光彩!但是所有人都会犯错。那些犯了错的人也不应因此就受到这样消极的待遇。也许现在对你来说正是时候,从受到伤害的Habitican们那里收集一些证据,然后和黄金骑士来一场严肃的谈话
", "questGoldenknight1CollectTestimony": "证据", "questGoldenknight1DropGoldenknight2Quest": "黄金骑士项链第2部:暗淡的黄金 (卷轴)", - "questGoldenknight2Text": "The Golden Knight, Part 2: Gold Knight", + "questGoldenknight2Text": "黄金骑士,第2部:黄金骑士", "questGoldenknight2Notes": "身上带着上百个Habitican们的证据,你最终面对着黄金骑士,开始一个接着一个地对她陈述Habitican们对她的不满,“还有@Pfeffernusse说你总是不停的讨价还价-”黄金骑士举起了她的手打断了你,嘲弄道,“拜托,这些人只不过是嫉妒我的成功。比起抱怨,他们更应该像我一样努力的工作!也许我应该向你展示一下,就像我一样,勤奋所能给予你的力量!”说着她举起狼牙棒,准备攻击你!
", "questGoldenknight2Boss": "黄金骑士", "questGoldenknight2DropGoldenknight3Quest": "黄金骑士项链第3部:钢铁骑士 (卷轴)", @@ -272,6 +272,6 @@ "questSnakeNotes": "It takes a hardy soul to live in the Sand Dunes of Distraction. The arid desert is hardly a productive place, and the shimmering dunes have led many a traveler astray. However, something has even the locals spooked. The sands have been shifting and upturning entire villages. Residents claim a monster with an enormous serpentine body lies in wait under the sands, and they have all pooled together a reward for whomever will help them find and stop it. The much-lauded snake charmers @EmeraldOx and @PainterProphet have agreed to help you summon the beast. Can you stop the Serpent of Distraction?", "questSnakeCompletion": "With assistance from the charmers, you banish the Serpent of Distraction. Though you were happy to help the inhabitants of the Dunes, you can't help but feel a little sad for your fallen foe. While you contemplate the sights, @LordDarkly approaches you. \"Thank you! It's not much, but I hope this can express our gratitude properly.\" He hands you some Gold and... some Snake eggs! You will see that majestic animal again after all.", "questSnakeBoss": "Serpent of Distraction", - "questSnakeDropSnakeEgg": "Snake (Egg)", + "questSnakeDropSnakeEgg": "蛇(宠物蛋)", "questSnakeUnlockText": "Unlocks purchasable Snake eggs in the Market" } \ No newline at end of file diff --git a/common/locales/zh/settings.json b/common/locales/zh/settings.json index 1880d4d41b..c79f6f3af2 100644 --- a/common/locales/zh/settings.json +++ b/common/locales/zh/settings.json @@ -14,11 +14,11 @@ "startCollapsedPop": "选择这个选项后,展开编辑新任务的时候标签列表是隐藏的。", "startAdvCollapsed": "默认隐藏高级选项", "startAdvCollapsedPop": "选择这个选项后,展开编辑新任务的时候高级选项是隐藏的。", - "dontShowAgain": "Don't show this again", - "suppressLevelUpModal": "Don't show popup when gaining a level", - "suppressHatchPetModal": "Don't show popup when hatching a pet", - "suppressRaisePetModal": "Don't show popup when raising a pet into a mount", - "suppressStreakModal": "Don't show popup when attaining a Streak achievement", + "dontShowAgain": "不再出现本条内容", + "suppressLevelUpModal": "在升级时不再出现弹出窗口", + "suppressHatchPetModal": "在孵化宠物时不再出现弹出窗口", + "suppressRaisePetModal": "在坐骑成熟时不再出现弹出窗口", + "suppressStreakModal": "在连击时不再出现弹出窗口", "showTour": "显示教程", "restartTour": "重新开始刚加入Habitica时显示的教程", "showBailey": "显示Bailey", @@ -93,7 +93,7 @@ "loginNameDescription2": "用户 -> 档案", "loginNameDescription3": "来改变你显示在你的角色形象和聊天信息中的名字。", "emailNotifications": "电子邮件通知", - "wonChallenge": "You won a Challenge!", + "wonChallenge": "你赢得了一项挑战!", "newPM": "收到悄悄话", "giftedGems": "自然宝石", "giftedGemsInfo": "<%= amount %> 宝石 - 来自 <%= name %>", diff --git a/common/locales/zh_TW/backgrounds.json b/common/locales/zh_TW/backgrounds.json index 48f26a2c2b..9a40e2e657 100644 --- a/common/locales/zh_TW/backgrounds.json +++ b/common/locales/zh_TW/backgrounds.json @@ -87,8 +87,8 @@ "backgrounds062015": "第 13 組:2015 年 6 月推出", "backgroundDriftingRaftText": "漂流筏", "backgroundDriftingRaftNotes": "泛舟漂流筏。", - "backgroundShimmeryBubblesText": "金蔥泡沫", - "backgroundShimmeryBubblesNotes": "通過浮著泡沫金蔥的海洋。", + "backgroundShimmeryBubblesText": "閃亮泡沫", + "backgroundShimmeryBubblesNotes": "浮過泡沫金蔥的海洋。", "backgroundIslandWaterfallsText": "島上的瀑布", "backgroundIslandWaterfallsNotes": "在島上的瀑布野餐", "backgrounds072015": "第 14 組:2015 年 7 月推出", diff --git a/common/locales/zh_TW/challenge.json b/common/locales/zh_TW/challenge.json index 1850e7c48c..0f187fad77 100644 --- a/common/locales/zh_TW/challenge.json +++ b/common/locales/zh_TW/challenge.json @@ -60,8 +60,8 @@ "noPermissionEditChallenge": "你沒有權限更動這個挑戰的內容", "noPermissionDeleteChallenge": "你沒有權限撤回這個挑戰要求", "noPermissionCloseChallenge": "你沒有權限關閉這個挑戰", - "congratulations": "Congratulations!", - "hurray": "Hurray!", + "congratulations": "恭喜!", + "hurray": "太好了!", "noChallengeOwner": "無人擁有", "noChallengeOwnerPopover": "由於開創這個挑戰的人已經刪除他們的帳號,所以這個挑戰無人擁有。" } \ No newline at end of file diff --git a/common/locales/zh_TW/character.json b/common/locales/zh_TW/character.json index 55080af12f..c338812951 100644 --- a/common/locales/zh_TW/character.json +++ b/common/locales/zh_TW/character.json @@ -65,10 +65,10 @@ "ultimGearText": "已升級到此種職業之最高武器和盔甲:", "level": "等級", "levelUp": "升級了!", - "gainedLevel": "You gained a level!", - "leveledUp": "By accomplishing your real-life goals, you've grown to Level <%= level %>!", - "fullyHealed": "You have been fully healed!", - "huzzah": "Huzzah!", + "gainedLevel": "你升級了!", + "leveledUp": "因為你在現實生活完成目標,你升級到 等級 <%= level %>!", + "fullyHealed": "你完全康復了!", + "huzzah": "太好了!", "mana": "魔力", "hp": "HP", "mp": "MP", diff --git a/common/locales/zh_TW/content.json b/common/locales/zh_TW/content.json index 84ec2ad74a..ac6814af7d 100644 --- a/common/locales/zh_TW/content.json +++ b/common/locales/zh_TW/content.json @@ -98,8 +98,8 @@ "questEggFrogText": "青蛙", "questEggFrogMountText": "青蛙", "questEggFrogAdjective": "一隻王子般的", - "questEggSnakeText": "Snake", - "questEggSnakeMountText": "Snake", + "questEggSnakeText": "蛇", + "questEggSnakeMountText": "蛇", "questEggSnakeAdjective": "a slithering", "eggNotes": "找瓶孵化藥水倒在這顆蛋上,接著等蛋孵化出<%= eggAdjective(locale) %> <%= eggText(locale) %>。", "hatchingPotionBase": "普通", diff --git a/common/locales/zh_TW/gear.json b/common/locales/zh_TW/gear.json index 81a5b9a37a..040b763243 100644 --- a/common/locales/zh_TW/gear.json +++ b/common/locales/zh_TW/gear.json @@ -320,7 +320,7 @@ "armorArmoireGoldenTogaText": "黃金長袍", "armorArmoireGoldenTogaNotes": "這件閃閃發光的長袍只有真英雄才夠格穿戴。增加力量和體質各<%= attrs %>點。神祕寶箱:黃金袍系列(1/3)。", "armorArmoireHornedIronArmorText": "鐵角鎧甲", - "armorArmoireHornedIronArmorNotes": "用鐵激烈地鍛造而成,這件角盔甲無懈可擊!增加<%= con %>點體質和<%= per %>點感知。神祕寶箱:鐵角系列 (2/3)。", + "armorArmoireHornedIronArmorNotes": "用鐵鍛造而成,這件角盔甲無懈可擊!增加<%= con %>點體質和<%= per %>點感知。神祕寶箱:鐵角系列 (2/3)。", "armorArmoirePlagueDoctorOvercoatText": "瘟疫醫袍", "armorArmoirePlagueDoctorOvercoatNotes": "和拖拉瘟疫戰鬥的醫生,值得一件真真正正的大衣!增加<%= int %>點智力,<%= str %>點力量和<%= con %>點體質。神祕寶箱:瘟疫醫師系列(3/3)。", "armorArmoireShepherdRobesText": "牧羊人長袍", diff --git a/common/locales/zh_TW/generic.json b/common/locales/zh_TW/generic.json index d687ad9177..0b724eb494 100644 --- a/common/locales/zh_TW/generic.json +++ b/common/locales/zh_TW/generic.json @@ -28,7 +28,7 @@ "market": "市場", "subscriberItem": "神秘物品", "newSubscriberItem": "新的神秘物品", - "subscriberItemText": "Each month, subscribers will receive a mystery item. This is usually released about one week before the end of the month. See the wiki's 'Mystery Item' page for more information.", + "subscriberItemText": "每個月,訂閱者會收到一個神秘物品。一般會在月底前一個星期公佈。詳情請看 Habitica 維基「神秘物品」頁面。", "all": "全部", "none": "無", "or": "或", @@ -69,8 +69,9 @@ "habiticaDayPluralText": "慶祝 <%= number %> 命名日! 感謝成為超棒的玩家。", "achievementDilatory": "拖延的救世者", "achievementDilatoryText": "2014年夏季世界事件中協助打敗了恐怖的拖延巨龍!", - "costumeContest": "2014 服裝大賽", - "costumeContestText": "參加2014萬聖節變裝大賽。看看有誰已經在部落格上登記了: habitica .com/tagged/cosplay!", + "costumeContest": "Costume Contestant", + "costumeContestText": "Participated in the Habitoween Costume Contest. See some of the entries on the Habitica blog!", + "costumeContestTextPlural": "Participated in <%= number %> Habitoween Costume Contests. See some of the entries on the Habitica blog!", "memberSince": "- 加入於", "lastLoggedIn": "- 最後上線於", "notPorted": "這個功能未從原版網站中導出。", @@ -79,7 +80,7 @@ "errorUpCase": "錯誤:", "newPassSent": "已傳送新密碼。", "serverUnreach": "暫時連不上伺服器。", - "requestError": "Yikes, an error occurred! Please reload the page, your last action may not have been saved correctly.", + "requestError": "出錯了! 請重新加載頁面, 你的最後行動可能沒有被儲存。", "seeConsole": "如果錯誤仍然存在,請在 幫助>回報問題 告訴我們。如果你熟悉瀏覽器的控制介面,請連同任何錯誤訊息一起回報給我們。", "error": "錯誤", "menu": "選單", @@ -92,7 +93,7 @@ "audioTheme_danielTheBard": "吟遊詩人Daniel", "audioTheme_wattsTheme": "Watts的旋律", "audioTheme_gokulTheme": "戈庫爾主題", - "audioTheme_luneFoxTheme": "LuneFox's Theme", + "audioTheme_luneFoxTheme": "LuneFox 的聲音主題", "askQuestion": "問問題", "reportBug": "回報問題", "contributeToHRPG": "為Habitica作出貢獻", @@ -136,11 +137,11 @@ "thankyouCardAchievementTitle": "大大感恩", "thankyouCardAchievementText": "感謝你如此感恩! 你收到或送出 <%= cards %> 張感謝卡。", "streakAchievement": "You earned a streak achievement!", - "firstStreakAchievement": "21-Day Streak", - "streakAchievementCount": "<%= streaks %> 21-Day Streaks", + "firstStreakAchievement": "21 天連擊", + "streakAchievementCount": "<%= streaks %> 21 天連擊", "twentyOneDays": "You've completed your Daily for 21 days in a row!", "dontBreakStreak": "Amazing job. Don't break the streak!", - "dontStop": "Don't Stop Now!", + "dontStop": "不要現在停止!", "levelUpShare": "I leveled up in Habitica by improving my real-life habits!", "questUnlockShare": "I unlocked a new quest in Habitica!", "hatchPetShare": "I hatched a new pet by completing my real-life tasks!", diff --git a/common/locales/zh_TW/groups.json b/common/locales/zh_TW/groups.json index 8a853ae81d..7b3966afe3 100644 --- a/common/locales/zh_TW/groups.json +++ b/common/locales/zh_TW/groups.json @@ -121,7 +121,7 @@ "inviteAlertInfo": "If you have friends already using Habitica, invite them by User ID here.", "inviteExistUser": "Invite Existing Users", "byColon": "作者:", - "inviteNewUsers": "Invite New Users", + "inviteNewUsers": "邀請新玩家", "sendInvitations": "發送邀請", "invitationsSent": "邀請已發送", "inviteAlertInfo2": "或者分享這個連接(複製/粘貼):", @@ -147,5 +147,5 @@ "partyChatEmpty": "你的隊伍聊天室太安靜了!趕快發送訊息打破沉默吧。", "guildChatEmpty": "This guild's chat is empty! Type a message in the box above to start chatting.", "possessiveParty": "<%= name %>的隊伍", - "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Communit Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them." + "requestAcceptGuidelines": "If you would like to post messages in the Tavern or any party or guild chat, please first read our <%= linkStart %>Community Guidelines<%= linkEnd %> and then click the button below to indicate that you accept them." } \ No newline at end of file diff --git a/common/locales/zh_TW/messages.json b/common/locales/zh_TW/messages.json index bb90a1e897..8fca577477 100644 --- a/common/locales/zh_TW/messages.json +++ b/common/locales/zh_TW/messages.json @@ -5,7 +5,7 @@ "messageTagNotFound": "找不到標籤", "messagePetNotFound": "找不到寵物", "messageFoodNotFound": "找不到食物", - "messageNotAvailable": "這個物品目前無法購得。", + "messageNotAvailable": "這個物品目前無法購買。", "messageCannotFeedPet": "無法餵食這隻寵物", "messageAlreadyMount": "你已經擁有這個坐騎了,試著給其他的寵物。", "messageEvolve": "你已經馴服 <%= egg %>,出去兜兜風吧!", @@ -31,24 +31,24 @@ "armoireEquipment": "<%= image %> 你在神祕寶箱裡找到稀有的裝備 <%= dropText %>! 好棒!", "armoireFood": "<%= image %> 你在神祕寶箱裡找到 <%= dropArticle %><%= dropText %>. 這是什麼東東啊?", "armoireExp": "你打開神祕寶箱⋯⋯只得到經驗值。", - "messageInsufficientGems": "Not enough gems!", - "messageAuthPasswordMustMatch": ":password and :confirmPassword don't match", - "messageAuthCredentialsRequired": ":username, :email, :password, :confirmPassword required", - "messageAuthUsernameTaken": "Username already taken", - "messageAuthEmailTaken": "Email already taken", - "messageAuthNoUserFound": "No user found.", - "messageAuthMustBeLoggedIn": "You must be logged in.", + "messageInsufficientGems": "寶石不足 !", + "messageAuthPasswordMustMatch": ":password 和 :confirm密碼不配合。", + "messageAuthCredentialsRequired": ":username, :email, :password, :confirm需要密碼", + "messageAuthUsernameTaken": "使用者名稱已被使用。", + "messageAuthEmailTaken": "電子郵件已被使用。", + "messageAuthNoUserFound": "找不到戶口。", + "messageAuthMustBeLoggedIn": "你需要登入。", "messageAuthMustIncludeTokens": "You must include a token and uid (user id) in your request", - "messageGroupNotFound": "Group not found or you don't have access.", - "messageGroupAlreadyInParty": "Already in a party, try refreshing.", + "messageGroupNotFound": "找不到群組或你沒有使用權。", + "messageGroupAlreadyInParty": "已在一個隊伍,請嘗試刷新畫面。。", "messageGroupOnlyLeaderCanUpdate": "Only the group leader can update the group!", "messageGroupRequiresInvite": "Can't join a group you're not invited to.", - "messageGroupCannotRemoveSelf": "You cannot remove yourself!", - "messageGroupChatBlankMessage": "You cannot send a blank message", - "messageGroupChatLikeOwnMessage": "Can't like your own message. Don't be that person.", - "messageGroupChatFlagOwnMessage": "Can't report your own message.", - "messageGroupChatFlagAlreadyReported": "You have already reported this message", - "messageGroupChatNotFound": "Message not found!", + "messageGroupCannotRemoveSelf": "您不能刪除自己!", + "messageGroupChatBlankMessage": "不能傳送空白的留言。", + "messageGroupChatLikeOwnMessage": "不能讚自己的留言。不要這樣做吧!", + "messageGroupChatFlagOwnMessage": "不能舉報自己的留言。", + "messageGroupChatFlagAlreadyReported": "你已經舉報了這個留言。", + "messageGroupChatNotFound": "找不到留言 !", "messageGroupChatAdminClearFlagCount": "Only an admin can clear the flag count!", "messageUserOperationProtected": "path `<%= operation %>` was not saved, as it's a protected path.", "messageUserOperationNotFound": "<%= operation %> operation not found" diff --git a/common/locales/zh_TW/noscript.json b/common/locales/zh_TW/noscript.json new file mode 100644 index 0000000000..6057268ef2 --- /dev/null +++ b/common/locales/zh_TW/noscript.json @@ -0,0 +1,6 @@ +{ + "jsDisabledHeading": "Alas! Your browser doesn't have JavaScript enabled", + "jsDisabledHeadingFull": "Alas! Your browser doesn't have JavaScript enabled and without it, Habitica can't work properly", + "jsDisabledText": "Habitica can't properly display the site without it!", + "jsDisabledLink": "Please enable JavaScript to continue!" +} \ No newline at end of file diff --git a/common/locales/zh_TW/pets.json b/common/locales/zh_TW/pets.json index 5cac11a898..f25d83f73a 100644 --- a/common/locales/zh_TW/pets.json +++ b/common/locales/zh_TW/pets.json @@ -60,7 +60,7 @@ "hatchAPot": "孵化一隻<%= potion %><%= egg %>?", "hatchedPet": "You hatched a <%= potion %> <%= egg %>!", "displayNow": "Display Now", - "displayLater": "Display Later", + "displayLater": "稍後顯示", "earnedCompanion": "With all your productivity, you've earned a new companion. Feed it to make it grow!", "feedPet": "餵你的<%= name %>一個<%= article %><%= text %>?", "useSaddle": "把鞍用在<%= pet %>上?", diff --git a/common/locales/zh_TW/quests.json b/common/locales/zh_TW/quests.json index 75fc29e764..e83090557a 100644 --- a/common/locales/zh_TW/quests.json +++ b/common/locales/zh_TW/quests.json @@ -11,7 +11,7 @@ "invitations": "邀請", "completed": "完成了!", "youReceived": "你收到了", - "dropQuestCongrats": "恭喜你拿到任務卷軸! 你可以邀請你的隊伍開始任務,或隨時透過 背包>任務 回來查看。", + "dropQuestCongrats": "恭喜你拿到任務卷軸 ! 你可以邀請你的隊伍開始任務,或隨時透過 背包>任務 回來查看。", "questSend": "點擊「邀請」會向你的隊友發送邀請。當所有成員接受或拒絕後任務開始。在選項> 社交> 組隊裡查看任務狀態。", "questSendBroken": "按下「邀請」後會向隊伍成員們送出邀請...在所有隊員選擇接受或拒絕後,任務就會開始...在社交 > 隊伍頁面可以看到資訊...", "inviteParty": "邀請隊伍參予任務", @@ -25,7 +25,7 @@ "rejected": "拒絕", "pending": "等待中", "questStart": "一旦所有成員都接受或拒絕,任務就開始了。只有那些點擊接受者,可以參加任務並取得掉落物品。如果成員回應時間太長(無動作?),任務擁有者可以略過他們直接按「開始」來啟動任務。任務擁有者還可以透過點擊「取消」取消任務,並恢復任務捲軸。", - "questStartBroken": "一旦所有成員都接受或拒絕,任務就開始了...只有那些點擊接受者,可以參加任務並取得掉落物品。如果成員回應時間太長(無動作?),任務擁有者可以略過他們直接按「開始」來啟動任務。任務擁有者還可以透過點擊「取消」取消任務,並恢復任務捲軸...", + "questStartBroken": "一旦所有成員都接受或拒絕,任務就開始了。只有接了接受的玩家,才可以參加任務並取得掉落物。如果成員太久沒有回應,任務擁有者可以略過他們直接按「開始」來啟動任務。任務擁有者還可以透過點擊「取消」取消任務,並恢復任務捲軸。", "begin": "開始", "bossHP": "Boss的生命值", "bossStrength": "Boss的力量", diff --git a/common/locales/zh_TW/rebirth.json b/common/locales/zh_TW/rebirth.json index 572f00dfa1..500fa9790d 100644 --- a/common/locales/zh_TW/rebirth.json +++ b/common/locales/zh_TW/rebirth.json @@ -20,7 +20,7 @@ "rebirthBegan": "開始新的冒險", "rebirthText": "開始<%= rebirths %> 次新的冒險", "rebirthOrb": "使用重生之球來歸零曾經到達的級別,重新開始遊戲", - "rebirthOrb100": "Used an Orb of Rebirth to start over after attaining Level 100 or higher", + "rebirthOrb100": "到達級別 100 後,使用重生之球來重生遊戲。", "rebirthPop": "開始一個等級 1 的新角色,並保留成就、物品和任務歷史。", "rebirthName": "重生之球", "reborn": "重生,最高級別 <%= reLevel %>" diff --git a/common/locales/zh_TW/settings.json b/common/locales/zh_TW/settings.json index e54895ee51..369f7d8a9d 100644 --- a/common/locales/zh_TW/settings.json +++ b/common/locales/zh_TW/settings.json @@ -14,7 +14,7 @@ "startCollapsedPop": "選擇這個選項後,展開編輯新任務時,標籤列表是隱藏的。", "startAdvCollapsed": "預設隱藏進階選項", "startAdvCollapsedPop": "選擇這個選項後,展開編輯新任務時,進階選項是隱藏的。", - "dontShowAgain": "Don't show this again", + "dontShowAgain": "不要再顯示", "suppressLevelUpModal": "Don't show popup when gaining a level", "suppressHatchPetModal": "Don't show popup when hatching a pet", "suppressRaisePetModal": "Don't show popup when raising a pet into a mount", diff --git a/common/locales/zh_TW/subscriber.json b/common/locales/zh_TW/subscriber.json index 14f9a54e3a..7e268d9293 100644 --- a/common/locales/zh_TW/subscriber.json +++ b/common/locales/zh_TW/subscriber.json @@ -60,7 +60,7 @@ "timeTravelersTitleNoSub": "<%= linkStartTyler %>Tyler<%= linkEnd %> 和 <%= linkStartVicky %>Vicky<%= linkEnd %>", "timeTravelersTitle": "神秘的時光旅行者", "timeTravelersPopoverNoSub": "你需要神秘沙漏來召喚神秘的時光旅行者!<%= linkStart %>訂閱用戶<%= linkEnd %>每連續訂閱三個月就可以獲得一個神祕沙漏。請在擁有神秘沙漏時回來,時光旅行者將從過去為你取得稀有寵物、座騎或訂閱者物品組...甚至可能取得未來的物品。", - "timeTravelersPopover": "We see you have a Mystic Hourglass, so we will happily travel back in time for you! Please choose the pet, mount, or Mystery Item Set you would like. You can see a list of the past item sets here! If those don't satisfy you, perhaps you'd be interested in one of our fashionably futuristic Steampunk Item Sets?", + "timeTravelersPopover": "我們發現你擁有神秘沙漏,很高興能為你穿越時空!請選擇你想要的寵物、座騎或神秘物品。你可以在這裡觀看看到往昔物品的清單 !如果這些無法滿足你,也許你會對我們時髦的未來風蒸氣龐克物品有興趣?", "timeTravelersAlreadyOwned": "恭喜!你已擁有時光旅行者目前所供應的所有物品。感謝你對這個網站的支持!", "mysticHourglassPopover": "神秘沙漏能讓你購買特定的限期物品,像是每個月的神祕物品和世界 Boss 的獎品,取得過去的東西!", "subUpdateCard": "更新信用卡資訊", diff --git a/common/script/src/content/gear/armor.js b/common/script/content/gear/armor.js similarity index 100% rename from common/script/src/content/gear/armor.js rename to common/script/content/gear/armor.js diff --git a/common/script/src/content/gear/back.js b/common/script/content/gear/back.js similarity index 100% rename from common/script/src/content/gear/back.js rename to common/script/content/gear/back.js diff --git a/common/script/src/content/gear/body.js b/common/script/content/gear/body.js similarity index 100% rename from common/script/src/content/gear/body.js rename to common/script/content/gear/body.js diff --git a/common/script/src/content/gear/eyewear.js b/common/script/content/gear/eyewear.js similarity index 100% rename from common/script/src/content/gear/eyewear.js rename to common/script/content/gear/eyewear.js diff --git a/common/script/content/gear/gear-helper.js b/common/script/content/gear/gear-helper.js new file mode 100644 index 0000000000..094ec6548b --- /dev/null +++ b/common/script/content/gear/gear-helper.js @@ -0,0 +1,7 @@ +import { isBoolean } from 'lodash'; + +export function ownsItem (item) { + return (user) => { + return item && isBoolean(user.items.gear.owned[item]); + }; +} diff --git a/common/script/src/content/gear/head-accessory.js b/common/script/content/gear/head-accessory.js similarity index 100% rename from common/script/src/content/gear/head-accessory.js rename to common/script/content/gear/head-accessory.js diff --git a/common/script/src/content/gear/head.js b/common/script/content/gear/head.js similarity index 100% rename from common/script/src/content/gear/head.js rename to common/script/content/gear/head.js diff --git a/common/script/content/gear/index.js b/common/script/content/gear/index.js new file mode 100644 index 0000000000..a9fe254e7b --- /dev/null +++ b/common/script/content/gear/index.js @@ -0,0 +1,84 @@ +import {each, defaults} from 'lodash'; +import moment from 'moment'; + +import { + CLASSES, + GEAR_TYPES, +} from '../constants'; +import { ownsItem } from './gear-helper'; + +import weapon from './weapon'; +import armor from './armor'; +import head from './head'; +import shield from './shield'; +import back from './back'; +import body from './body'; +import headAccessory from './head-accessory'; +import eyewear from './eyewear'; + +let gear = { + weapon, + armor, + head, + shield, + back, + body, + headAccessory, + eyewear, +}; + +/* + The gear is exported as a tree (defined above), and a flat list (eg, {weapon_healer_1: .., shield_special_0: ...}) since + they are needed in different forms at different points in the app + */ +let flat = {}; + +each(GEAR_TYPES, (type) => { + let allGearTypes = CLASSES.concat(['base', 'special', 'mystery', 'armoire']); + + each(allGearTypes, (klass) => { + each(gear[type][klass], (item, index) => { + let key = `${type}_${klass}_${index}`; + + defaults(item, { + type, + key, + klass, + index, + str: 0, + int: 0, + per: 0, + con: 0, + canBuy: () => { + return false; + }, + }); + + if (item.event) { + let canOwnFuncTrue = () => { + return true; + }; + let _canOwn = item.canOwn || canOwnFuncTrue; + + item.canOwn = (user) => { + let userHasOwnedItem = ownsItem(key)(user); + let eventIsCurrent = moment().isAfter(item.event.start) && moment().isBefore(item.event.end); + let compatibleWithUserClass = item.specialClass ? user.stats.class === item.specialClass : true; + + return _canOwn(user) && (userHasOwnedItem || eventIsCurrent) && compatibleWithUserClass; + }; + } + + if (item.mystery) { + item.canOwn = ownsItem(key); + } + + flat[key] = item; + }); + }); +}); + +export default { + tree: gear, + flat, +}; diff --git a/common/script/content/gear/sets/armoire.js b/common/script/content/gear/sets/armoire.js new file mode 100644 index 0000000000..77c9ff065c --- /dev/null +++ b/common/script/content/gear/sets/armoire.js @@ -0,0 +1,351 @@ +import { ownsItem } from '../gear-helper'; +import t from '../../translation'; + +let armor = { + lunarArmor: { + text: t('armorArmoireLunarArmorText'), + notes: t('armorArmoireLunarArmorNotes', { str: 7, int: 7 }), + value: 100, + str: 7, + int: 7, + set: 'soothing', + canOwn: ownsItem('armor_armoire_lunarArmor'), + }, + gladiatorArmor: { + text: t('armorArmoireGladiatorArmorText'), + notes: t('armorArmoireGladiatorArmorNotes', { str: 7, per: 7 }), + value: 100, + str: 7, + per: 7, + set: 'gladiator', + canOwn: ownsItem('armor_armoire_gladiatorArmor'), + }, + rancherRobes: { + text: t('armorArmoireRancherRobesText'), + notes: t('armorArmoireRancherRobesNotes', { str: 5, per: 5, int: 5 }), + value: 100, + str: 5, + per: 5, + int: 5, + set: 'rancher', + canOwn: ownsItem('armor_armoire_rancherRobes'), + }, + goldenToga: { + text: t('armorArmoireGoldenTogaText'), + notes: t('armorArmoireGoldenTogaNotes', { attrs: 8 }), + value: 100, + str: 8, + con: 8, + set: 'goldenToga', + canOwn: ownsItem('armor_armoire_goldenToga'), + }, + hornedIronArmor: { + text: t('armorArmoireHornedIronArmorText'), + notes: t('armorArmoireHornedIronArmorNotes', { con: 9, per: 7 }), + value: 100, + con: 9, + per: 7, + set: 'hornedIron', + canOwn: ownsItem('armor_armoire_hornedIronArmor'), + }, + plagueDoctorOvercoat: { + text: t('armorArmoirePlagueDoctorOvercoatText'), + notes: t('armorArmoirePlagueDoctorOvercoatNotes', { int: 6, str: 5, con: 6 }), + value: 100, + int: 6, + str: 5, + con: 6, + set: 'plagueDoctor', + canOwn: ownsItem('armor_armoire_plagueDoctorOvercoat'), + }, + shepherdRobes: { + text: t('armorArmoireShepherdRobesText'), + notes: t('armorArmoireShepherdRobesNotes', { attrs: 9 }), + value: 100, + str: 9, + per: 9, + set: 'shepherd', + canOwn: ownsItem('armor_armoire_shepherdRobes'), + }, + royalRobes: { + text: t('armorArmoireRoyalRobesText'), + notes: t('armorArmoireRoyalRobesNotes', { attrs: 5 }), + value: 100, + con: 5, + per: 5, + int: 5, + set: 'royal', + canOwn: ownsItem('armor_armoire_royalRobes'), + }, +}; + +let eyewear = { + plagueDoctorMask: { + text: t('eyewearArmoirePlagueDoctorMaskText'), + notes: t('eyewearArmoirePlagueDoctorMaskNotes'), + value: 100, + set: 'plagueDoctor', + canOwn: ownsItem('eyewear_armoire_plagueDoctorMask'), + }, +}; + +let head = { + lunarCrown: { + text: t('headArmoireLunarCrownText'), + notes: t('headArmoireLunarCrownNotes', { con: 7, per: 7 }), + value: 100, + con: 7, + per: 7, + set: 'soothing', + canOwn: ownsItem('head_armoire_lunarCrown'), + }, + redHairbow: { + text: t('headArmoireRedHairbowText'), + notes: t('headArmoireRedHairbowNotes', { str: 5, int: 5, con: 5 }), + value: 100, + str: 5, + int: 5, + con: 5, + canOwn: ownsItem('head_armoire_redHairbow'), + }, + violetFloppyHat: { + text: t('headArmoireVioletFloppyHatText'), + notes: t('headArmoireVioletFloppyHatNotes', { per: 5, int: 5, con: 5 }), + value: 100, + per: 5, + int: 5, + con: 5, + canOwn: ownsItem('head_armoire_violetFloppyHat'), + }, + gladiatorHelm: { + text: t('headArmoireGladiatorHelmText'), + notes: t('headArmoireGladiatorHelmNotes', { per: 7, int: 7 }), + value: 100, + per: 7, + int: 7, + set: 'gladiator', + canOwn: ownsItem('head_armoire_gladiatorHelm'), + }, + rancherHat: { + text: t('headArmoireRancherHatText'), + notes: t('headArmoireRancherHatNotes', { str: 5, per: 5, int: 5 }), + value: 100, + str: 5, + per: 5, + int: 5, + set: 'rancher', + canOwn: ownsItem('head_armoire_rancherHat'), + }, + royalCrown: { + text: t('headArmoireRoyalCrownText'), + notes: t('headArmoireRoyalCrownNotes', { str: 10 }), + value: 100, + str: 10, + set: 'royal', + canOwn: ownsItem('head_armoire_royalCrown'), + }, + blueHairbow: { + text: t('headArmoireBlueHairbowText'), + notes: t('headArmoireBlueHairbowNotes', { per: 5, int: 5, con: 5 }), + value: 100, + per: 5, + int: 5, + con: 5, + canOwn: ownsItem('head_armoire_blueHairbow'), + }, + goldenLaurels: { + text: t('headArmoireGoldenLaurelsText'), + notes: t('headArmoireGoldenLaurelsNotes', { attrs: 8 }), + value: 100, + per: 8, + con: 8, + set: 'goldenToga', + canOwn: ownsItem('head_armoire_goldenLaurels'), + }, + hornedIronHelm: { + text: t('headArmoireHornedIronHelmText'), + notes: t('headArmoireHornedIronHelmNotes', { con: 9, str: 7 }), + value: 100, + con: 9, + str: 7, + set: 'hornedIron', + canOwn: ownsItem('head_armoire_hornedIronHelm'), + }, + yellowHairbow: { + text: t('headArmoireYellowHairbowText'), + notes: t('headArmoireYellowHairbowNotes', { attrs: 5 }), + value: 100, + int: 5, + per: 5, + str: 5, + canOwn: ownsItem('head_armoire_yellowHairbow'), + }, + redFloppyHat: { + text: t('headArmoireRedFloppyHatText'), + notes: t('headArmoireRedFloppyHatNotes', { attrs: 6 }), + value: 100, + con: 6, + int: 6, + per: 6, + canOwn: ownsItem('head_armoire_redFloppyHat'), + }, + plagueDoctorHat: { + text: t('headArmoirePlagueDoctorHatText'), + notes: t('headArmoirePlagueDoctorHatNotes', { int: 5, str: 6, con: 5 }), + value: 100, + int: 5, + str: 6, + con: 5, + set: 'plagueDoctor', + canOwn: ownsItem('head_armoire_plagueDoctorHat'), + }, + blackCat: { + text: t('headArmoireBlackCatText'), + notes: t('headArmoireBlackCatNotes', { attrs: 9 }), + value: 100, + int: 9, + per: 9, + canOwn: ownsItem('head_armoire_blackCat'), + }, + orangeCat: { + text: t('headArmoireOrangeCatText'), + notes: t('headArmoireOrangeCatNotes', { attrs: 9 }), + value: 100, + con: 9, + str: 9, + canOwn: ownsItem('head_armoire_orangeCat'), + }, + blueFloppyHat: { + text: t('headArmoireBlueFloppyHatText'), + notes: t('headArmoireBlueFloppyHatNotes', { attrs: 7 }), + value: 100, + per: 7, + int: 7, + con: 7, + canOwn: ownsItem('head_armoire_blueFloppyHat'), + }, + shepherdHeaddress: { + text: t('headArmoireShepherdHeaddressText'), + notes: t('headArmoireShepherdHeaddressNotes', { int: 9 }), + value: 100, + int: 9, + set: 'shepherd', + canOwn: ownsItem('head_armoire_shepherdHeaddress'), + }, +}; + +let shield = { + gladiatorShield: { + text: t('shieldArmoireGladiatorShieldText'), + notes: t('shieldArmoireGladiatorShieldNotes', { con: 5, str: 5 }), + value: 100, + con: 5, + str: 5, + set: 'gladiator', + canOwn: ownsItem('shield_armoire_gladiatorShield'), + }, + midnightShield: { + text: t('shieldArmoireMidnightShieldText'), + notes: t('shieldArmoireMidnightShieldNotes', { con: 10, str: 2 }), + value: 100, + con: 10, + str: 2, + canOwn: ownsItem('shield_armoire_midnightShield'), + }, + royalCane: { + text: t('shieldArmoireRoyalCaneText'), + notes: t('shieldArmoireRoyalCaneNotes', { attrs: 5 }), + value: 100, + con: 5, + int: 5, + per: 5, + set: 'royal', + canOwn: ownsItem('shield_armoire_royalCane'), + }, +}; + +let weapon = { + basicCrossbow: { + text: t('weaponArmoireBasicCrossbowText'), + notes: t('weaponArmoireBasicCrossbowNotes', { str: 5, per: 5, con: 5 }), + value: 100, + str: 5, + per: 5, + con: 5, + canOwn: ownsItem('weapon_armoire_basicCrossbow'), + }, + lunarSceptre: { + text: t('weaponArmoireLunarSceptreText'), + notes: t('weaponArmoireLunarSceptreNotes', { con: 7, int: 7 }), + value: 100, + con: 7, + int: 7, + set: 'soothing', + canOwn: ownsItem('weapon_armoire_lunarSceptre'), + }, + rancherLasso: { + twoHanded: true, + text: t('weaponArmoireRancherLassoText'), + notes: t('weaponArmoireRancherLassoNotes', { str: 5, per: 5, int: 5 }), + value: 100, + str: 5, + per: 5, + int: 5, + set: 'rancher', + canOwn: ownsItem('weapon_armoire_rancherLasso'), + }, + mythmakerSword: { + text: t('weaponArmoireMythmakerSwordText'), + notes: t('weaponArmoireMythmakerSwordNotes', { attrs: 6 }), + value: 100, + str: 6, + per: 6, + set: 'goldenToga', + canOwn: ownsItem('weapon_armoire_mythmakerSword'), + }, + ironCrook: { + text: t('weaponArmoireIronCrookText'), + notes: t('weaponArmoireIronCrookNotes', { attrs: 7 }), + value: 100, + str: 7, + per: 7, + set: 'hornedIron', + canOwn: ownsItem('weapon_armoire_ironCrook'), + }, + goldWingStaff: { + text: t('weaponArmoireGoldWingStaffText'), + notes: t('weaponArmoireGoldWingStaffNotes', { attrs: 4 }), + value: 100, + con: 4, + int: 4, + per: 4, + str: 4, + canOwn: ownsItem('weapon_armoire_goldWingStaff'), + }, + batWand: { + text: t('weaponArmoireBatWandText'), + notes: t('weaponArmoireBatWandNotes', { int: 10, per: 2 }), + value: 100, + int: 10, + per: 2, + canOwn: ownsItem('weapon_armoire_batWand'), + }, + shepherdsCrook: { + text: t('weaponArmoireShepherdsCrookText'), + notes: t('weaponArmoireShepherdsCrookNotes', { con: 9 }), + value: 100, + con: 9, + set: 'shepherd', + canOwn: ownsItem('weapon_armoire_shepherdsCrook'), + }, +}; + +let armoireSet = { + armor, + eyewear, + head, + shield, + weapon, +}; + +export default armoireSet; diff --git a/common/script/content/gear/sets/base.js b/common/script/content/gear/sets/base.js new file mode 100644 index 0000000000..4f0e84268a --- /dev/null +++ b/common/script/content/gear/sets/base.js @@ -0,0 +1,80 @@ +import t from '../../translation'; + +let armor = { + 0: { + text: t('armorBase0Text'), + notes: t('armorBase0Notes'), + value: 0, + }, +}; + +let back = { + 0: { + text: t('backBase0Text'), + notes: t('backBase0Notes'), + value: 0, + }, +}; + +let body = { + 0: { + text: t('bodyBase0Text'), + notes: t('bodyBase0Notes'), + value: 0, + }, +}; + +let eyewear = { + 0: { + text: t('eyewearBase0Text'), + notes: t('eyewearBase0Notes'), + value: 0, + last: true, + }, +}; + +let head = { + 0: { + text: t('headBase0Text'), + notes: t('headBase0Notes'), + value: 0, + }, +}; + +let headAccessory = { + 0: { + text: t('headAccessoryBase0Text'), + notes: t('headAccessoryBase0Notes'), + value: 0, + last: true, + }, +}; + +let shield = { + 0: { + text: t('shieldBase0Text'), + notes: t('shieldBase0Notes'), + value: 0, + }, +}; + +let weapon = { + 0: { + text: t('weaponBase0Text'), + notes: t('weaponBase0Notes'), + value: 0, + }, +}; + +let baseSet = { + armor, + back, + body, + eyewear, + head, + headAccessory, + shield, + weapon, +}; + +export default baseSet; diff --git a/common/script/content/gear/sets/healer.js b/common/script/content/gear/sets/healer.js new file mode 100644 index 0000000000..4fa5bc38dc --- /dev/null +++ b/common/script/content/gear/sets/healer.js @@ -0,0 +1,158 @@ +import t from '../../translation'; + +let armor = { + 1: { + text: t('armorHealer1Text'), + notes: t('armorHealer1Notes', { con: 6 }), + con: 6, + value: 30, + }, + 2: { + text: t('armorHealer2Text'), + notes: t('armorHealer2Notes', { con: 9 }), + con: 9, + value: 45, + }, + 3: { + text: t('armorHealer3Text'), + notes: t('armorHealer3Notes', { con: 12 }), + con: 12, + value: 65, + }, + 4: { + text: t('armorHealer4Text'), + notes: t('armorHealer4Notes', { con: 15 }), + con: 15, + value: 90, + }, + 5: { + text: t('armorHealer5Text'), + notes: t('armorHealer5Notes', { con: 18 }), + con: 18, + value: 120, + last: true, + }, +}; + +let head = { + 1: { + text: t('headHealer1Text'), + notes: t('headHealer1Notes', { int: 2 }), + int: 2, + value: 15, + }, + 2: { + text: t('headHealer2Text'), + notes: t('headHealer2Notes', { int: 3 }), + int: 3, + value: 25, + }, + 3: { + text: t('headHealer3Text'), + notes: t('headHealer3Notes', { int: 5 }), + int: 5, + value: 40, + }, + 4: { + text: t('headHealer4Text'), + notes: t('headHealer4Notes', { int: 7 }), + int: 7, + value: 60, + }, + 5: { + text: t('headHealer5Text'), + notes: t('headHealer5Notes', { int: 9 }), + int: 9, + value: 80, + last: true, + }, +}; + +let shield = { + 1: { + text: t('shieldHealer1Text'), + notes: t('shieldHealer1Notes', { con: 2 }), + con: 2, + value: 20, + }, + 2: { + text: t('shieldHealer2Text'), + notes: t('shieldHealer2Notes', { con: 4 }), + con: 4, + value: 35, + }, + 3: { + text: t('shieldHealer3Text'), + notes: t('shieldHealer3Notes', { con: 6 }), + con: 6, + value: 50, + }, + 4: { + text: t('shieldHealer4Text'), + notes: t('shieldHealer4Notes', { con: 9 }), + con: 9, + value: 70, + }, + 5: { + text: t('shieldHealer5Text'), + notes: t('shieldHealer5Notes', { con: 12 }), + con: 12, + value: 90, + last: true, + }, +}; + +let weapon = { + + 0: { + text: t('weaponHealer0Text'), + notes: t('weaponHealer0Notes'), + value: 0, + }, + 1: { + text: t('weaponHealer1Text'), + notes: t('weaponHealer1Notes', { int: 2 }), + int: 2, + value: 20, + }, + 2: { + text: t('weaponHealer2Text'), + notes: t('weaponHealer2Notes', { int: 3 }), + int: 3, + value: 30, + }, + 3: { + text: t('weaponHealer3Text'), + notes: t('weaponHealer3Notes', { int: 5 }), + int: 5, + value: 45, + }, + 4: { + text: t('weaponHealer4Text'), + notes: t('weaponHealer4Notes', { int: 7 }), + int: 7, + value: 65, + }, + 5: { + text: t('weaponHealer5Text'), + notes: t('weaponHealer5Notes', { int: 9 }), + int: 9, + value: 90, + }, + 6: { + text: t('weaponHealer6Text'), + notes: t('weaponHealer6Notes', { int: 11 }), + int: 11, + value: 120, + last: true, + }, +}; + +let healerSet = { + armor, + head, + shield, + weapon, +}; + +export default healerSet; diff --git a/common/script/content/gear/sets/mystery.js b/common/script/content/gear/sets/mystery.js new file mode 100644 index 0000000000..a25caeeea9 --- /dev/null +++ b/common/script/content/gear/sets/mystery.js @@ -0,0 +1,340 @@ +import t from '../../translation'; + +let armor = { + 201402: { + text: t('armorMystery201402Text'), + notes: t('armorMystery201402Notes'), + mystery: '201402', + value: 0, + }, + 201403: { + text: t('armorMystery201403Text'), + notes: t('armorMystery201403Notes'), + mystery: '201403', + value: 0, + }, + 201405: { + text: t('armorMystery201405Text'), + notes: t('armorMystery201405Notes'), + mystery: '201405', + value: 0, + }, + 201406: { + text: t('armorMystery201406Text'), + notes: t('armorMystery201406Notes'), + mystery: '201406', + value: 0, + }, + 201407: { + text: t('armorMystery201407Text'), + notes: t('armorMystery201407Notes'), + mystery: '201407', + value: 0, + }, + 201408: { + text: t('armorMystery201408Text'), + notes: t('armorMystery201408Notes'), + mystery: '201408', + value: 0, + }, + 201409: { + text: t('armorMystery201409Text'), + notes: t('armorMystery201409Notes'), + mystery: '201409', + value: 0, + }, + 201410: { + text: t('armorMystery201410Text'), + notes: t('armorMystery201410Notes'), + mystery: '201410', + value: 0, + }, + 201412: { + text: t('armorMystery201412Text'), + notes: t('armorMystery201412Notes'), + mystery: '201412', + value: 0, + }, + 201501: { + text: t('armorMystery201501Text'), + notes: t('armorMystery201501Notes'), + mystery: '201501', + value: 0, + }, + 201503: { + text: t('armorMystery201503Text'), + notes: t('armorMystery201503Notes'), + mystery: '201503', + value: 0, + }, + 201504: { + text: t('armorMystery201504Text'), + notes: t('armorMystery201504Notes'), + mystery: '201504', + value: 0, + }, + 201506: { + text: t('armorMystery201506Text'), + notes: t('armorMystery201506Notes'), + mystery: '201506', + value: 0, + }, + 201508: { + text: t('armorMystery201508Text'), + notes: t('armorMystery201508Notes'), + mystery: '201508', + value: 0, + }, + 201509: { + text: t('armorMystery201509Text'), + notes: t('armorMystery201509Notes'), + mystery: '201509', + value: 0, + }, + 301404: { + text: t('armorMystery301404Text'), + notes: t('armorMystery301404Notes'), + mystery: '301404', + value: 0, + }, +}; + +let back = { + 201402: { + text: t('backMystery201402Text'), + notes: t('backMystery201402Notes'), + mystery: '201402', + value: 0, + }, + 201404: { + text: t('backMystery201404Text'), + notes: t('backMystery201404Notes'), + mystery: '201404', + value: 0, + }, + 201410: { + text: t('backMystery201410Text'), + notes: t('backMystery201410Notes'), + mystery: '201410', + value: 0, + }, + 201504: { + text: t('backMystery201504Text'), + notes: t('backMystery201504Notes'), + mystery: '201504', + value: 0, + }, + 201507: { + text: t('backMystery201507Text'), + notes: t('backMystery201507Notes'), + mystery: '201507', + value: 0, + }, + 201510: { + text: t('backMystery201510Text'), + notes: t('backMystery201510Notes'), + mystery: '201510', + value: 0, + }, +}; + +let eyewear = { + 201503: { + text: t('eyewearMystery201503Text'), + notes: t('eyewearMystery201503Notes'), + mystery: '201503', + value: 0, + }, + 201506: { + text: t('eyewearMystery201506Text'), + notes: t('eyewearMystery201506Notes'), + mystery: '201506', + value: 0, + }, + 201507: { + text: t('eyewearMystery201507Text'), + notes: t('eyewearMystery201507Notes'), + mystery: '201507', + value: 0, + }, + 301404: { + text: t('eyewearMystery301404Text'), + notes: t('eyewearMystery301404Notes'), + mystery: '301404', + value: 0, + }, + 301405: { + text: t('eyewearMystery301405Text'), + notes: t('eyewearMystery301405Notes'), + mystery: '301405', + value: 0, + }, +}; + +let head = { + 201402: { + text: t('headMystery201402Text'), + notes: t('headMystery201402Notes'), + mystery: '201402', + value: 0, + }, + 201405: { + text: t('headMystery201405Text'), + notes: t('headMystery201405Notes'), + mystery: '201405', + value: 0, + }, + 201406: { + text: t('headMystery201406Text'), + notes: t('headMystery201406Notes'), + mystery: '201406', + value: 0, + }, + 201407: { + text: t('headMystery201407Text'), + notes: t('headMystery201407Notes'), + mystery: '201407', + value: 0, + }, + 201408: { + text: t('headMystery201408Text'), + notes: t('headMystery201408Notes'), + mystery: '201408', + value: 0, + }, + 201411: { + text: t('headMystery201411Text'), + notes: t('headMystery201411Notes'), + mystery: '201411', + value: 0, + }, + 201412: { + text: t('headMystery201412Text'), + notes: t('headMystery201412Notes'), + mystery: '201412', + value: 0, + }, + 201501: { + text: t('headMystery201501Text'), + notes: t('headMystery201501Notes'), + mystery: '201501', + value: 0, + }, + 201505: { + text: t('headMystery201505Text'), + notes: t('headMystery201505Notes'), + mystery: '201505', + value: 0, + }, + 201508: { + text: t('headMystery201508Text'), + notes: t('headMystery201508Notes'), + mystery: '201508', + value: 0, + }, + 201509: { + text: t('headMystery201509Text'), + notes: t('headMystery201509Notes'), + mystery: '201509', + value: 0, + }, + 301404: { + text: t('headMystery301404Text'), + notes: t('headMystery301404Notes'), + mystery: '301404', + value: 0, + }, + 301405: { + text: t('headMystery301405Text'), + notes: t('headMystery301405Notes'), + mystery: '301405', + value: 0, + }, +}; + +let headAccessory = { + 201403: { + text: t('headAccessoryMystery201403Text'), + notes: t('headAccessoryMystery201403Notes'), + mystery: '201403', + value: 0, + }, + 201404: { + text: t('headAccessoryMystery201404Text'), + notes: t('headAccessoryMystery201404Notes'), + mystery: '201404', + value: 0, + }, + 201409: { + text: t('headAccessoryMystery201409Text'), + notes: t('headAccessoryMystery201409Notes'), + mystery: '201409', + value: 0, + }, + 201502: { + text: t('headAccessoryMystery201502Text'), + notes: t('headAccessoryMystery201502Notes'), + mystery: '201502', + value: 0, + }, + 201510: { + text: t('headAccessoryMystery201510Text'), + notes: t('headAccessoryMystery201510Notes'), + mystery: '201510', + value: 0, + }, + 301405: { + text: t('headAccessoryMystery301405Text'), + notes: t('headAccessoryMystery301405Notes'), + mystery: '301405', + value: 0, + }, +}; + +let shield = { + 301405: { + text: t('shieldMystery301405Text'), + notes: t('shieldMystery301405Notes'), + mystery: '301405', + value: 0, + }, +}; + +let weapon = { + 201411: { + text: t('weaponMystery201411Text'), + notes: t('weaponMystery201411Notes'), + mystery: '201411', + value: 0, + }, + 201502: { + text: t('weaponMystery201502Text'), + notes: t('weaponMystery201502Notes'), + mystery: '201502', + value: 0, + }, + 201505: { + text: t('weaponMystery201505Text'), + notes: t('weaponMystery201505Notes'), + mystery: '201505', + value: 0, + }, + 301404: { + text: t('weaponMystery301404Text'), + notes: t('weaponMystery301404Notes'), + mystery: '301404', + value: 0, + }, +}; + +let mysterySet = { + armor, + back, + eyewear, + head, + headAccessory, + shield, + weapon, +}; + +export default mysterySet; diff --git a/common/script/content/gear/sets/rogue.js b/common/script/content/gear/sets/rogue.js new file mode 100644 index 0000000000..43d6c7cdaa --- /dev/null +++ b/common/script/content/gear/sets/rogue.js @@ -0,0 +1,170 @@ +import t from '../../translation'; + +let armor = { + 1: { + text: t('armorRogue1Text'), + notes: t('armorRogue1Notes', { per: 6 }), + per: 6, + value: 30, + }, + 2: { + text: t('armorRogue2Text'), + notes: t('armorRogue2Notes', { per: 9 }), + per: 9, + value: 45, + }, + 3: { + text: t('armorRogue3Text'), + notes: t('armorRogue3Notes', { per: 12 }), + per: 12, + value: 65, + }, + 4: { + text: t('armorRogue4Text'), + notes: t('armorRogue4Notes', { per: 15 }), + per: 15, + value: 90, + }, + 5: { + text: t('armorRogue5Text'), + notes: t('armorRogue5Notes', { per: 18 }), + per: 18, + value: 120, + last: true, + }, +}; + +let head = { + 1: { + text: t('headRogue1Text'), + notes: t('headRogue1Notes', { per: 2 }), + per: 2, + value: 15, + }, + 2: { + text: t('headRogue2Text'), + notes: t('headRogue2Notes', { per: 4 }), + per: 4, + value: 25, + }, + 3: { + text: t('headRogue3Text'), + notes: t('headRogue3Notes', { per: 6 }), + per: 6, + value: 40, + }, + 4: { + text: t('headRogue4Text'), + notes: t('headRogue4Notes', { per: 9 }), + per: 9, + value: 60, + }, + 5: { + text: t('headRogue5Text'), + notes: t('headRogue5Notes', { per: 12 }), + per: 12, + value: 80, + last: true, + }, +}; + +let weapon = { + 0: { + text: t('weaponRogue0Text'), + notes: t('weaponRogue0Notes'), + str: 0, + value: 0, + }, + 1: { + text: t('weaponRogue1Text'), + notes: t('weaponRogue1Notes', { str: 2 }), + str: 2, + value: 20, + }, + 2: { + text: t('weaponRogue2Text'), + notes: t('weaponRogue2Notes', { str: 3 }), + str: 3, + value: 35, + }, + 3: { + text: t('weaponRogue3Text'), + notes: t('weaponRogue3Notes', { str: 4 }), + str: 4, + value: 50, + }, + 4: { + text: t('weaponRogue4Text'), + notes: t('weaponRogue4Notes', { str: 6 }), + str: 6, + value: 70, + }, + 5: { + text: t('weaponRogue5Text'), + notes: t('weaponRogue5Notes', { str: 8 }), + str: 8, + value: 90, + }, + 6: { + text: t('weaponRogue6Text'), + notes: t('weaponRogue6Notes', { str: 10 }), + str: 10, + value: 120, + last: true, + }, +}; + +let shield = { + 0: { + text: t('weaponRogue0Text'), + notes: t('weaponRogue0Notes'), + str: 0, + value: 0, + }, + 1: { + text: t('weaponRogue1Text'), + notes: t('weaponRogue1Notes', { str: 2 }), + str: 2, + value: 20, + }, + 2: { + text: t('weaponRogue2Text'), + notes: t('weaponRogue2Notes', { str: 3 }), + str: 3, + value: 35, + }, + 3: { + text: t('weaponRogue3Text'), + notes: t('weaponRogue3Notes', { str: 4 }), + str: 4, + value: 50, + }, + 4: { + text: t('weaponRogue4Text'), + notes: t('weaponRogue4Notes', { str: 6 }), + str: 6, + value: 70, + }, + 5: { + text: t('weaponRogue5Text'), + notes: t('weaponRogue5Notes', { str: 8 }), + str: 8, + value: 90, + }, + 6: { + text: t('weaponRogue6Text'), + notes: t('weaponRogue6Notes', { str: 10 }), + str: 10, + value: 120, + last: true, + }, +}; + +let rogueSet = { + armor, + head, + shield, + weapon, +}; + +export default rogueSet; diff --git a/common/script/content/gear/sets/special/index.js b/common/script/content/gear/sets/special/index.js new file mode 100644 index 0000000000..c87e4d435d --- /dev/null +++ b/common/script/content/gear/sets/special/index.js @@ -0,0 +1,1348 @@ +import { + EVENTS, +} from '../../../constants'; +import { ownsItem } from '../../gear-helper'; +import backerGear from './special-backer'; +import contributorGear from './special-contributor'; +import wonderconGear from './special-wondercon'; +import t from '../../../translation'; + +let armor = { + 0: backerGear.armorSpecial0, + 1: contributorGear.armorSpecial1, + 2: backerGear.armorSpecial2, + finnedOceanicArmor: { + text: t('armorSpecialFinnedOceanicArmorText'), + notes: t('armorSpecialFinnedOceanicArmorNotes', { str: 15 }), + str: 15, + value: 130, + canOwn: ownsItem('armor_special_finnedOceanicArmor'), + }, + yeti: { + event: EVENTS.winter, + specialClass: 'warrior', + text: t('armorSpecialYetiText'), + notes: t('armorSpecialYetiNotes', { con: 9 }), + con: 9, + value: 90, + }, + ski: { + event: EVENTS.winter, + specialClass: 'rogue', + text: t('armorSpecialSkiText'), + notes: t('armorSpecialSkiNotes', { per: 15 }), + per: 15, + value: 90, + }, + candycane: { + event: EVENTS.winter, + specialClass: 'wizard', + text: t('armorSpecialCandycaneText'), + notes: t('armorSpecialCandycaneNotes', { int: 9 }), + int: 9, + value: 90, + }, + snowflake: { + event: EVENTS.winter, + specialClass: 'healer', + text: t('armorSpecialSnowflakeText'), + notes: t('armorSpecialSnowflakeNotes', { con: 15 }), + con: 15, + value: 90, + }, + birthday: { + event: EVENTS.birthday, + text: t('armorSpecialBirthdayText'), + notes: t('armorSpecialBirthdayNotes'), value: 0 }, + springRogue: { + event: EVENTS.spring, + specialClass: 'rogue', + text: t('armorSpecialSpringRogueText'), + notes: t('armorSpecialSpringRogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + springWarrior: { + event: EVENTS.spring, + specialClass: 'warrior', + text: t('armorSpecialSpringWarriorText'), + notes: t('armorSpecialSpringWarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + springMage: { + event: EVENTS.spring, + specialClass: 'wizard', + text: t('armorSpecialSpringMageText'), + notes: t('armorSpecialSpringMageNotes', { int: 9 }), + value: 90, + int: 9, + }, + springHealer: { + event: EVENTS.spring, + specialClass: 'healer', + text: t('armorSpecialSpringHealerText'), + notes: t('armorSpecialSpringHealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + summerRogue: { + event: EVENTS.summer, + specialClass: 'rogue', + text: t('armorSpecialSummerRogueText'), + notes: t('armorSpecialSummerRogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + summerWarrior: { + event: EVENTS.summer, + specialClass: 'warrior', + text: t('armorSpecialSummerWarriorText'), + notes: t('armorSpecialSummerWarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + summerMage: { + event: EVENTS.summer, + specialClass: 'wizard', + text: t('armorSpecialSummerMageText'), + notes: t('armorSpecialSummerMageNotes', { int: 9 }), + value: 90, + int: 9, + }, + summerHealer: { + event: EVENTS.summer, + specialClass: 'healer', + text: t('armorSpecialSummerHealerText'), + notes: t('armorSpecialSummerHealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + fallRogue: { + event: EVENTS.fall, + specialClass: 'rogue', + text: t('armorSpecialFallRogueText'), + notes: t('armorSpecialFallRogueNotes', { per: 15 }), + value: 90, + per: 15, + canBuy: () => { + return true; + }, + }, + fallWarrior: { + event: EVENTS.fall, + specialClass: 'warrior', + text: t('armorSpecialFallWarriorText'), + notes: t('armorSpecialFallWarriorNotes', { con: 9 }), + value: 90, + con: 9, + canBuy: () => { + return true; + }, + }, + fallMage: { + event: EVENTS.fall, + specialClass: 'wizard', + text: t('armorSpecialFallMageText'), + notes: t('armorSpecialFallMageNotes', { int: 9 }), + value: 90, + int: 9, + canBuy: () => { + return true; + }, + }, + fallHealer: { + event: EVENTS.fall, + specialClass: 'healer', + text: t('armorSpecialFallHealerText'), + notes: t('armorSpecialFallHealerNotes', { con: 15 }), + value: 90, + con: 15, + canBuy: () => { + return true; + }, + }, + winter2015Rogue: { + event: EVENTS.winter2015, + specialClass: 'rogue', + text: t('armorSpecialWinter2015RogueText'), + notes: t('armorSpecialWinter2015RogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + winter2015Warrior: { + event: EVENTS.winter2015, + specialClass: 'warrior', + text: t('armorSpecialWinter2015WarriorText'), + notes: t('armorSpecialWinter2015WarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + winter2015Mage: { + event: EVENTS.winter2015, + specialClass: 'wizard', + text: t('armorSpecialWinter2015MageText'), + notes: t('armorSpecialWinter2015MageNotes', { int: 9 }), + value: 90, + int: 9, + }, + winter2015Healer: { + event: EVENTS.winter2015, + specialClass: 'healer', + text: t('armorSpecialWinter2015HealerText'), + notes: t('armorSpecialWinter2015HealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + birthday2015: { + text: t('armorSpecialBirthday2015Text'), + notes: t('armorSpecialBirthday2015Notes'), + value: 0, + canOwn: ownsItem('armor_special_birthday2015'), + }, + spring2015Rogue: { + event: EVENTS.spring2015, + specialClass: 'rogue', + text: t('armorSpecialSpring2015RogueText'), + notes: t('armorSpecialSpring2015RogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + spring2015Warrior: { + event: EVENTS.spring2015, + specialClass: 'warrior', + text: t('armorSpecialSpring2015WarriorText'), + notes: t('armorSpecialSpring2015WarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + spring2015Mage: { + event: EVENTS.spring2015, + specialClass: 'wizard', + text: t('armorSpecialSpring2015MageText'), + notes: t('armorSpecialSpring2015MageNotes', { int: 9 }), + value: 90, + int: 9, + }, + spring2015Healer: { + event: EVENTS.spring2015, + specialClass: 'healer', + text: t('armorSpecialSpring2015HealerText'), + notes: t('armorSpecialSpring2015HealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + summer2015Rogue: { + event: EVENTS.summer2015, + specialClass: 'rogue', + text: t('armorSpecialSummer2015RogueText'), + notes: t('armorSpecialSummer2015RogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + summer2015Warrior: { + event: EVENTS.summer2015, + specialClass: 'warrior', + text: t('armorSpecialSummer2015WarriorText'), + notes: t('armorSpecialSummer2015WarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + summer2015Mage: { + event: EVENTS.summer2015, + specialClass: 'wizard', + text: t('armorSpecialSummer2015MageText'), + notes: t('armorSpecialSummer2015MageNotes', { int: 9 }), + value: 90, + int: 9, + }, + summer2015Healer: { + event: EVENTS.summer2015, + specialClass: 'healer', + text: t('armorSpecialSummer2015HealerText'), + notes: t('armorSpecialSummer2015HealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + fall2015Rogue: { + event: EVENTS.fall2015, + specialClass: 'rogue', + text: t('armorSpecialFall2015RogueText'), + notes: t('armorSpecialFall2015RogueNotes', { per: 15 }), + value: 90, + per: 15, + }, + fall2015Warrior: { + event: EVENTS.fall2015, + specialClass: 'warrior', + text: t('armorSpecialFall2015WarriorText'), + notes: t('armorSpecialFall2015WarriorNotes', { con: 9 }), + value: 90, + con: 9, + }, + fall2015Mage: { + event: EVENTS.fall2015, + specialClass: 'wizard', + text: t('armorSpecialFall2015MageText'), + notes: t('armorSpecialFall2015MageNotes', { int: 9 }), + value: 90, + int: 9, + }, + fall2015Healer: { + event: EVENTS.fall2015, + specialClass: 'healer', + text: t('armorSpecialFall2015HealerText'), + notes: t('armorSpecialFall2015HealerNotes', { con: 15 }), + value: 90, + con: 15, + }, + gaymerx: { + event: EVENTS.gaymerx, + text: t('armorSpecialGaymerxText'), + notes: t('armorSpecialGaymerxNotes'), + value: 0, + }, +}; + +let back = { + wondercon_red: wonderconGear.backSpecialWonderconRed, // eslint-disable-line camelcase + wondercon_black: wonderconGear.backSpecialWonderconBlack, // eslint-disable-line camelcase +}; + +let body = { + wondercon_red: wonderconGear.bodySpecialWonderconRed, // eslint-disable-line camelcase + wondercon_gold: wonderconGear.bodySpecialWonderconGold, // eslint-disable-line camelcase + wondercon_black: wonderconGear.bodySpecialWonderconBlack, // eslint-disable-line camelcase + summerHealer: { + event: EVENTS.summer, + specialClass: 'healer', + text: t('bodySpecialSummerHealerText'), + notes: t('bodySpecialSummerHealerNotes'), + value: 20, + }, + summerMage: { + event: EVENTS.summer, + specialClass: 'wizard', + text: t('bodySpecialSummerMageText'), + notes: t('bodySpecialSummerMageNotes'), + value: 20, + }, + summer2015Healer: { + event: EVENTS.summer2015, + specialClass: 'healer', + text: t('bodySpecialSummer2015HealerText'), + notes: t('bodySpecialSummer2015HealerNotes'), + value: 20, + }, + summer2015Mage: { + event: EVENTS.summer2015, + specialClass: 'wizard', + text: t('bodySpecialSummer2015MageText'), + notes: t('bodySpecialSummer2015MageNotes'), + value: 20, + }, + summer2015Rogue: { + event: EVENTS.summer2015, + specialClass: 'rogue', + text: t('bodySpecialSummer2015RogueText'), + notes: t('bodySpecialSummer2015RogueNotes'), + value: 20, + }, + summer2015Warrior: { + event: EVENTS.summer2015, + specialClass: 'warrior', + text: t('bodySpecialSummer2015WarriorText'), + notes: t('bodySpecialSummer2015WarriorNotes'), + value: 20, + }, +}; + +let eyewear = { + wondercon_red: wonderconGear.eyewearSpecialWonderconRed, // eslint-disable-line camelcase + wondercon_black: wonderconGear.eyewearSpecialWonderconBlack, // eslint-disable-line camelcase + summerRogue: { + event: EVENTS.summer, + specialClass: 'rogue', + text: t('eyewearSpecialSummerRogueText'), + notes: t('eyewearSpecialSummerRogueNotes'), + value: 20, + }, + summerWarrior: { + event: EVENTS.summer, + specialClass: 'warrior', + text: t('eyewearSpecialSummerWarriorText'), + notes: t('eyewearSpecialSummerWarriorNotes'), + value: 20, + }, +}; + +let head = { + 0: backerGear.headSpecial0, + 1: contributorGear.headSpecial1, + 2: backerGear.headSpecial2, + fireCoralCirclet: { + text: t('headSpecialFireCoralCircletText'), + notes: t('headSpecialFireCoralCircletNotes', { per: 15 }), + per: 15, + value: 130, + canOwn: ownsItem('head_special_fireCoralCirclet'), + }, + nye: { + event: EVENTS.winter, + text: t('headSpecialNyeText'), + notes: t('headSpecialNyeNotes'), + value: 0, + }, + yeti: { + event: EVENTS.winter, + specialClass: 'warrior', + text: t('headSpecialYetiText'), + notes: t('headSpecialYetiNotes', { str: 9 }), + str: 9, + value: 60, + }, + ski: { + event: EVENTS.winter, + specialClass: 'rogue', + text: t('headSpecialSkiText'), + notes: t('headSpecialSkiNotes', { per: 9 }), + per: 9, + value: 60, + }, + candycane: { + event: EVENTS.winter, + specialClass: 'wizard', + text: t('headSpecialCandycaneText'), + notes: t('headSpecialCandycaneNotes', { per: 7 }), + per: 7, + value: 60, + }, + snowflake: { + event: EVENTS.winter, + specialClass: 'healer', + text: t('headSpecialSnowflakeText'), + notes: t('headSpecialSnowflakeNotes', { int: 7 }), + int: 7, + value: 60, + }, + springRogue: { + event: EVENTS.spring, + specialClass: 'rogue', + text: t('headSpecialSpringRogueText'), + notes: t('headSpecialSpringRogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + springWarrior: { + event: EVENTS.spring, + specialClass: 'warrior', + text: t('headSpecialSpringWarriorText'), + notes: t('headSpecialSpringWarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + springMage: { + event: EVENTS.spring, + specialClass: 'wizard', + text: t('headSpecialSpringMageText'), + notes: t('headSpecialSpringMageNotes', { per: 7 }), + value: 60, + per: 7, + }, + springHealer: { + event: EVENTS.spring, + specialClass: 'healer', + text: t('headSpecialSpringHealerText'), + notes: t('headSpecialSpringHealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + summerRogue: { + event: EVENTS.summer, + specialClass: 'rogue', + text: t('headSpecialSummerRogueText'), + notes: t('headSpecialSummerRogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + summerWarrior: { + event: EVENTS.summer, + specialClass: 'warrior', + text: t('headSpecialSummerWarriorText'), + notes: t('headSpecialSummerWarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + summerMage: { + event: EVENTS.summer, + specialClass: 'wizard', + text: t('headSpecialSummerMageText'), + notes: t('headSpecialSummerMageNotes', { per: 7 }), + value: 60, + per: 7, + }, + summerHealer: { + event: EVENTS.summer, + specialClass: 'healer', + text: t('headSpecialSummerHealerText'), + notes: t('headSpecialSummerHealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + fallRogue: { + event: EVENTS.fall, + specialClass: 'rogue', + text: t('headSpecialFallRogueText'), + notes: t('headSpecialFallRogueNotes', { per: 9 }), + value: 60, + per: 9, + canBuy: () => { + return true; + }, + }, + fallWarrior: { + event: EVENTS.fall, + specialClass: 'warrior', + text: t('headSpecialFallWarriorText'), + notes: t('headSpecialFallWarriorNotes', { str: 9 }), + value: 60, + str: 9, + canBuy: () => { + return true; + }, + }, + fallMage: { + event: EVENTS.fall, + specialClass: 'wizard', + text: t('headSpecialFallMageText'), + notes: t('headSpecialFallMageNotes', { per: 7 }), + value: 60, + per: 7, + canBuy: () => { + return true; + }, + }, + fallHealer: { + event: EVENTS.fall, + specialClass: 'healer', + text: t('headSpecialFallHealerText'), + notes: t('headSpecialFallHealerNotes', { int: 7 }), + value: 60, + int: 7, + canBuy: () => { + return true; + }, + }, + winter2015Rogue: { + event: EVENTS.winter2015, + specialClass: 'rogue', + text: t('headSpecialWinter2015RogueText'), + notes: t('headSpecialWinter2015RogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + winter2015Warrior: { + event: EVENTS.winter2015, + specialClass: 'warrior', + text: t('headSpecialWinter2015WarriorText'), + notes: t('headSpecialWinter2015WarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + winter2015Mage: { + event: EVENTS.winter2015, + specialClass: 'wizard', + text: t('headSpecialWinter2015MageText'), + notes: t('headSpecialWinter2015MageNotes', { per: 7 }), + value: 60, + per: 7, + }, + winter2015Healer: { + event: EVENTS.winter2015, + specialClass: 'healer', + text: t('headSpecialWinter2015HealerText'), + notes: t('headSpecialWinter2015HealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + nye2014: { + text: t('headSpecialNye2014Text'), + notes: t('headSpecialNye2014Notes'), + value: 0, + canOwn: ownsItem('head_special_nye2014'), + }, + spring2015Rogue: { + event: EVENTS.spring2015, + specialClass: 'rogue', + text: t('headSpecialSpring2015RogueText'), + notes: t('headSpecialSpring2015RogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + spring2015Warrior: { + event: EVENTS.spring2015, + specialClass: 'warrior', + text: t('headSpecialSpring2015WarriorText'), + notes: t('headSpecialSpring2015WarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + spring2015Mage: { + event: EVENTS.spring2015, + specialClass: 'wizard', + text: t('headSpecialSpring2015MageText'), + notes: t('headSpecialSpring2015MageNotes', { per: 7 }), + value: 60, + per: 7, + }, + spring2015Healer: { + event: EVENTS.spring2015, + specialClass: 'healer', + text: t('headSpecialSpring2015HealerText'), + notes: t('headSpecialSpring2015HealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + summer2015Rogue: { + event: EVENTS.summer2015, + specialClass: 'rogue', + text: t('headSpecialSummer2015RogueText'), + notes: t('headSpecialSummer2015RogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + summer2015Warrior: { + event: EVENTS.summer2015, + specialClass: 'warrior', + text: t('headSpecialSummer2015WarriorText'), + notes: t('headSpecialSummer2015WarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + summer2015Mage: { + event: EVENTS.summer2015, + specialClass: 'wizard', + text: t('headSpecialSummer2015MageText'), + notes: t('headSpecialSummer2015MageNotes', { per: 7 }), + value: 60, + per: 7, + }, + summer2015Healer: { + event: EVENTS.summer2015, + specialClass: 'healer', + text: t('headSpecialSummer2015HealerText'), + notes: t('headSpecialSummer2015HealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + fall2015Rogue: { + event: EVENTS.fall2015, + specialClass: 'rogue', + text: t('headSpecialFall2015RogueText'), + notes: t('headSpecialFall2015RogueNotes', { per: 9 }), + value: 60, + per: 9, + }, + fall2015Warrior: { + event: EVENTS.fall2015, + specialClass: 'warrior', + text: t('headSpecialFall2015WarriorText'), + notes: t('headSpecialFall2015WarriorNotes', { str: 9 }), + value: 60, + str: 9, + }, + fall2015Mage: { + event: EVENTS.fall2015, + specialClass: 'wizard', + text: t('headSpecialFall2015MageText'), + notes: t('headSpecialFall2015MageNotes', { per: 7 }), + value: 60, + per: 7, + }, + fall2015Healer: { + event: EVENTS.fall2015, + specialClass: 'healer', + text: t('headSpecialFall2015HealerText'), + notes: t('headSpecialFall2015HealerNotes', { int: 7 }), + value: 60, + int: 7, + }, + gaymerx: { + event: EVENTS.gaymerx, + text: t('headSpecialGaymerxText'), + notes: t('headSpecialGaymerxNotes'), + value: 0, + }, +}; + +let headAccessory = { + springRogue: { + event: EVENTS.spring, + specialClass: 'rogue', + text: t('headAccessorySpecialSpringRogueText'), + notes: t('headAccessorySpecialSpringRogueNotes'), + value: 20, + }, + springWarrior: { + event: EVENTS.spring, + specialClass: 'warrior', + text: t('headAccessorySpecialSpringWarriorText'), + notes: t('headAccessorySpecialSpringWarriorNotes'), + value: 20, + }, + springMage: { + event: EVENTS.spring, + specialClass: 'wizard', + text: t('headAccessorySpecialSpringMageText'), + notes: t('headAccessorySpecialSpringMageNotes'), + value: 20, + }, + springHealer: { + event: EVENTS.spring, + specialClass: 'healer', + text: t('headAccessorySpecialSpringHealerText'), + notes: t('headAccessorySpecialSpringHealerNotes'), + value: 20, + }, + spring2015Rogue: { + event: EVENTS.spring2015, + specialClass: 'rogue', + text: t('headAccessorySpecialSpring2015RogueText'), + notes: t('headAccessorySpecialSpring2015RogueNotes'), + value: 20, + }, + spring2015Warrior: { + event: EVENTS.spring2015, + specialClass: 'warrior', + text: t('headAccessorySpecialSpring2015WarriorText'), + notes: t('headAccessorySpecialSpring2015WarriorNotes'), + value: 20, + }, + spring2015Mage: { + event: EVENTS.spring2015, + specialClass: 'wizard', + text: t('headAccessorySpecialSpring2015MageText'), + notes: t('headAccessorySpecialSpring2015MageNotes'), + value: 20, + }, + spring2015Healer: { + event: EVENTS.spring2015, + specialClass: 'healer', + text: t('headAccessorySpecialSpring2015HealerText'), + notes: t('headAccessorySpecialSpring2015HealerNotes'), + value: 20, + }, + bearEars: { + gearSet: 'animal', + text: t('headAccessoryBearEarsText'), + notes: t('headAccessoryBearEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_bearEars'), + canBuy: () => { + return true; + }, + }, + cactusEars: { + gearSet: 'animal', + text: t('headAccessoryCactusEarsText'), + notes: t('headAccessoryCactusEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_cactusEars'), + canBuy: () => { + return true; + }, + }, + foxEars: { + gearSet: 'animal', + text: t('headAccessoryFoxEarsText'), + notes: t('headAccessoryFoxEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_foxEars'), + canBuy: () => { + return true; + }, + }, + lionEars: { + gearSet: 'animal', + text: t('headAccessoryLionEarsText'), + notes: t('headAccessoryLionEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_lionEars'), + canBuy: () => { + return true; + }, + }, + pandaEars: { + gearSet: 'animal', + text: t('headAccessoryPandaEarsText'), + notes: t('headAccessoryPandaEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_pandaEars'), + canBuy: () => { + return true; + }, + }, + pigEars: { + gearSet: 'animal', + text: t('headAccessoryPigEarsText'), + notes: t('headAccessoryPigEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_pigEars'), + canBuy: () => { + return true; + }, + }, + tigerEars: { + gearSet: 'animal', + text: t('headAccessoryTigerEarsText'), + notes: t('headAccessoryTigerEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_tigerEars'), + canBuy: () => { + return true; + }, + }, + wolfEars: { + gearSet: 'animal', + text: t('headAccessoryWolfEarsText'), + notes: t('headAccessoryWolfEarsNotes'), + value: 20, + canOwn: ownsItem('headAccessory_special_wolfEars'), + canBuy: () => { + return true; + }, + }, +}; + +let shield = { + 0: backerGear.shieldSpecial0, + 1: contributorGear.shieldSpecial1, + goldenknight: { + text: t('shieldSpecialGoldenknightText'), + notes: t('shieldSpecialGoldenknightNotes', { attrs: 25 }), + con: 25, + per: 25, + value: 200, + canOwn: ownsItem('shield_special_goldenknight'), + }, + moonpearlShield: { + text: t('shieldSpecialMoonpearlShieldText'), + notes: t('shieldSpecialMoonpearlShieldNotes', { con: 15 }), + con: 15, + value: 130, + canOwn: ownsItem('shield_special_moonpearlShield'), + }, + yeti: { + event: EVENTS.winter, + specialClass: 'warrior', + text: t('shieldSpecialYetiText'), + notes: t('shieldSpecialYetiNotes', { con: 7 }), + con: 7, + value: 70, + }, + ski: { + event: EVENTS.winter, + specialClass: 'rogue', + text: t('weaponSpecialSkiText'), + notes: t('weaponSpecialSkiNotes', { str: 8 }), + str: 8, + value: 90, + }, + snowflake: { + event: EVENTS.winter, + specialClass: 'healer', + text: t('shieldSpecialSnowflakeText'), + notes: t('shieldSpecialSnowflakeNotes', { con: 9 }), + con: 9, + value: 70, + }, + springRogue: { + event: EVENTS.spring, + specialClass: 'rogue', + text: t('shieldSpecialSpringRogueText'), + notes: t('shieldSpecialSpringRogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + springWarrior: { + event: EVENTS.spring, + specialClass: 'warrior', + text: t('shieldSpecialSpringWarriorText'), + notes: t('shieldSpecialSpringWarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + springHealer: { + event: EVENTS.spring, + specialClass: 'healer', + text: t('shieldSpecialSpringHealerText'), + notes: t('shieldSpecialSpringHealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + summerRogue: { + event: EVENTS.summer, + specialClass: 'rogue', + text: t('shieldSpecialSummerRogueText'), + notes: t('shieldSpecialSummerRogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + summerWarrior: { + event: EVENTS.summer, + specialClass: 'warrior', + text: t('shieldSpecialSummerWarriorText'), + notes: t('shieldSpecialSummerWarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + summerHealer: { + event: EVENTS.summer, + specialClass: 'healer', + text: t('shieldSpecialSummerHealerText'), + notes: t('shieldSpecialSummerHealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + fallRogue: { + event: EVENTS.fall, + specialClass: 'rogue', + text: t('shieldSpecialFallRogueText'), + notes: t('shieldSpecialFallRogueNotes', { str: 8 }), + value: 80, + str: 8, + canBuy: () => { + return true; + }, + }, + fallWarrior: { + event: EVENTS.fall, + specialClass: 'warrior', + text: t('shieldSpecialFallWarriorText'), + notes: t('shieldSpecialFallWarriorNotes', { con: 7 }), + value: 70, + con: 7, + canBuy: () => { + return true; + }, + }, + fallHealer: { + event: EVENTS.fall, + specialClass: 'healer', + text: t('shieldSpecialFallHealerText'), + notes: t('shieldSpecialFallHealerNotes', { con: 9 }), + value: 70, + con: 9, + canBuy: () => { + return true; + }, + }, + winter2015Rogue: { + event: EVENTS.winter2015, + specialClass: 'rogue', + text: t('shieldSpecialWinter2015RogueText'), + notes: t('shieldSpecialWinter2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + winter2015Warrior: { + event: EVENTS.winter2015, + specialClass: 'warrior', + text: t('shieldSpecialWinter2015WarriorText'), + notes: t('shieldSpecialWinter2015WarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + winter2015Healer: { + event: EVENTS.winter2015, + specialClass: 'healer', + text: t('shieldSpecialWinter2015HealerText'), + notes: t('shieldSpecialWinter2015HealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + spring2015Rogue: { + event: EVENTS.spring2015, + specialClass: 'rogue', + text: t('shieldSpecialSpring2015RogueText'), + notes: t('shieldSpecialSpring2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + spring2015Warrior: { + event: EVENTS.spring2015, + specialClass: 'warrior', + text: t('shieldSpecialSpring2015WarriorText'), + notes: t('shieldSpecialSpring2015WarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + spring2015Healer: { + event: EVENTS.spring2015, + specialClass: 'healer', + text: t('shieldSpecialSpring2015HealerText'), + notes: t('shieldSpecialSpring2015HealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + summer2015Rogue: { + event: EVENTS.summer2015, + specialClass: 'rogue', + text: t('shieldSpecialSummer2015RogueText'), + notes: t('shieldSpecialSummer2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + summer2015Warrior: { + event: EVENTS.summer2015, + specialClass: 'warrior', + text: t('shieldSpecialSummer2015WarriorText'), + notes: t('shieldSpecialSummer2015WarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + summer2015Healer: { + event: EVENTS.summer2015, + specialClass: 'healer', + text: t('shieldSpecialSummer2015HealerText'), + notes: t('shieldSpecialSummer2015HealerNotes', { con: 9 }), + value: 70, + con: 9, + }, + fall2015Rogue: { + event: EVENTS.fall2015, + specialClass: 'rogue', + text: t('shieldSpecialFall2015RogueText'), + notes: t('shieldSpecialFall2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + fall2015Warrior: { + event: EVENTS.fall2015, + specialClass: 'warrior', + text: t('shieldSpecialFall2015WarriorText'), + notes: t('shieldSpecialFall2015WarriorNotes', { con: 7 }), + value: 70, + con: 7, + }, + fall2015Healer: { + event: EVENTS.fall2015, + specialClass: 'healer', + text: t('shieldSpecialFall2015HealerText'), + notes: t('shieldSpecialFall2015HealerNotes', { con: 9 }), + value: 70, + con: 9, + }, +}; + +let weapon = { + 0: backerGear.weaponSpecial0, + 1: contributorGear.weaponSpecial1, + 2: backerGear.weaponSpecial2, + 3: backerGear.weaponSpecial3, + critical: contributorGear.weaponSpecialCritical, + tridentOfCrashingTides: { + text: t('weaponSpecialTridentOfCrashingTidesText'), + notes: t('weaponSpecialTridentOfCrashingTidesNotes', { int: 15 }), + int: 15, + value: 130, + canOwn: ownsItem('weapon_special_tridentOfCrashingTides'), + }, + yeti: { + event: EVENTS.winter, + specialClass: 'warrior', + text: t('weaponSpecialYetiText'), + notes: t('weaponSpecialYetiNotes', { str: 15 }), + str: 15, + value: 90, + }, + ski: { + event: EVENTS.winter, + specialClass: 'rogue', + text: t('weaponSpecialSkiText'), + notes: t('weaponSpecialSkiNotes', { str: 8 }), + str: 8, + value: 90, + }, + candycane: { + event: EVENTS.winter, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialCandycaneText'), + notes: t('weaponSpecialCandycaneNotes', { int: 15, per: 7 }), + int: 15, + per: 7, + value: 160, + }, + snowflake: { + event: EVENTS.winter, + specialClass: 'healer', + text: t('weaponSpecialSnowflakeText'), + notes: t('weaponSpecialSnowflakeNotes', { int: 9 }), + int: 9, + value: 90, + }, + springRogue: { + event: EVENTS.spring, + specialClass: 'rogue', + text: t('weaponSpecialSpringRogueText'), + notes: t('weaponSpecialSpringRogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + springWarrior: { + event: EVENTS.spring, + specialClass: 'warrior', + text: t('weaponSpecialSpringWarriorText'), + notes: t('weaponSpecialSpringWarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + springMage: { + event: EVENTS.spring, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialSpringMageText'), + notes: t('weaponSpecialSpringMageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + springHealer: { + event: EVENTS.spring, + specialClass: 'healer', + text: t('weaponSpecialSpringHealerText'), + notes: t('weaponSpecialSpringHealerNotes', { int: 9 }), + value: 90, + int: 9, + }, + summerRogue: { + event: EVENTS.summer, + specialClass: 'rogue', + text: t('weaponSpecialSummerRogueText'), + notes: t('weaponSpecialSummerRogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + summerWarrior: { + event: EVENTS.summer, + specialClass: 'warrior', + text: t('weaponSpecialSummerWarriorText'), + notes: t('weaponSpecialSummerWarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + summerMage: { + event: EVENTS.summer, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialSummerMageText'), + notes: t('weaponSpecialSummerMageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + summerHealer: { + event: EVENTS.summer, + specialClass: 'healer', + text: t('weaponSpecialSummerHealerText'), + notes: t('weaponSpecialSummerHealerNotes', { int: 9 }), + value: 90, + int: 9, + }, + fallRogue: { + event: EVENTS.fall, + specialClass: 'rogue', + text: t('weaponSpecialFallRogueText'), + notes: t('weaponSpecialFallRogueNotes', { str: 8 }), + value: 80, + str: 8, + canBuy: () => { + return true; + }, + }, + fallWarrior: { + event: EVENTS.fall, + specialClass: 'warrior', + text: t('weaponSpecialFallWarriorText'), + notes: t('weaponSpecialFallWarriorNotes', { str: 15 }), + value: 90, + str: 15, + canBuy: () => { + return true; + }, + }, + fallMage: { + event: EVENTS.fall, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialFallMageText'), + notes: t('weaponSpecialFallMageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + canBuy: () => { + return true; + }, + }, + fallHealer: { + event: EVENTS.fall, + specialClass: 'healer', + text: t('weaponSpecialFallHealerText'), + notes: t('weaponSpecialFallHealerNotes', { int: 9 }), + value: 90, + int: 9, + canBuy: () => { + return true; + }, + }, + winter2015Rogue: { + event: EVENTS.winter2015, + specialClass: 'rogue', + text: t('weaponSpecialWinter2015RogueText'), + notes: t('weaponSpecialWinter2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + winter2015Warrior: { + event: EVENTS.winter2015, + specialClass: 'warrior', + text: t('weaponSpecialWinter2015WarriorText'), + notes: t('weaponSpecialWinter2015WarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + winter2015Mage: { + event: EVENTS.winter2015, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialWinter2015MageText'), + notes: t('weaponSpecialWinter2015MageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + winter2015Healer: { + event: EVENTS.winter2015, + specialClass: 'healer', + text: t('weaponSpecialWinter2015HealerText'), + notes: t('weaponSpecialWinter2015HealerNotes', { int: 9 }), + value: 90, + int: 9, + }, + spring2015Rogue: { + event: EVENTS.spring2015, + specialClass: 'rogue', + text: t('weaponSpecialSpring2015RogueText'), + notes: t('weaponSpecialSpring2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + spring2015Warrior: { + event: EVENTS.spring2015, + specialClass: 'warrior', + text: t('weaponSpecialSpring2015WarriorText'), + notes: t('weaponSpecialSpring2015WarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + spring2015Mage: { + event: EVENTS.spring2015, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialSpring2015MageText'), + notes: t('weaponSpecialSpring2015MageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + spring2015Healer: { + event: EVENTS.spring2015, + specialClass: 'healer', + text: t('weaponSpecialSpring2015HealerText'), + notes: t('weaponSpecialSpring2015HealerNotes', { int: 9 }), + value: 90, + int: 9, + }, + summer2015Rogue: { + event: EVENTS.summer2015, + specialClass: 'rogue', + text: t('weaponSpecialSummer2015RogueText'), + notes: t('weaponSpecialSummer2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + summer2015Warrior: { + event: EVENTS.summer2015, + specialClass: 'warrior', + text: t('weaponSpecialSummer2015WarriorText'), + notes: t('weaponSpecialSummer2015WarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + summer2015Mage: { + event: EVENTS.summer2015, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialSummer2015MageText'), + notes: t('weaponSpecialSummer2015MageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + summer2015Healer: { + event: EVENTS.summer2015, + specialClass: 'healer', + text: t('weaponSpecialSummer2015HealerText'), + notes: t('weaponSpecialSummer2015HealerNotes', { int: 9 }), + value: 90, + int: 9, + }, + fall2015Rogue: { + event: EVENTS.fall2015, + specialClass: 'rogue', + text: t('weaponSpecialFall2015RogueText'), + notes: t('weaponSpecialFall2015RogueNotes', { str: 8 }), + value: 80, + str: 8, + }, + fall2015Warrior: { + event: EVENTS.fall2015, + specialClass: 'warrior', + text: t('weaponSpecialFall2015WarriorText'), + notes: t('weaponSpecialFall2015WarriorNotes', { str: 15 }), + value: 90, + str: 15, + }, + fall2015Mage: { + event: EVENTS.fall2015, + specialClass: 'wizard', + twoHanded: true, + text: t('weaponSpecialFall2015MageText'), + notes: t('weaponSpecialFall2015MageNotes', { int: 15, per: 7 }), + value: 160, + int: 15, + per: 7, + }, + fall2015Healer: { + event: EVENTS.fall2015, + specialClass: 'healer', + text: t('weaponSpecialFall2015HealerText'), + notes: t('weaponSpecialFall2015HealerNotes', { int: 9 }), + value: 90, + int: 9, + }, +}; + +let specialSet = { + armor, + back, + body, + eyewear, + head, + headAccessory, + shield, + weapon, +}; + +export default specialSet; diff --git a/common/script/content/gear/sets/special/special-backer.js b/common/script/content/gear/sets/special/special-backer.js new file mode 100644 index 0000000000..3e59f4c035 --- /dev/null +++ b/common/script/content/gear/sets/special/special-backer.js @@ -0,0 +1,93 @@ +import { ownsItem } from '../../gear-helper'; +import t from '../../../translation'; + +let isBackerOfLevel = (tierRequirement, ownedItem) => { + return (user) => { + let backer = user.backer; + let tier = Number(backer && backer.tier); + + return tier >= tierRequirement || ownsItem(ownedItem)(user); + }; +}; + +let armorSpecial0 = { + text: t('armorSpecial0Text'), + notes: t('armorSpecial0Notes', { con: 20 }), + con: 20, + value: 150, + canOwn: isBackerOfLevel(45, 'armor_special_0'), +}; + +let armorSpecial2 = { + text: t('armorSpecial2Text'), + notes: t('armorSpecial2Notes', { attrs: 25 }), + int: 25, + con: 25, + value: 200, + canOwn: isBackerOfLevel(300, 'armor_special_2'), +}; + +let headSpecial0 = { + text: t('headSpecial0Text'), + notes: t('headSpecial0Notes', { int: 20 }), + int: 20, + value: 150, + canOwn: isBackerOfLevel(45, 'head_special_0'), +}; + +let headSpecial2 = { + text: t('headSpecial2Text'), + notes: t('headSpecial2Notes', { attrs: 25 }), + int: 25, + str: 25, + value: 200, + canOwn: isBackerOfLevel(300, 'head_special_2'), +}; + +let shieldSpecial0 = { + text: t('shieldSpecial0Text'), + notes: t('shieldSpecial0Notes', { per: 20 }), + per: 20, + value: 150, + canOwn: isBackerOfLevel(45, 'shield_special_0'), +}; + +let weaponSpecial0 = { + text: t('weaponSpecial0Text'), + notes: t('weaponSpecial0Notes', { str: 20 }), + str: 20, + value: 150, + canOwn: isBackerOfLevel(70, 'weapon_special_0'), +}; + +let weaponSpecial2 = { + text: t('weaponSpecial2Text'), + notes: t('weaponSpecial2Notes', { attrs: 25 }), + str: 25, + per: 25, + value: 200, + canOwn: isBackerOfLevel(300, 'weapon_special_2'), +}; + +let weaponSpecial3 = { + text: t('weaponSpecial3Text'), + notes: t('weaponSpecial3Notes', { attrs: 17 }), + str: 17, + int: 17, + con: 17, + value: 200, + canOwn: isBackerOfLevel(300, 'weapon_special_3'), +}; + +let backerSet = { + armorSpecial0, + armorSpecial2, + headSpecial0, + headSpecial2, + shieldSpecial0, + weaponSpecial0, + weaponSpecial2, + weaponSpecial3, +}; + +export default backerSet; diff --git a/common/script/content/gear/sets/special/special-contributor.js b/common/script/content/gear/sets/special/special-contributor.js new file mode 100644 index 0000000000..8ef95ec38e --- /dev/null +++ b/common/script/content/gear/sets/special/special-contributor.js @@ -0,0 +1,79 @@ +import { ownsItem } from '../../gear-helper'; +import t from '../../../translation'; + +let isContributorOfLevel = (tierRequirement, ownedItem) => { + return (user) => { + let contributor = user.contributor; + let tier = contributor && contributor.level; + + return Number(tier) >= tierRequirement || ownsItem(ownedItem)(user); + }; +}; + +let armorSpecial1 = { + text: t('armorSpecial1Text'), + notes: t('armorSpecial1Notes', { attrs: 6 }), + con: 6, + str: 6, + per: 6, + int: 6, + value: 170, + canOwn: isContributorOfLevel(2, 'armor_special_1'), +}; + +let headSpecial1 = { + text: t('headSpecial1Text'), + notes: t('headSpecial1Notes', { attrs: 6 }), + con: 6, + str: 6, + per: 6, + int: 6, + value: 170, + canOwn: isContributorOfLevel(3, 'head_special_1'), +}; + +let shieldSpecial1 = { + text: t('shieldSpecial1Text'), + notes: t('shieldSpecial1Notes', { attrs: 6 }), + con: 6, + str: 6, + per: 6, + int: 6, + value: 170, + canOwn: isContributorOfLevel(5, 'shield_special_1'), +}; + +let weaponSpecial1 = { + text: t('weaponSpecial1Text'), + notes: t('weaponSpecial1Notes', { attrs: 6 }), + str: 6, + per: 6, + con: 6, + int: 6, + value: 170, + canOwn: isContributorOfLevel(4, 'weapon_special_1'), +}; + +let weaponSpecialCritical = { + text: t('weaponSpecialCriticalText'), + notes: t('weaponSpecialCriticalNotes', { attrs: 40 }), + str: 40, + per: 40, + value: 200, + canOwn: (user) => { + let hasCriticalFlag = user.contributor && user.contributor.critical; + let alreadyHasItem = ownsItem('weapon_special_critical')(user); + + return hasCriticalFlag || alreadyHasItem; + }, +}; + +let contributorSet = { + armorSpecial1, + headSpecial1, + shieldSpecial1, + weaponSpecial1, + weaponSpecialCritical, +}; + +export default contributorSet; diff --git a/common/script/content/gear/sets/special/special-wondercon.js b/common/script/content/gear/sets/special/special-wondercon.js new file mode 100644 index 0000000000..b321251bf1 --- /dev/null +++ b/common/script/content/gear/sets/special/special-wondercon.js @@ -0,0 +1,62 @@ +import t from '../../../translation'; + +let backSpecialWonderconRed = { + text: t('backSpecialWonderconRedText'), + notes: t('backSpecialWonderconRedNotes'), + value: 0, + mystery: 'wondercon', +}; + +let backSpecialWonderconBlack = { + text: t('backSpecialWonderconBlackText'), + notes: t('backSpecialWonderconBlackNotes'), + value: 0, + mystery: 'wondercon', +}; + +let bodySpecialWonderconRed = { + text: t('bodySpecialWonderconRedText'), + notes: t('bodySpecialWonderconRedNotes'), + value: 0, + mystery: 'wondercon', +}; + +let bodySpecialWonderconGold = { + text: t('bodySpecialWonderconGoldText'), + notes: t('bodySpecialWonderconGoldNotes'), + value: 0, + mystery: 'wondercon', +}; + +let bodySpecialWonderconBlack = { + text: t('bodySpecialWonderconBlackText'), + notes: t('bodySpecialWonderconBlackNotes'), + value: 0, + mystery: 'wondercon', +}; + +let eyewearSpecialWonderconRed = { + text: t('eyewearSpecialWonderconRedText'), + notes: t('eyewearSpecialWonderconRedNotes'), + value: 0, + mystery: 'wondercon', +}; + +let eyewearSpecialWonderconBlack = { + text: t('eyewearSpecialWonderconBlackText'), + notes: t('eyewearSpecialWonderconBlackNotes'), + value: 0, + mystery: 'wondercon', +}; + +let wonderconSet = { + backSpecialWonderconRed, + backSpecialWonderconBlack, + bodySpecialWonderconRed, + bodySpecialWonderconGold, + bodySpecialWonderconBlack, + eyewearSpecialWonderconRed, + eyewearSpecialWonderconBlack, +}; + +export default wonderconSet; diff --git a/common/script/content/gear/sets/warrior.js b/common/script/content/gear/sets/warrior.js new file mode 100644 index 0000000000..4e4f3d2a8e --- /dev/null +++ b/common/script/content/gear/sets/warrior.js @@ -0,0 +1,155 @@ +import t from '../../translation'; + +let armor = { + 1: { + text: t('armorWarrior1Text'), + notes: t('armorWarrior1Notes', { con: 3 }), + con: 3, + value: 30, + }, + 2: { + text: t('armorWarrior2Text'), + notes: t('armorWarrior2Notes', { con: 5 }), + con: 5, + value: 45, + }, + 3: { + text: t('armorWarrior3Text'), + notes: t('armorWarrior3Notes', { con: 7 }), + con: 7, + value: 65, + }, + 4: { + text: t('armorWarrior4Text'), + notes: t('armorWarrior4Notes', { con: 9 }), + con: 9, + value: 90, + }, + 5: { + text: t('armorWarrior5Text'), + notes: t('armorWarrior5Notes', { con: 11 }), + con: 11, + value: 120, + last: true, + }, +}; + +let head = { + 1: { + text: t('headWarrior1Text'), + notes: t('headWarrior1Notes', { str: 2 }), + str: 2, + value: 15, + }, + 2: { + text: t('headWarrior2Text'), + notes: t('headWarrior2Notes', { str: 4 }), + str: 4, + value: 25, + }, + 3: { + text: t('headWarrior3Text'), + notes: t('headWarrior3Notes', { str: 6 }), + str: 6, + value: 40, + }, + 4: { + text: t('headWarrior4Text'), + notes: t('headWarrior4Notes', { str: 9 }), + str: 9, + value: 60, + }, + 5: { + text: t('headWarrior5Text'), + notes: t('headWarrior5Notes', { str: 12 }), + str: 12, + value: 80, + last: true, + }, +}; + +let shield = { + 1: { + text: t('shieldWarrior1Text'), + notes: t('shieldWarrior1Notes', { con: 2 }), + con: 2, + value: 20, + }, + 2: { + text: t('shieldWarrior2Text'), + notes: t('shieldWarrior2Notes', { con: 3 }), + con: 3, + value: 35, + }, + 3: { + text: t('shieldWarrior3Text'), + notes: t('shieldWarrior3Notes', { con: 5 }), + con: 5, + value: 50, + }, + 4: { + text: t('shieldWarrior4Text'), + notes: t('shieldWarrior4Notes', { con: 7 }), + con: 7, + value: 70, + }, + 5: { + text: t('shieldWarrior5Text'), + notes: t('shieldWarrior5Notes', { con: 9 }), + con: 9, + value: 90, + last: true, + }, +}; + +let weapon = { + 0: { + text: t('weaponWarrior0Text'), + notes: t('weaponWarrior0Notes'), value: 1 }, + 1: { + text: t('weaponWarrior1Text'), + notes: t('weaponWarrior1Notes', { str: 3 }), + str: 3, + value: 20, + }, + 2: { + text: t('weaponWarrior2Text'), + notes: t('weaponWarrior2Notes', { str: 6 }), + str: 6, + value: 30, + }, + 3: { + text: t('weaponWarrior3Text'), + notes: t('weaponWarrior3Notes', { str: 9 }), + str: 9, + value: 45, + }, + 4: { + text: t('weaponWarrior4Text'), + notes: t('weaponWarrior4Notes', { str: 12 }), + str: 12, + value: 65, + }, + 5: { + text: t('weaponWarrior5Text'), + notes: t('weaponWarrior5Notes', { str: 15 }), + str: 15, + value: 90, + }, + 6: { + text: t('weaponWarrior6Text'), + notes: t('weaponWarrior6Notes', { str: 18 }), + str: 18, + value: 120, + last: true, + }, +}; + +let warriorSet = { + armor, + head, + shield, + weapon, +}; + +export default warriorSet; diff --git a/common/script/content/gear/sets/wizard.js b/common/script/content/gear/sets/wizard.js new file mode 100644 index 0000000000..898e7cac3a --- /dev/null +++ b/common/script/content/gear/sets/wizard.js @@ -0,0 +1,141 @@ +import t from '../../translation'; + +let armor = { + 1: { + text: t('armorWizard1Text'), + notes: t('armorWizard1Notes', { int: 2 }), + int: 2, + value: 30, + }, + 2: { + text: t('armorWizard2Text'), + notes: t('armorWizard2Notes', { int: 4 }), + int: 4, + value: 45, + }, + 3: { + text: t('armorWizard3Text'), + notes: t('armorWizard3Notes', { int: 6 }), + int: 6, + value: 65, + }, + 4: { + text: t('armorWizard4Text'), + notes: t('armorWizard4Notes', { int: 9 }), + int: 9, + value: 90, + }, + 5: { + text: t('armorWizard5Text'), + notes: t('armorWizard5Notes', { int: 12 }), + int: 12, + value: 120, + last: true, + }, +}; + +let head = { + 1: { + text: t('headWizard1Text'), + notes: t('headWizard1Notes', { per: 2 }), + per: 2, + value: 15, + }, + 2: { + text: t('headWizard2Text'), + notes: t('headWizard2Notes', { per: 3 }), + per: 3, + value: 25, + }, + 3: { + text: t('headWizard3Text'), + notes: t('headWizard3Notes', { per: 5 }), + per: 5, + value: 40, + }, + 4: { + text: t('headWizard4Text'), + notes: t('headWizard4Notes', { per: 7 }), + per: 7, + value: 60, + }, + 5: { + text: t('headWizard5Text'), + notes: t('headWizard5Notes', { per: 10 }), + per: 10, + value: 80, + last: true, + }, +}; + +let shield = { + // Wizard's weapons are two handed + // And thus do not have shields + // But the content structure still expects an object +}; + +let weapon = { + + 0: { + twoHanded: true, + text: t('weaponWizard0Text'), + notes: t('weaponWizard0Notes'), value: 0 }, + 1: { + twoHanded: true, + text: t('weaponWizard1Text'), + notes: t('weaponWizard1Notes', { int: 3, per: 1 }), + int: 3, + per: 1, + value: 30, + }, + 2: { + twoHanded: true, + text: t('weaponWizard2Text'), + notes: t('weaponWizard2Notes', { int: 6, per: 2 }), + int: 6, + per: 2, + value: 50, + }, + 3: { + twoHanded: true, + text: t('weaponWizard3Text'), + notes: t('weaponWizard3Notes', { int: 9, per: 3 }), + int: 9, + per: 3, + value: 80, + }, + 4: { + twoHanded: true, + text: t('weaponWizard4Text'), + notes: t('weaponWizard4Notes', { int: 12, per: 5 }), + int: 12, + per: 5, + value: 120, + }, + 5: { + twoHanded: true, + text: t('weaponWizard5Text'), + notes: t('weaponWizard5Notes', { int: 15, per: 7 }), + int: 15, + per: 7, + value: 160, + }, + 6: { + twoHanded: true, + text: t('weaponWizard6Text'), + notes: t('weaponWizard6Notes', { int: 18, per: 10 }), + int: 18, + per: 10, + value: 200, + last: true, + }, +}; + +let wizardSet = { + armor, + head, + shield, + weapon, +}; + +export default wizardSet; diff --git a/common/script/src/content/gear/shield.js b/common/script/content/gear/shield.js similarity index 100% rename from common/script/src/content/gear/shield.js rename to common/script/content/gear/shield.js diff --git a/common/script/src/content/gear/weapon.js b/common/script/content/gear/weapon.js similarity index 100% rename from common/script/src/content/gear/weapon.js rename to common/script/content/gear/weapon.js diff --git a/common/script/content/index.js b/common/script/content/index.js index ba6f7544a7..f8a7055ecc 100644 --- a/common/script/content/index.js +++ b/common/script/content/index.js @@ -1,4 +1,4 @@ -var _, api, calculateBonus, diminishingReturns, gear, moment, t; +var _, api, calculateBonus, diminishingReturns, moment, t; api = module.exports; @@ -18,3502 +18,13 @@ import { import mysterySets from './mystery-sets'; -/* - --------------------------------------------------------------- - Gear (Weapons, Armor, Head, Shield) - Item definitions: {index, text, notes, value, str, def, int, per, classes, type} - --------------------------------------------------------------- - */ +import gear from './gear'; api.mystery = mysterySets; api.itemList = ITEM_LIST; -gear = { - weapon: { - base: { - 0: { - text: t('weaponBase0Text'), - notes: t('weaponBase0Notes'), - value: 0 - } - }, - warrior: { - 0: { - text: t('weaponWarrior0Text'), - notes: t('weaponWarrior0Notes'), - value: 1 - }, - 1: { - text: t('weaponWarrior1Text'), - notes: t('weaponWarrior1Notes', { - str: 3 - }), - str: 3, - value: 20 - }, - 2: { - text: t('weaponWarrior2Text'), - notes: t('weaponWarrior2Notes', { - str: 6 - }), - str: 6, - value: 30 - }, - 3: { - text: t('weaponWarrior3Text'), - notes: t('weaponWarrior3Notes', { - str: 9 - }), - str: 9, - value: 45 - }, - 4: { - text: t('weaponWarrior4Text'), - notes: t('weaponWarrior4Notes', { - str: 12 - }), - str: 12, - value: 65 - }, - 5: { - text: t('weaponWarrior5Text'), - notes: t('weaponWarrior5Notes', { - str: 15 - }), - str: 15, - value: 90 - }, - 6: { - text: t('weaponWarrior6Text'), - notes: t('weaponWarrior6Notes', { - str: 18 - }), - str: 18, - value: 120, - last: true - } - }, - rogue: { - 0: { - text: t('weaponRogue0Text'), - notes: t('weaponRogue0Notes'), - str: 0, - value: 0 - }, - 1: { - text: t('weaponRogue1Text'), - notes: t('weaponRogue1Notes', { - str: 2 - }), - str: 2, - value: 20 - }, - 2: { - text: t('weaponRogue2Text'), - notes: t('weaponRogue2Notes', { - str: 3 - }), - str: 3, - value: 35 - }, - 3: { - text: t('weaponRogue3Text'), - notes: t('weaponRogue3Notes', { - str: 4 - }), - str: 4, - value: 50 - }, - 4: { - text: t('weaponRogue4Text'), - notes: t('weaponRogue4Notes', { - str: 6 - }), - str: 6, - value: 70 - }, - 5: { - text: t('weaponRogue5Text'), - notes: t('weaponRogue5Notes', { - str: 8 - }), - str: 8, - value: 90 - }, - 6: { - text: t('weaponRogue6Text'), - notes: t('weaponRogue6Notes', { - str: 10 - }), - str: 10, - value: 120, - last: true - } - }, - wizard: { - 0: { - twoHanded: true, - text: t('weaponWizard0Text'), - notes: t('weaponWizard0Notes'), - value: 0 - }, - 1: { - twoHanded: true, - text: t('weaponWizard1Text'), - notes: t('weaponWizard1Notes', { - int: 3, - per: 1 - }), - int: 3, - per: 1, - value: 30 - }, - 2: { - twoHanded: true, - text: t('weaponWizard2Text'), - notes: t('weaponWizard2Notes', { - int: 6, - per: 2 - }), - int: 6, - per: 2, - value: 50 - }, - 3: { - twoHanded: true, - text: t('weaponWizard3Text'), - notes: t('weaponWizard3Notes', { - int: 9, - per: 3 - }), - int: 9, - per: 3, - value: 80 - }, - 4: { - twoHanded: true, - text: t('weaponWizard4Text'), - notes: t('weaponWizard4Notes', { - int: 12, - per: 5 - }), - int: 12, - per: 5, - value: 120 - }, - 5: { - twoHanded: true, - text: t('weaponWizard5Text'), - notes: t('weaponWizard5Notes', { - int: 15, - per: 7 - }), - int: 15, - per: 7, - value: 160 - }, - 6: { - twoHanded: true, - text: t('weaponWizard6Text'), - notes: t('weaponWizard6Notes', { - int: 18, - per: 10 - }), - int: 18, - per: 10, - value: 200, - last: true - } - }, - healer: { - 0: { - text: t('weaponHealer0Text'), - notes: t('weaponHealer0Notes'), - value: 0 - }, - 1: { - text: t('weaponHealer1Text'), - notes: t('weaponHealer1Notes', { - int: 2 - }), - int: 2, - value: 20 - }, - 2: { - text: t('weaponHealer2Text'), - notes: t('weaponHealer2Notes', { - int: 3 - }), - int: 3, - value: 30 - }, - 3: { - text: t('weaponHealer3Text'), - notes: t('weaponHealer3Notes', { - int: 5 - }), - int: 5, - value: 45 - }, - 4: { - text: t('weaponHealer4Text'), - notes: t('weaponHealer4Notes', { - int: 7 - }), - int: 7, - value: 65 - }, - 5: { - text: t('weaponHealer5Text'), - notes: t('weaponHealer5Notes', { - int: 9 - }), - int: 9, - value: 90 - }, - 6: { - text: t('weaponHealer6Text'), - notes: t('weaponHealer6Notes', { - int: 11 - }), - int: 11, - value: 120, - last: true - } - }, - special: { - 0: { - text: t('weaponSpecial0Text'), - notes: t('weaponSpecial0Notes', { - str: 20 - }), - str: 20, - value: 150, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 70; - }) - }, - 1: { - text: t('weaponSpecial1Text'), - notes: t('weaponSpecial1Notes', { - attrs: 6 - }), - str: 6, - per: 6, - con: 6, - int: 6, - value: 170, - canOwn: (function(u) { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 4; - }) - }, - 2: { - text: t('weaponSpecial2Text'), - notes: t('weaponSpecial2Notes', { - attrs: 25 - }), - str: 25, - per: 25, - value: 200, - canOwn: (function(u) { - var ref; - return (+((ref = u.backer) != null ? ref.tier : void 0) >= 300) || (u.items.gear.owned.weapon_special_2 != null); - }) - }, - 3: { - text: t('weaponSpecial3Text'), - notes: t('weaponSpecial3Notes', { - attrs: 17 - }), - str: 17, - int: 17, - con: 17, - value: 200, - canOwn: (function(u) { - var ref; - return (+((ref = u.backer) != null ? ref.tier : void 0) >= 300) || (u.items.gear.owned.weapon_special_3 != null); - }) - }, - critical: { - text: t('weaponSpecialCriticalText'), - notes: t('weaponSpecialCriticalNotes', { - attrs: 40 - }), - str: 40, - per: 40, - value: 200, - canOwn: (function(u) { - var ref; - return !!((ref = u.contributor) != null ? ref.critical : void 0); - }) - }, - tridentOfCrashingTides: { - text: t('weaponSpecialTridentOfCrashingTidesText'), - notes: t('weaponSpecialTridentOfCrashingTidesNotes', { - int: 15 - }), - int: 15, - value: 130, - canOwn: (function(u) { - return u.items.gear.owned.weapon_special_tridentOfCrashingTides != null; - }) - }, - yeti: { - event: EVENTS.winter, - specialClass: 'warrior', - text: t('weaponSpecialYetiText'), - notes: t('weaponSpecialYetiNotes', { - str: 15 - }), - str: 15, - value: 90 - }, - ski: { - event: EVENTS.winter, - specialClass: 'rogue', - text: t('weaponSpecialSkiText'), - notes: t('weaponSpecialSkiNotes', { - str: 8 - }), - str: 8, - value: 90 - }, - candycane: { - event: EVENTS.winter, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialCandycaneText'), - notes: t('weaponSpecialCandycaneNotes', { - int: 15, - per: 7 - }), - int: 15, - per: 7, - value: 160 - }, - snowflake: { - event: EVENTS.winter, - specialClass: 'healer', - text: t('weaponSpecialSnowflakeText'), - notes: t('weaponSpecialSnowflakeNotes', { - int: 9 - }), - int: 9, - value: 90 - }, - springRogue: { - event: EVENTS.spring, - specialClass: 'rogue', - text: t('weaponSpecialSpringRogueText'), - notes: t('weaponSpecialSpringRogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - springWarrior: { - event: EVENTS.spring, - specialClass: 'warrior', - text: t('weaponSpecialSpringWarriorText'), - notes: t('weaponSpecialSpringWarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - springMage: { - event: EVENTS.spring, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialSpringMageText'), - notes: t('weaponSpecialSpringMageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - springHealer: { - event: EVENTS.spring, - specialClass: 'healer', - text: t('weaponSpecialSpringHealerText'), - notes: t('weaponSpecialSpringHealerNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - summerRogue: { - event: EVENTS.summer, - specialClass: 'rogue', - text: t('weaponSpecialSummerRogueText'), - notes: t('weaponSpecialSummerRogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - summerWarrior: { - event: EVENTS.summer, - specialClass: 'warrior', - text: t('weaponSpecialSummerWarriorText'), - notes: t('weaponSpecialSummerWarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - summerMage: { - event: EVENTS.summer, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialSummerMageText'), - notes: t('weaponSpecialSummerMageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - summerHealer: { - event: EVENTS.summer, - specialClass: 'healer', - text: t('weaponSpecialSummerHealerText'), - notes: t('weaponSpecialSummerHealerNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - fallRogue: { - event: EVENTS.fall, - specialClass: 'rogue', - text: t('weaponSpecialFallRogueText'), - notes: t('weaponSpecialFallRogueNotes', { - str: 8 - }), - value: 80, - str: 8, - canBuy: (function() { - return true; - }) - }, - fallWarrior: { - event: EVENTS.fall, - specialClass: 'warrior', - text: t('weaponSpecialFallWarriorText'), - notes: t('weaponSpecialFallWarriorNotes', { - str: 15 - }), - value: 90, - str: 15, - canBuy: (function() { - return true; - }) - }, - fallMage: { - event: EVENTS.fall, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialFallMageText'), - notes: t('weaponSpecialFallMageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7, - canBuy: (function() { - return true; - }) - }, - fallHealer: { - event: EVENTS.fall, - specialClass: 'healer', - text: t('weaponSpecialFallHealerText'), - notes: t('weaponSpecialFallHealerNotes', { - int: 9 - }), - value: 90, - int: 9, - canBuy: (function() { - return true; - }) - }, - winter2015Rogue: { - event: EVENTS.winter2015, - specialClass: 'rogue', - text: t('weaponSpecialWinter2015RogueText'), - notes: t('weaponSpecialWinter2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - winter2015Warrior: { - event: EVENTS.winter2015, - specialClass: 'warrior', - text: t('weaponSpecialWinter2015WarriorText'), - notes: t('weaponSpecialWinter2015WarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - winter2015Mage: { - event: EVENTS.winter2015, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialWinter2015MageText'), - notes: t('weaponSpecialWinter2015MageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - winter2015Healer: { - event: EVENTS.winter2015, - specialClass: 'healer', - text: t('weaponSpecialWinter2015HealerText'), - notes: t('weaponSpecialWinter2015HealerNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - spring2015Rogue: { - event: EVENTS.spring2015, - specialClass: 'rogue', - text: t('weaponSpecialSpring2015RogueText'), - notes: t('weaponSpecialSpring2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - spring2015Warrior: { - event: EVENTS.spring2015, - specialClass: 'warrior', - text: t('weaponSpecialSpring2015WarriorText'), - notes: t('weaponSpecialSpring2015WarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - spring2015Mage: { - event: EVENTS.spring2015, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialSpring2015MageText'), - notes: t('weaponSpecialSpring2015MageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - spring2015Healer: { - event: EVENTS.spring2015, - specialClass: 'healer', - text: t('weaponSpecialSpring2015HealerText'), - notes: t('weaponSpecialSpring2015HealerNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - summer2015Rogue: { - event: EVENTS.summer2015, - specialClass: 'rogue', - text: t('weaponSpecialSummer2015RogueText'), - notes: t('weaponSpecialSummer2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - summer2015Warrior: { - event: EVENTS.summer2015, - specialClass: 'warrior', - text: t('weaponSpecialSummer2015WarriorText'), - notes: t('weaponSpecialSummer2015WarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - summer2015Mage: { - event: EVENTS.summer2015, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialSummer2015MageText'), - notes: t('weaponSpecialSummer2015MageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - summer2015Healer: { - event: EVENTS.summer2015, - specialClass: 'healer', - text: t('weaponSpecialSummer2015HealerText'), - notes: t('weaponSpecialSummer2015HealerNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - fall2015Rogue: { - event: EVENTS.fall2015, - specialClass: 'rogue', - text: t('weaponSpecialFall2015RogueText'), - notes: t('weaponSpecialFall2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - fall2015Warrior: { - event: EVENTS.fall2015, - specialClass: 'warrior', - text: t('weaponSpecialFall2015WarriorText'), - notes: t('weaponSpecialFall2015WarriorNotes', { - str: 15 - }), - value: 90, - str: 15 - }, - fall2015Mage: { - event: EVENTS.fall2015, - specialClass: 'wizard', - twoHanded: true, - text: t('weaponSpecialFall2015MageText'), - notes: t('weaponSpecialFall2015MageNotes', { - int: 15, - per: 7 - }), - value: 160, - int: 15, - per: 7 - }, - fall2015Healer: { - event: EVENTS.fall2015, - specialClass: 'healer', - text: t('weaponSpecialFall2015HealerText'), - notes: t('weaponSpecialFall2015HealerNotes', { - int: 9 - }), - value: 90, - int: 9 - } - }, - mystery: { - 201411: { - text: t('weaponMystery201411Text'), - notes: t('weaponMystery201411Notes'), - mystery: '201411', - value: 0 - }, - 201502: { - text: t('weaponMystery201502Text'), - notes: t('weaponMystery201502Notes'), - mystery: '201502', - value: 0 - }, - 201505: { - text: t('weaponMystery201505Text'), - notes: t('weaponMystery201505Notes'), - mystery: '201505', - value: 0 - }, - 301404: { - text: t('weaponMystery301404Text'), - notes: t('weaponMystery301404Notes'), - mystery: '301404', - value: 0 - } - }, - armoire: { - basicCrossbow: { - text: t('weaponArmoireBasicCrossbowText'), - notes: t('weaponArmoireBasicCrossbowNotes', { - str: 5, - per: 5, - con: 5 - }), - value: 100, - str: 5, - per: 5, - con: 5, - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_basicCrossbow != null; - }) - }, - lunarSceptre: { - text: t('weaponArmoireLunarSceptreText'), - notes: t('weaponArmoireLunarSceptreNotes', { - con: 7, - int: 7 - }), - value: 100, - con: 7, - int: 7, - set: 'soothing', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_lunarSceptre != null; - }) - }, - rancherLasso: { - twoHanded: true, - text: t('weaponArmoireRancherLassoText'), - notes: t('weaponArmoireRancherLassoNotes', { - str: 5, - per: 5, - int: 5 - }), - value: 100, - str: 5, - per: 5, - int: 5, - set: 'rancher', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_rancherLasso != null; - }) - }, - mythmakerSword: { - text: t('weaponArmoireMythmakerSwordText'), - notes: t('weaponArmoireMythmakerSwordNotes', { - attrs: 6 - }), - value: 100, - str: 6, - per: 6, - set: 'goldenToga', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_mythmakerSword != null; - }) - }, - ironCrook: { - text: t('weaponArmoireIronCrookText'), - notes: t('weaponArmoireIronCrookNotes', { - attrs: 7 - }), - value: 100, - str: 7, - per: 7, - set: 'hornedIron', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_ironCrook != null; - }) - }, - goldWingStaff: { - text: t('weaponArmoireGoldWingStaffText'), - notes: t('weaponArmoireGoldWingStaffNotes', { - attrs: 4 - }), - value: 100, - con: 4, - int: 4, - per: 4, - str: 4, - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_goldWingStaff != null; - }) - }, - batWand: { - text: t('weaponArmoireBatWandText'), - notes: t('weaponArmoireBatWandNotes', { - int: 10, - per: 2 - }), - value: 100, - int: 10, - per: 2, - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_batWand != null; - }) - }, - shepherdsCrook: { - text: t('weaponArmoireShepherdsCrookText'), - notes: t('weaponArmoireShepherdsCrookNotes', { - con: 9 - }), - value: 100, - con: 9, - set: 'shepherd', - canOwn: (function(u) { - return u.items.gear.owned.weapon_armoire_shepherdsCrook != null; - }) - } - } - }, - armor: { - base: { - 0: { - text: t('armorBase0Text'), - notes: t('armorBase0Notes'), - value: 0 - } - }, - warrior: { - 1: { - text: t('armorWarrior1Text'), - notes: t('armorWarrior1Notes', { - con: 3 - }), - con: 3, - value: 30 - }, - 2: { - text: t('armorWarrior2Text'), - notes: t('armorWarrior2Notes', { - con: 5 - }), - con: 5, - value: 45 - }, - 3: { - text: t('armorWarrior3Text'), - notes: t('armorWarrior3Notes', { - con: 7 - }), - con: 7, - value: 65 - }, - 4: { - text: t('armorWarrior4Text'), - notes: t('armorWarrior4Notes', { - con: 9 - }), - con: 9, - value: 90 - }, - 5: { - text: t('armorWarrior5Text'), - notes: t('armorWarrior5Notes', { - con: 11 - }), - con: 11, - value: 120, - last: true - } - }, - rogue: { - 1: { - text: t('armorRogue1Text'), - notes: t('armorRogue1Notes', { - per: 6 - }), - per: 6, - value: 30 - }, - 2: { - text: t('armorRogue2Text'), - notes: t('armorRogue2Notes', { - per: 9 - }), - per: 9, - value: 45 - }, - 3: { - text: t('armorRogue3Text'), - notes: t('armorRogue3Notes', { - per: 12 - }), - per: 12, - value: 65 - }, - 4: { - text: t('armorRogue4Text'), - notes: t('armorRogue4Notes', { - per: 15 - }), - per: 15, - value: 90 - }, - 5: { - text: t('armorRogue5Text'), - notes: t('armorRogue5Notes', { - per: 18 - }), - per: 18, - value: 120, - last: true - } - }, - wizard: { - 1: { - text: t('armorWizard1Text'), - notes: t('armorWizard1Notes', { - int: 2 - }), - int: 2, - value: 30 - }, - 2: { - text: t('armorWizard2Text'), - notes: t('armorWizard2Notes', { - int: 4 - }), - int: 4, - value: 45 - }, - 3: { - text: t('armorWizard3Text'), - notes: t('armorWizard3Notes', { - int: 6 - }), - int: 6, - value: 65 - }, - 4: { - text: t('armorWizard4Text'), - notes: t('armorWizard4Notes', { - int: 9 - }), - int: 9, - value: 90 - }, - 5: { - text: t('armorWizard5Text'), - notes: t('armorWizard5Notes', { - int: 12 - }), - int: 12, - value: 120, - last: true - } - }, - healer: { - 1: { - text: t('armorHealer1Text'), - notes: t('armorHealer1Notes', { - con: 6 - }), - con: 6, - value: 30 - }, - 2: { - text: t('armorHealer2Text'), - notes: t('armorHealer2Notes', { - con: 9 - }), - con: 9, - value: 45 - }, - 3: { - text: t('armorHealer3Text'), - notes: t('armorHealer3Notes', { - con: 12 - }), - con: 12, - value: 65 - }, - 4: { - text: t('armorHealer4Text'), - notes: t('armorHealer4Notes', { - con: 15 - }), - con: 15, - value: 90 - }, - 5: { - text: t('armorHealer5Text'), - notes: t('armorHealer5Notes', { - con: 18 - }), - con: 18, - value: 120, - last: true - } - }, - special: { - 0: { - text: t('armorSpecial0Text'), - notes: t('armorSpecial0Notes', { - con: 20 - }), - con: 20, - value: 150, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 45; - }) - }, - 1: { - text: t('armorSpecial1Text'), - notes: t('armorSpecial1Notes', { - attrs: 6 - }), - con: 6, - str: 6, - per: 6, - int: 6, - value: 170, - canOwn: (function(u) { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 2; - }) - }, - 2: { - text: t('armorSpecial2Text'), - notes: t('armorSpecial2Notes', { - attrs: 25 - }), - int: 25, - con: 25, - value: 200, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 300 || (u.items.gear.owned.armor_special_2 != null); - }) - }, - finnedOceanicArmor: { - text: t('armorSpecialFinnedOceanicArmorText'), - notes: t('armorSpecialFinnedOceanicArmorNotes', { - str: 15 - }), - str: 15, - value: 130, - canOwn: (function(u) { - return u.items.gear.owned.armor_special_finnedOceanicArmor != null; - }) - }, - yeti: { - event: EVENTS.winter, - specialClass: 'warrior', - text: t('armorSpecialYetiText'), - notes: t('armorSpecialYetiNotes', { - con: 9 - }), - con: 9, - value: 90 - }, - ski: { - event: EVENTS.winter, - specialClass: 'rogue', - text: t('armorSpecialSkiText'), - notes: t('armorSpecialSkiNotes', { - per: 15 - }), - per: 15, - value: 90 - }, - candycane: { - event: EVENTS.winter, - specialClass: 'wizard', - text: t('armorSpecialCandycaneText'), - notes: t('armorSpecialCandycaneNotes', { - int: 9 - }), - int: 9, - value: 90 - }, - snowflake: { - event: EVENTS.winter, - specialClass: 'healer', - text: t('armorSpecialSnowflakeText'), - notes: t('armorSpecialSnowflakeNotes', { - con: 15 - }), - con: 15, - value: 90 - }, - birthday: { - event: EVENTS.birthday, - text: t('armorSpecialBirthdayText'), - notes: t('armorSpecialBirthdayNotes'), - value: 0 - }, - springRogue: { - event: EVENTS.spring, - specialClass: 'rogue', - text: t('armorSpecialSpringRogueText'), - notes: t('armorSpecialSpringRogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - springWarrior: { - event: EVENTS.spring, - specialClass: 'warrior', - text: t('armorSpecialSpringWarriorText'), - notes: t('armorSpecialSpringWarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - springMage: { - event: EVENTS.spring, - specialClass: 'wizard', - text: t('armorSpecialSpringMageText'), - notes: t('armorSpecialSpringMageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - springHealer: { - event: EVENTS.spring, - specialClass: 'healer', - text: t('armorSpecialSpringHealerText'), - notes: t('armorSpecialSpringHealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - summerRogue: { - event: EVENTS.summer, - specialClass: 'rogue', - text: t('armorSpecialSummerRogueText'), - notes: t('armorSpecialSummerRogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - summerWarrior: { - event: EVENTS.summer, - specialClass: 'warrior', - text: t('armorSpecialSummerWarriorText'), - notes: t('armorSpecialSummerWarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - summerMage: { - event: EVENTS.summer, - specialClass: 'wizard', - text: t('armorSpecialSummerMageText'), - notes: t('armorSpecialSummerMageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - summerHealer: { - event: EVENTS.summer, - specialClass: 'healer', - text: t('armorSpecialSummerHealerText'), - notes: t('armorSpecialSummerHealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - fallRogue: { - event: EVENTS.fall, - specialClass: 'rogue', - text: t('armorSpecialFallRogueText'), - notes: t('armorSpecialFallRogueNotes', { - per: 15 - }), - value: 90, - per: 15, - canBuy: (function() { - return true; - }) - }, - fallWarrior: { - event: EVENTS.fall, - specialClass: 'warrior', - text: t('armorSpecialFallWarriorText'), - notes: t('armorSpecialFallWarriorNotes', { - con: 9 - }), - value: 90, - con: 9, - canBuy: (function() { - return true; - }) - }, - fallMage: { - event: EVENTS.fall, - specialClass: 'wizard', - text: t('armorSpecialFallMageText'), - notes: t('armorSpecialFallMageNotes', { - int: 9 - }), - value: 90, - int: 9, - canBuy: (function() { - return true; - }) - }, - fallHealer: { - event: EVENTS.fall, - specialClass: 'healer', - text: t('armorSpecialFallHealerText'), - notes: t('armorSpecialFallHealerNotes', { - con: 15 - }), - value: 90, - con: 15, - canBuy: (function() { - return true; - }) - }, - winter2015Rogue: { - event: EVENTS.winter2015, - specialClass: 'rogue', - text: t('armorSpecialWinter2015RogueText'), - notes: t('armorSpecialWinter2015RogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - winter2015Warrior: { - event: EVENTS.winter2015, - specialClass: 'warrior', - text: t('armorSpecialWinter2015WarriorText'), - notes: t('armorSpecialWinter2015WarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - winter2015Mage: { - event: EVENTS.winter2015, - specialClass: 'wizard', - text: t('armorSpecialWinter2015MageText'), - notes: t('armorSpecialWinter2015MageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - winter2015Healer: { - event: EVENTS.winter2015, - specialClass: 'healer', - text: t('armorSpecialWinter2015HealerText'), - notes: t('armorSpecialWinter2015HealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - birthday2015: { - text: t('armorSpecialBirthday2015Text'), - notes: t('armorSpecialBirthday2015Notes'), - value: 0, - canOwn: (function(u) { - return u.items.gear.owned.armor_special_birthday2015 != null; - }) - }, - spring2015Rogue: { - event: EVENTS.spring2015, - specialClass: 'rogue', - text: t('armorSpecialSpring2015RogueText'), - notes: t('armorSpecialSpring2015RogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - spring2015Warrior: { - event: EVENTS.spring2015, - specialClass: 'warrior', - text: t('armorSpecialSpring2015WarriorText'), - notes: t('armorSpecialSpring2015WarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - spring2015Mage: { - event: EVENTS.spring2015, - specialClass: 'wizard', - text: t('armorSpecialSpring2015MageText'), - notes: t('armorSpecialSpring2015MageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - spring2015Healer: { - event: EVENTS.spring2015, - specialClass: 'healer', - text: t('armorSpecialSpring2015HealerText'), - notes: t('armorSpecialSpring2015HealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - summer2015Rogue: { - event: EVENTS.summer2015, - specialClass: 'rogue', - text: t('armorSpecialSummer2015RogueText'), - notes: t('armorSpecialSummer2015RogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - summer2015Warrior: { - event: EVENTS.summer2015, - specialClass: 'warrior', - text: t('armorSpecialSummer2015WarriorText'), - notes: t('armorSpecialSummer2015WarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - summer2015Mage: { - event: EVENTS.summer2015, - specialClass: 'wizard', - text: t('armorSpecialSummer2015MageText'), - notes: t('armorSpecialSummer2015MageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - summer2015Healer: { - event: EVENTS.summer2015, - specialClass: 'healer', - text: t('armorSpecialSummer2015HealerText'), - notes: t('armorSpecialSummer2015HealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - fall2015Rogue: { - event: EVENTS.fall2015, - specialClass: 'rogue', - text: t('armorSpecialFall2015RogueText'), - notes: t('armorSpecialFall2015RogueNotes', { - per: 15 - }), - value: 90, - per: 15 - }, - fall2015Warrior: { - event: EVENTS.fall2015, - specialClass: 'warrior', - text: t('armorSpecialFall2015WarriorText'), - notes: t('armorSpecialFall2015WarriorNotes', { - con: 9 - }), - value: 90, - con: 9 - }, - fall2015Mage: { - event: EVENTS.fall2015, - specialClass: 'wizard', - text: t('armorSpecialFall2015MageText'), - notes: t('armorSpecialFall2015MageNotes', { - int: 9 - }), - value: 90, - int: 9 - }, - fall2015Healer: { - event: EVENTS.fall2015, - specialClass: 'healer', - text: t('armorSpecialFall2015HealerText'), - notes: t('armorSpecialFall2015HealerNotes', { - con: 15 - }), - value: 90, - con: 15 - }, - gaymerx: { - event: EVENTS.gaymerx, - text: t('armorSpecialGaymerxText'), - notes: t('armorSpecialGaymerxNotes'), - value: 0 - } - }, - mystery: { - 201402: { - text: t('armorMystery201402Text'), - notes: t('armorMystery201402Notes'), - mystery: '201402', - value: 0 - }, - 201403: { - text: t('armorMystery201403Text'), - notes: t('armorMystery201403Notes'), - mystery: '201403', - value: 0 - }, - 201405: { - text: t('armorMystery201405Text'), - notes: t('armorMystery201405Notes'), - mystery: '201405', - value: 0 - }, - 201406: { - text: t('armorMystery201406Text'), - notes: t('armorMystery201406Notes'), - mystery: '201406', - value: 0 - }, - 201407: { - text: t('armorMystery201407Text'), - notes: t('armorMystery201407Notes'), - mystery: '201407', - value: 0 - }, - 201408: { - text: t('armorMystery201408Text'), - notes: t('armorMystery201408Notes'), - mystery: '201408', - value: 0 - }, - 201409: { - text: t('armorMystery201409Text'), - notes: t('armorMystery201409Notes'), - mystery: '201409', - value: 0 - }, - 201410: { - text: t('armorMystery201410Text'), - notes: t('armorMystery201410Notes'), - mystery: '201410', - value: 0 - }, - 201412: { - text: t('armorMystery201412Text'), - notes: t('armorMystery201412Notes'), - mystery: '201412', - value: 0 - }, - 201501: { - text: t('armorMystery201501Text'), - notes: t('armorMystery201501Notes'), - mystery: '201501', - value: 0 - }, - 201503: { - text: t('armorMystery201503Text'), - notes: t('armorMystery201503Notes'), - mystery: '201503', - value: 0 - }, - 201504: { - text: t('armorMystery201504Text'), - notes: t('armorMystery201504Notes'), - mystery: '201504', - value: 0 - }, - 201506: { - text: t('armorMystery201506Text'), - notes: t('armorMystery201506Notes'), - mystery: '201506', - value: 0 - }, - 201508: { - text: t('armorMystery201508Text'), - notes: t('armorMystery201508Notes'), - mystery: '201508', - value: 0 - }, - 201509: { - text: t('armorMystery201509Text'), - notes: t('armorMystery201509Notes'), - mystery: '201509', - value: 0 - }, - 301404: { - text: t('armorMystery301404Text'), - notes: t('armorMystery301404Notes'), - mystery: '301404', - value: 0 - } - }, - armoire: { - lunarArmor: { - text: t('armorArmoireLunarArmorText'), - notes: t('armorArmoireLunarArmorNotes', { - str: 7, - int: 7 - }), - value: 100, - str: 7, - int: 7, - set: 'soothing', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_lunarArmor != null; - }) - }, - gladiatorArmor: { - text: t('armorArmoireGladiatorArmorText'), - notes: t('armorArmoireGladiatorArmorNotes', { - str: 7, - per: 7 - }), - value: 100, - str: 7, - per: 7, - set: 'gladiator', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_gladiatorArmor != null; - }) - }, - rancherRobes: { - text: t('armorArmoireRancherRobesText'), - notes: t('armorArmoireRancherRobesNotes', { - str: 5, - per: 5, - int: 5 - }), - value: 100, - str: 5, - per: 5, - int: 5, - set: 'rancher', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_rancherRobes != null; - }) - }, - goldenToga: { - text: t('armorArmoireGoldenTogaText'), - notes: t('armorArmoireGoldenTogaNotes', { - attrs: 8 - }), - value: 100, - str: 8, - con: 8, - set: 'goldenToga', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_goldenToga != null; - }) - }, - hornedIronArmor: { - text: t('armorArmoireHornedIronArmorText'), - notes: t('armorArmoireHornedIronArmorNotes', { - con: 9, - per: 7 - }), - value: 100, - con: 9, - per: 7, - set: 'hornedIron', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_hornedIronArmor != null; - }) - }, - plagueDoctorOvercoat: { - text: t('armorArmoirePlagueDoctorOvercoatText'), - notes: t('armorArmoirePlagueDoctorOvercoatNotes', { - int: 6, - str: 5, - con: 6 - }), - value: 100, - int: 6, - str: 5, - con: 6, - set: 'plagueDoctor', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_plagueDoctorOvercoat != null; - }) - }, - shepherdRobes: { - text: t('armorArmoireShepherdRobesText'), - notes: t('armorArmoireShepherdRobesNotes', { - attrs: 9 - }), - value: 100, - str: 9, - per: 9, - set: 'shepherd', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_shepherdRobes != null; - }) - }, - royalRobes: { - text: t('armorArmoireRoyalRobesText'), - notes: t('armorArmoireRoyalRobesNotes', { - attrs: 5 - }), - value: 100, - con: 5, - per: 5, - int: 5, - set: 'royal', - canOwn: (function(u) { - return u.items.gear.owned.armor_armoire_royalRobes != null; - }) - } - } - }, - head: { - base: { - 0: { - text: t('headBase0Text'), - notes: t('headBase0Notes'), - value: 0 - } - }, - warrior: { - 1: { - text: t('headWarrior1Text'), - notes: t('headWarrior1Notes', { - str: 2 - }), - str: 2, - value: 15 - }, - 2: { - text: t('headWarrior2Text'), - notes: t('headWarrior2Notes', { - str: 4 - }), - str: 4, - value: 25 - }, - 3: { - text: t('headWarrior3Text'), - notes: t('headWarrior3Notes', { - str: 6 - }), - str: 6, - value: 40 - }, - 4: { - text: t('headWarrior4Text'), - notes: t('headWarrior4Notes', { - str: 9 - }), - str: 9, - value: 60 - }, - 5: { - text: t('headWarrior5Text'), - notes: t('headWarrior5Notes', { - str: 12 - }), - str: 12, - value: 80, - last: true - } - }, - rogue: { - 1: { - text: t('headRogue1Text'), - notes: t('headRogue1Notes', { - per: 2 - }), - per: 2, - value: 15 - }, - 2: { - text: t('headRogue2Text'), - notes: t('headRogue2Notes', { - per: 4 - }), - per: 4, - value: 25 - }, - 3: { - text: t('headRogue3Text'), - notes: t('headRogue3Notes', { - per: 6 - }), - per: 6, - value: 40 - }, - 4: { - text: t('headRogue4Text'), - notes: t('headRogue4Notes', { - per: 9 - }), - per: 9, - value: 60 - }, - 5: { - text: t('headRogue5Text'), - notes: t('headRogue5Notes', { - per: 12 - }), - per: 12, - value: 80, - last: true - } - }, - wizard: { - 1: { - text: t('headWizard1Text'), - notes: t('headWizard1Notes', { - per: 2 - }), - per: 2, - value: 15 - }, - 2: { - text: t('headWizard2Text'), - notes: t('headWizard2Notes', { - per: 3 - }), - per: 3, - value: 25 - }, - 3: { - text: t('headWizard3Text'), - notes: t('headWizard3Notes', { - per: 5 - }), - per: 5, - value: 40 - }, - 4: { - text: t('headWizard4Text'), - notes: t('headWizard4Notes', { - per: 7 - }), - per: 7, - value: 60 - }, - 5: { - text: t('headWizard5Text'), - notes: t('headWizard5Notes', { - per: 10 - }), - per: 10, - value: 80, - last: true - } - }, - healer: { - 1: { - text: t('headHealer1Text'), - notes: t('headHealer1Notes', { - int: 2 - }), - int: 2, - value: 15 - }, - 2: { - text: t('headHealer2Text'), - notes: t('headHealer2Notes', { - int: 3 - }), - int: 3, - value: 25 - }, - 3: { - text: t('headHealer3Text'), - notes: t('headHealer3Notes', { - int: 5 - }), - int: 5, - value: 40 - }, - 4: { - text: t('headHealer4Text'), - notes: t('headHealer4Notes', { - int: 7 - }), - int: 7, - value: 60 - }, - 5: { - text: t('headHealer5Text'), - notes: t('headHealer5Notes', { - int: 9 - }), - int: 9, - value: 80, - last: true - } - }, - special: { - 0: { - text: t('headSpecial0Text'), - notes: t('headSpecial0Notes', { - int: 20 - }), - int: 20, - value: 150, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 45; - }) - }, - 1: { - text: t('headSpecial1Text'), - notes: t('headSpecial1Notes', { - attrs: 6 - }), - con: 6, - str: 6, - per: 6, - int: 6, - value: 170, - canOwn: (function(u) { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 3; - }) - }, - 2: { - text: t('headSpecial2Text'), - notes: t('headSpecial2Notes', { - attrs: 25 - }), - int: 25, - str: 25, - value: 200, - canOwn: (function(u) { - var ref; - return (+((ref = u.backer) != null ? ref.tier : void 0) >= 300) || (u.items.gear.owned.head_special_2 != null); - }) - }, - fireCoralCirclet: { - text: t('headSpecialFireCoralCircletText'), - notes: t('headSpecialFireCoralCircletNotes', { - per: 15 - }), - per: 15, - value: 130, - canOwn: (function(u) { - return u.items.gear.owned.head_special_fireCoralCirclet != null; - }) - }, - nye: { - event: EVENTS.winter, - text: t('headSpecialNyeText'), - notes: t('headSpecialNyeNotes'), - value: 0 - }, - yeti: { - event: EVENTS.winter, - specialClass: 'warrior', - text: t('headSpecialYetiText'), - notes: t('headSpecialYetiNotes', { - str: 9 - }), - str: 9, - value: 60 - }, - ski: { - event: EVENTS.winter, - specialClass: 'rogue', - text: t('headSpecialSkiText'), - notes: t('headSpecialSkiNotes', { - per: 9 - }), - per: 9, - value: 60 - }, - candycane: { - event: EVENTS.winter, - specialClass: 'wizard', - text: t('headSpecialCandycaneText'), - notes: t('headSpecialCandycaneNotes', { - per: 7 - }), - per: 7, - value: 60 - }, - snowflake: { - event: EVENTS.winter, - specialClass: 'healer', - text: t('headSpecialSnowflakeText'), - notes: t('headSpecialSnowflakeNotes', { - int: 7 - }), - int: 7, - value: 60 - }, - springRogue: { - event: EVENTS.spring, - specialClass: 'rogue', - text: t('headSpecialSpringRogueText'), - notes: t('headSpecialSpringRogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - springWarrior: { - event: EVENTS.spring, - specialClass: 'warrior', - text: t('headSpecialSpringWarriorText'), - notes: t('headSpecialSpringWarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - springMage: { - event: EVENTS.spring, - specialClass: 'wizard', - text: t('headSpecialSpringMageText'), - notes: t('headSpecialSpringMageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - springHealer: { - event: EVENTS.spring, - specialClass: 'healer', - text: t('headSpecialSpringHealerText'), - notes: t('headSpecialSpringHealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - summerRogue: { - event: EVENTS.summer, - specialClass: 'rogue', - text: t('headSpecialSummerRogueText'), - notes: t('headSpecialSummerRogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - summerWarrior: { - event: EVENTS.summer, - specialClass: 'warrior', - text: t('headSpecialSummerWarriorText'), - notes: t('headSpecialSummerWarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - summerMage: { - event: EVENTS.summer, - specialClass: 'wizard', - text: t('headSpecialSummerMageText'), - notes: t('headSpecialSummerMageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - summerHealer: { - event: EVENTS.summer, - specialClass: 'healer', - text: t('headSpecialSummerHealerText'), - notes: t('headSpecialSummerHealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - fallRogue: { - event: EVENTS.fall, - specialClass: 'rogue', - text: t('headSpecialFallRogueText'), - notes: t('headSpecialFallRogueNotes', { - per: 9 - }), - value: 60, - per: 9, - canBuy: (function() { - return true; - }) - }, - fallWarrior: { - event: EVENTS.fall, - specialClass: 'warrior', - text: t('headSpecialFallWarriorText'), - notes: t('headSpecialFallWarriorNotes', { - str: 9 - }), - value: 60, - str: 9, - canBuy: (function() { - return true; - }) - }, - fallMage: { - event: EVENTS.fall, - specialClass: 'wizard', - text: t('headSpecialFallMageText'), - notes: t('headSpecialFallMageNotes', { - per: 7 - }), - value: 60, - per: 7, - canBuy: (function() { - return true; - }) - }, - fallHealer: { - event: EVENTS.fall, - specialClass: 'healer', - text: t('headSpecialFallHealerText'), - notes: t('headSpecialFallHealerNotes', { - int: 7 - }), - value: 60, - int: 7, - canBuy: (function() { - return true; - }) - }, - winter2015Rogue: { - event: EVENTS.winter2015, - specialClass: 'rogue', - text: t('headSpecialWinter2015RogueText'), - notes: t('headSpecialWinter2015RogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - winter2015Warrior: { - event: EVENTS.winter2015, - specialClass: 'warrior', - text: t('headSpecialWinter2015WarriorText'), - notes: t('headSpecialWinter2015WarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - winter2015Mage: { - event: EVENTS.winter2015, - specialClass: 'wizard', - text: t('headSpecialWinter2015MageText'), - notes: t('headSpecialWinter2015MageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - winter2015Healer: { - event: EVENTS.winter2015, - specialClass: 'healer', - text: t('headSpecialWinter2015HealerText'), - notes: t('headSpecialWinter2015HealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - nye2014: { - text: t('headSpecialNye2014Text'), - notes: t('headSpecialNye2014Notes'), - value: 0, - canOwn: (function(u) { - return u.items.gear.owned.head_special_nye2014 != null; - }) - }, - spring2015Rogue: { - event: EVENTS.spring2015, - specialClass: 'rogue', - text: t('headSpecialSpring2015RogueText'), - notes: t('headSpecialSpring2015RogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - spring2015Warrior: { - event: EVENTS.spring2015, - specialClass: 'warrior', - text: t('headSpecialSpring2015WarriorText'), - notes: t('headSpecialSpring2015WarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - spring2015Mage: { - event: EVENTS.spring2015, - specialClass: 'wizard', - text: t('headSpecialSpring2015MageText'), - notes: t('headSpecialSpring2015MageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - spring2015Healer: { - event: EVENTS.spring2015, - specialClass: 'healer', - text: t('headSpecialSpring2015HealerText'), - notes: t('headSpecialSpring2015HealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - summer2015Rogue: { - event: EVENTS.summer2015, - specialClass: 'rogue', - text: t('headSpecialSummer2015RogueText'), - notes: t('headSpecialSummer2015RogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - summer2015Warrior: { - event: EVENTS.summer2015, - specialClass: 'warrior', - text: t('headSpecialSummer2015WarriorText'), - notes: t('headSpecialSummer2015WarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - summer2015Mage: { - event: EVENTS.summer2015, - specialClass: 'wizard', - text: t('headSpecialSummer2015MageText'), - notes: t('headSpecialSummer2015MageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - summer2015Healer: { - event: EVENTS.summer2015, - specialClass: 'healer', - text: t('headSpecialSummer2015HealerText'), - notes: t('headSpecialSummer2015HealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - fall2015Rogue: { - event: EVENTS.fall2015, - specialClass: 'rogue', - text: t('headSpecialFall2015RogueText'), - notes: t('headSpecialFall2015RogueNotes', { - per: 9 - }), - value: 60, - per: 9 - }, - fall2015Warrior: { - event: EVENTS.fall2015, - specialClass: 'warrior', - text: t('headSpecialFall2015WarriorText'), - notes: t('headSpecialFall2015WarriorNotes', { - str: 9 - }), - value: 60, - str: 9 - }, - fall2015Mage: { - event: EVENTS.fall2015, - specialClass: 'wizard', - text: t('headSpecialFall2015MageText'), - notes: t('headSpecialFall2015MageNotes', { - per: 7 - }), - value: 60, - per: 7 - }, - fall2015Healer: { - event: EVENTS.fall2015, - specialClass: 'healer', - text: t('headSpecialFall2015HealerText'), - notes: t('headSpecialFall2015HealerNotes', { - int: 7 - }), - value: 60, - int: 7 - }, - gaymerx: { - event: EVENTS.gaymerx, - text: t('headSpecialGaymerxText'), - notes: t('headSpecialGaymerxNotes'), - value: 0 - } - }, - mystery: { - 201402: { - text: t('headMystery201402Text'), - notes: t('headMystery201402Notes'), - mystery: '201402', - value: 0 - }, - 201405: { - text: t('headMystery201405Text'), - notes: t('headMystery201405Notes'), - mystery: '201405', - value: 0 - }, - 201406: { - text: t('headMystery201406Text'), - notes: t('headMystery201406Notes'), - mystery: '201406', - value: 0 - }, - 201407: { - text: t('headMystery201407Text'), - notes: t('headMystery201407Notes'), - mystery: '201407', - value: 0 - }, - 201408: { - text: t('headMystery201408Text'), - notes: t('headMystery201408Notes'), - mystery: '201408', - value: 0 - }, - 201411: { - text: t('headMystery201411Text'), - notes: t('headMystery201411Notes'), - mystery: '201411', - value: 0 - }, - 201412: { - text: t('headMystery201412Text'), - notes: t('headMystery201412Notes'), - mystery: '201412', - value: 0 - }, - 201501: { - text: t('headMystery201501Text'), - notes: t('headMystery201501Notes'), - mystery: '201501', - value: 0 - }, - 201505: { - text: t('headMystery201505Text'), - notes: t('headMystery201505Notes'), - mystery: '201505', - value: 0 - }, - 201508: { - text: t('headMystery201508Text'), - notes: t('headMystery201508Notes'), - mystery: '201508', - value: 0 - }, - 201509: { - text: t('headMystery201509Text'), - notes: t('headMystery201509Notes'), - mystery: '201509', - value: 0 - }, - 301404: { - text: t('headMystery301404Text'), - notes: t('headMystery301404Notes'), - mystery: '301404', - value: 0 - }, - 301405: { - text: t('headMystery301405Text'), - notes: t('headMystery301405Notes'), - mystery: '301405', - value: 0 - } - }, - armoire: { - lunarCrown: { - text: t('headArmoireLunarCrownText'), - notes: t('headArmoireLunarCrownNotes', { - con: 7, - per: 7 - }), - value: 100, - con: 7, - per: 7, - set: 'soothing', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_lunarCrown != null; - }) - }, - redHairbow: { - text: t('headArmoireRedHairbowText'), - notes: t('headArmoireRedHairbowNotes', { - str: 5, - int: 5, - con: 5 - }), - value: 100, - str: 5, - int: 5, - con: 5, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_redHairbow != null; - }) - }, - violetFloppyHat: { - text: t('headArmoireVioletFloppyHatText'), - notes: t('headArmoireVioletFloppyHatNotes', { - per: 5, - int: 5, - con: 5 - }), - value: 100, - per: 5, - int: 5, - con: 5, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_violetFloppyHat != null; - }) - }, - gladiatorHelm: { - text: t('headArmoireGladiatorHelmText'), - notes: t('headArmoireGladiatorHelmNotes', { - per: 7, - int: 7 - }), - value: 100, - per: 7, - int: 7, - set: 'gladiator', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_gladiatorHelm != null; - }) - }, - rancherHat: { - text: t('headArmoireRancherHatText'), - notes: t('headArmoireRancherHatNotes', { - str: 5, - per: 5, - int: 5 - }), - value: 100, - str: 5, - per: 5, - int: 5, - set: 'rancher', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_rancherHat != null; - }) - }, - royalCrown: { - text: t('headArmoireRoyalCrownText'), - notes: t('headArmoireRoyalCrownNotes', { - str: 10 - }), - value: 100, - str: 10, - set: 'royal', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_royalCrown != null; - }) - }, - blueHairbow: { - text: t('headArmoireBlueHairbowText'), - notes: t('headArmoireBlueHairbowNotes', { - per: 5, - int: 5, - con: 5 - }), - value: 100, - per: 5, - int: 5, - con: 5, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_blueHairbow != null; - }) - }, - goldenLaurels: { - text: t('headArmoireGoldenLaurelsText'), - notes: t('headArmoireGoldenLaurelsNotes', { - attrs: 8 - }), - value: 100, - per: 8, - con: 8, - set: 'goldenToga', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_goldenLaurels != null; - }) - }, - hornedIronHelm: { - text: t('headArmoireHornedIronHelmText'), - notes: t('headArmoireHornedIronHelmNotes', { - con: 9, - str: 7 - }), - value: 100, - con: 9, - str: 7, - set: 'hornedIron', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_hornedIronHelm != null; - }) - }, - yellowHairbow: { - text: t('headArmoireYellowHairbowText'), - notes: t('headArmoireYellowHairbowNotes', { - attrs: 5 - }), - value: 100, - int: 5, - per: 5, - str: 5, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_yellowHairbow != null; - }) - }, - redFloppyHat: { - text: t('headArmoireRedFloppyHatText'), - notes: t('headArmoireRedFloppyHatNotes', { - attrs: 6 - }), - value: 100, - con: 6, - int: 6, - per: 6, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_redFloppyHat != null; - }) - }, - plagueDoctorHat: { - text: t('headArmoirePlagueDoctorHatText'), - notes: t('headArmoirePlagueDoctorHatNotes', { - int: 5, - str: 6, - con: 5 - }), - value: 100, - int: 5, - str: 6, - con: 5, - set: 'plagueDoctor', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_plagueDoctorHat != null; - }) - }, - blackCat: { - text: t('headArmoireBlackCatText'), - notes: t('headArmoireBlackCatNotes', { - attrs: 9 - }), - value: 100, - int: 9, - per: 9, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_blackCat != null; - }) - }, - orangeCat: { - text: t('headArmoireOrangeCatText'), - notes: t('headArmoireOrangeCatNotes', { - attrs: 9 - }), - value: 100, - con: 9, - str: 9, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_orangeCat != null; - }) - }, - blueFloppyHat: { - text: t('headArmoireBlueFloppyHatText'), - notes: t('headArmoireBlueFloppyHatNotes', { - attrs: 7 - }), - value: 100, - per: 7, - int: 7, - con: 7, - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_blueFloppyHat != null; - }) - }, - shepherdHeaddress: { - text: t('headArmoireShepherdHeaddressText'), - notes: t('headArmoireShepherdHeaddressNotes', { - int: 9 - }), - value: 100, - int: 9, - set: 'shepherd', - canOwn: (function(u) { - return u.items.gear.owned.head_armoire_shepherdHeaddress != null; - }) - } - } - }, - shield: { - base: { - 0: { - text: t('shieldBase0Text'), - notes: t('shieldBase0Notes'), - value: 0 - } - }, - warrior: { - 1: { - text: t('shieldWarrior1Text'), - notes: t('shieldWarrior1Notes', { - con: 2 - }), - con: 2, - value: 20 - }, - 2: { - text: t('shieldWarrior2Text'), - notes: t('shieldWarrior2Notes', { - con: 3 - }), - con: 3, - value: 35 - }, - 3: { - text: t('shieldWarrior3Text'), - notes: t('shieldWarrior3Notes', { - con: 5 - }), - con: 5, - value: 50 - }, - 4: { - text: t('shieldWarrior4Text'), - notes: t('shieldWarrior4Notes', { - con: 7 - }), - con: 7, - value: 70 - }, - 5: { - text: t('shieldWarrior5Text'), - notes: t('shieldWarrior5Notes', { - con: 9 - }), - con: 9, - value: 90, - last: true - } - }, - rogue: { - 0: { - text: t('weaponRogue0Text'), - notes: t('weaponRogue0Notes'), - str: 0, - value: 0 - }, - 1: { - text: t('weaponRogue1Text'), - notes: t('weaponRogue1Notes', { - str: 2 - }), - str: 2, - value: 20 - }, - 2: { - text: t('weaponRogue2Text'), - notes: t('weaponRogue2Notes', { - str: 3 - }), - str: 3, - value: 35 - }, - 3: { - text: t('weaponRogue3Text'), - notes: t('weaponRogue3Notes', { - str: 4 - }), - str: 4, - value: 50 - }, - 4: { - text: t('weaponRogue4Text'), - notes: t('weaponRogue4Notes', { - str: 6 - }), - str: 6, - value: 70 - }, - 5: { - text: t('weaponRogue5Text'), - notes: t('weaponRogue5Notes', { - str: 8 - }), - str: 8, - value: 90 - }, - 6: { - text: t('weaponRogue6Text'), - notes: t('weaponRogue6Notes', { - str: 10 - }), - str: 10, - value: 120, - last: true - } - }, - wizard: {}, - healer: { - 1: { - text: t('shieldHealer1Text'), - notes: t('shieldHealer1Notes', { - con: 2 - }), - con: 2, - value: 20 - }, - 2: { - text: t('shieldHealer2Text'), - notes: t('shieldHealer2Notes', { - con: 4 - }), - con: 4, - value: 35 - }, - 3: { - text: t('shieldHealer3Text'), - notes: t('shieldHealer3Notes', { - con: 6 - }), - con: 6, - value: 50 - }, - 4: { - text: t('shieldHealer4Text'), - notes: t('shieldHealer4Notes', { - con: 9 - }), - con: 9, - value: 70 - }, - 5: { - text: t('shieldHealer5Text'), - notes: t('shieldHealer5Notes', { - con: 12 - }), - con: 12, - value: 90, - last: true - } - }, - special: { - 0: { - text: t('shieldSpecial0Text'), - notes: t('shieldSpecial0Notes', { - per: 20 - }), - per: 20, - value: 150, - canOwn: (function(u) { - var ref; - return +((ref = u.backer) != null ? ref.tier : void 0) >= 45; - }) - }, - 1: { - text: t('shieldSpecial1Text'), - notes: t('shieldSpecial1Notes', { - attrs: 6 - }), - con: 6, - str: 6, - per: 6, - int: 6, - value: 170, - canOwn: (function(u) { - var ref; - return +((ref = u.contributor) != null ? ref.level : void 0) >= 5; - }) - }, - goldenknight: { - text: t('shieldSpecialGoldenknightText'), - notes: t('shieldSpecialGoldenknightNotes', { - attrs: 25 - }), - con: 25, - per: 25, - value: 200, - canOwn: (function(u) { - return u.items.gear.owned.shield_special_goldenknight != null; - }) - }, - moonpearlShield: { - text: t('shieldSpecialMoonpearlShieldText'), - notes: t('shieldSpecialMoonpearlShieldNotes', { - con: 15 - }), - con: 15, - value: 130, - canOwn: (function(u) { - return u.items.gear.owned.shield_special_moonpearlShield != null; - }) - }, - yeti: { - event: EVENTS.winter, - specialClass: 'warrior', - text: t('shieldSpecialYetiText'), - notes: t('shieldSpecialYetiNotes', { - con: 7 - }), - con: 7, - value: 70 - }, - ski: { - event: EVENTS.winter, - specialClass: 'rogue', - text: t('weaponSpecialSkiText'), - notes: t('weaponSpecialSkiNotes', { - str: 8 - }), - str: 8, - value: 90 - }, - snowflake: { - event: EVENTS.winter, - specialClass: 'healer', - text: t('shieldSpecialSnowflakeText'), - notes: t('shieldSpecialSnowflakeNotes', { - con: 9 - }), - con: 9, - value: 70 - }, - springRogue: { - event: EVENTS.spring, - specialClass: 'rogue', - text: t('shieldSpecialSpringRogueText'), - notes: t('shieldSpecialSpringRogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - springWarrior: { - event: EVENTS.spring, - specialClass: 'warrior', - text: t('shieldSpecialSpringWarriorText'), - notes: t('shieldSpecialSpringWarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - springHealer: { - event: EVENTS.spring, - specialClass: 'healer', - text: t('shieldSpecialSpringHealerText'), - notes: t('shieldSpecialSpringHealerNotes', { - con: 9 - }), - value: 70, - con: 9 - }, - summerRogue: { - event: EVENTS.summer, - specialClass: 'rogue', - text: t('shieldSpecialSummerRogueText'), - notes: t('shieldSpecialSummerRogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - summerWarrior: { - event: EVENTS.summer, - specialClass: 'warrior', - text: t('shieldSpecialSummerWarriorText'), - notes: t('shieldSpecialSummerWarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - summerHealer: { - event: EVENTS.summer, - specialClass: 'healer', - text: t('shieldSpecialSummerHealerText'), - notes: t('shieldSpecialSummerHealerNotes', { - con: 9 - }), - value: 70, - con: 9 - }, - fallRogue: { - event: EVENTS.fall, - specialClass: 'rogue', - text: t('shieldSpecialFallRogueText'), - notes: t('shieldSpecialFallRogueNotes', { - str: 8 - }), - value: 80, - str: 8, - canBuy: (function() { - return true; - }) - }, - fallWarrior: { - event: EVENTS.fall, - specialClass: 'warrior', - text: t('shieldSpecialFallWarriorText'), - notes: t('shieldSpecialFallWarriorNotes', { - con: 7 - }), - value: 70, - con: 7, - canBuy: (function() { - return true; - }) - }, - fallHealer: { - event: EVENTS.fall, - specialClass: 'healer', - text: t('shieldSpecialFallHealerText'), - notes: t('shieldSpecialFallHealerNotes', { - con: 9 - }), - value: 70, - con: 9, - canBuy: (function() { - return true; - }) - }, - winter2015Rogue: { - event: EVENTS.winter2015, - specialClass: 'rogue', - text: t('shieldSpecialWinter2015RogueText'), - notes: t('shieldSpecialWinter2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - winter2015Warrior: { - event: EVENTS.winter2015, - specialClass: 'warrior', - text: t('shieldSpecialWinter2015WarriorText'), - notes: t('shieldSpecialWinter2015WarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - winter2015Healer: { - event: EVENTS.winter2015, - specialClass: 'healer', - text: t('shieldSpecialWinter2015HealerText'), - notes: t('shieldSpecialWinter2015HealerNotes', { - con: 9 - }), - value: 70, - con: 9 - }, - spring2015Rogue: { - event: EVENTS.spring2015, - specialClass: 'rogue', - text: t('shieldSpecialSpring2015RogueText'), - notes: t('shieldSpecialSpring2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - spring2015Warrior: { - event: EVENTS.spring2015, - specialClass: 'warrior', - text: t('shieldSpecialSpring2015WarriorText'), - notes: t('shieldSpecialSpring2015WarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - spring2015Healer: { - event: EVENTS.spring2015, - specialClass: 'healer', - text: t('shieldSpecialSpring2015HealerText'), - notes: t('shieldSpecialSpring2015HealerNotes', { - con: 9 - }), - value: 70, - con: 9 - }, - summer2015Rogue: { - event: EVENTS.summer2015, - specialClass: 'rogue', - text: t('shieldSpecialSummer2015RogueText'), - notes: t('shieldSpecialSummer2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - summer2015Warrior: { - event: EVENTS.summer2015, - specialClass: 'warrior', - text: t('shieldSpecialSummer2015WarriorText'), - notes: t('shieldSpecialSummer2015WarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - summer2015Healer: { - event: EVENTS.summer2015, - specialClass: 'healer', - text: t('shieldSpecialSummer2015HealerText'), - notes: t('shieldSpecialSummer2015HealerNotes', { - con: 9 - }), - value: 70, - con: 9 - }, - fall2015Rogue: { - event: EVENTS.fall2015, - specialClass: 'rogue', - text: t('shieldSpecialFall2015RogueText'), - notes: t('shieldSpecialFall2015RogueNotes', { - str: 8 - }), - value: 80, - str: 8 - }, - fall2015Warrior: { - event: EVENTS.fall2015, - specialClass: 'warrior', - text: t('shieldSpecialFall2015WarriorText'), - notes: t('shieldSpecialFall2015WarriorNotes', { - con: 7 - }), - value: 70, - con: 7 - }, - fall2015Healer: { - event: EVENTS.fall2015, - specialClass: 'healer', - text: t('shieldSpecialFall2015HealerText'), - notes: t('shieldSpecialFall2015HealerNotes', { - con: 9 - }), - value: 70, - con: 9 - } - }, - mystery: { - 301405: { - text: t('shieldMystery301405Text'), - notes: t('shieldMystery301405Notes'), - mystery: '301405', - value: 0 - } - }, - armoire: { - gladiatorShield: { - text: t('shieldArmoireGladiatorShieldText'), - notes: t('shieldArmoireGladiatorShieldNotes', { - con: 5, - str: 5 - }), - value: 100, - con: 5, - str: 5, - set: 'gladiator', - canOwn: (function(u) { - return u.items.gear.owned.shield_armoire_gladiatorShield != null; - }) - }, - midnightShield: { - text: t('shieldArmoireMidnightShieldText'), - notes: t('shieldArmoireMidnightShieldNotes', { - con: 10, - str: 2 - }), - value: 100, - con: 10, - str: 2, - canOwn: (function(u) { - return u.items.gear.owned.shield_armoire_midnightShield != null; - }) - }, - royalCane: { - text: t('shieldArmoireRoyalCaneText'), - notes: t('shieldArmoireRoyalCaneNotes', { - attrs: 5 - }), - value: 100, - con: 5, - int: 5, - per: 5, - set: 'royal', - canOwn: (function(u) { - return u.items.gear.owned.shield_armoire_royalCane != null; - }) - } - } - }, - back: { - base: { - 0: { - text: t('backBase0Text'), - notes: t('backBase0Notes'), - value: 0 - } - }, - mystery: { - 201402: { - text: t('backMystery201402Text'), - notes: t('backMystery201402Notes'), - mystery: '201402', - value: 0 - }, - 201404: { - text: t('backMystery201404Text'), - notes: t('backMystery201404Notes'), - mystery: '201404', - value: 0 - }, - 201410: { - text: t('backMystery201410Text'), - notes: t('backMystery201410Notes'), - mystery: '201410', - value: 0 - }, - 201504: { - text: t('backMystery201504Text'), - notes: t('backMystery201504Notes'), - mystery: '201504', - value: 0 - }, - 201507: { - text: t('backMystery201507Text'), - notes: t('backMystery201507Notes'), - mystery: '201507', - value: 0 - }, - 201510: { - text: t('backMystery201510Text'), - notes: t('backMystery201510Notes'), - mystery: '201510', - value: 0 - } - }, - special: { - wondercon_red: { - text: t('backSpecialWonderconRedText'), - notes: t('backSpecialWonderconRedNotes'), - value: 0, - mystery: 'wondercon' - }, - wondercon_black: { - text: t('backSpecialWonderconBlackText'), - notes: t('backSpecialWonderconBlackNotes'), - value: 0, - mystery: 'wondercon' - } - } - }, - body: { - base: { - 0: { - text: t('bodyBase0Text'), - notes: t('bodyBase0Notes'), - value: 0 - } - }, - special: { - wondercon_red: { - text: t('bodySpecialWonderconRedText'), - notes: t('bodySpecialWonderconRedNotes'), - value: 0, - mystery: 'wondercon' - }, - wondercon_gold: { - text: t('bodySpecialWonderconGoldText'), - notes: t('bodySpecialWonderconGoldNotes'), - value: 0, - mystery: 'wondercon' - }, - wondercon_black: { - text: t('bodySpecialWonderconBlackText'), - notes: t('bodySpecialWonderconBlackNotes'), - value: 0, - mystery: 'wondercon' - }, - summerHealer: { - event: EVENTS.summer, - specialClass: 'healer', - text: t('bodySpecialSummerHealerText'), - notes: t('bodySpecialSummerHealerNotes'), - value: 20 - }, - summerMage: { - event: EVENTS.summer, - specialClass: 'wizard', - text: t('bodySpecialSummerMageText'), - notes: t('bodySpecialSummerMageNotes'), - value: 20 - }, - summer2015Healer: { - event: EVENTS.summer2015, - specialClass: 'healer', - text: t('bodySpecialSummer2015HealerText'), - notes: t('bodySpecialSummer2015HealerNotes'), - value: 20 - }, - summer2015Mage: { - event: EVENTS.summer2015, - specialClass: 'wizard', - text: t('bodySpecialSummer2015MageText'), - notes: t('bodySpecialSummer2015MageNotes'), - value: 20 - }, - summer2015Rogue: { - event: EVENTS.summer2015, - specialClass: 'rogue', - text: t('bodySpecialSummer2015RogueText'), - notes: t('bodySpecialSummer2015RogueNotes'), - value: 20 - }, - summer2015Warrior: { - event: EVENTS.summer2015, - specialClass: 'warrior', - text: t('bodySpecialSummer2015WarriorText'), - notes: t('bodySpecialSummer2015WarriorNotes'), - value: 20 - } - } - }, - headAccessory: { - base: { - 0: { - text: t('headAccessoryBase0Text'), - notes: t('headAccessoryBase0Notes'), - value: 0, - last: true - } - }, - special: { - springRogue: { - event: EVENTS.spring, - specialClass: 'rogue', - text: t('headAccessorySpecialSpringRogueText'), - notes: t('headAccessorySpecialSpringRogueNotes'), - value: 20 - }, - springWarrior: { - event: EVENTS.spring, - specialClass: 'warrior', - text: t('headAccessorySpecialSpringWarriorText'), - notes: t('headAccessorySpecialSpringWarriorNotes'), - value: 20 - }, - springMage: { - event: EVENTS.spring, - specialClass: 'wizard', - text: t('headAccessorySpecialSpringMageText'), - notes: t('headAccessorySpecialSpringMageNotes'), - value: 20 - }, - springHealer: { - event: EVENTS.spring, - specialClass: 'healer', - text: t('headAccessorySpecialSpringHealerText'), - notes: t('headAccessorySpecialSpringHealerNotes'), - value: 20 - }, - spring2015Rogue: { - event: EVENTS.spring2015, - specialClass: 'rogue', - text: t('headAccessorySpecialSpring2015RogueText'), - notes: t('headAccessorySpecialSpring2015RogueNotes'), - value: 20 - }, - spring2015Warrior: { - event: EVENTS.spring2015, - specialClass: 'warrior', - text: t('headAccessorySpecialSpring2015WarriorText'), - notes: t('headAccessorySpecialSpring2015WarriorNotes'), - value: 20 - }, - spring2015Mage: { - event: EVENTS.spring2015, - specialClass: 'wizard', - text: t('headAccessorySpecialSpring2015MageText'), - notes: t('headAccessorySpecialSpring2015MageNotes'), - value: 20 - }, - spring2015Healer: { - event: EVENTS.spring2015, - specialClass: 'healer', - text: t('headAccessorySpecialSpring2015HealerText'), - notes: t('headAccessorySpecialSpring2015HealerNotes'), - value: 20 - }, - bearEars: { - gearSet: 'animal', - text: t('headAccessoryBearEarsText'), - notes: t('headAccessoryBearEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_bearEars != null; - }), - canBuy: (function() { - return true; - }) - }, - cactusEars: { - gearSet: 'animal', - text: t('headAccessoryCactusEarsText'), - notes: t('headAccessoryCactusEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_cactusEars != null; - }), - canBuy: (function() { - return true; - }) - }, - foxEars: { - gearSet: 'animal', - text: t('headAccessoryFoxEarsText'), - notes: t('headAccessoryFoxEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_foxEars != null; - }), - canBuy: (function() { - return true; - }) - }, - lionEars: { - gearSet: 'animal', - text: t('headAccessoryLionEarsText'), - notes: t('headAccessoryLionEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_lionEars != null; - }), - canBuy: (function() { - return true; - }) - }, - pandaEars: { - gearSet: 'animal', - text: t('headAccessoryPandaEarsText'), - notes: t('headAccessoryPandaEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_pandaEars != null; - }), - canBuy: (function() { - return true; - }) - }, - pigEars: { - gearSet: 'animal', - text: t('headAccessoryPigEarsText'), - notes: t('headAccessoryPigEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_pigEars != null; - }), - canBuy: (function() { - return true; - }) - }, - tigerEars: { - gearSet: 'animal', - text: t('headAccessoryTigerEarsText'), - notes: t('headAccessoryTigerEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_tigerEars != null; - }), - canBuy: (function() { - return true; - }) - }, - wolfEars: { - gearSet: 'animal', - text: t('headAccessoryWolfEarsText'), - notes: t('headAccessoryWolfEarsNotes'), - value: 20, - canOwn: (function(u) { - return u.items.gear.owned.headAccessory_special_wolfEars != null; - }), - canBuy: (function() { - return true; - }) - } - }, - mystery: { - 201403: { - text: t('headAccessoryMystery201403Text'), - notes: t('headAccessoryMystery201403Notes'), - mystery: '201403', - value: 0 - }, - 201404: { - text: t('headAccessoryMystery201404Text'), - notes: t('headAccessoryMystery201404Notes'), - mystery: '201404', - value: 0 - }, - 201409: { - text: t('headAccessoryMystery201409Text'), - notes: t('headAccessoryMystery201409Notes'), - mystery: '201409', - value: 0 - }, - 201502: { - text: t('headAccessoryMystery201502Text'), - notes: t('headAccessoryMystery201502Notes'), - mystery: '201502', - value: 0 - }, - 201510: { - text: t('headAccessoryMystery201510Text'), - notes: t('headAccessoryMystery201510Notes'), - mystery: '201510', - value: 0 - }, - 301405: { - text: t('headAccessoryMystery301405Text'), - notes: t('headAccessoryMystery301405Notes'), - mystery: '301405', - value: 0 - } - } - }, - eyewear: { - base: { - 0: { - text: t('eyewearBase0Text'), - notes: t('eyewearBase0Notes'), - value: 0, - last: true - } - }, - special: { - wondercon_red: { - text: t('eyewearSpecialWonderconRedText'), - notes: t('eyewearSpecialWonderconRedNotes'), - value: 0, - mystery: 'wondercon' - }, - wondercon_black: { - text: t('eyewearSpecialWonderconBlackText'), - notes: t('eyewearSpecialWonderconBlackNotes'), - value: 0, - mystery: 'wondercon' - }, - summerRogue: { - event: EVENTS.summer, - specialClass: 'rogue', - text: t('eyewearSpecialSummerRogueText'), - notes: t('eyewearSpecialSummerRogueNotes'), - value: 20 - }, - summerWarrior: { - event: EVENTS.summer, - specialClass: 'warrior', - text: t('eyewearSpecialSummerWarriorText'), - notes: t('eyewearSpecialSummerWarriorNotes'), - value: 20 - } - }, - mystery: { - 201503: { - text: t('eyewearMystery201503Text'), - notes: t('eyewearMystery201503Notes'), - mystery: '201503', - value: 0 - }, - 201506: { - text: t('eyewearMystery201506Text'), - notes: t('eyewearMystery201506Notes'), - mystery: '201506', - value: 0 - }, - 201507: { - text: t('eyewearMystery201507Text'), - notes: t('eyewearMystery201507Notes'), - mystery: '201507', - value: 0 - }, - 301404: { - text: t('eyewearMystery301404Text'), - notes: t('eyewearMystery301404Notes'), - mystery: '301404', - value: 0 - }, - 301405: { - text: t('eyewearMystery301405Text'), - notes: t('eyewearMystery301405Notes'), - mystery: '301405', - value: 0 - } - }, - armoire: { - plagueDoctorMask: { - text: t('eyewearArmoirePlagueDoctorMaskText'), - notes: t('eyewearArmoirePlagueDoctorMaskNotes'), - value: 100, - set: 'plagueDoctor', - canOwn: (function(u) { - return u.items.gear.owned.eyewear_armoire_plagueDoctorMask != null; - }) - } - } - } -}; - - -/* - The gear is exported as a tree (defined above), and a flat list (eg, {weapon_healer_1: .., shield_special_0: ...}) since - they are needed in different forms at different points in the app - */ - -api.gear = { - tree: gear, - flat: {} -}; - -_.each(GEAR_TYPES, function(type) { - return _.each(CLASSES.concat(['base', 'special', 'mystery', 'armoire']), function(klass) { - return _.each(gear[type][klass], function(item, i) { - var _canOwn, key; - key = type + "_" + klass + "_" + i; - _.defaults(item, { - type: type, - key: key, - klass: klass, - index: i, - str: 0, - int: 0, - per: 0, - con: 0, - canBuy: (function() { - return false; - }) - }); - if (item.event) { - _canOwn = item.canOwn || (function() { - return true; - }); - item.canOwn = function(u) { - return _canOwn(u) && ((u.items.gear.owned[key] != null) || (moment().isAfter(item.event.start) && moment().isBefore(item.event.end))) && (item.specialClass ? u.stats["class"] === item.specialClass : true); - }; - } - if (item.mystery) { - item.canOwn = function(u) { - return u.items.gear.owned[key] != null; - }; - } - return api.gear.flat[key] = item; - }); - }); -}); - +api.gear = gear; /* Time Traveler Store, mystery sets need their items mapped in diff --git a/common/script/src/content/gear/index.js b/common/script/src/content/gear/index.js deleted file mode 100644 index 2c226511bd..0000000000 --- a/common/script/src/content/gear/index.js +++ /dev/null @@ -1,119 +0,0 @@ -import {each, defaults} from 'lodash'; -import moment from 'moment'; - -//-------------------------------------------------- -// Gear is structured by equipment type, but organized by set. Each set exports the equipment for each type that it has -// -// The class sets have numbered key values, as they are purchased sequentially -// -//