Merge branch 'master' into production

This commit is contained in:
Nick Winter 2015-01-13 13:10:47 -08:00
commit 181842e97b
75 changed files with 1003 additions and 927 deletions

View file

@ -1,344 +1,533 @@
module.exports.thangNames = thangNames =
'Soldier M': [
'Duke'
'William'
'Lucas'
'Marcus'
'Robert'
'Gordon'
'Kirin'
'Theo'
'Roger'
'Roderick'
'Samson'
'Silas'
'Richard'
'Max'
'Jax'
'Dax'
'Mischa'
'Ronald'
'Tyrone'
'Thelonious'
'Miles'
'Bill'
'Kumar'
'Ricardo'
'Maxwell'
'Jonah'
'Leopold'
'Phineas'
'Ferb'
'Felix'
'Ezra'
'Lucian'
'Augustus'
'Ronan'
'Pierce'
'Harry'
'Hirium'
'Hugo'
'Cecil'
'Barron'
'Huburt'
'Sterling'
'Aaron'
'Adam'
'Alan'
'Albert'
'Alistair'
'Cid'
'Remy'
'Stormy'
'Halle'
'Sage'
'Ryan'
'Andrew'
'Anthony'
'Antonio'
'Arthur'
'Augustus'
'Barron'
'Benjamin'
'Bill'
'Billy'
'Bobby'
'Bond'
'Philippian'
'Malcolm'
'Orion'
'Brandon'
'Brian'
'Bruce'
'Carl'
'Carlos'
'Cecil'
'Charles'
'Chris'
'Christopher'
'Cid'
'Clarence'
'Craig'
'Daniel'
'David'
'Dax'
'Dennis'
'Donald'
'Douglas'
'Duke'
'Earl'
'Edward'
'Eric'
'Ernest'
'Eugene'
'Ezra'
'Felix'
'Ferb'
'Frank'
'Fred'
'Gary'
'Gatsby'
'George'
'Gerald'
'Gordon'
'Gregory'
'Halle'
'Harold'
'Harry'
'Henry'
'Hirium'
'Howard'
'Huburt'
'Hugo'
'Jack'
'James'
'Jason'
'Jax'
'Jeffrey'
'Jeremy'
'Jerry'
'Jesse'
'Jimmy'
'Joe'
'John'
'Johnny'
'Jonah'
'Jonathan'
'Jose'
'Joseph'
'Joshua'
'Juan'
'Justin'
'Keith'
'Kenneth'
'Kevin'
'Kirin'
'Kumar'
'Larry'
'Lawrence'
'Leopold'
'Louis'
'Lucas'
'Lucian'
'Malcolm'
'Marcus'
'Mark'
'Martin'
'Matthew'
'Max'
'Maxwell'
'Michael'
'Miles'
'Mischa'
'Nicholas'
'Orion'
'Patrick'
'Paul'
'Peter'
'Philip'
'Philippian'
'Phillip'
'Phineas'
'Pierce'
'Ralph'
'Randy'
'Raymond'
'Remy'
'Ricardo'
'Richard'
'Robert'
'Roderick'
'Roger'
'Ronald'
'Ronan'
'Roy'
'Russell'
'Ryan'
'Sage'
'Samson'
'Samuel'
'Scott'
'Sean'
'Shawn'
'Silas'
'Stephen'
'Sterling'
'Steve'
'Steven'
'Stormy'
'Terry'
'Thelonious'
'Theo'
'Thomas'
'Timothy'
'Todd'
'Tyrone'
'Victor'
'Walter'
'Wayne'
'William'
'Willie'
]
'Soldier F': [
'Sarah'
'Alexandra'
'Holly'
'Trinity'
'Nikita'
'Alana'
'Lana'
'Joan'
'Helga'
'Annie'
'Lukaz'
'Gorgin'
'Coco'
'Buffy'
'Alexandra'
'Alice'
'Allankrita'
'Kay'
'Shannon'
'Scarlett'
'Natasha'
'Amanda'
'Amy'
'Andrea'
'Angela'
'Ann'
'Anna'
'Anne'
'Annie'
'Aphrodite'
'Ashley'
'Barbara'
'Betty'
'Beverly'
'Bonnie'
'Brenda'
'Buffy'
'Carol'
'Carolyn'
'Catherine'
'Cheryl'
'Christina'
'Christine'
'Coco'
'Cynthia'
'Deborah'
'Debra'
'Denise'
'Diana'
'Diane'
'Donna'
'Doris'
'Dorothy'
'Elizabeth'
'Emily'
'Evelyn'
'Frances'
'Gabrielle'
'Gloria'
'Gorgin'
'Heather'
'Helen'
'Helga'
'Holly'
'Imani'
'Irene'
'Jacqueline'
'Jane'
'Janet'
'Janice'
'Jean'
'Jennifer'
'Jessica'
'Joan'
'Joyce'
'Judith'
'Judy'
'Julia'
'Julie'
'Karen'
'Katherine'
'Kathleen'
'Kathryn'
'Kathy'
'Kay'
'Kelly'
'Kimberly'
'Lana'
'Laura'
'Lillian'
'Linda'
'Lisa'
'Lois'
'Lori'
'Louise'
'Lukaz'
'Margaret'
'Maria'
'Marie'
'Marilyn'
'Martha'
'Mary'
'Melissa'
'Michelle'
'Mildred'
'Nancy'
'Natasha'
'Nicole'
'Nikita'
'Norma'
'Pamela'
'Patricia'
'Paula'
'Phyllis'
'Rachel'
'Rebecca'
'Robin'
'Rose'
'Ruby'
'Ruth'
'Sandra'
'Sara'
'Sarah'
'Scarlett'
'Shannon'
'Sharon'
'Shirley'
'Stephanie'
'Susan'
'Tammy'
'Teresa'
'Theresa'
'Tina'
'Trinity'
'Virginia'
'Wanda'
]
'Peasant M': [
'Yorik'
'Hector'
'Thad'
'Victor'
'Lyle'
'Charles'
'Yusef'
'Hingle'
'Azgot'
'Piers'
'Brom'
'Carlton'
'Hershell'
'Gawain'
'Charles'
'Durfkor'
'Paps'
'Fendrel'
'Gawain'
'Hector'
'Hershell'
'Hingle'
'Hodor'
'James'
'Lyle'
'Merek'
'Brom'
'Paps'
'Piers'
'Thad'
'Tybalt'
'Fendrel'
'Victor'
'Yorik'
'Yusef'
]
'Peasant F': [
'Hilda'
'Icey'
'Matilda'
'Mertia'
'Mary'
'Brandy'
'Gwendolin'
'Tabitha'
'Regan'
'Giselle'
'Bernadette'
'Millicent'
'Anastas'
'Thea'
'Ellyn'
'Alexia'
'Alianor'
'Anastas'
'Anastas'
'Bernadette'
'Brandy'
'Cristiana'
'Ellyn'
'Giselle'
'Gwendolin'
'Helena'
'Alexia'
'Hilda'
'Icey'
'Katelyn'
'Mary'
'Matilda'
'Mertia'
'Millicent'
'Regan'
'Rose'
'Tabitha'
'Thea'
]
'Archer F': [
'Phoebe'
'Mira'
'Agapi'
'Cecily'
'Tansy'
'Ivy'
'Gemma'
'Keturah'
'Korra'
'Kim'
'Odette'
'Orly'
'Mercedes'
'Rosaline'
'Vesper'
'Beverly'
'Natalie'
'Clare'
'Rowan'
'Omar'
'Alden'
'Alleria'
'Beatrice'
'Beverly'
'Cairn'
'Cecily'
'Clare'
'Gemma'
'Ivy'
'Jensen'
'Yilitha'
'Mirana'
'Keturah'
'Kim'
'Korra'
'Lina'
'Luna'
'Alleria'
'Mercedes'
'Mira'
'Mirana'
'Natalie'
'Odette'
'Omar'
'Orly'
'Phoebe'
'Rosaline'
'Rowan'
'Tansy'
'Vereesa'
'Beatrice'
'Vesper'
'Yilitha'
]
'Archer M': [
'Arty'
'Brian'
'Cole'
'Roman'
'Hunter'
'Simon'
'Robin'
'Quinn'
'Arty'
'Gimsley'
'Fidsdale'
'Slyvos'
'Logos'
'Denin'
'Lycan'
'Loco'
'Vican'
'Mars'
'Dev'
'Fidsdale'
'Gimsley'
'Hunter'
'Loco'
'Logos'
'Lycan'
'Mars'
'Oliver'
'Quinn'
'Robin'
'Roman'
'Simon'
'Slyvos'
'Vican'
]
'Ogre Munchkin M': [
'Blob'
'Brack'
'Gort'
'Weeb'
'Nerph'
'Kratt'
'Smerk'
'Raack'
'Dobo'
'Draff'
'Zozo'
'Kogpole'
'Leerer'
'Skoggen'
'Treg'
'Goreball'
'Gert'
'Thabt'
'Snortt'
'Goreball'
'Gort'
'Kog'
'Ursa'
'Kogpole'
'Kratt'
'Leerer'
'Nerph'
'Raack'
'Ragtime'
'Blob'
'Skoggen'
'Smerk'
'Snortt'
'Thabt'
'Treg'
'Ursa'
'Weeb'
'Zozo'
]
'Ogre Munchkin F': [
'Dosha'
'Gurzunn'
'Hoot'
'Inski'
'Iyert'
'Lacos'
'Palt'
'Shmeal'
'Gurzunn'
'Yugark'
'Dosha'
'Inski'
'Lacos'
'Upfish'
'Hoot'
'Yugark'
]
'Ogre Peon M': [
'Ba Bo'
'Durbo'
'Kurger'
'Mudwich'
'Ba Bo'
'Zugger'
'Toe Pod'
'Zugger'
]
'Ogre Peon F': [
'Greeke'
'Iblet'
'Lorba'
'Zzoya'
'Yamra'
'Greeke'
'Vapa'
'Yamra'
'Zzoya'
]
'Ogre M': [
'Krogg'
'Dronck'
'Trogdor'
'Kulgor'
'Skrungt'
'Mak Fod'
'Trung'
'Axe Ox'
'Vargutt'
'Dronck'
'Grumus'
'Gug'
'Tarlok'
'Gurulax'
'Krogg'
'Kulgor'
'Mak Fod'
'Mokrul'
'Polifemo'
'Muthyala'
'Polifemo'
'Saltporker'
'Skrungt'
'Tarlok'
'Trogdor'
'Trung'
'Vargutt'
]
'Ogre F': [
'Nareng'
'Morthrug'
'Glonc'
'Marghurk'
'Martha'
'Holkam'
'Alkaz'
'Gar\'ah'
'Glonc'
'Holkam'
'Mak\'rah'
'Marghurk'
'Marnag'
'Martha'
'Morthrug'
'Nareng'
]
'Ogre Brawler': [
'Grul\'thock'
'Boz'
'Trod'
'Muul'
'Grumoll'
'Burobb'
'Arelt'
'Zagurk'
'Zeredd'
'Borgag'
'Boz'
'Burobb'
'Grognar'
'Grul\'thock'
'Grumoll'
'Haggar'
'Ironjaw'
'Tuguro'
'York'
'Muul'
'Ork\'han'
'Roast Beefy'
'Haggar'
'Trod'
'Tuguro'
'York'
'Zagurk'
'Zeredd'
]
'Ogre Fangrider': [
'Arizard'
'Bortrok'
'Doralt'
'Dreek'
'Flarsho'
'Mizzy'
'Secka'
'Arizard'
'Morzgret'
'Doralt'
'Geggret'
'Gurzthrot'
'Mizzy'
'Morzgret'
'Murgark'
'Muttin'
'Bortrok'
'Secka'
]
'Ogre Shaman': [
'Sham\'uk'
'Il\'Du\'duka'
'Ahst\'durante'
'Poult'
'Aolian\'Tak'
'Tuzell'
'Yamizeb'
'Yerong'
'Tuzang'
'Varreth'
'Yugargen'
'Turann'
'Ugoki'
'Zulabar'
'Zo\'Goroth'
'Drun'
'Ghuk'
'Gogg'
'Gom'
'Grek'
'Gror'
'Il\'Du\'duka'
'Makas'
'Mogadishu'
'Nazgareth'
'Gror'
'Grek'
'Gom'
'Gogg'
'Ghuk'
'Makas'
'Drun'
'Poult'
'Sham\'uk'
'Turann'
'Tuzang'
'Tuzell'
'Ugoki'
'Varreth'
'Yamizeb'
'Yerong'
'Yugargen'
'Zo\'Goroth'
'Zulabar'
]
'Ogre Thrower': [
'Kyrgg'
'Drumbaa'
'Durnath'
'Kraggan'
'Gragthar'
'Rasha'
'Moza'
'Vujii'
'Esha'
'Zara'
'Gragthar'
'Hamedi'
'Jinjin'
'Yetu'
'Kraggan'
'Kyrgg'
'Makas'
'Rakash'
'Drumbaa'
'Moza'
'Pinakin'
'Rakash'
'Rasha'
'Vujii'
'Yetu'
'Zara'
]
'Burl': [
'Borlit'
@ -351,87 +540,86 @@ module.exports.thangNames = thangNames =
'Letholdus'
]
'Potion Master': [
'Omar'
'Snake'
'Amaranth'
'Zander'
'Arora'
'Curie'
'Clause'
'Vanders'
'Kanada'
'Artephius'
'Clause'
'Curie'
'Kanada'
'Omar'
'Paracelsus'
'Snake'
'Vanders'
'Zander'
]
'Librarian': [
'Hushbaum'
'Matilda'
'Agnes'
'Agathe'
'Satish'
'Agnes'
'Hushbaum'
'Mariam'
'Matilda'
'Satish'
]
'Equestrian': [
'Mirial'
'Neely'
'Reynaldo'
'Ryder'
'Thoron'
'Mirial'
'Neely'
]
'Knight': [
'Tharin'
'Almeric'
'Alphonse'
'Arthur'
'Galahad'
'Mace'
'Drake'
'Duran'
'Almeric'
'Hunfray'
'Hank'
'Jeph'
'Neville'
'Alphonse'
'Edward'
'Galahad'
'Hank'
'Hunfray'
'Jeph'
'Mace'
'Neville'
'Shug'
'Tharin'
]
'Captain': [
'Anya'
'Brigette'
'Sarre'
'Katana'
'Lily'
'Isa'
'Dimia'
'Jane'
'Lia'
'Hardcastle'
'Leona'
'Jarin'
'Helena'
'Isa'
'Jane'
'Jarin'
'Katana'
'Leona'
'Lia'
'Lily'
'Philips'
'Sarre'
]
'Ninja': [
'Amara'
'Naruto'
'Sasuke'
'Minato'
'Naruto'
'Sakura'
'Sasuke'
]
'Sorcerer': [
'Pender'
'Gandalf'
'Beazer'
'Gandalf'
'Pender'
]
'Samurai': [
'Hattori'
]
'Sand Yak': [
'Ofgar'
'Randall'
'Arngotho'
'Falthror'
'Langthok'
'Ofgar'
'Randall'
]
'Ogre Scout M': [
'Frandar'

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "ثانيّة"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "български език", englishDescri
date: "Дата"
# body: "Body"
version: "Версия"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "български език", englishDescri
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "секунда"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
date: "Data"
body: "Cos"
version: "Versió"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
hard: "Difícil"
player: "Jugador"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "segon"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
date: "Datum"
body: "Tělo"
version: "Verze"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
submitter: "Odesílatel"
submitted: "Odesláno"
commit_msg: "Popisek ukládání"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
hard: "Těžké"
player: "Hráč"
player_level: "Úroveň" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "sekunda"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
# date: "Date"
body: "krop"
version: "version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "ændringsnotat"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
hard: "Svær"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
date: "Datum"
body: "Inhalt"
version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
submitter: "Veröffentlicher"
submitted: "Veröffentlicht"
commit_msg: "Nachricht absenden"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
hard: "Schwer"
player: "Spieler"
player_level: "Spielerlevel" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "Sekunde"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
date: "Datum"
# body: "Body"
version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
hard: "Schwer"
player: "Spieler"
player_level: "Stufe" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "Sekunde"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
date: "Datum"
body: "Inhalt"
version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
submitter: "Übermittler"
submitted: "Übermittelt"
commit_msg: "Übertrage Nachricht"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
hard: "Schwer"
player: "Spieler"
player_level: "Stufe" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "Sekunde"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
# date: "Date"
# body: "Body"
version: "Έκδοση"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
hard: "Δύσκολο"
player: "Παίκτης"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "δευτερόλεπτο"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -197,6 +197,9 @@
hard: "Hard"
player: "Player"
player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
warrior: "Warrior"
ranger: "Ranger"
wizard: "Wizard"
units:
second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
date: "Fecha"
body: "Cuerpo"
version: "Versión"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
submitter: "Emisor"
submitted: "Enviado"
commit_msg: "Enviar mensaje"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Español (América Latina)", englishDescrip
hard: "Difícil"
player: "Jugador"
player_level: "Nivel" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "segundo"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
date: "Fecha"
body: "Cuerpo"
version: "Versión"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Mensaje de Asignación o Commit"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
hard: "Difícil"
player: "Jugador"
player_level: "Nivel" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "segundo"
@ -483,8 +490,8 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
forum_prefix: "Para asuntos públicos, por favor usa "
forum_page: "nuestro foro"
forum_suffix: " en su lugar."
# faq_prefix: "There's also a"
# faq: "FAQ"
faq_prefix: "Tambien existe un"
faq: "FAQ"
subscribe_prefix: "Si necesitas ayuda para resolver el nivel, por favor"
subscribe: "compra una subscripción de CodeCombat"
subscribe_suffix: "y estaremos encantados de ayudarte con tu código."
@ -574,22 +581,22 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
classes:
archmage_title: "Archimago"
archmage_title_description: "(Programador)"
# archmage_summary: "If you are a developer interested in coding educational games, become an archmage to help us build CodeCombat!"
archmage_summary: "¡Si eres un desarrollador interesado en crear juegos educacionales, conviértete en un Archimago y ayuda a la construcción de CodeCombat!"
artisan_title: "Artesano"
artisan_title_description: "(Diseñador de Niveles)"
# artisan_summary: "Build and share levels for you and your friends to play. Become an Artisan to learn the art of teaching others to program."
artisan_summary: "Construye y comparte niveles para que puedas jugar tu y tus amigos. Conviértete en un Artesano para aprender el arte de enseñar a otros a programar."
adventurer_title: "Aventurero"
adventurer_title_description: "(Tester de Niveles)"
# adventurer_summary: "Get our new levels (even our subscriber content) for free one week early and help us work out bugs before our public release."
adventurer_summary: "Consigue una semana antes y gratis, los nuevos niveles (incluso aquellos que requieren subscripción) y ayúdanos a solucionar bugs (fallos) antes de que se publiquen los niveles."
scribe_title: "Escriba"
scribe_title_description: "(Editor de Artículos)"
# scribe_summary: "Good code needs good documentation. Write, edit, and improve the docs read by millions of players across the globe."
scribe_summary: "El buen código requiere de buena documentación. Escribe, edita, y mejora la documentación leída por millones de jugadores a lo largo del globo."
diplomat_title: "Diplomático"
diplomat_title_description: "(Traductor)"
# diplomat_summary: "CodeCombat is localized in 45+ languages by our Diplomats. Help us out and contribute translations."
diplomat_summary: "CodeCombat está traducido a más de 45 idiomas por nuestros Diplomáticos. Ayúdanos realizando traducciones."
ambassador_title: "Embajador"
ambassador_title_description: "(Soporte)"
# ambassador_summary: "Tame our forum users and provide direction for those with questions. Our ambassadors represent CodeCombat to the world."
ambassador_summary: "Amansa a los usuarios de nuestro foro y guía a aquellos que tengan preguntas. Nuestros Embajadores representan a CodeCombat frente al mundo."
editor:
main_title: "Editores de CodeCombat"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
date: "Date"
body: "Corps"
version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
submitter: "Soumissionnaire"
submitted: "Soumis"
commit_msg: "Message de mise à jour"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
hard: "Difficile"
player: "Joueur"
player_level: "Niveau" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "seconde"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr
date: "Data"
body: "Corpo"
version: "Versión"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Mensaxe de Asignación ou Commit"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Galego", englishDescription: "Galician", tr
hard: "Difícil"
player: "Xogador"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "segundo"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
date: "Dátum"
body: "Test"
version: "Verzió"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Üzenet feladása"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
hard: "Nehéz"
player: "Játékos"
player_level: "Szint" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "másodperc"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
date: "Data"
body: "Testo"
version: "Versione"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Messaggio di commit"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
hard: "Difficile"
player: "Giocatore"
player_level: "Livello" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "secondo"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
# date: "Date"
body: "구성"
version: "버전"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "커밋 메세지"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
hard: "상급"
player: "플레이어"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Македонски", englishDescription:
date: "Датум"
body: "Тело"
version: "Верзија"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
submitter: "Подносител"
submitted: "Поднесено"
commit_msg: "Порака за поднесокот"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Македонски", englishDescription:
hard: "Тешко"
player: "Играч"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "секунда"
@ -474,7 +481,7 @@ module.exports = nativeDescription: "Македонски", englishDescription:
new_major_version: "Нова поголема(major) верзија"
cla_prefix: "За да ги зачуваш промените, мораш да го прифатиш нашиот"
cla_url: "CLA"
cla_suffix: "(договор за тие што допринесуваат)." # Short explanation for CLA in macedonian
cla_suffix: "(договор за тие што допринесуваат)."
cla_agree: "ПРИФАЌАМ"
# contact:

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# date: "Date"
# body: "Body"
version: "Versi"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Mesej Commit"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
date: "Dato"
body: "Kropp"
version: "Versjon"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Commit-melding"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
hard: "Vanskelig"
player: "Spiller"
player_level: "Nivå" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "sekund"

View file

@ -4,7 +4,6 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
no_ie: "CodeCombat werkt niet in IE8 of ouder. Sorry!" # Warning that only shows up in IE8 and older
no_mobile: "CodeCombat is niet gemaakt voor mobiele apparaten en werkt misschien niet!" # Warning that shows up on mobile devices
play: "Speel" # The big play button that opens up the campaign view.
try_it: "Probeer het" # Alternate wording for Play button
old_browser: "Uh oh, jouw browser is te oud om CodeCombat te kunnen spelen, Sorry!" # Warning that shows up on really old Firefox/Chrome/Safari
old_browser_suffix: "Je kan toch proberen, maar het zal waarschijnlijk niet werken!"
ipad_browser: "Slecht nieuws: CodeCombat werkt niet op een iPad in de browser. Goed nieuws: onze eigen iPad-app wacht op goedkeuring van Apple."
@ -160,6 +159,10 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
# date: "Date"
body: "Inhoud"
version: "Versie"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Commit Bericht"
@ -194,6 +197,9 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
hard: "Moeilijk"
player: "Speler"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "seconde"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
date: "Datum"
body: "Inhoud"
version: "Versie"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Commit Bericht"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
hard: "Moeilijk"
player: "Speler"
player_level: "Niveau" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "seconde"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
# date: "Date"
body: "Zawartość"
version: "Wersja"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Wiadomość do commitu"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
hard: "Trudny"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription:
date: "Data"
body: "Principal"
version: "Versão"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
submitted: "Enviado"
commit_msg: "Mensagem de Submissão"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Português do Brasil", englishDescription:
hard: "Difícil"
player: "Jogador"
player_level: "Nível" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "segundo"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
date: "Data"
body: "Corpo"
version: "Versão"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
submitter: "Submissor"
submitted: "Submeteu"
commit_msg: "Mensagem da Submissão"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
hard: "Difícil"
player: "Jogador"
player_level: "Nível" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "segundo"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
# date: "Date"
body: "Corp"
version: "Versiune"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Înregistrează Mesajul"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
hard: "Greu"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "secundă"

View file

@ -197,6 +197,9 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
hard: "Сложно"
player: "Игрок"
player_level: "Уровень" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "секунда"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
date: "Datum"
body: "Kropp"
version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Förbindelsemeddelande"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
hard: "Svår"
player: "Spelare"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "sekund"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "วินาที"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
date: "Tarih"
body: "Gövde"
version: "Sürüm"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Gönderme İletisi"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
hard: "Zor"
player: "Oyuncu"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "saniye"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Українська", englishDescription:
date: "Дата"
body: "Тіло"
version: "Версія"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "Доручити повідомлення"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Українська", englishDescription:
hard: "Важкий"
player: "Гравець"
player_level: "Рівень" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "Секунда"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
date: "Ngày"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
hard: "Khó"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: "giây"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
date: "日期"
body: "正文"
version: "版本"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
submitter: "提交者"
submitted: "已提交"
commit_msg: "提交信息"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
hard: "困难"
player: "玩家"
player_level: "等级" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: ""

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
date: "日期"
# body: "Body"
version: "版本"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "送出訊息"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
hard: "困難"
player: "玩家"
player_level: "等級" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: ""

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# date: "Date"
# body: "Body"
# version: "Version"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
# commit_msg: "Commit Message"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# hard: "Hard"
# player: "Player"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
# units:
# second: "second"

View file

@ -159,6 +159,10 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
# date: "Date"
body: "正文"
version: "版本"
# pending: "Pending"
# accepted: "Accepted"
# rejected: "Rejected"
# withdrawn: "Withdrawn"
# submitter: "Submitter"
# submitted: "Submitted"
commit_msg: "提交訊息"
@ -193,6 +197,9 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
hard: "煩難"
player: "來個人"
# player_level: "Level" # Like player level 5, not like level: Dungeons of Kithgard
# warrior: "Warrior"
# ranger: "Ranger"
# wizard: "Wizard"
units:
second: ""

View file

@ -22,7 +22,8 @@ class CocoModel extends Backbone.Model
@usesVersions = @schema()?.properties?.version?
backupKey: ->
if @usesVersions then @id else @id + ':' + @attributes.__v # TODO: doesn't work because __v doesn't actually increment. #2061
if @usesVersions then @id else @id # + ':' + @attributes.__v # TODO: doesn't work because __v doesn't actually increment. #2061
# if fixed, RevertModal will also need the fix
setProjection: (project) ->
return if project is @project

View file

@ -126,6 +126,7 @@ module.exports = class Level extends CocoModel
else if placeholderConfig.voiceRange # Pull in voiceRange
levelThangComponent.config ?= {}
levelThangComponent.config.voiceRange = placeholderConfig.voiceRange
levelThangComponent.config.cooldown = placeholderConfig.cooldown
if isHero
if equips = _.find levelThang.components, {original: LevelComponent.EquipsID}

View file

@ -417,8 +417,10 @@ module.exports = class ThangType extends CocoModel
if i18nKey
name = $.i18n.t 'choose_hero.' + i18nKey
matchedShortName = true
else
name = _.string.humanize name
matchedShortName = false
format = ''
format = 'm' if /(range|radius|distance|vision)$/i.test name
@ -437,7 +439,7 @@ module.exports = class ThangType extends CocoModel
display.push "x#{modifiers.factor}" if modifiers.factor? and modifiers.factor isnt 1
display = display.join ', '
display = display.replace /9001m?/, 'Infinity'
name: name, display: display
name: name, display: display, matchedShortName: matchedShortName
isSilhouettedItem: ->
return console.error "Trying to determine whether #{@get('name')} should be a silhouetted item, but it has no gem cost." unless @get('gems') or @get('tier')

View file

@ -237,6 +237,28 @@ $gameControlMargin: 30px
&:hover
text-decoration: none
.next-level-line
transform-origin: 0 100%
height: 8px
position: absolute
.line
width: calc(100% - 12px - 10px)
float: left
margin-top: 2px
margin-bottom: 2px
height: 4px
background: repeating-linear-gradient(-45deg, #AF9F7D, #DFC89C 5px, #F1EAC0 5px, #AF9F7D 10px)
box-shadow: 0px 0px 4px black
.point
width: 12px
float: left
margin-top: -4px
border-top: 8px solid transparent
border-bottom: 8px solid transparent
border-left: 12px solid lighten(#F1EAC0, 10%)
.game-controls
position: absolute
right: 1%

View file

@ -50,6 +50,7 @@ body:not(.dialogue-view-active)
.spell-palette-popover.popover
right: 45%
min-width: 500px
margin-top: -17%
.spell-palette-popover.popover
// Only those popovers which are our direct children (spell documentation)

View file

@ -71,7 +71,7 @@
position: relative
font-size: 20px
font-weight: bold
.stat-label
position: absolute
left: 54px
@ -82,6 +82,16 @@
left: 150px
color: rgb(42,38,28)
&:not(.short-name)
text-align: center
.stat-label, .stat
position: initial
display: inline-block
.stat-label
margin-right: 8px
.item-description
margin: 15px 15px 0 25px
@ -106,17 +116,3 @@
.unequippable
position: absolute
body:not([lang^='en'])
#item-details-view
#item-details-body
.stat-row
text-align: center
.stat-label, .stat
position: initial
display: inline-block
.stat-label
margin-right: 8px

View file

@ -111,6 +111,29 @@
color: white
//- Hero Type Select
#hero-type-select
position: absolute
top: 102px
left: 177px
background: rgb(26,21,17)
padding: 2px 0
z-index: 3
border-radius: 2px
label
background: rgb(58,47,38)
color: rgb(195,153,124)
border: 2px solid rgb(85,70,57)
margin: 0 2px
&.active
background: rgb(33,28,21)
border: 2px solid rgb(64,53,41)
color: white
//- Item List
.tab-content
@ -120,7 +143,19 @@
width: 669px
height: 507px
overflow: hidden
&.filter-warrior
.item.Ranger, .item.Wizard
display: none
&.filter-ranger
.item.Warrior, .item.Wizard
display: none
&.filter-wizard
.item.Ranger, .item.Warrior
display: none
.tab-pane
height: 100%

View file

@ -1,495 +0,0 @@
@import "app/styles/mixins"
@import "app/styles/bootstrap/variables"
$mapHeight: 1536
$forestMapWidth: 2500
$dungeonMapWidth: 2350
$desertMapWidth: 2350
$desertMapSeaBackground: rgba(113, 186, 208, 1)
$desertMapSeaBackgroundTransparent: rgba(113, 186, 208, 0)
$forestMapSeaBackground: rgba(113, 186, 208, 1)
$forestMapSeaBackgroundTransparent: rgba(113, 186, 208, 0)
$dungeonMapCaveBackground: rgba(68, 54, 45, 1)
$dungeonMapCaveBackgroundTransparent: rgba(68, 54, 45, 0)
$levelDotWidth: 2%
$levelDotHeight: $levelDotWidth * $forestMapWidth / $mapHeight
$levelDotZ: $levelDotHeight * 0.25
$levelDotHoverZ: $levelDotZ * 2
$levelDotShadowWidth: 0.8 * $levelDotWidth
$levelDotShadowHeight: 0.8 * $levelDotHeight
$levelClickRadius: 40px
$gameControlSize: 80px
$gameControlMargin: 30px
+keyframes(levelStartedPulse)
from
@include box-shadow(0px 0px 4px #333)
margin-bottom: -$levelDotHeight / 3 + $levelDotZ
50%
@include box-shadow(0px 0px 22px skyblue)
margin-bottom: -$levelDotHeight / 3 + ($levelDotHoverZ + $levelDotZ) / 2
to
@include box-shadow(0px 0px 4px #333)
margin-bottom: -$levelDotHeight / 3 + $levelDotZ
#world-map-view
width: 100%
height: 100%
position: absolute
.gradient
position: absolute
z-index: 0
&.horizontal-gradient
left: 0
right: 0
height: 3%
&.vertical-gradient
top: 0
bottom: 0
width: 3%
&.top-gradient
top: 0
&.right-gradient
right: 0
&.bottom-gradient
bottom: 0
&.left-gradient
left: 0
&.desert
background-color: $desertMapSeaBackground
.top-gradient
background: linear-gradient(to bottom, $desertMapSeaBackground 0%, $desertMapSeaBackgroundTransparent 100%)
.right-gradient
background: linear-gradient(to left, $desertMapSeaBackground 0%, $desertMapSeaBackgroundTransparent 100%)
.bottom-gradient
background: linear-gradient(to top, $desertMapSeaBackground 0%, $desertMapSeaBackgroundTransparent 100%)
.left-gradient
background: linear-gradient(to right, $desertMapSeaBackground 0%, $desertMapSeaBackgroundTransparent 100%)
&.forest
background-color: $forestMapSeaBackground
.top-gradient
background: linear-gradient(to bottom, $forestMapSeaBackground 0%, $forestMapSeaBackgroundTransparent 100%)
.right-gradient
background: linear-gradient(to left, $forestMapSeaBackground 0%, $forestMapSeaBackgroundTransparent 100%)
.bottom-gradient
background: linear-gradient(to top, $forestMapSeaBackground 0%, $forestMapSeaBackgroundTransparent 100%)
.left-gradient
background: linear-gradient(to right, $forestMapSeaBackground 0%, $forestMapSeaBackgroundTransparent 100%)
&.dungeon
background-color: $dungeonMapCaveBackground
.top-gradient
background: linear-gradient(to bottom, $dungeonMapCaveBackground 0%, $dungeonMapCaveBackgroundTransparent 100%)
.right-gradient
background: linear-gradient(to left, $dungeonMapCaveBackground 0%, $dungeonMapCaveBackgroundTransparent 100%)
.bottom-gradient
background: linear-gradient(to top, $dungeonMapCaveBackground 0%, $dungeonMapCaveBackgroundTransparent 100%)
.left-gradient
background: linear-gradient(to right, $dungeonMapCaveBackground 0%, $dungeonMapCaveBackgroundTransparent 100%)
.map
position: relative
.map-background
width: 100%
height: 100%
background-size: 100%
@include user-select(none)
&.map-dungeon
background-image: url('/images/pages/play/map_dungeon_1920.jpg')
@media screen and ( max-width: 1366px )
background-image: url('/images/pages/play/map_dungeon_1366.jpg')
&.map-forest
background-image: url('/images/pages/play/map_forest_1920.jpg')
@media screen and ( max-width: 1366px )
background-image: url('/images/pages/play/map_forest_1366.jpg')
&.map-desert
background-image: url('/images/pages/play/map_desert_1920.jpg')
@media screen and ( max-width: 1366px )
background-image: url('/images/pages/play/map_desert_1366.jpg')
.level, .level-shadow
position: absolute
border-radius: 100%
-webkit-transform: scaleY(0.75)
transform: scaleY(0.75)
.level
z-index: 2
width: $levelDotWidth
height: $levelDotHeight
margin-left: -0.5 * $levelDotWidth
margin-bottom: -$levelDotHeight / 3 + $levelDotZ
border: 2px groove white
@include transition(margin-bottom 0.5s ease)
&.disabled, &.locked
background-image: url(/images/pages/game-menu/lock.png)
background-size: 75%
background-repeat: no-repeat
background-position: 50% 50%
opacity: 0.7
a
cursor: default
&.next
width: 2 * $levelDotWidth
height: 2 * $levelDotHeight
margin-left: -0.5 * 2 * $levelDotWidth
margin-bottom: -2 * $levelDotHeight / 3 + 2 * $levelDotZ
&.started, &.next
border: 3px solid lightgreen
@include box-shadow(0px 0px 35px skyblue)
// Would be cool, but kills performance, since we have to re-render all the time.
//&:not(:hover)
// -webkit-animation-name: levelStartedPulse
// -webkit-animation-duration: 3s
// -webkit-animation-iteration-count: infinite
&.complete
border: 3px solid gold
@include box-shadow(0px 0px 35px skyblue)
img.banner
position: absolute
bottom: 38%
left: -50%
width: 200%
pointer-events: none
img.star
width: 100%
bottom: 7%
position: absolute
pointer-events: none
.glyphicon-star
position: absolute
color: lightblue
font-size: 21px
left: 1.5px
&.started .glyphicon-star
left: 0.5px
img.hero-portrait
width: 120%
position: absolute
bottom: 75%
left: 75%
border: 1px solid black
border-radius: 100%
background: white
.level-shadow
z-index: 1
width: $levelDotShadowWidth
height: $levelDotShadowHeight
margin-left: -0.5 * $levelDotShadowWidth
margin-bottom: -$levelDotShadowHeight / 3
background-color: black
@include box-shadow(0px 0px 10px black)
@include opacity(0.75)
&.next
width: 2 * $levelDotShadowWidth
height: 2 * $levelDotShadowHeight
margin-left: -0.5 * 2 * $levelDotShadowWidth
margin-bottom: -2 * $levelDotShadowHeight / 3
.level:hover
// TODO: This rotate stops Firefox from flickering, but also disables the scaleY(0.75)
// TODO: The dot looks like it's jumping.
// TODO: -moz-transform: scaleY(0.75) didn't do anything
// TODO: Does not break Chrome's oval.
-moz-transform: rotate(0)
margin-bottom: -$levelDotHeight / 3 + $levelDotHoverZ
@include box-shadow(0px 0px 35px skyblue)
&.next
margin-bottom: -2 * $levelDotHeight / 3 + 2 * $levelDotHoverZ
.level
a
display: block
padding: $levelClickRadius
margin-left: -0.5 * $levelClickRadius
margin-top: -0.5 * $levelClickRadius
border-radius: $levelClickRadius
&.next a
padding: 2 * $levelClickRadius
margin-left: 2 * -0.5 * $levelClickRadius
margin-top: 2 * -0.5 * $levelClickRadius
border-radius: 2 * $levelClickRadius
.tooltip
z-index: 2
.level-info-container
display: none
position: absolute
z-index: 3
padding: 10px
border-width: 16px 12px
// Using modernizr-mixin for compat detection
@include yep(borderimage)
border-style: solid
border-image: url(/images/level/popover_border_background.png) 16 12 fill round
@include nope(borderimage)
background-color: rgb(247, 242, 218)
.level-info.complete h3:after
content: " - Complete!"
color: green
.level-info.started h3:after
content: " - Started"
color: desaturate(green, 50%)
.level-info
h3
margin-top: 0
margin-bottom: 0px
.level-description
color: black
text-shadow: 0 1px 0 white
.campaign-label
text-shadow: 0 1px 0 white
.start-level
display: block
margin: 10px auto 0 auto
width: 200px
.campaign-switch
color: purple
position: absolute
z-index: 1
font-size: 2vw
text-shadow: 0 0 0.3vw white, 0 0 0.3vw white
&:hover
text-decoration: none
&#desert-link
left: 90%
top: 18.5%
transform: scaleY(-1.5) scaleX(1.5)
&#forest-back-link
left: 2%
top: 70.5%
transform: rotate(216deg)
&#forest-link
left: 94.5%
top: 7%
transform: rotate(-35deg)
&#dungeon-link
left: 9%
top: 54.5%
transform: rotate(180deg)
color: fuchsia
.game-controls
position: absolute
right: 1%
bottom: 1%
z-index: 3
.btn
&:not(:first-child)
margin-left: $gameControlMargin
width: $gameControlSize
height: $gameControlSize
background: url(/images/pages/play/menu_icons.png) no-repeat
position: relative
img
position: absolute
left: 0
top: 0
width: 100%
height: 100%
background-size: cover
@include transition(0.5s ease)
@include box-shadow(2px 2px 4px black)
border: 0
border-radius: 12px
// IE9 shows a blank white button with this MS gradient filter in place
filter: none
&:hover
@include box-shadow(0 0 12px #bbf)
&:active
@include box-shadow(0 0 20px white)
&.heroes
background-position: (-1 * $gameControlSize) 0px
&.achievements
background-position: (-2 * $gameControlSize) 0px
&.account
background-position: (-3 * $gameControlSize) 0px
&.settings
background-position: (-4 * $gameControlSize) 0px
&.gems
background-position: (-5 * $gameControlSize) 0px
.tooltip
font-size: 24px
.tooltip-arrow
display: none
.user-status
position: absolute
bottom: 16px
left: 8px
text-align: center
font-size: 24px
color: white
text-shadow: 0px 2px 1px black, 0px -2px 1px black, -2px 0px 1px black, 2px 0px 1px black
height: 32px
line-height: 32px
.user-status-line
position: relative
button.btn.btn-illustrated
margin-left: 10px
min-width: 90px
height: 32px
color: white
.gem, .player-level-icon, .player-hero-icon
position: absolute
top: 1px
#gems-count
margin-left: 40px
.player-level
margin-left: 34px
.player-name
margin-left: 45px
$spriteSheetSize: 30px
.player-level-icon, .player-hero-icon
background: transparent url(/images/pages/play/play-spritesheet.png)
background-size: cover
background-position: (-2 * $spriteSheetSize) 0
display: inline-block
width: 30px
height: 30px
margin: 0px 2px
.player-hero-icon
margin-left: 10px
background-position: (-4 * $spriteSheetSize) 0
&.knight
background-position: (-5 * $spriteSheetSize) 0
&.librarian
background-position: (-6 * $spriteSheetSize) 0
&.ninja
background-position: (-7 * $spriteSheetSize) 0
&.potion-master
background-position: (-8 * $spriteSheetSize) 0
&.samurai
background-position: (-9 * $spriteSheetSize) 0
&.trapper
background-position: (-10 * $spriteSheetSize) 0
&.forest-archer
background-position: (-11 * $spriteSheetSize) 0
&.sorcerer
background-position: (-12 * $spriteSheetSize) 0
#volume-button
position: absolute
left: 1%
top: 1%
padding: 3px 8px
@include opacity(0.75)
&:hover
@include opacity(1.0)
.glyphicon
display: none
font-size: 32px
&.vol-up .glyphicon.glyphicon-volume-up
display: inline-block
&.vol-off .glyphicon.glyphicon-volume-off
display: inline-block
@include opacity(0.50)
&:hover
@include opacity(0.75)
&.vol-down .glyphicon.glyphicon-volume-down
display: inline-block
#campaign-status
position: absolute
left: 0
top: 15px
width: 100%
margin: 0
text-align: center
color: rgb(254,188,68)
font-size: 30px
text-shadow: black 2px 2px 0, black -2px -2px 0, black 2px -2px 0, black -2px 2px 0, black 2px 0px 0, black 0px -2px 0, black -2px 0px 0, black 0px 2px 0
body:not(.ipad) #world-map-view
.level-info-container
pointer-events: none
body.ipad #world-map-view
// iPad only supports up to Kithgard Gates for now.
.campaign-switch
display: none
.old-levels
display: none

View file

@ -24,13 +24,13 @@ block header
a(data-toggle='dropdown')
span.glyphicon-chevron-down.glyphicon
ul.dropdown-menu
li.dropdown-header Actions
li.dropdown-header(data-i18n="common.actions") Actions
li(class=anonymous ? "disabled": "")
a(data-toggle="coco-modal", data-target="modal/RevertModal", data-i18n="editor.revert")#revert-button Revert
li(class=anonymous ? "disabled": "")
a(data-i18n="editor.pop_i18n")#pop-level-i18n-button Populate i18n
li.divider
li.dropdown-header Info
li.dropdown-header(data-i18n="common.info") Info
block outer_content
.outer-content

View file

@ -5,7 +5,7 @@ block modal-header-content
block modal-body-content
if !modelsToSave.models.length
.alert.alert-info No changes
.alert.alert-info(data-i18n="delta.no_changes") No changes
for model in modelsToSave.models
.panel.panel-default
@ -18,4 +18,4 @@ block modal-body-content
block modal-footer
.modal-footer
button(data-dismiss="modal", data-i18n="common.cancel").btn Cancel
button.btn.btn-primary#save-button Save
button.btn.btn-primary(data-i18n="common.save")#save-button Save

View file

@ -44,7 +44,7 @@ div#columns.row
a(href="/play/level/#{level.get('slug') || level.id}?team=#{team.otherTeam}&opponent=#{session.id}")
span(data-i18n="ladder.fight") Fight!
if teamIndex == 1
.btn.btn-sm.load-more-ladder-entries More
.btn.btn-sm.load-more-ladder-entries(data-i18n="editor.more") More
div.column.col-md-4
h4.friends-header(data-i18n="ladder.friends_playing") Friends Playing

View file

@ -13,7 +13,7 @@
img.hr(src="/images/pages/play/modal/hr.png", draggable="false")
for stat in stats
div.stat-row.big-font
div(class="stat-row big-font" + (/^en/.test(me.get('preferredLanguage')) && stat.matchedShortName ? " short-name" : ""))
div.stat-label= stat.name
div.stat= stat.display
img.hr(src="/images/pages/play/modal/hr.png", class=stat.isLast ? "" : "faded", draggable="false")

View file

@ -17,8 +17,21 @@
a.one-line(href="#item-category-" + category, data-toggle="tab")
img.tab-icon(src="/images/pages/play/modal/item-icon-"+category+".png", draggable="false")
span.big-font= itemCategoryNames[index]
#hero-type-select.btn-group(data-toggle="buttons")
label.btn.active#all
input(type="radio", name="hero-class-select", autocomplete="off")
span(data-i18n="editor.level_tab_thangs_all")
label.btn#warrior
input(type="radio", name="hero-class-select", autocomplete="off")
span(data-i18n="general.warrior")
label.btn#ranger
input(type="radio", name="hero-class-select", autocomplete="off")
span(data-i18n="general.ranger")
label.btn#wizard
input(type="radio", name="hero-class-select", autocomplete="off")
span(data-i18n="general.wizard")
.tab-content
for category, index in itemCategories
.tab-pane(id="item-category-" + category, class=index ? "" : "active")
@ -27,7 +40,7 @@
for item in itemCategoryCollections[category].models
- var hidden = item.comingSoon && !me.isAdmin()
- hidden = hidden || (!item.get('gems') && !item.owned)
div(class="item" + (hidden ? " hide" : "") + (item.silhouetted && !item.owned ? " silhouetted" : ""), data-item-id=item.id)
div(class="item " + item.get('heroClass') + (hidden ? " hide" : "") + (item.silhouetted && !item.owned ? " silhouetted" : ""), data-item-id=item.id)
if item.silhouetted && !item.owned
span.glyphicon.glyphicon-lock.bolder
span.glyphicon.glyphicon-lock

View file

@ -1,106 +0,0 @@
.map
.gradient.horizontal-gradient.top-gradient
.gradient.vertical-gradient.right-gradient
.gradient.horizontal-gradient.bottom-gradient
.gradient.vertical-gradient.left-gradient
.map-background(class="map-"+mapType alt="", draggable="false")
- var seenNext = nextLevel;
each level in campaign.levels
if !level.hidden
- var next = level.id == nextLevel || (!seenNext && levelStatusMap[level.id] != "complete" && !level.locked && !level.disabled && !editorMode);
- seenNext = seenNext || next;
div(style="left: #{level.x}%; bottom: #{level.y}%; background-color: #{level.color}", class="level" + (next ? " next" : "") + (level.disabled ? " disabled" : "") + (level.locked ? " locked" : "") + " " + levelStatusMap[level.id] || "", data-level-id=level.id, title=level.name + (level.disabled ? ' (Coming Soon to Adventurers)' : ''))
if level.unlocksHero && !level.unlockedHero
img.hero-portrait(src=level.unlocksHero.img)
a(href=level.type == 'hero' ? '#' : level.disabled ? "/play" : "/play/#{level.levelPath || 'level'}/#{level.id}", disabled=level.disabled, data-level-id=level.id, data-level-path=level.levelPath || 'level', data-level-name=level.name)
if level.requiresSubscription
img.star(src="/images/pages/play/star.png")
if levelStatusMap[level.id] === 'complete'
img.banner(src="/images/pages/play/level-banner-complete.png")
if levelStatusMap[level.id] === 'started'
img.banner(src="/images/pages/play/level-banner-started.png")
div(style="left: #{level.x}%; bottom: #{level.y}%", class="level-shadow" + (next ? " next" : "") + " " + levelStatusMap[level.id] || "")
.level-info-container(data-level-id=level.id, data-level-path=level.levelPath || 'level', data-level-name=level.name)
div(class="level-info " + (levelStatusMap[level.id] || ""))
h3= level.name + (level.disabled ? " (Coming soon!)" : (level.locked ? " (Locked)" : ""))
.level-description= level.description
if level.disabled
p
span.spr(data-i18n="play.awaiting_levels_adventurer_prefix") We release five levels per week.
a.spr(href="/contribute/adventurer")
strong(data-i18n="play.awaiting_levels_adventurer") Sign up as an Adventurer
span.spl(data-i18n="play.awaiting_levels_adventurer_suffix") to be the first to play new levels.
- var playCount = levelPlayCountMap[level.id]
if playCount && playCount.sessions > 20
div
span.spr #{playCount.sessions}
span(data-i18n="play.players") players
span.spr , #{Math.round(playCount.playtime / 3600)}
span(data-i18n="play.hours_played") hours played
.campaign-label(style="color: #{campaign.color}")= campaign.name
if isIPadApp && !level.disabled && !level.locked
button.btn.btn-success.btn-lg.start-level(data-i18n="common.play") Play
if mapType === 'dungeon' && forestIsAvailable
a#forest-link.glyphicon.glyphicon-share-alt.campaign-switch(href="/play/forest", data-i18n="[title]play.campaign_forest")
if mapType === 'forest'
a#dungeon-link.glyphicon.glyphicon-share-alt.campaign-switch(href="/play/dungeon", data-i18n="[title]play.campaign_dungeon")
if desertIsAvailable
a#desert-link.glyphicon.glyphicon-share-alt.campaign-switch(href="/play/desert", data-i18n="[title]play.campaign_desert")
if mapType === 'desert'
a#forest-back-link.glyphicon.glyphicon-share-alt.campaign-switch(href="/play/forest", data-i18n="[title]play.campaign_forest")
.game-controls.header-font
button.btn.items(data-toggle='coco-modal', data-target='play/modal/PlayItemsModal', data-i18n="[title]play.items")
button.btn.heroes(data-toggle='coco-modal', data-target='play/modal/PlayHeroesModal', data-i18n="[title]play.heroes")
button.btn.achievements(data-toggle='coco-modal', data-target='play/modal/PlayAchievementsModal', data-i18n="[title]play.achievements")
if me.get('anonymous') === false || me.get('iosIdentifierForVendor') || isIPadApp
button.btn.gems(data-toggle='coco-modal', data-target='play/modal/BuyGemsModal', data-i18n="[title]play.buy_gems")
if me.isAdmin()
button.btn.account(data-toggle='coco-modal', data-target='play/modal/PlayAccountModal', data-i18n="[title]play.account")
button.btn.settings(data-toggle='coco-modal', data-target='play/modal/PlaySettingsModal', data-i18n="[title]play.settings")
else if me.get('anonymous', true)
button.btn.settings(data-toggle='coco-modal', data-target='core/AuthModal', data-i18n="[title]play.settings")
// Don't show these things, they are bad and take us out of the game. Just wait until the new ones work.
//else
// a.btn.achievements(href="/user/#{me.getSlugOrID()}/stats", data-i18n="[title]play.achievements")
// a.btn.account(href="/user/#{me.getSlugOrID()}", data-i18n="[title]play.account")
// a.btn.settings(href='/account', data-i18n="[title]play.settings")
.user-status.header-font
.user-status-line
span.gem.gem-30
span#gems-count.spr= me.gems()
span.player-level-icon
span.player-level.spr= me.level()
span.player-hero-icon
if me.get('anonymous')
span.player-name.spr(data-i18n="play.anonymous") Anonymous Player
button.btn.btn-illustrated.login-button.btn-warning(data-i18n="login.log_in")
button.btn.btn-illustrated.signup-button.btn-danger(data-i18n="signup.sign_up")
else
span.player-name.spr= me.get('name')
button#logout-button.btn.btn-illustrated.btn-warning(data-i18n="login.log_out") Log Out
if me.isPremium()
button.btn.btn-illustrated.btn-primary(data-i18n="nav.contact", data-toggle="coco-modal", data-target="core/ContactModal") Contact
button.btn.btn-lg.btn-inverse#volume-button(title="Adjust volume")
.glyphicon.glyphicon-volume-off
.glyphicon.glyphicon-volume-down
.glyphicon.glyphicon-volume-up
//h1#campaign-status
// if mapType == 'dungeon'
// span.spr(data-i18n="play.campaign_dungeon")
// else if mapType == 'forest'
// span.spr(data-i18n="play.campaign_forest")
// | -
// if requiresSubscription
// span.spl(data-i18n="play.subscription_required")
// else if mapType == 'dungeon'
// span.spl(data-i18n="play.free")
// else
// span.spl(data-i18n="play.subscribed")

View file

@ -47,7 +47,7 @@ module.exports = class CampaignEditorView extends RootView
@listenToOnce @levels, 'sync', @onFundamentalLoaded
@listenToOnce @achievements, 'sync', @onFundamentalLoaded
_.delay @getCampaignCompletions, 1000
#_.delay @getCampaignCompletions, 1000 # Roughly never finishes loading, nearly kills server.
loadThangTypeNames: ->
# Load the names of the ThangTypes that this level's Treema nodes might want to display.

View file

@ -159,7 +159,7 @@ module.exports = class LevelEditView extends RootView
Backbone.Mediator.publish 'editor:view-switched', {}
startCommittingLevel: (e) ->
@openModalView new SaveLevelModal level: @level, supermodel: @supermodel
@openModalView new SaveLevelModal level: @level, supermodel: @supermodel, buildTime: @levelBuildTime
Backbone.Mediator.publish 'editor:view-switched', {}
startForking: (e) ->
@ -200,4 +200,5 @@ module.exports = class LevelEditView extends RootView
incrementBuildTime: =>
return if application.userIsIdle
@level.set('buildTime', (@level.get('buildTime') ? 0) + 1)
@levelBuildTime ?= @level.get('buildTime')
++@levelBuildTime

View file

@ -20,6 +20,7 @@ module.exports = class SaveLevelModal extends SaveVersionModal
constructor: (options) ->
super options
@level = options.level
@buildTime = options.buildTime
getRenderData: (context={}) ->
context = super(context)
@ -60,6 +61,7 @@ module.exports = class SaveLevelModal extends SaveVersionModal
commitLevel: (e) ->
e.preventDefault()
@level.set 'buildTime', @buildTime
modelsToSave = []
formsToSave = []
for form in @$el.find('form')

View file

@ -146,8 +146,10 @@ module.exports = class CampaignView extends RootView
level.unlockedHero = level.unlocksHero.originalID in (me.get('earned')?.heroes or [])
level.hidden = level.locked
@determineNextLevel context.levels if @sessions.loaded
# put lower levels in last, so in the world map they layer over one another properly.
context.campaign.levels = (_.sortBy context.campaign.levels, (l) -> l.position.y).reverse()
context.levels = (_.sortBy context.levels, (l) -> l.position.y).reverse()
@campaign.renderedLevels = context.levels
context.levelStatusMap = @levelStatusMap
context.levelPlayCountMap = @levelPlayCountMap
@ -155,8 +157,8 @@ module.exports = class CampaignView extends RootView
context.mapType = _.string.slugify @terrain
context.requiresSubscription = @requiresSubscription
context.editorMode = @editorMode
context.adjacentCampaigns = _.filter _.values(_.cloneDeep(@campaign.get('adjacentCampaigns') or {})), (ac) ->
return false if ac.showIfUnlocked and ac.showIfUnlocked not in me.levels()
context.adjacentCampaigns = _.filter _.values(_.cloneDeep(@campaign.get('adjacentCampaigns') or {})), (ac) =>
return false if ac.showIfUnlocked and (ac.showIfUnlocked not in me.levels()) and not @editorMode
ac.name = utils.i18n ac, 'name'
ac.description = utils.i18n ac, 'description'
styles = []
@ -188,6 +190,11 @@ module.exports = class CampaignView extends RootView
@updateHero()
unless window.currentModal or not @fullyRendered
@highlightElement '.level.next', delay: 500, duration: 60000, rotation: 0, sides: ['top']
if @editorMode
for level in @campaign.renderedLevels
for nextLevelOriginal in level.nextLevels
if nextLevel = _.find(@campaign.renderedLevels, original: nextLevelOriginal)
@createLine level.position, nextLevel.position
@applyCampaignStyles()
afterInsert: ->
@ -199,6 +206,29 @@ module.exports = class CampaignView extends RootView
authModal.mode = 'signup'
@openModalView authModal
determineNextLevel: (levels) ->
foundNext = false
for level in levels
level.nextLevels = (reward.level for reward in level.rewards when reward.level)
unless foundNext
for nextLevelOriginal in level.nextLevels
nextLevel = _.find levels, original: nextLevelOriginal
if nextLevel and not nextLevel.locked and @levelStatusMap[nextLevel.slug] isnt 'complete' and (me.isPremium() or not nextLevel.requiresSubscription)
nextLevel.next = true
foundNext = true
break
if not foundNext and levels[0] and not levels[0].locked and @levelStatusMap[levels[0].slug] isnt 'complete'
levels[0].next = true
createLine: (o1, o2) ->
p1 = x: o1.x, y: 0.66 * o1.y + 0.5
p2 = x: o2.x, y: 0.66 * o2.y + 0.5
length = Math.sqrt((p1.x - p2.x) * (p1.x - p2.x) + (p1.y - p2.y) * (p1.y - p2.y))
angle = Math.atan2(p1.y - p2.y, p2.x - p1.x) * 180 / Math.PI
transform = "rotate(#{angle}deg)"
line = $('<div>').appendTo('.map').addClass('next-level-line').css(transform: transform, width: length + '%', left: o1.x + '%', bottom: (o1.y + 0.5) + '%')
line.append($('<div class="line">')).append($('<div class="point">'))
applyCampaignStyles: ->
return unless @campaign.loaded
if (backgrounds = @campaign.get 'backgroundImage') and backgrounds.length
@ -221,7 +251,6 @@ module.exports = class CampaignView extends RootView
return if @editorMode
for session in @sessions.models
@levelStatusMap[session.get('levelID')] = if session.get('state')?.complete then 'complete' else 'started'
# TODO: add level.next = true for the next level they should do
@render()
onClickMap: (e) ->

View file

@ -81,21 +81,25 @@ module.exports = class HeroVictoryModal extends ModalView
@newEarnedAchievements.push ea
@listenToOnce ea, 'sync', ->
if _.all((ea.id for ea in @newEarnedAchievements))
@newEarnedAchievementsResource.markLoaded()
@listenToOnce me, 'sync', ->
@readyToContinue = true
@updateSavingProgressStatus()
me.fetch cache: false unless me.loading
@readyToContinue = true if not @achievements.models.length
# have to use a something resource because addModelResource doesn't handle models being upserted/fetched via POST like we're doing here
@newEarnedAchievementsResource = @supermodel.addSomethingResource('earned achievements') if @newEarnedAchievements.length
getRenderData: ->
c = super()
c.levelName = utils.i18n @level.attributes, 'name'
earnedAchievementMap = _.indexBy(@earnedAchievements?.models or [], (ea) -> ea.get('achievement'))
earnedAchievementMap = _.indexBy(@newEarnedAchievements or [], (ea) -> ea.get('achievement'))
for achievement in @achievements.models
earnedAchievement = earnedAchievementMap[achievement.id]
if earnedAchievement
achievement.completedAWhileAgo = new Date() - Date.parse(earnedAchievement.get('created')) > 30 * 1000
achievement.completedAWhileAgo = new Date().getTime() - Date.parse(earnedAchievement.get('created')) > 30 * 1000
achievement.worth = achievement.get 'worth', true
achievement.gems = achievement.get('rewards')?.gems
c.achievements = @achievements.models.slice()

View file

@ -52,6 +52,7 @@ module.exports = class PlayItemsModal extends ModalView
'click #close-modal': 'hide'
'click': 'onClickedSomewhere'
'update .tab-pane .nano': 'onScrollItemPane'
'click #hero-type-select label': 'onClickHeroTypeSelect'
constructor: (options) ->
@onScrollItemPane = _.throttle(_.bind(@onScrollItemPane, @), 200)
@ -162,6 +163,12 @@ module.exports = class PlayItemsModal extends ModalView
item = @idToItem[itemEl.data('item-id')]
itemEl.find('.item-silhouette, .item-img').attr('src', item.getPortraitURL())
onClickHeroTypeSelect: (e) ->
value = $(e.target).closest('label').attr('id')
tabContent = @$el.find('.tab-content')
tabContent.removeClass('filter-wizard filter-ranger filter-warrior')
tabContent.addClass("filter-#{value}") if value isnt 'all'
onUnlockButtonClicked: (e) ->
e.stopPropagation()
button = $(e.target).closest('button')

View file

@ -9,24 +9,24 @@ module.exports.setup = (app) ->
app.all '/file*', (req, res) ->
return fileGet(req, res) if req.route.method is 'get'
return filePost(req, res) if req.route.method is 'post'
return errors.badMethod(res, ['GET', 'POST'])
return fileDelete(req, res) if req.route.method is 'delete'
return errors.badMethod(res, ['GET', 'POST', 'DELETE'])
fileDelete = (req, res) ->
return errors.forbidden(res) unless req.user
query = parsePathIntoQuery(req.path)
return errors.badInput(res) if not query.filename
Grid.gfs.collection('media').findOne query, (err, filedata) =>
return errors.notFound(res) if not filedata
return errors.forbidden(res) unless userCanEditFile(req.user, filedata)
Grid.gfs.remove {_id: filedata._id, root: 'media'}, (err) ->
return errors.serverError(res) if err
return res.end()
fileGet = (req, res) ->
path = req.path[6..]
path = decodeURI path
isFolder = false
try
objectId = mongoose.Types.ObjectId(path)
query = objectId
catch e
path = path.split('/')
filename = path[path.length-1]
path = path[...path.length-1].join('/')
query =
'metadata.path': path
if filename then query.filename = filename else isFolder = true
query = parsePathIntoQuery(req.path)
if isFolder
if not query.filename # it's a folder, return folder contents
Grid.gfs.collection('media').find query, (err, cursor) ->
return errors.serverError(res) if err
results = cursor.toArray (err, results) ->
@ -35,7 +35,7 @@ fileGet = (req, res) ->
res.send(results)
res.end()
else
else # it's a single file
Grid.gfs.collection('media').findOne query, (err, filedata) =>
return errors.notFound(res) if not filedata
readstream = Grid.gfs.createReadStream({_id: filedata._id, root: 'media'})
@ -48,6 +48,22 @@ fileGet = (req, res) ->
res.setHeader('Cache-Control', 'public')
readstream.pipe(res)
handleStreamEnd(res, res)
parsePathIntoQuery = (path) ->
path = path[6..]
path = decodeURI path
try
objectId = mongoose.Types.ObjectId(path)
query = objectId
catch e
path = path.split('/')
filename = path[path.length-1]
path = path[...path.length-1].join('/')
query =
'metadata.path': path
query.filename = filename if filename
query
postFileSchema =
type: 'object'

View file

@ -224,8 +224,10 @@ UserSchema.methods.saveActiveUser = (event, done=null) ->
done?()
UserSchema.pre('save', (next) ->
@set('emailLower', @get('email')?.toLowerCase())
@set('nameLower', @get('name')?.toLowerCase())
if email = @get('email')
@set('emailLower', email.toLowerCase())
if name = @get('name')
@set('nameLower', name.toLowerCase())
pwd = @get('password')
if @get('password')
@set('passwordHash', User.hashPassword(pwd))
@ -265,6 +267,8 @@ UserSchema.statics.editableProperties = [
UserSchema.plugin plugins.NamedPlugin
UserSchema.index({'stripe.subscriptionID':1}, {unique: true, sparse: true})
UserSchema.index({'emailLower':1}, {unique: true, sparse: true, name: 'emailLower_1'})
UserSchema.index({'nameLower':1}, {unique: true, sparse: true, name: 'nameLower_1'})
module.exports = User = mongoose.model('User', UserSchema)