mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 07:37:25 +01:00
Merge branch 'develop' into classes
Conflicts: public/css/index.styl src/models/user.js views/options/profile.jade views/shared/header/avatar.jade views/shared/tasks/lists.jade views/shared/tasks/task.jade
This commit is contained in:
14
CONTRIBUTING.md
Normal file
14
CONTRIBUTING.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# Reporting Bugs
|
||||
|
||||
1. Go to the [issue queue](https://github.com/lefnire/habitrpg/issues?state=open), and
|
||||
1. check first that a ticket doesn't already exist, using the [search bar](https://www.evernote.com/shard/s17/sh/4a159680-a709-4949-9805-d849bc124c1d/6276f24fb1dce8985eec7d5b021edd9c).
|
||||
1. If one hasn't been submitted, [create a new ticket](https://github.com/lefnire/habitrpg/issues/new). If at all possible, please include your browser, [user ID](http://habitrpg.wikia.com/wiki/API#UserID) and **most importantly** any JavaScript errors that may be being thrown (see [Chrome Console instructions](https://developers.google.com/chrome-developer-tools/docs/console#opening_the_console) for how to do that).
|
||||
|
||||
# Requesting a feature
|
||||
|
||||
HabitRPG uses [Trello](https://trello.com/b/EpoYEYod/habitrpg) to track feature requests. [Read more](https://trello.com/c/8gzGlle8/142-how-to-submit-a-new-request).
|
||||
|
||||
# Contributing Code
|
||||
|
||||
* See [Contributing to HabitRPG](http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG)
|
||||
* See [Tips](http://habitrpg.wikia.com/wiki/Tips)
|
||||
@@ -99,6 +99,7 @@ module.exports = function(grunt) {
|
||||
});
|
||||
});
|
||||
grunt.config.set('uglify.build.files', uglify);
|
||||
grunt.config.set('uglify.build.options', {compress: false})
|
||||
grunt.config.set('cssmin.build.files', cssmin);
|
||||
});
|
||||
|
||||
|
||||
15
bower.json
15
bower.json
@@ -17,14 +17,15 @@
|
||||
"jquery": "~2.0.3",
|
||||
"jquery.cookie": "~1.4.0",
|
||||
"jquery-ui": "~1.10.3",
|
||||
"angular": "1.2.0-rc.3",
|
||||
"angular-sanitize": "1.2.0-rc.3",
|
||||
"angular-resource": "1.2.0-rc.3",
|
||||
"angular": "~1.2.1",
|
||||
"angular-sanitize": "~1.2.1",
|
||||
"angular-resource": "~1.2.1",
|
||||
"angular-ui": "~0.4.0",
|
||||
"angular-ui-utils": "~0.0.4",
|
||||
"angular-bootstrap": "~0.5.0",
|
||||
"angular-ui-router": "ca3b4777a603df8f86cfd653c8f6c38b2ae05d89",
|
||||
"angular-loading-bar": "~0.0.5",
|
||||
"angular-bindonce": "~0.2.1",
|
||||
"bootstrap": "v2.3.2",
|
||||
"bootstrap-datepicker": "~1.2.0",
|
||||
"bootstrap-tour": "0.5.0",
|
||||
@@ -34,14 +35,16 @@
|
||||
"github-buttons": "git://github.com/mdo/github-buttons.git",
|
||||
"marked": "~0.2.9",
|
||||
"JavaScriptButtons": "git://github.com/paypal/JavaScriptButtons.git#master",
|
||||
"Angular-At-Directive": "git://github.com/snicker/Angular-At-Directive#master"
|
||||
"Angular-At-Directive": "git://github.com/snicker/Angular-At-Directive#master",
|
||||
"js-emoji": "git://github.com/snicker/js-emoji#master",
|
||||
"gemoji": "git://github.com/github/gemoji"
|
||||
},
|
||||
"resolutions": {
|
||||
"jquery": "~2.0.3",
|
||||
"bootstrap": "v2.3.2",
|
||||
"angular": "1.2.0-rc.3"
|
||||
"angular": "~1.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"angular-mocks": "1.2.0-rc.3"
|
||||
"angular-mocks": "~1.2.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@ module.exports = function(config) {
|
||||
'public/bower_components/angular-resource/angular-resource.min.js',
|
||||
'public/bower_components/angular-mocks/angular-mocks.js',
|
||||
'public/bower_components/marked/lib/marked.js',
|
||||
'public/bower_components/js-emoji/emoji.js',
|
||||
'public/bower_components/habitrpg-shared/dist/habitrpg-shared.js',
|
||||
'public/js/*.js',
|
||||
'public/js/**/*.js',
|
||||
|
||||
@@ -130,6 +130,10 @@
|
||||
"hair": "Hair",
|
||||
"skin": "Skin",
|
||||
"clothing" : "Clothing",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Photo Url",
|
||||
"fullName": "Full Name",
|
||||
"blurb": "Blurb",
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"hair": "Hair",
|
||||
"skin": "Skin",
|
||||
"clothing" : "Clothing",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Photo Url",
|
||||
"fullName": "Full Name",
|
||||
"blurb": "Blurb",
|
||||
|
||||
@@ -132,6 +132,10 @@
|
||||
"hair": "Hair",
|
||||
"skin": "Skin",
|
||||
"clothing" : "Clothing",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Photo Url",
|
||||
"fullName": "Full Name",
|
||||
"blurb": "Blurb",
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"hair": "Haare",
|
||||
"skin": "Haut",
|
||||
"clothing" : "Kleidung",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Bild-Url",
|
||||
"fullName": "Name",
|
||||
"blurb": "über dich",
|
||||
|
||||
@@ -135,6 +135,10 @@
|
||||
"hair": "Μαλλιά",
|
||||
"skin": "Δέρμα",
|
||||
"clothing" : "Ρούχα",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Url Φωτογραφίας",
|
||||
"fullName": "Πλήρες Όνομα",
|
||||
"blurb": "Κείμενο",
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
"reward1" : "1 Episode of Game of Thrones",
|
||||
"reward1comment": "-- Rewards: Treat Yourself! -- As you complete goals, you earn gold to buy rewards. Buy them liberally - rewards are integral in forming good habits.",
|
||||
"reward2" : "Cake",
|
||||
"reward2comment" : "But only buy if you have enough gold - you lose HP otherwise.",
|
||||
"reward2comment" : "But only buy if you have enough gold!",
|
||||
|
||||
"_commentdefaulttags" : "DEFAULT TAGS",
|
||||
"morning" : "morning",
|
||||
@@ -104,7 +104,7 @@
|
||||
"S": "S",
|
||||
"todos": "To-Dos",
|
||||
"Todos": "To-Dos",
|
||||
"newTodo": "New Todo",
|
||||
"newTodo": "New To-Do",
|
||||
"dueDate": "Due Date",
|
||||
"remaining": "Remaining",
|
||||
"complete": "Complete",
|
||||
@@ -124,7 +124,7 @@
|
||||
"dropsEnabled" : "Drops Enabled!",
|
||||
"dropsEnabledText1" : "You've unlocked the Drop System! Now when you complete tasks, you have a small chance of finding an item. And guess what, you just found a",
|
||||
"dropsEnabledText2" : "egg",
|
||||
"itemDropped" : "An items has dropped",
|
||||
"itemDropped" : "An item has dropped",
|
||||
|
||||
|
||||
|
||||
@@ -137,6 +137,10 @@
|
||||
"hair": "Hair",
|
||||
"skin": "Skin",
|
||||
"clothing" : "Clothing",
|
||||
"showWeapon": "Show Weapon",
|
||||
"other" : "Other",
|
||||
"showShield": "Show Shield",
|
||||
"showArmor": "Show Armor",
|
||||
"photoUrl": "Photo Url",
|
||||
"fullName": "Full Name",
|
||||
"blurb": "Blurb",
|
||||
@@ -353,7 +357,7 @@
|
||||
|
||||
"_commentdeathstuff" : "DEATH",
|
||||
"deathTitle" : "You Died!",
|
||||
"deathText" : "You've lost your GP, 1 level and 1 gear piece. Be sure to complete your dailies to prevent this from happening again!",
|
||||
"deathText" : "You've lost your Gold, 1 Level, and 1 piece of Equipment. Be sure to complete your Dailies to prevent this from happening again!",
|
||||
|
||||
"_commentgems" : "GEMS",
|
||||
"gems" : "Gems",
|
||||
@@ -375,7 +379,7 @@
|
||||
"legalTerms" : "Terms",
|
||||
"footerCommunity" : "Community",
|
||||
"communityBugs" : "Submit Bugs",
|
||||
"communityFeatures" : "Request Feautres",
|
||||
"communityFeatures" : "Request Features",
|
||||
"communityExtensions" : "Add-ons / Extensions",
|
||||
"communityForum" : "Community Forum",
|
||||
"footerSocial" : "Social",
|
||||
|
||||
@@ -3,49 +3,49 @@
|
||||
|
||||
|
||||
"_commentfrontpage":"HABITRPG PORTADA",
|
||||
"synopsis" : "Un programa para construir hábitos que convierte tu vida en un Juego de Rol. Aumenta de nivel a medida que triunfas, pierde HP al fracasar, gana dinero para comprar armas y armaduras.",
|
||||
"synopsis" : "Un programa para construir hábitos que convierte tu vida en un juego de rol. Aumenta de nivel a medida que triunfas, pierde HP al fracasar, gana dinero para comprar armas y armaduras.",
|
||||
"playButton" : "Jugar",
|
||||
|
||||
|
||||
|
||||
"_commenttut": "TUTORIAL/VISITA",
|
||||
"endTourButton": "Finalizar visita",
|
||||
"endTourButton": "Finalizar tour",
|
||||
"nextButton" : "Siguiente",
|
||||
"prevButton" : "Volver",
|
||||
"tour1Title" : "Bienvenido a HabitRPG",
|
||||
"tour1Text" : "Bienvenido a HabitRPG, un seguidor de hábitos que convierte tus objetivos en un Juego de Rol.",
|
||||
"tour1Text" : "Bienvenido a HabitRPG, un seguidor de hábitos que convierte tus objetivos en un juego de rol.",
|
||||
"tour2Title" : "Hábitos",
|
||||
"tour2Text" : "Los hábitos son objetivos buenos o malos de los que estás pendiente constantemente.",
|
||||
"tour3Title" : "Diarios",
|
||||
"tour3Text" : "Los diarios son objetivos que quieres completar una vez al día.",
|
||||
"tour4Title" : "Quehaceres",
|
||||
"tour4Text" : "Los quehaceres son objetivos únicos que deben ser completados en algún momento.",
|
||||
"tour5Title" : "Premios",
|
||||
"tour5Text" : "Al completar objetivos, ganas dinero para comprar premios. Cómpralos generosamente - las recompensas son fundamentales para formar buenos hábitos. ",
|
||||
"tour5Title" : "Recompensas",
|
||||
"tour5Text" : "Al completar objetivos, ganas dinero para comprar recompensas. Cómpralas generosamente - las recompensas son fundamentales para formar buenos hábitos. ",
|
||||
"tour6Title" : "Sitúa el cursor sobre los comentarios",
|
||||
"tour6Text" : "Diferentes tipos de tareas tienen propiedades especiales. Mueve el cursor sobre el comentario de cada tarea para más información. Cuando estés listo para empezar, borra las tareas existentes y agrega las tuyas.",
|
||||
|
||||
|
||||
|
||||
"_commentdefaulttasks":"TAREAS POR DEFECTO",
|
||||
"habit1" : "1h de Trabajo Productivo",
|
||||
"habit1comment": "-- Hábitos: Sigue Constantemente -- Para algunos Hábitos, sólo tiene sentido *ganar* puntos (como éste)",
|
||||
"habit2" : "Comer Comida Basura",
|
||||
"habit1" : "1h de trabajo productivo",
|
||||
"habit1comment": "-- Hábitos: Sigue Constantemente -- Para algunos hábitos, sólo tiene sentido *ganar* puntos (como éste)",
|
||||
"habit2" : "Comer comida basura",
|
||||
"habit2comment" : "Para otros, sólo tiene sentido *perder* puntos",
|
||||
"habit3" : "Usar las Escaleras",
|
||||
"habit3" : "Usar las escaleras",
|
||||
"habit3comment" : "Para el resto, tanto + como - tiene sentido (escaleras = ganar, elevador = perder)",
|
||||
"daily1" : "1h de Proyecto Personal",
|
||||
"daily1comment" : "-- Diarios: Completa Una Vez al Día -- Al final de cada día, los Diarios no cumplidos te descuentan puntos.",
|
||||
"daily1" : "1h de proyecto personal",
|
||||
"daily1comment" : "-- Diarios: Completa Una Vez al Día -- Al final de cada día, los diarios sin completar te descuentan puntos.",
|
||||
"daily2" : "Hacer Ejercicio",
|
||||
"daily2comment" : "Si te está yendo bien, se vuelven verdes y son menos valiosos (experiencia, oro) y menos dañinos (PV). Esto significa que puedes darte un descanso de ellos por un rato.",
|
||||
"daily3" : "45m de Lectura",
|
||||
"daily3comment" : "Pero si te está yendo mal, se vuelven rojos. Peor te va, más valiosos (experiencia, oro) y más dañinos (PV) se vuelven estos objetivos. Esto te alienta a enfocarte en tus fallas, los rojos.",
|
||||
"todo1" : "Llamar a Mamá",
|
||||
"todo1comment" : "-- Quehaceres: Completa en Algún Momento -- Los Quehaceres no cumplidos no te harán daño, pero se volverán más valiosos con el tiempo. Esto te alentará a completar los Quehaceres obsoletos.",
|
||||
"reward1" : "1 Episodio de Game of Thrones",
|
||||
"reward1comment": "-- Premios: Hazte Un Obsequio! -- Al completar objetivos, ganas dinero para comprar premios. Cómpralos generosamente - las recompensas son fundamentales para formar buenos hábitos.",
|
||||
"daily2comment" : "Si te está yendo bien, se vuelven verdes y son menos valiosos (experiencia, oro) y menos dañinos (HP). Esto significa que puedes darte un descanso de ellos por un rato.",
|
||||
"daily3" : "45m de lectura",
|
||||
"daily3comment" : "Pero si te está yendo mal, se vuelven rojos. Peor te va, más valiosos (experiencia, oro) y más dañinos (HP) se vuelven estos objetivos. Esto te alienta a enfocarte en tus fallas, los rojos.",
|
||||
"todo1" : "Llamar a mamá",
|
||||
"todo1comment" : "-- Quehaceres: Completa en Algún Momento -- Los quehaceres sin completar no te harán daño, pero se volverán más valiosos con el tiempo. Esto te alentará a completar los quehaceres obsoletos.",
|
||||
"reward1" : "1 Episodio de Juego de Tronos",
|
||||
"reward1comment": "-- Recompensas: Hazte Un Obsequio! -- Al completar objetivos, ganas dinero para comprar recompensas. Cómpralas generosamente - las recompensas son fundamentales para formar buenos hábitos.",
|
||||
"reward2" : "Torta",
|
||||
"reward2comment" : "Pero sólo compra si tienes suficiente oro - de lo contrario perderás PV.",
|
||||
"reward2comment" : "Pero sólo compra si tienes suficiente oro - de lo contrario perderás HP.",
|
||||
|
||||
"_commentdefaulttags" : "ETIQUETA DE DEFECTO",
|
||||
"morning" : "mañana",
|
||||
@@ -53,7 +53,7 @@
|
||||
"evening" : "noche",
|
||||
|
||||
"_commenthead": "ENCABEZAMIENTO",
|
||||
"health": "Vida",
|
||||
"health": "Salud",
|
||||
"experience": "Experiencia",
|
||||
"history": "Historial",
|
||||
"anonymous": "Anónimo",
|
||||
@@ -81,7 +81,7 @@
|
||||
"advancedOptions": "Opciones Avanzadas",
|
||||
"difficulty": "Dificultad",
|
||||
"difficultyHelpTitle": "¿Qué tan difícil es esta tarea?",
|
||||
"difficultyHelpContent": "Esto multiplica su valor respecto al puntaje. Úsalo con moderación y depende más bien de nuestros algoritmos orgánicos de ajuste de valor. Pero algunas tareas son extremadamente más valiosas (Escribir una Tesis vs. Lavarme los Dientes). Haz clic para más información.",
|
||||
"difficultyHelpContent": "Esto multiplica su valor respecto al puntaje. Úsalo con moderación; en lugar de eso depende de nuestros algoritmos orgánicos de ajuste de valor. Pero algunas tareas son extremadamente más valiosas (Escribir una tesis vs. Lavarme los dientes). Haz clic para más información.",
|
||||
"easy": "Fácil",
|
||||
"medium": "Medio",
|
||||
"hard": "Difícil",
|
||||
@@ -103,10 +103,10 @@
|
||||
"dueDate": "Fecha de Vencimiento",
|
||||
"remaining": "Pendientes",
|
||||
"complete": "Completos",
|
||||
"rewards": "Premios",
|
||||
"rewards": "Recompensas",
|
||||
"gold": "Oro",
|
||||
"silver": "Plata",
|
||||
"newReward": "Nuevo Premio",
|
||||
"newReward": "Nueva Recompensa",
|
||||
"price": "Precio",
|
||||
"tags" : "Etiquetas",
|
||||
"editTags" : "Editar Etiquetas",
|
||||
@@ -115,8 +115,8 @@
|
||||
|
||||
|
||||
"_commentdrops" : "SYSTEMA DE DROPS",
|
||||
"dropsEnabled" : "¡Drops Habilitados!",
|
||||
"dropsEnabledText1" : "¡Has activado el Sistema de drops! Ahora cuando completas tareas, tienes una pequeña azar de encontrar un ítem. Y adivina qué, has encontrado un",
|
||||
"dropsEnabled" : "¡Caídas Habilitadas!",
|
||||
"dropsEnabledText1" : "¡Has desbloqueado el Sistema de Caídas! Ahora cuando completas tareas, tienes una pequeña chance de encontrar un ítem. Y adivina qué, has encontrado un",
|
||||
"dropsEnabledText2" : "huevo",
|
||||
"itemDropped" : "Ha caído un ítem",
|
||||
|
||||
@@ -131,7 +131,11 @@
|
||||
"hair": "Cabello",
|
||||
"skin": "Piel",
|
||||
"clothing" : "Ropa",
|
||||
"photoUrl": "Url de la Imagen",
|
||||
"showArmor": "Mostrar Armadura",
|
||||
"other": "Más",
|
||||
"showWeapon": "Mostrar Arma",
|
||||
"showShield": "Mostrar Escudo",
|
||||
"photoUrl": "Url de Imagen",
|
||||
"fullName": "Nombre Completo",
|
||||
"blurb": "Descripción",
|
||||
"websites": "Sitios Web",
|
||||
@@ -151,10 +155,10 @@
|
||||
|
||||
"party": "Grupo",
|
||||
"createAParty":"Crear un Grupo",
|
||||
"noPartyText": "No estás en un grupo. Puedes crear uno e invitar amigos, o si te quieres incorporarse a un grupo existente, haz que ingresen:",
|
||||
"noPartyText": "No estás en un grupo. Puedes crear uno e invitar amigos, o si te quieres unir a un grupo existente, haz que ingresen:",
|
||||
"partyName": "Nombre del Grupo",
|
||||
"create":"Crear",
|
||||
"userId":"Id del Usuario",
|
||||
"userId":"Id de Usuario",
|
||||
"invite":"Invitar",
|
||||
"leave": "Salir",
|
||||
"invitedTo" : "Estás Invitado A",
|
||||
@@ -177,12 +181,12 @@
|
||||
"rarePets": "Mascotas Raras",
|
||||
|
||||
"tavern": "Taberna",
|
||||
"restButton":"Descansar En La Posada",
|
||||
"checkoutButton": "Salir De La Posada",
|
||||
"tavernTalkTitle":"Charla de Taberna & Busqueda de grupos",
|
||||
"tavernRestingInfo" : "Mientras descansas, tus Diarios son guardados y no son afectados por el cambio de día. Salgas mañana de la posada o en una semana, continuarás en el mismo estado en que estabas cuando entraste.",
|
||||
"restButton":"Descansar en la Posada",
|
||||
"checkoutButton": "Salir de la Posada",
|
||||
"tavernTalkTitle":"Charla de Taberna & Búsqueda de Grupos",
|
||||
"tavernRestingInfo" : "Mientras descansas, tus diarios son guardados y no son afectados por el cambio de día. Salgas mañana de la posada o en una semana, continuarás en el mismo estado en que estabas cuando entraste.",
|
||||
"resources" : "Recursos",
|
||||
"LFGPosts" : "Publicaciones de busca de grupos",
|
||||
"LFGPosts" : "Publicaciones de búsqueda de grupos",
|
||||
"tutorials" : "Tutoriales",
|
||||
|
||||
"achievements":"Logros",
|
||||
@@ -195,7 +199,7 @@
|
||||
"kickstartText" : "Apoyó el proyecto en Kickstarter",
|
||||
"streakName" : " Logro(s) en Cadena",
|
||||
"streakText1" : "Ha completado ",
|
||||
"stureakText2" : "Diarios durante 21 días consecutivos",
|
||||
"stureakText2" : "diarios durante 21 días consecutivos",
|
||||
"origUserName" : "Usuario Original",
|
||||
"origUserText" : "Se remonta a los antiguos días de Habit (¡benditos sean por lidiar con los errores!)",
|
||||
"ultimGearName" : "Máximo Equipamiento",
|
||||
@@ -208,7 +212,7 @@
|
||||
"settings":"Configuración",
|
||||
"customDayStart":"Personalizar Inicio del Día",
|
||||
"24HrClock": "Reloj 24h",
|
||||
"clockInfo":"Por defecto HabitRPG chequea y reinicia tus Diarios cada día a medianoche. Puedes personalizar esto aquí (Ingresa un número entre 0 y 24).",
|
||||
"clockInfo":"Por defecto HabitRPG chequea y reinicia tus diarios cada día a medianoche. Puedes personalizar esto aquí (Ingresa un número entre 0 y 24).",
|
||||
"misc":"Miscelánea",
|
||||
"hideHeader":"Ocultar Encabezado",
|
||||
"showHeader":"Mostrar Encabezado",
|
||||
@@ -227,7 +231,7 @@
|
||||
"delete":"Eliminar",
|
||||
"deleteAltText":"Eliminar tu cuenta",
|
||||
"deleteHeader" : "Eliminar Cuenta",
|
||||
"deleteText1":"¡Woa woa woa! ¿Estás seguro? Esto realmente eliminará tu cuenta para siempre, y nunca podrá ser recuperada. Si estás absolutamente seguro, escribe",
|
||||
"deleteText1":"¡Wow wow wow! ¿Estás seguro? Esto realmente eliminará tu cuenta para siempre, y nunca podrá ser recuperada. Si estás absolutamente seguro, escribe",
|
||||
"deleteText2":" DELETE ",
|
||||
"deleteText3":"en el cuadro de texto",
|
||||
"API":"API",
|
||||
@@ -284,7 +288,7 @@
|
||||
"sheild1Text": "Reduce la pérdida de HP en un 3%",
|
||||
"sheild2Name" : "Broquel",
|
||||
"sheild2Text": "Reduce la pérdida de HP en un 4%",
|
||||
"sheild3Name" : "Escudo Fuerte",
|
||||
"sheild3Name" : "Escudo Reforzado",
|
||||
"sheild3Text": "Reduce la pérdida de HP en un 5%",
|
||||
"sheild4Name" : "Escudo Rojo",
|
||||
"sheild4Text": "Reduce la pérdida de HP en un 7%",
|
||||
@@ -343,21 +347,21 @@
|
||||
"NPCAugustinText1" : "¡Bienvenido al Mercado! Soy el comerciante;",
|
||||
"NPCAugustinText2" : "¿Mueres por conseguir esa mascota particular que buscas, pero no quieres esperar que caiga? ¡Cómprala aquí!",
|
||||
"NPCJohanssonText1" : "¡Bienvenido a la Taberna! Soy",
|
||||
"NPCJohanssonText2": "el camarero. Si quieres descansar por un tiempo (¿te vas de vacaciones? ¿enfermedad repentina?), te instalaré en la posada - los Diarios no te dañarán mientras descansas. Quédate por un tiempo y conoce a los lugareños.",
|
||||
"NPCJohanssonText2": "el camarero. Si quieres descansar por un tiempo (¿te vas de vacaciones? ¿enfermedad repentina?), te instalaré en la posada - los diarios no te dañarán mientras descansas. Quédate por un tiempo y conoce a los lugareños.",
|
||||
"NPCMelchiorText1" : "",
|
||||
"NPCBowenText1" : "",
|
||||
"NPCBochText1" : "",
|
||||
|
||||
"_commentdeathstuff" : "DEATH",
|
||||
"deathTitle" : "¡Has Muerto!",
|
||||
"deathText" : "Has perdido tu oro, 1 nivel y 1 pieza de equipamiento. ¡Asegúrate de completar tus Diarios para prevenir que esto pase de nuevo!",
|
||||
"deathText" : "Has perdido tu oro, 1 nivel y 1 pieza de equipamiento. ¡Asegúrate de completar tus diarios para prevenir que esto pase de nuevo!",
|
||||
|
||||
"_commentgems" : "GEMS",
|
||||
"gems" : "Gemas",
|
||||
"outOfGems" : "Sin Gemas",
|
||||
"buyMoreGems" : "Compra Más Gemas",
|
||||
"notEnoughGems" : "No hay suficientes Gemas",
|
||||
"petsOutOfGems" : "¡Oops, te has quedado sin Gemas, las cuales sirven para comprar ítems especiales! Habit es un proyecto de código abierto, y le viene bien toda la ayuda que pueda conseguir - compra más Gemas para recibir esta mascota, y considéralo como una donación a los colaboradores",
|
||||
"petsOutOfGems" : "¡Ups, te has quedado sin Gemas, las cuales sirven para comprar ítems especiales! Habit es un proyecto de código abierto, y le viene bien toda la ayuda que pueda conseguir - compra más Gemas para recibir esta mascota, y considéralo como una donación a los colaboradores",
|
||||
"gemsWhatFor" : "Se usan para comprar ítems especiales (reroll, huevos, pociones eclosionadoras, etc). Necesitarás desbloquear estas características para poder usar Gemas.",
|
||||
|
||||
"_commentfooter": "FOOTER",
|
||||
|
||||
@@ -128,10 +128,14 @@
|
||||
"avatar": "Avatar",
|
||||
|
||||
"head": "Tête",
|
||||
"showHelm": "Afficher le casque",
|
||||
"showHelm": "Montrer le casque",
|
||||
"hair": "Cheveux",
|
||||
"skin": "Peau",
|
||||
"clothing" : "Vêtements",
|
||||
"showArmor": "Montrer l'armure",
|
||||
"other": "Autres",
|
||||
"showWeapon": "Montrer l'arme",
|
||||
"showShield": "Montrer le bouclier",
|
||||
"photoUrl": "Lien vers la photo",
|
||||
"fullName": "Nom complet",
|
||||
"blurb": "Bio",
|
||||
|
||||
@@ -1,98 +1,98 @@
|
||||
{
|
||||
|
||||
"languageName": "Hebrew",
|
||||
"languageName": "עברית",
|
||||
|
||||
|
||||
"_commentfrontpage":"HABITRPG FRONT PAGE",
|
||||
"synopsis" : "תוכנית שמהפך את ההיים שלך למשחק תפקידים. ההצלחה מעלה את המדרגה, הכשלון מונע את נקודות החיים, תרוויחו כסף לאסף נשקת שריון ופריטים.",
|
||||
"_commentfrontpage":"HABITRPG עמוד ראשי",
|
||||
"synopsis" : "תוכנה לפיתוח הרגלים שמתייחסת לחיים כמו משחק תפקידים. עלה שלב בהצלחות, הפסד בריאות בכשלונות, הרווח כסף לרכישת נשק ושריון.",
|
||||
"playButton" : "שחק",
|
||||
|
||||
|
||||
|
||||
"_commenttut": "TUTORIAL/TOUR",
|
||||
"endTourButton": "גמר הסיור",
|
||||
"_commenttut": "הדרכה/סיור",
|
||||
"endTourButton": "סיים סיור",
|
||||
"nextButton" : "הבא",
|
||||
"prevButton" : "אחרון",
|
||||
"prevButton" : "הקודם",
|
||||
"tour1Title" : "ברוכים הבאים ל-HabitRPG",
|
||||
"tour1Text" : "ברוכים הבאים ל-HabitRPG, גשש הרגלים שמטפל בך כאילו היית דמות במשחק תפקידים.",
|
||||
"tour1Text" : "ברוכים הבאים ל-HabitRPG, מתעד-ההרגלים שמטפל בך כאילו היית דמות במשחק תפקידים.",
|
||||
"tour2Title" : "הרגלים",
|
||||
"tour2Text" : "הרגלים הם מידות או מטרות לטוב או לרע שאתם גוששים.",
|
||||
"tour3Title" : "יומיומיות",
|
||||
"tour3Text" : "יומיומיות הן מטלות שרוצים למלאות בקצב יומיומי.",
|
||||
"tour2Text" : "הרגלים יכולים להיות מטרות טובות או רעות אחריהם אתם עוקבים ברציפות.",
|
||||
"tour3Title" : "יומיות",
|
||||
"tour3Text" : "יומיות הן מטרות שרוצים להשיג פעם ביום.",
|
||||
"tour4Title" : "מטלות",
|
||||
"tour4Text" : "מטלות הם משימות חד-פעמיות שצריכים למלאות באיזה זמן. ",
|
||||
"tour4Text" : "מטלות הן משימות חד-פעמיות שיש להשלים מתישהו.",
|
||||
"tour5Title" : "פרסים",
|
||||
"tour5Text" : "כשתמלאו המטרות, תרוויחו זהב לקנות פרסים. קנו אותם חופשי - חייבים פרסים כדי לבנות הרגלים טובים ומידות טובות. ",
|
||||
"tour6Title" : "העבר את העכבר על הערות",
|
||||
"tour6Text" : "יש לסוגי המטרות השונות מאפיינים שונים. העבר את העכבר על הערה של כל מטרה לצפייה במידע מושלמת. כשאתם מוכניםת מחקו את המטרות המחדלים וקדימה!.",
|
||||
"tour5Text" : "עם השגת המטרות, תרוויחו זהב שישמש אתכם לרכישת פרסים. רכשו פרסים בחופשיות - תמריצים חיוביים הם חיוניים לביסוס הרגלים טובים.",
|
||||
"tour6Title" : "עבור על ההערות",
|
||||
"tour6Text" : "למטרות מסוגים שונים יש מאפיינים מיוחדים. הצביעו עם העכבר על סמל ההערה של כל מטרה למידע נוסף. כשאתם מוכנים, מחקו את המטרות הקיימות והוסיפו את שלכם.",
|
||||
|
||||
|
||||
|
||||
"_commentdefaulttasks":"DEFAULT TASKS",
|
||||
"habit1" : "1h Productive Work",
|
||||
"habit1comment": "-- Habits: Constantly Track -- For some habits, it only makes sense to *gain* points (like this one)",
|
||||
"habit2" : "Eat Junk Food",
|
||||
"habit2comment" : "For others, it only makes sense to *lose* points",
|
||||
"habit3" : "Take The Stairs",
|
||||
"habit3comment" : "For the rest, both + and - make sense (stairs = gain, elevator = lose)",
|
||||
"daily1" : "1h Personal Project",
|
||||
"daily1comment" : "-- Dailies: Complete Once a Day -- At the end of each day, non-completed Dailies dock you points.",
|
||||
"daily2" : "Exercise",
|
||||
"daily2comment" : "If you are doing well, they turn green and are less valuable (experience, gold) and less damaging (HP). This means you can ease up on them for a bit.",
|
||||
"daily3" : "45m Reading",
|
||||
"daily3comment" : "But if you are doing poorly, they turn red. The worse you do, the more valuable (exp, gold) and more damaging (HP) these goals become. This encourages you to focus on your shortcomings, the reds.",
|
||||
"todo1" : "Call Mom",
|
||||
"todo1comment" : "-- Todos: Complete Eventually -- Non-completed Todos won't hurt you, but they will become more valuable over time. This will encourage you to wrap up stale Todos.",
|
||||
"reward1" : "1 Episode of Game of Thrones",
|
||||
"reward1comment": "-- Rewards: Treat Yourself! -- As you complete goals, you earn gold to buy rewards. Buy them liberally - rewards are integral in forming good habits.",
|
||||
"reward2" : "Cake",
|
||||
"reward2comment" : "But only buy if you have enough gold - you lose HP otherwise.",
|
||||
"_commentdefaulttasks":"משימות ברירת מחדל",
|
||||
"habit1" : "שעת עבודה פרודוקטיבית",
|
||||
"habit1comment": "-- הרגלים: במעקב רציף -- עבור הרגלים מסויימים, הגיוני רק *לצבור* נקודות (כמו זה) --",
|
||||
"habit2" : "לאכול ג'אנק פוד",
|
||||
"habit2comment" : "עבור אחרים, זה רק הגיוני *להפסיד* נקודות",
|
||||
"habit3" : "עלה במדרגות",
|
||||
"habit3comment" : "עבור השאר, גם + וגם - הגיוניים (מדרגות = צבירה, מעלית = הפסד)",
|
||||
"daily1" : "שעה פרוייקט אישי",
|
||||
"daily1comment" : "יומיות: השלימו אחת ליום -- בסוף כל יום, יומיות שלא הושלמו מעכבות את קצב צבירת הנקודות שלך.",
|
||||
"daily2" : "אימון כושר",
|
||||
"daily2comment" : "אם אתם עומדים ביעדים, הם הופכים לירוקים ושווים פחות (נסיון, זהב) ופחות מזיקים (בריאות). זה אומר שאתם יכולים להתייחס אליהם יותר בקלות.",
|
||||
"daily3" : "45 דקות קריאה",
|
||||
"daily3comment" : "אבל אם אתם לא עומדים בקצב, הם נהיים אדומים. ככל שתכשלו יותר, ערכם (נסיון, זהב) יעלה והם יעלו לכם ביותר בריאות. זה יעודד אתכם להתמקד במכשולים שלכם, הצבועים באדום.",
|
||||
"todo1" : "להתקשר לאמא",
|
||||
"todo1comment" : "מטלות: להשלים מתישהו -- מטלות שלא הושלמו לא יפגעו בך, אבל ערכן יגדל עם הזמן. זה יעודד אתכם להשלים מטלות מעוכבות.",
|
||||
"reward1" : "פרק אחד של משחקי הכס",
|
||||
"reward1comment": "פרסים: פנקו את עצמכם! -- ככל שתשיגו יעדים, תרוויחו זהב לרכוש פרסים. ריכשו אותם בנדיבות - תמריצים חיוביים חיוניים לאימוץ הרגלים טובים.",
|
||||
"reward2" : "עוגה",
|
||||
"reward2comment" : "אבל ריכשו אותם רק אם יש לכם מספיק זהב - אחרת תאבדו נקודות בריאות.",
|
||||
|
||||
"_commentdefaulttags" : "DEFAULT TAGS",
|
||||
"_commentdefaulttags" : "תגיות ברירת מחדל",
|
||||
"morning" : "בוקר",
|
||||
"afternoon" : "אחה״צ",
|
||||
"afternoon" : "צהריים",
|
||||
"evening" : "ערב",
|
||||
|
||||
"_commenthead": "HEADER",
|
||||
"_commenthead": "כותרת",
|
||||
"health": "בריאות",
|
||||
"experience": "נסיון",
|
||||
"history": "היסטוריה",
|
||||
"anonymous": "אלמוני",
|
||||
"level": "דרגה",
|
||||
"level": "שלב",
|
||||
"tasks": "משימות",
|
||||
"loginAndReg" : "כניסה / הרשמה",
|
||||
"loginFacebookAlt" : "כניסה / הרשמה דרך פייסבוק",
|
||||
"login" : "כביסה",
|
||||
"login" : "כניסה",
|
||||
"register" : "הרשמה",
|
||||
"options": "אפשרויות",
|
||||
"logout": "יציאה",
|
||||
|
||||
"_commentnotifcations" : "NOTIFICATIONS",
|
||||
"partyNotification" : "הודעות חברה חדשות",
|
||||
"_commentnotifcations" : "עדכונים",
|
||||
"partyNotification" : "הצעת חברות חדשה",
|
||||
|
||||
|
||||
|
||||
"_commenttaskview": "TASK VIEW",
|
||||
"_commenttaskview": "תצוגת משימה",
|
||||
"habits": "הרגלים",
|
||||
"Habits": "הרגלים",
|
||||
"newHabit": "הרגל חדש",
|
||||
"edit": "ערך",
|
||||
"edit": "ערוך",
|
||||
"text": "טקסט",
|
||||
"extraNotes": "הארות",
|
||||
"directions/Actions": "כיוון/פעולות",
|
||||
"advancedOptions": "אפשרויות מתקדמות",
|
||||
"difficulty": "קושי",
|
||||
"difficultyHelpTitle": "כמה קשה המשימה הזאת?",
|
||||
"difficultyHelpContent": "זאת מכפילה את ערך המשימה. תשתמשו בזאת מעטת אלא סמכו על אלגוריתם הההתאמה האורגני. אבל כמה משימות ערכן משונה באופן משמעותי כמו ציחצוח שניים מול כתיבת התזה. תלחצו למידע מושלמת.",
|
||||
"difficultyHelpContent": "זה מכפיל את ערך הנקודות. השתמשו בחסכנות, עדיף כמובן שתסמכו על אלגוריתם שקלול הערך האורגני שלנו, אבל לפעמים מטלות מסויימות שוות יותר (לכתוב תזה מול להשתמש בחוט דנטלי). לחצו למידע נוסף",
|
||||
"easy": "קל",
|
||||
"medium": "בינוני",
|
||||
"hard": "קשה",
|
||||
"delete": "מחוק",
|
||||
"progress": "פרוגרס",
|
||||
"score": "ציון",
|
||||
"dailies": "יומיומיות",
|
||||
"Dailies": "יומיומיות",
|
||||
"newDaily": "יומיומית חדשה",
|
||||
"delete": "מחיקה",
|
||||
"progress": "התקדמות",
|
||||
"score": "ניקוד",
|
||||
"dailies": "יומיות",
|
||||
"Dailies": "יומיות",
|
||||
"newDaily": "יומית חדשה",
|
||||
"repeat": "חזרה",
|
||||
"Su": "א'",
|
||||
"M": "ב'",
|
||||
@@ -105,159 +105,163 @@
|
||||
"Todos": "מטלות",
|
||||
"newTodo": "מטלה חדשה",
|
||||
"dueDate": "תעריך יעד",
|
||||
"remaining": "נשארות",
|
||||
"complete": "נשלמות",
|
||||
"remaining": "נשאר",
|
||||
"complete": "הושלם",
|
||||
"rewards": "פרסים",
|
||||
"Rewards": "פרסים",
|
||||
"gold": "זהב",
|
||||
"silver": "כסף",
|
||||
"newReward": "פרס חדש",
|
||||
"price": "מכיר",
|
||||
"tags" : "תגים",
|
||||
"editTags" : "ערוך תגים",
|
||||
"newTag" : "תג חדש",
|
||||
"clearFilters" : "מחוק מסננות",
|
||||
"price": "מחיר",
|
||||
"tags" : "תגיות",
|
||||
"editTags" : "ערוך תגיות",
|
||||
"newTag" : "תגית חדשה",
|
||||
"clearFilters" : "נקה סינון",
|
||||
|
||||
|
||||
"_commentdrops" : "DROP SYSTEM",
|
||||
"dropsEnabled" : "ירידות מופעלות!",
|
||||
"dropsEnabledText1" : "פתחת מערכת הירידות! עכשיו, כשתגמרו משימות, יש לכם צ׳נס קטן למצוא משהו יפה. מאמינים? בדיוק מצאתם",
|
||||
"_commentdrops" : "מערכת הליקוט",
|
||||
"dropsEnabled" : "ליקוט מופעל!",
|
||||
"dropsEnabledText1" : "שחררתם את מערכת הליקוט! מעתה כשתשלימו משימות, יש סיכוי קטן שתמצאו משהו מעניין. ונחשו מה, בדיוק מצאתם",
|
||||
"dropsEnabledText2" : "ביצה",
|
||||
"itemDropped" : "ירד פריט!!",
|
||||
"itemDropped" : "הפריט לוקט!!",
|
||||
|
||||
|
||||
|
||||
"_commentoptionsview": "OPTIONS VIEW",
|
||||
"_commentoptionsview": "תצוגת אפשרויות",
|
||||
"profile": "פרופיל",
|
||||
"avatar": "אוואתר",
|
||||
"avatar": "דמות",
|
||||
|
||||
"head": "ראש",
|
||||
"showHelm": "הראה קסדה",
|
||||
"hair": "שער",
|
||||
"hair": "שיער",
|
||||
"skin": "עור",
|
||||
"clothing" : "לבוש",
|
||||
"photoUrl": "URL תמונה",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "כתובת תמונה",
|
||||
"fullName": "שם מלא",
|
||||
"blurb": "קצת על עצמך",
|
||||
"websites": "אתרי אינטרנט",
|
||||
"addWebsites": "הוסיף אתרים",
|
||||
"addWebsites": "הוסף אתרים",
|
||||
"items" : "פריטים",
|
||||
"weapon" : "נשק",
|
||||
"armor" : "שריון",
|
||||
"helm" : "קסדה",
|
||||
"shield" : "מגן",
|
||||
|
||||
"stats" : "סטטיסטיקות",
|
||||
"stats" : "נתונים",
|
||||
"strength" : "עוצמה",
|
||||
"defense" : "הגנה",
|
||||
"totalStrength" : "סך עוצמה",
|
||||
"totalDefense" : "סך הגנה",
|
||||
|
||||
|
||||
"party": "Party",
|
||||
"createAParty":"יצר מפלגה",
|
||||
"noPartyText": "אתה לא במפלגה. או שאתה יכול ליצור אותו ולהזמין את החברים, או אם אתה רוצה להצטרף למפלגה קיימת, יש להם להכניס:",
|
||||
"partyName": "שם מפלגה",
|
||||
"create":"יצר",
|
||||
"party": "חמולה",
|
||||
"createAParty":"צור חמולה",
|
||||
"noPartyText": "אינכם בחמולה. באפשרותכם ליצור חמולה ולהזמין חברים, או על מנת להצטרף לחמולה קיימת, עליהם להכניס:",
|
||||
"partyName": "שם החמולה",
|
||||
"create":"צור",
|
||||
"userId":"מספר משתמש",
|
||||
"invite":"הזמין",
|
||||
"leave": "יצא",
|
||||
"invite":"הזמן",
|
||||
"leave": "עזוב",
|
||||
"invitedTo" : "אתם מוזמנים ל-",
|
||||
"chat": "שיחה",
|
||||
|
||||
"inventory": "מלאי",
|
||||
"eggs": "ביצים",
|
||||
"noEggs": "אין לך ביצים במלאי שלך",
|
||||
"hatchingPotions": "שיקויי בקיעה",
|
||||
"noHatchingPotions": "עדיין אין לך שיקויי בקיעה",
|
||||
"hatchYourEgg" : "בוקע את הביצה שלך",
|
||||
"whichHatchingPotion1" : "איזה שיקוי בקיעה לשפוך על ביצת ה",
|
||||
"noEggs": "אין לך ביצים במלאי",
|
||||
"hatchingPotions": "שיקויים",
|
||||
"noHatchingPotions": "עדיין אין לך שיקוי",
|
||||
"hatchYourEgg" : "הפוך ביצה לחיית מחמד",
|
||||
"whichHatchingPotion1" : "איזה שיקוי לשפוך על ביצת ה",
|
||||
"whichHatchingPotion2" : "שלך?",
|
||||
"pour" : "שפוך",
|
||||
"rarePets" : "חיות נדירות",
|
||||
"market": "השוק",
|
||||
"market": "שוק",
|
||||
|
||||
"stable": "אורוה",
|
||||
"stable": "אורווה",
|
||||
"petsFound":"חיות שנמצאות",
|
||||
"rarePets": "חיות נדירות",
|
||||
|
||||
"tavern": "בית מרזח",
|
||||
"restButton":"תנוח בבית מלון",
|
||||
"checkoutButton": "יציאה מהמלון",
|
||||
"tavernTalkTitle":"שיחה ו-LFG בבית המרזח",
|
||||
"tavernRestingInfo" : "תוך כדי לינה היומימיות שלך נשמרות ואין הליכת הזמן מפריע לנקודות שלך. מתי שאתם רוצים, תצאו מהמלון והדמות שלכם יהיה בדיוק כמו ששמתם פה.",
|
||||
"tavern": "טברנה",
|
||||
"restButton":"נוח בצימר",
|
||||
"checkoutButton": "צא מהצימר",
|
||||
"tavernTalkTitle":"שיח בטברנה",
|
||||
"tavernRestingInfo" : "כל עוד הדמות שלכם לנה בצימר היומיות שלכם נשמרות והזמן שחולף לא מוריד נקודות. כשתרצו, צאו מהצימר והדמות שלכם תשוב בדיוק פי שהייתה כשבאה.",
|
||||
"resources" : "משאבים",
|
||||
"LFGPosts" : "הודעות LGF",
|
||||
"LFGPosts" : "הודעות",
|
||||
"tutorials" : "הדרכות",
|
||||
|
||||
"achievements":"Achievements",
|
||||
"achievementUnlocked" : "השג פתוח!",
|
||||
"achievements":"הישגים",
|
||||
"achievementUnlocked" : "הישג שוחרר!",
|
||||
"npcText" : "תמך בפרוייקט ה-Kickstarter ברמה הגבוהה ביותר",
|
||||
"contribName" : "מתנדב",
|
||||
"contribText" : "התנדב ל-HabitRPG (קוד, עיצוב, אומנות, עצה חוקי, משמכים, וכו׳). רוצה? תקן משהו!",
|
||||
"contribText" : "תרמו ל-HabitRPG (קוד, עיצוב, אומנות, יעוץ משפטי, כתיבה, וכו׳). רוצים? תקנו משהו!",
|
||||
"kickstartName1" : "תומך Kickstarter - ",
|
||||
"kickstartName2" : "מדרגה",
|
||||
"kickstartText" : "תמך בפרוייקט ה-Kickstarter",
|
||||
"streakName" : "השגות התמדה",
|
||||
"streakText1" : "התמד",
|
||||
"stureakText2" : "פעמים של 21 ימים ביומיומיות",
|
||||
"streakName" : "הישג רצף התמדה",
|
||||
"streakText1" : "התמיד",
|
||||
"stureakText2" : "פעמים 21 ימים ברצף ביומיות",
|
||||
"origUserName" : "משתמש מקורי",
|
||||
"origUserText" : "היו היה פעם שכל אחד לחם בבאגים. איך שעשו חיל!",
|
||||
"ultimGearName" : "סוף הציוד",
|
||||
"ultimGearText" : "השג סט השיון וכלי זיין המקסימלי",
|
||||
"ultimGearUnlocked" : "השגת השג 'סוף הציוד' שקנית הציוד המקסימלי",
|
||||
"beastMastName" : "בעל החייות",
|
||||
"beastMastText" : "מצא כל 90 חיות. קשה נורה! תנו כבוד!",
|
||||
"beastMastUnlocked" : "השגת השג 'בעל החיות' שמצאת כל החיות!",
|
||||
"ultimGearName" : "מעצמה צבאית",
|
||||
"ultimGearText" : "השיג את כל כלי השריון והנשק",
|
||||
"ultimGearUnlocked" : "השגת סטטוס 'מעצמה צבאית' - יש לך את כל כלי השריון והנשק",
|
||||
"beastMastName" : "מלך החיות",
|
||||
"beastMastText" : "מצא את כל 90 החיות. קשה נורא! תנו כבוד!",
|
||||
"beastMastUnlocked" : "השגת את סטטוס 'מלך החיות' על שמצאת כל החיות!",
|
||||
|
||||
"settings":"Settings",
|
||||
"customDayStart":"Custom Day Start",
|
||||
"24HrClock": "24Hr Clock",
|
||||
"clockInfo":"HabitRPG defaults to check and reset your dailies at midnight each day. You can customize that here (Enter number between 0 and 24).",
|
||||
"misc":"Misc",
|
||||
"hideHeader":"Hide Header",
|
||||
"showHeader":"Show Header",
|
||||
"changePass":"Change Password",
|
||||
"oldPass":"Old Password",
|
||||
"newPass":"New Password",
|
||||
"confirmPass":"Confirm New Password",
|
||||
"dangerZone": "Danger Zone",
|
||||
"reset":"Reset",
|
||||
"resetAltText":"Resets your entire account (dangerous)",
|
||||
"resetText1":"This resets your entire account - your tasks will be deleted and your character will start over.",
|
||||
"resetText2":"This is highly discouraged because you'll lose historical data, which is useful for graphing your progress over time. However, some people find it useful in the beginning after playing with the app for a while.",
|
||||
"restore":"Restore",
|
||||
"restoreAltText":"Restores attributes to your character",
|
||||
"settings":"הגדרות",
|
||||
"customDayStart":"שעת תחילת יום",
|
||||
"24HrClock": "שעון 24 שעות",
|
||||
"clockInfo":"HabitRPG מעדכן את הנתונים שלך בחצות כל יום כברירת מחדל. תוכלו להתאים אישית כאן את השעה (הזינו מספר בין 0 ל24)",
|
||||
"misc":"שונות",
|
||||
"hideHeader":"הסתר כותרת",
|
||||
"showHeader":"הצג כותרת",
|
||||
"changePass":"שינוי סיסמה",
|
||||
"oldPass":"סיסמה ישנה",
|
||||
"newPass":"סיסמה חדשה",
|
||||
"confirmPass":"אשר סיסמה חדשה",
|
||||
"dangerZone": "איזור סכנה",
|
||||
"reset":"איפוס",
|
||||
"resetAltText":"איפוס כל החשבון (מסוכן)",
|
||||
"resetText1":"זה מאפס את כל החשבון - המטלות שלך ימחקו והדמות תתחיל מחדש. ",
|
||||
"resetText2":"זה מאוד לא מומלץ כי תאבדו מידע היסטורי ששימושי מאוד להציג את התקדמותכם לאורך זמן. עם זאת, אנשים מסויימים מעוניינים באפשרות זו בהתחלה לאחר ששיחקו קצת בתוכנה. ",
|
||||
"restore":"שחזר",
|
||||
"restoreAltText":"שחזר מאפיינים של הדמות",
|
||||
"restoreText1":"HabitRPG is quite Beta-quality at present, and many find they need to restore character attributes as a result. Enter your numbers here and it will be applied automatically to your character. This will be removed once Habit is more stable.",
|
||||
"delete":"Delete",
|
||||
"deleteAltText":"Delete your account",
|
||||
"deleteHeader" : "Delete Account",
|
||||
"deleteText1":"Woa woa woa! Are you sure? This will seriously delete your account forever, and it can never be restored. If you're absolutely certain, type",
|
||||
"delete":"מחיקה",
|
||||
"deleteAltText":"מחק את החשבון",
|
||||
"deleteHeader" : "מחק חשבון",
|
||||
"deleteText1":"ווא ווא ווי ווא! בטוחים? רוצים לחשוב על זה לשניה? זה לגמרי ברצינות ימחק את החשבון שלכם לתמיד, אף פעם לא תוכלו לשחזר אותו. אם אתם בטוחים לגמרי, הקלידו",
|
||||
"deleteText2":" DELETE ",
|
||||
"deleteText3":"into the text-box",
|
||||
"deleteText3":"לתוך תיבת הטקסט",
|
||||
"API":"API",
|
||||
"APIText":"Copy these for use in third party applications.",
|
||||
"APIText":"העתיקו את אלה לשימוש באפליקציות צד-ג.",
|
||||
"APIToken":"Api Token",
|
||||
|
||||
|
||||
|
||||
"_commentitems": "ITEMS",
|
||||
"_commentitemsweps": "WEAPONS",
|
||||
"sword0name" : "חרב תרגיל",
|
||||
"_commentitems": "פריטים",
|
||||
"_commentitemsweps": "כלי נשק",
|
||||
"sword0name" : "חרב אימון",
|
||||
"sword1Name" : "חרב",
|
||||
"sword1Text" : "מגדיל את רווח ניסיון של 3%.",
|
||||
"sword2Name" : "גרזן",
|
||||
"sword2Text" : "מגדיל את רווח ניסיון של 6%.",
|
||||
"sword3Name" : "כוכב השחר",
|
||||
"sword3Text" : "מגדיל את רווח ניסיון של 9%.",
|
||||
"sword4Name" : "חרב כחול",
|
||||
"sword4Name" : "חרב כחולה",
|
||||
"sword4Text" : "מגדיל את רווח ניסיון של 12%.",
|
||||
"sword5Name" : "חרב אדום",
|
||||
"sword5Name" : "חרב אדומה",
|
||||
"sword5Text" : "מגדיל את רווח ניסיון של 15%.",
|
||||
"sword6Name" : "חרב זהב",
|
||||
"sword6Text" : "מגדיל את רווח ניסיון של 18%.",
|
||||
|
||||
"_commentitemsarmor": "ARMOR",
|
||||
"_commentitemsarmor": "שריון",
|
||||
"armor0Name" : "שריון בד",
|
||||
"armor1Name" : "שריון עור" ,
|
||||
"armor1Text": "מקטין הפסד של HP ב -4%",
|
||||
@@ -270,7 +274,7 @@
|
||||
"armor5Name" : "שריון זהב",
|
||||
"armor5Text": "מקטין הפסד של HP ב -10%",
|
||||
|
||||
"_commentitemshead" : "HEADGEAR",
|
||||
"_commentitemshead" : "קסדה",
|
||||
"head0Name" : "בלי קסדה",
|
||||
"head1Name" : "קסדת עור" ,
|
||||
"head1Text": "מקטין הפסד של HP ב-2%",
|
||||
@@ -283,7 +287,7 @@
|
||||
"head5Name" : "קסדת זהב",
|
||||
"head5Text": "מקטין הפסד של HP ב-6%",
|
||||
|
||||
"_commentitemsshield" : "SHIELDS",
|
||||
"_commentitemsshield" : "מגנים",
|
||||
"sheild0Name" : "בלי מגן",
|
||||
"sheild1Name" : "מגן עץ",
|
||||
"sheild1Text": "מקטין הפסד של HP ב-3%",
|
||||
@@ -296,8 +300,8 @@
|
||||
"sheild5Name" : "מגן זהב",
|
||||
"sheild5Text": "מקטין הפסד של HP ב-8%",
|
||||
|
||||
"_commentitemsother" : "OTHER ITEMS",
|
||||
"healthPotionName" : "שקוי בריאות",
|
||||
"_commentitemsother" : "פריטים אחרים",
|
||||
"healthPotionName" : "שיקוי בריאות",
|
||||
"healthPotionNotes" : "לשחזר 15 HP באופן מיידי",
|
||||
"rerollName" : "אתחול",
|
||||
"rerollNotes" : "מאפס את ערכי המשימות שלך לצהוב. טוב כשאתה באדום וקשה להשתייר בחיים.",
|
||||
@@ -306,7 +310,7 @@
|
||||
"rerollModelText2" : "קרא יותר",
|
||||
"rerollModelText3" : "אמנם, הכרחי אחרי תקופות ממושכות של הרגלים רעים.",
|
||||
|
||||
"_commentitemspeteggs": "PET EGGS",
|
||||
"_commentitemspeteggs": "ביצי חיות מחמד",
|
||||
"wolfEgg": "גור זאב",
|
||||
"tigerEgg": "גור נמרים",
|
||||
"pandaEgg": "גור פנדה",
|
||||
@@ -318,7 +322,7 @@
|
||||
"bearEgg": "גור דובים",
|
||||
"wolfEgg": "גור זאב",
|
||||
|
||||
"_commentitemshatchingpotions": "HATCHING POTIONS",
|
||||
"_commentitemshatchingpotions": "שיקויים",
|
||||
"basePotName": "בסיסי",
|
||||
"basePotText" : ".בוקעים חיית המחמד שלך לצורתה הבסיסי",
|
||||
"whitePotName": "לבן",
|
||||
@@ -353,7 +357,7 @@
|
||||
"NPCBowenText1" : "",
|
||||
"NPCBochText1" : "",
|
||||
|
||||
"_commentdeathstuff" : "DEATH",
|
||||
"_commentdeathstuff" : "מוות",
|
||||
"deathTitle" : "אתה מת!",
|
||||
"deathText" : "הפסדת כל הכסף, מדרגה אחד וכלי אחת. הקפד להשלים את היומונים שלך כדי למנוע את זה מלקרות שוב!",
|
||||
|
||||
@@ -385,22 +389,22 @@
|
||||
|
||||
|
||||
"_commentmisc": "MISC & GLOBAL",
|
||||
"removeAds": "הסרת פרסומים",
|
||||
"whyAds": "למה פירסומים?",
|
||||
"removeAds": "הסרת פרסומות",
|
||||
"whyAds": "למה פרסומות?",
|
||||
"whyAdsContent1": "Habit היא פרויקט Open Source, וזקוק לכל עזרה - רואים את זה כתרומה למפתחים. גם מקבלים 20 אבני חן כדי לקנות פריטים מיוחדים.",
|
||||
"whyAdsContent2": "'היי, אני תמכתי ה-Kickstarter!' - עקוב אחרי",
|
||||
"whyAdsContent3": "ההוראות הבאות",
|
||||
"_commentbuttons": "BUTTONS",
|
||||
"_commentbuttons": "כפתורים",
|
||||
"submit":"שלח",
|
||||
"close":"סגור",
|
||||
"saveAndClose": "שמור וסגור",
|
||||
"cancel":"בטל",
|
||||
"ok" : "בסדר",
|
||||
"add" : "הוסיף",
|
||||
"add" : "הוסף",
|
||||
"undo" : "החזר",
|
||||
"continue" : "המשך",
|
||||
"accept" : "קבל",
|
||||
"reject" : "דוחה",
|
||||
"reject" : "דחה",
|
||||
"or" : "או",
|
||||
"_commenttimestamps":"TIME STAMPS",
|
||||
"justNow":"בדיוק עכשיו",
|
||||
|
||||
@@ -132,6 +132,10 @@
|
||||
"hair": "Hair",
|
||||
"skin": "Skin",
|
||||
"clothing" : "Clothing",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Photo Url",
|
||||
"fullName": "Full Name",
|
||||
"blurb": "Blurb",
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
|
||||
"_commentfrontpage":"HABITRPG FRONT PAGE",
|
||||
"synopsis" : "Un programma per trattare le proprie abitudini come in un Gioco di Ruolo. Sali di livello se ci riesci, perdi HP se fallisci, guadagna soldi per comprare armi ed armature.",
|
||||
"synopsis" : "Un programma per gestire le proprie abitudini come in un Gioco di Ruolo. Sali di livello se ci riesci, perdi HP se fallisci, guadagna soldi per comprare armi ed armature.",
|
||||
"playButton" : "Gioca",
|
||||
|
||||
|
||||
@@ -20,11 +20,11 @@
|
||||
"tour3Title" : "Dailies",
|
||||
"tour3Text" : "Le Dailies sono le attività che vuoi completare una volta al giorno.",
|
||||
"tour4Title" : "Todos",
|
||||
"tour4Text" : "I Todos sono obiettivi unici che devono essere completati alla fine.",
|
||||
"tour4Text" : "I Todos sono gli obiettivi personali che vuoi completare.",
|
||||
"tour5Title" : "Ricompense",
|
||||
"tour5Text" : "Quando completi i tuoi obiettivi, guadagni oro per comprare ricompense. Comprale liberamente - le ricompense sono fondamentali per formare buone abitudini.",
|
||||
"tour6Title" : "Passa il mouse sopra i commenti",
|
||||
"tour6Text" : "Diversi tipi di attività hanno proprietà sperciali. Passa il mouse sopra i commenti per maggiori informazioni. Quando sei pronto per cominciare, cancella le attività esistenti ed aggiungine di nuove.",
|
||||
"tour6Text" : "Diversi tipi di attività hanno proprietà speciali. Passa il mouse sopra i commenti per maggiori informazioni. Quando sei pronto per cominciare, cancella le attività esistenti ed aggiungine di nuove.",
|
||||
|
||||
|
||||
|
||||
@@ -132,6 +132,10 @@
|
||||
"hair": "Capelli",
|
||||
"skin": "Pelle",
|
||||
"clothing" : "Abbigliamento",
|
||||
"showArmor": "Mostra Armatura",
|
||||
"other": "Altro",
|
||||
"showWeapon": "Mostra Arma",
|
||||
"showShield": "Mostra Scudo",
|
||||
"photoUrl": "Url Foto",
|
||||
"fullName": "Nome Completo",
|
||||
"blurb": "Firma",
|
||||
@@ -183,7 +187,7 @@
|
||||
"tavernTalkTitle":"Chiacchiera nella Taverna & LFG",
|
||||
"tavernRestingInfo" : "Mentre riposi le tue dailies sono salvate e non verranno modificate dal cambio di giorno. Puoi tornare domani o in una settimana, troverai tutto come l'hai lasciato.",
|
||||
"resources" : "Risorse",
|
||||
"LFGPosts" : "Messaggi LGF",
|
||||
"LFGPosts" : "Messaggi LFG",
|
||||
"tutorials" : "Tutorials",
|
||||
|
||||
"achievements":"Obiettivi",
|
||||
@@ -280,7 +284,7 @@
|
||||
"head5Text": "Riduce gli HP persi del 6%",
|
||||
|
||||
"_commentitemsshield" : "SHIELDS",
|
||||
"sheild0Name" : "Nessuno Scuso",
|
||||
"sheild0Name" : "Nessuno Scudo",
|
||||
"sheild1Name" : "Scudo di Legno",
|
||||
"sheild1Text": "Riduce gli HP persi del 3%",
|
||||
"sheild2Name" : "Brocchiero",
|
||||
@@ -344,7 +348,7 @@
|
||||
"NPCAugustinText1" : "Benvenuti al mercato! Io sono il mercante;",
|
||||
"NPCAugustinText2" : "Morite dalla voglia di avere quel particolare animale, ma non volete aspettare di trovarlo ? Compratelo qui!",
|
||||
"NPCJohanssonText1" : "Benvenuti alla Locanda! Io sono",
|
||||
"NPCJohanssonText2": "l'oste. Se vuoi riposare per un po' (vai in vacanca? malattia improvvisa?), ti sistemo in locanda - le dailies non ti faranno male mentre riposi. Rimani un po' & incontra la gente del posto.",
|
||||
"NPCJohanssonText2": "l'oste. Se vuoi riposare per un po' (vai in vacanca? malattia improvvisa?), ti sistemo in locanda - le dailies non ti faranno male mentre riposi. Rimani un po' e incontra la gente del posto.",
|
||||
"NPCMelchiorText1" : "",
|
||||
"NPCBowenText1" : "",
|
||||
"NPCBochText1" : "",
|
||||
@@ -384,7 +388,7 @@
|
||||
"removeAds": "Rimuovi gli Ads",
|
||||
"whyAds": "Perché gli Ads?",
|
||||
"whyAdsContent1": "Habit è un progetto open source, e può usare tutto l'aiuto che può ottenere - considerala una donazione ai collaboratori. Riceverai anche 20 Gemme dall'acquisto, con le quali puoi comprare oggetti speciali.",
|
||||
"whyAdsContent2": "'Hey, Ho sostenuto il progetto su Kickstarter!' - segui",
|
||||
"whyAdsContent2": "'Hey, ho sostenuto il progetto su Kickstarter!' - segui",
|
||||
"whyAdsContent3": "queste istruzioni",
|
||||
"_commentbuttons": "BUTTONS",
|
||||
"submit":"Invia",
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
"extraNotes": "Extra Notes",
|
||||
"directions/Actions": "Directions/Actions",
|
||||
"advancedOptions": "Advanced Options",
|
||||
"difficulty": "Difficulty",
|
||||
"difficulty": "難易度",
|
||||
"difficultyHelpTitle": "How difficult is this task?",
|
||||
"difficultyHelpContent": "This multiplies its point value. Use sparingly, rely instead on our organic value-adjustment algorithms. But some tasks are grossly more valuable (Write Thesis vs Floss Teeth). Click for more info.",
|
||||
"easy": "簡単",
|
||||
@@ -129,9 +129,13 @@
|
||||
|
||||
"head": "頭",
|
||||
"showHelm": "Show 兜",
|
||||
"hair": "Hair",
|
||||
"hair": "毛",
|
||||
"skin": "皮膚",
|
||||
"clothing" : "衣料",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "他の",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "写真 URL",
|
||||
"fullName": "名前",
|
||||
"blurb": "自己紹介",
|
||||
@@ -171,13 +175,13 @@
|
||||
"whichHatchingPotion2" : "卵?",
|
||||
"pour" : "pour",
|
||||
"rarePets" : "Rare Pets",
|
||||
"market": "Market",
|
||||
"market": "マーケット",
|
||||
|
||||
"stable": "Stable",
|
||||
"petsFound":"Pets Found",
|
||||
"rarePets": "Rare Pets",
|
||||
|
||||
"tavern": "Tavern",
|
||||
"tavern": "居酒屋",
|
||||
"restButton":"Rest In The Inn",
|
||||
"checkoutButton": "Check Out Of Inn",
|
||||
"tavernTalkTitle":"Tavern Talk & LFG",
|
||||
@@ -186,7 +190,7 @@
|
||||
"LFGPosts" : "LGF Posts",
|
||||
"tutorials" : "チュートリアル",
|
||||
|
||||
"achievements":"Achievements",
|
||||
"achievements":"功績",
|
||||
"achievementUnlocked" : "Achievement Unlocked!",
|
||||
"npcText" : "Backed the Kickstarter project at the maximum level!",
|
||||
"contribName" : "Contributor",
|
||||
@@ -353,7 +357,7 @@
|
||||
"deathText" : "You've lost your GP, 1 level and 1 gear piece. Be sure to complete your dailies to prevent this from happening again!",
|
||||
|
||||
"_commentgems" : "GEMS",
|
||||
"gems" : "Gems",
|
||||
"gems" : "宝石",
|
||||
"outOfGems" : "Out Of Gems",
|
||||
"buyMoreGems" : "Buy More Gems",
|
||||
"notEnoughGems" : "Not enough Gems",
|
||||
@@ -390,7 +394,7 @@
|
||||
"close":"締める",
|
||||
"saveAndClose": "保存して閉じる",
|
||||
"cancel":"キャンセル",
|
||||
"ok" : "Ok",
|
||||
"ok" : "はい",
|
||||
"add" : "加える",
|
||||
"undo" : "キャンセル",
|
||||
"continue" : "続ける",
|
||||
|
||||
@@ -132,6 +132,10 @@
|
||||
"hair": "Haar",
|
||||
"skin": "Huid",
|
||||
"clothing" : "Kleding",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Foto URL",
|
||||
"fullName": "Volledige Naam",
|
||||
"blurb": "Blurp",
|
||||
|
||||
@@ -137,6 +137,10 @@
|
||||
"skin": "Hudfarge",
|
||||
"clothing" : "Klær",
|
||||
"photoUrl": "Bilde-URL",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"fullName": "Fullt navn",
|
||||
"blurb": "Kort om deg",
|
||||
"websites": "Nettsider",
|
||||
|
||||
@@ -132,6 +132,10 @@
|
||||
"hair": "Włosy",
|
||||
"skin": "Karnacja",
|
||||
"clothing" : "Ubranie",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "URL obrazka",
|
||||
"fullName": "Imię i nazwisko",
|
||||
"blurb": "Krótki opis",
|
||||
|
||||
@@ -132,6 +132,10 @@
|
||||
"hair": "Cabelo",
|
||||
"skin": "Pele",
|
||||
"clothing" : "Vestimentas",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Url da Foto",
|
||||
"fullName": "Nome Completo",
|
||||
"blurb": "Sinopse",
|
||||
|
||||
@@ -132,6 +132,10 @@
|
||||
"hair": "Волосы",
|
||||
"skin": "Кожа",
|
||||
"clothing" : "Одежда",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Ссылка на фото",
|
||||
"fullName": "Полное имя",
|
||||
"blurb": "О себе",
|
||||
|
||||
417
locales/sl/app.json
Normal file
417
locales/sl/app.json
Normal file
@@ -0,0 +1,417 @@
|
||||
{
|
||||
|
||||
"languageName": "Slovene",
|
||||
"stringNotFound": "String not found.",
|
||||
|
||||
|
||||
"_commentfrontpage":"HABITRPG FRONT PAGE",
|
||||
"synopsis" : "Program za pridobivanje navad, s katerim tvoje življenje postane igra igranja vlog. Z uspehi tvoj lik raste, z neuspehi izgubi del zdravja, s prisluženim denarjem pa lahko kupiš orožje in oklep.",
|
||||
"playButton" : "Igraj",
|
||||
|
||||
|
||||
|
||||
"_commenttut": "TUTORIAL/TOUR",
|
||||
"endTourButton": "Končaj predstavitev",
|
||||
"nextButton" : "Naprej",
|
||||
"prevButton" : "Nazaj",
|
||||
"tour1Title" : "Dobrodošel pri HabitRPG",
|
||||
"tour1Text" : "Dobrodošel pri HabitRPG, programu, ki spremlja tvoje navade v stilu igre igranja vlog.",
|
||||
"tour2Title" : "Navade",
|
||||
"tour2Text" : "S programom ves čas spremljaš dobre in slabe navade.",
|
||||
"tour3Title" : "Dnevne naloge",
|
||||
"tour3Text" : "Dnevne naloge moraš opraviti vsak dan enkrat.",
|
||||
"tour4Title" : "Opravki",
|
||||
"tour4Text" : "Opravki so naloge, ki jih moraš opraviti samo enkrat. ",
|
||||
"tour5Title" : "Nagrade",
|
||||
"tour5Text" : "Z opravljenimi nalogami si prislužiš zlato, s katerim lahko kupiš nagrade. Kupuj jih pogosto, saj so pomembne pri pridobivanju novih navad. ",
|
||||
"tour6Title" : "Poglej komentarje",
|
||||
"tour6Text" : "Določene vrste nalog imajo posebne lastnosti. Ogledaš si jih tako, da kazalec miške postaviš nad njihov komentar. Ko želiš začeti, izbriši obstoječe naloge in dodaj svoje.",
|
||||
|
||||
|
||||
|
||||
"_commentdefaulttasks":"DEFAULT TASKS",
|
||||
"habit1" : "1h produktivno delo",
|
||||
"habit1comment": "-- Navade program spremlja ves čas -- Pri določenih nalogah je smiselno samo *pridobivanje* točk (kot pri tej)",
|
||||
"habit2" : "Jedel nezdravo hrano",
|
||||
"habit2comment" : "Pri drugih je smiselno samo *izgubljanje* točk",
|
||||
"habit3" : "Šel po stopnicah",
|
||||
"habit3comment" : "Pri ostalih lahko uporabiš tako + kot tudi - (stopnice = pridobiš, dvigalo = izgubiš)",
|
||||
"daily1" : "1h osebni projekt",
|
||||
"daily1comment" : "-- Dnevne naloge je treba opraviti enkrat na dan -- Ko se dan konča, izgubiš točke za vse neopravljene dnevne naloge.",
|
||||
"daily2" : "Telovadba",
|
||||
"daily2comment" : "Če jih opravljaš vestno, postanejo zelene, prinesejo manj denarja in izkušenj ter odvzamejo manj zdravja, ko jih ne opraviš.",
|
||||
"daily3" : "45min branje",
|
||||
"daily3comment" : "Če pa jih opravljaš neredno, postanejo rdeče. Čim manjkrat jih opraviš, tem več zlata in izkušenj prinesejo, vendar pa so tudi bolj nevarne za zdravje lika. To te spodbudi, da jih opravljaš bolj redno.",
|
||||
"todo1" : "Pokliči mamo",
|
||||
"todo1comment" : "-- Opravke je treba opraviti enkrat -- Neopravljeni opravki ne škodujejo zdravju lika, sčasoma pa postanejo vredni vedno več, kar te spodbudi, da opraviš te zapoznele naloge.",
|
||||
"reward1" : "1 epizoda Igre prestolov",
|
||||
"reward1comment": "-- Privošči si nagrado! -- Z opravljenimi nalogami si prislužiš zlato, s katerim lahko kupiš nagrade. Kupuj jih pogosto, saj so pomembne pri pridobivanju novih navad.",
|
||||
"reward2" : "Torta",
|
||||
"reward2comment" : "Ampak samo, če imaš dovolj zlata, saj boš drugače izgubil točke pri zdravju.",
|
||||
|
||||
"_commentdefaulttags" : "DEFAULT TAGS",
|
||||
"morning" : "jutro",
|
||||
"afternoon" : "popoldne",
|
||||
"evening" : "večer",
|
||||
|
||||
"_commenthead": "HEADER",
|
||||
"health": "Zdravje",
|
||||
"experience": "Izkušnje",
|
||||
"history": "Zgodovina",
|
||||
"anonymous": "Neimenovan",
|
||||
"level": "Level",
|
||||
"tasks": "Naloge",
|
||||
"loginAndReg" : "Prijava / Registracija",
|
||||
"loginFacebookAlt" : "Prijava / Registracija preko Facebooka",
|
||||
"login" : "Prijava",
|
||||
"register" : "Registracija",
|
||||
"options": "Možnosti",
|
||||
"logout": "Odjava",
|
||||
|
||||
"_commentnotifcations" : "NOTIFICATIONS",
|
||||
"partyNotification" : "Novo sporočilo skupine",
|
||||
|
||||
|
||||
|
||||
"_commenttaskview": "TASK VIEW",
|
||||
"habits": "Navade",
|
||||
"Habits": "Navade",
|
||||
"newHabit": "Nova navada",
|
||||
"edit": "Uredi",
|
||||
"text": "Besedilo",
|
||||
"extraNotes": "Opomba",
|
||||
"directions/Actions": "Navodilo/Dejanje",
|
||||
"advancedOptions": "Dodatne možnosti",
|
||||
"difficulty": "Težavnost",
|
||||
"difficultyHelpTitle": "Kako težavna je naloga?",
|
||||
"difficultyHelpContent": "Težavnost pomnoži osnovno vrednost. Priporočamo, da večinoma uporabljaš vgrajeni algoritem, ki prilagodi vrednost. A nekatere naloge so veliko pomembnejše od drugih (pisanje diplome proti nitkanju zob). Klikni za več informacij.",
|
||||
"easy": "Enostavno",
|
||||
"medium": "Srednje",
|
||||
"hard": "Težko",
|
||||
"delete": "Zbriši",
|
||||
"progress": "Napredek",
|
||||
"score": "Točke",
|
||||
"dailies": "Dnevne naloge",
|
||||
"Dailies": "Dnevne naloge",
|
||||
"newDaily": "Nova dnevna naloga",
|
||||
"repeat": "Ponovi",
|
||||
"Su": "Ne",
|
||||
"M": "Po",
|
||||
"T": "To",
|
||||
"We": "Sr",
|
||||
"Th": "Če",
|
||||
"F": "Pe",
|
||||
"S": "So",
|
||||
"todos": "Opravki",
|
||||
"Todos": "Opravki",
|
||||
"newTodo": "Nov opravek",
|
||||
"dueDate": "Opraviti do",
|
||||
"remaining": "Preostalo",
|
||||
"complete": "Opravljeno",
|
||||
"rewards": "Nagrade",
|
||||
"Rewards": "Nagrade",
|
||||
"gold": "Zlato",
|
||||
"silver": "Srebro",
|
||||
"newReward": "Nova nagrada",
|
||||
"price": "Cena",
|
||||
"tags" : "Oznake",
|
||||
"editTags" : "Uredi oznake",
|
||||
"newTag" : "Nova oznaka",
|
||||
"clearFilters" : "Počisti filtre",
|
||||
|
||||
|
||||
"_commentdrops" : "DROP SYSTEM",
|
||||
"dropsEnabled" : "Najdbe vključene!",
|
||||
"dropsEnabledText1" : "Odklenil si sistem najdb! Ko zdaj opraviš nalogo, imaš majhno možnost, da naletiš na najdbo. Ne boš verjel, ravnokar si našel",
|
||||
"dropsEnabledText2" : "jajce",
|
||||
"itemDropped" : "Nova najdba",
|
||||
|
||||
|
||||
|
||||
"_commentoptionsview": "OPTIONS VIEW",
|
||||
"profile": "Profil",
|
||||
"avatar": "Avatar",
|
||||
|
||||
"head": "Glava",
|
||||
"showHelm": "Pokaži čelado",
|
||||
"hair": "Lasje",
|
||||
"skin": "Polt",
|
||||
"clothing" : "OblaËila",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Spletni naslov slike",
|
||||
"fullName": "Polno ime",
|
||||
"blurb": "O tebi",
|
||||
"items" : "Oprema",
|
||||
"weapon" : "Orožje",
|
||||
"armor" : "Oklep",
|
||||
"helm" : "Čelada",
|
||||
"shield" : "Ščit",
|
||||
|
||||
"stats" : "Podatki",
|
||||
"strength" : "Moč",
|
||||
"defense" : "Obramba",
|
||||
"totalStrength" : "Skupna moč",
|
||||
"totalDefense" : "Skupna obramba",
|
||||
|
||||
|
||||
"party": "Skupina",
|
||||
"createAParty":"Ustvari skupino",
|
||||
"noPartyText": "Nisi del skupine. Lahko ustvariš svojo in povabiš prijatelje ali pa se pridružiš že obstoječi skupini. Naj uporabijo to številko:",
|
||||
"partyName": "Ime skupine",
|
||||
"create":"Ustvari",
|
||||
"userId":"Številka uporabnika",
|
||||
"invite":"Povabi",
|
||||
"leave": "Zapusti",
|
||||
"invitedTo" : "Povabljen si k skupini",
|
||||
"chat": "Klepet",
|
||||
|
||||
"inventory": "Inventar",
|
||||
"eggs": "Jajca",
|
||||
"noEggs": "Našel nisi še nobenega jajca.",
|
||||
"hatchingPotions": "Valilni napoji",
|
||||
"noHatchingPotions": "Našel nisi še nobenega valilnega napoja.",
|
||||
"hatchYourEgg" : "Naj se zverinica izvali",
|
||||
"whichHatchingPotion1" : "Kateri valilni napoj želiš politi po",
|
||||
"whichHatchingPotion2" : "jajcu?",
|
||||
"pour" : "polij",
|
||||
"rarePets" : "Redke zverinice",
|
||||
"market": "Trgovina",
|
||||
|
||||
"stable": "Hlev",
|
||||
"petsFound":"najdenih zverinic",
|
||||
"rarePets": "Redke zverinice",
|
||||
|
||||
"tavern": "Gostilna",
|
||||
"restButton":"Počivaj v gostilni",
|
||||
"checkoutButton": "Odjavi se iz gostilne",
|
||||
"tavernTalkTitle":"Gostilniški klepet in iskanje skupin",
|
||||
"tavernRestingInfo" : "Medtem ko počivaš, se dnevne naloge shranijo in ne škodujejo zdravju lika. Lahko se odjaviš jutri ali čez en teden in lik bo v istem stanju kot na začetku počitka.",
|
||||
"resources" : "Viri",
|
||||
"LFGPosts" : "Objave glede iskanja skupin",
|
||||
"tutorials" : "Vodiči",
|
||||
|
||||
"achievements":"Dosežki",
|
||||
"achievementUnlocked" : "Nov dosežek!",
|
||||
"npcText" : "Med največjimi podporniki pri Kickstarter projektu!",
|
||||
"contribName" : "Sodelavec",
|
||||
"contribText" : "Prispeval k razvoju HabitRPG-ja (programiranje, dizajn, pikslaste grafike, pravni nasveti, dokumenti itd.). Želiš to značko? Popravi kakšnega hrošča",
|
||||
"kickstartName1" : "Podpornik pri Kickstarterju - ",
|
||||
"kickstartName2" : "donacije",
|
||||
"kickstartText" : "Podprl Kickstarter projekt",
|
||||
"streakName" : " Niz(i) uspehov",
|
||||
"streakText1" : "Dosegel ",
|
||||
"stureakText2" : " 21-dnevnih nizov uspehov pri dnevnih nalogah",
|
||||
"origUserName" : "Prvotni uporabnik",
|
||||
"origUserText" : "Bil z nami od samega začetka HabitRPG-ja (kapo dol za uspešno prebijanje skozi te hroščaste čase!)",
|
||||
"ultimGearName" : "Vrhunska oprema",
|
||||
"ultimGearText" : "Prišel do najboljšega orožja in oklepa",
|
||||
"ultimGearUnlocked" : "Dobil si značko 'Vrhunska oprema', saj imaš najboljšo opremo, kar jo lahko kupi zlato!",
|
||||
"beastMastName" : "Šef zverinjaka",
|
||||
"beastMastText" : "Našel si vseh 90 zverinic (kar je izjemno težko, vsa čast!)",
|
||||
"beastMastUnlocked" : "Dobil si značko 'Šef zverinjaka', saj si našel vse zverinice!",
|
||||
|
||||
"settings":"Nastavitve",
|
||||
"customDayStart":"Določi začetek dneva",
|
||||
"24HrClock": "24-urni način",
|
||||
"clockInfo":"HabitRPG preveri in ponastavi tvoje dnevne naloge vsak dan opolnoči. To uro lahko spremeniš tukaj (vpiši številko med 0 in 24).",
|
||||
"misc":"Ostalo",
|
||||
"hideHeader":"Skrij glavo",
|
||||
"showHeader":"Pokaži glavo",
|
||||
"changePass":"Sprememba gesla",
|
||||
"oldPass":"Staro geslo",
|
||||
"newPass":"Novo geslo",
|
||||
"confirmPass":"Potrditev novega gesla",
|
||||
"dangerZone": "Nevarno območje",
|
||||
"reset":"Ponastavitev",
|
||||
"resetAltText":"Ponastavitev tvojega računa (nevarno)",
|
||||
"resetText1":"S tem gumbom ponastaviš celoten račun - naloge bodo izbrisane, tvoj lik pa bo moral začeti znova.",
|
||||
"resetText2":"Tega ne priporočamo, saj boš izgubil pretekle informacije, ki ti lahko pomagajo pri spremljanju napredka. Izbris računa je uporaben predvsem za ljudi, ki želijo program najprej preizkusiti, potem pa začeti na novo.",
|
||||
"restore":"Povrnitev",
|
||||
"restoreAltText":"Povrne liku podatke",
|
||||
"restoreText1":"HabitRPG je še v fazi razvoja, zato bodo nekateri uporabniki morda primorani liku povrniti podatke. Tukaj vpiši podatke in avtomatično bodo dodani tvojemu liku. Ko bo program bolj stabilen, bo ta funkcija odstranjena.",
|
||||
"delete":"Brisanje",
|
||||
"deleteAltText":"Brisanje računa",
|
||||
"deleteHeader" : "Izbriši račun",
|
||||
"deleteText1":"Počasi! Si prepričan? S tem boš za vedno izbrisal račun in ne bo se ga dalo povrniti. Če si popolnoma prepričan, vpiši",
|
||||
"deleteText2":" IZBRIŠI ",
|
||||
"deleteText3":"v okence",
|
||||
"API":"API",
|
||||
"APIText":"Kopiraj te podatke za uporabo pri aplikacijah drugih proizvajalcev.",
|
||||
"APIToken":"Api žeton",
|
||||
|
||||
|
||||
|
||||
"_commentitems": "ITEMS",
|
||||
"_commentitemsweps": "WEAPONS",
|
||||
"sword0name" : "Vadbeni meč",
|
||||
"sword1Name" : "Meč",
|
||||
"sword1Text" : "Poveča pridobivanje izkušenj za 3%.",
|
||||
"sword2Name" : "Sekira",
|
||||
"sword2Text" : "Poveča pridobivanje izkušenj za 6%.",
|
||||
"sword3Name" : "Buzdovan",
|
||||
"sword3Text" : "Poveča pridobivanje izkušenj za 9%.",
|
||||
"sword4Name" : "Modri meč",
|
||||
"sword4Text" : "Poveča pridobivanje izkušenj za 12%.",
|
||||
"sword5Name" : "Rdeči meč",
|
||||
"sword5Text" : "Poveča pridobivanje izkušenj za 15%.",
|
||||
"sword6Name" : "Zlati meč",
|
||||
"sword6Text" : "Poveča pridobivanje izkušenj za 18%.",
|
||||
|
||||
"_commentitemsarmor": "ARMOR",
|
||||
"armor0Name" : "Oklep iz blaga",
|
||||
"armor1Name" : "Usnjeni oklep" ,
|
||||
"armor1Text": "Zmanjša izgubo zdravja za 4%",
|
||||
"armor2Name" : "Verižna srajca",
|
||||
"armor2Text": "Zmanjša izgubo zdravja za 6%",
|
||||
"armor3Name" : "Ploščni oklep",
|
||||
"armor3Text": "Zmanjša izgubo zdravja za 7%",
|
||||
"armor4Name" : "Rdeči oklep",
|
||||
"armor4Text": "Zmanjša izgubo zdravja za 8%",
|
||||
"armor5Name" : "Zlati oklep",
|
||||
"armor5Text": "manjša izgubo zdravja za 10%",
|
||||
|
||||
"_commentitemshead" : "HEADGEAR",
|
||||
"head0Name" : "Brez čelade",
|
||||
"head1Name" : "Usnjena čelada" ,
|
||||
"head1Text": "Zmanjša izgubo zdravja za 2%",
|
||||
"head2Name" : "Verižna kapuca",
|
||||
"head2Text": "Zmanjša izgubo zdravja za 3%",
|
||||
"head3Name" : "Ploščna čelada",
|
||||
"head3Text": "Zmanjša izgubo zdravja za 4%",
|
||||
"head4Name" : "Rdeča čelada",
|
||||
"head4Text": "Zmanjša izgubo zdravja za 5%",
|
||||
"head5Name" : "Zlata čelada",
|
||||
"head5Text": "Zmanjša izgubo zdravja za 6%",
|
||||
|
||||
"_commentitemsshield" : "SHIELDS",
|
||||
"sheild0Name" : "Brez ščita",
|
||||
"sheild1Name" : "Leseni ščit",
|
||||
"sheild1Text": "Zmanjša izgubo zdravja za 3%",
|
||||
"sheild2Name" : "Mali ščit",
|
||||
"sheild2Text": "Zmanjša izgubo zdravja za 4%",
|
||||
"sheild3Name" : "Okrepljeni ščit",
|
||||
"sheild3Text": "Zmanjša izgubo zdravja za 5%",
|
||||
"sheild4Name" : "Rdeči ščit",
|
||||
"sheild4Text": "Zmanjša izgubo zdravja za 7%",
|
||||
"sheild5Name" : "Zlati ščit",
|
||||
"sheild5Text": "Zmanjša izgubo zdravja za 8%",
|
||||
|
||||
"_commentitemsother" : "OTHER ITEMS",
|
||||
"healthPotionName" : "Zdravilni napoj",
|
||||
"healthPotionNotes" : "Takoj povrne 15 točk pri zdravju",
|
||||
"rerollName" : "Ponastavitev nalog",
|
||||
"rerollNotes" : "Naloge spet postanejo rumene. To je uporabno, ko so vse naloge rdeče in je težko ostati živ.",
|
||||
"rerollModelHeader" : "Ponastavi naloge",
|
||||
"rerollModelText1" : "To močno odsvetujemo, saj rdeče naloge spodbujajo k izboljšavanju",
|
||||
"rerollModelText2" : "beri naprej",
|
||||
"rerollModelText3" : "Vendar pa to postane nujno po daljšem obdobju slabih navad.",
|
||||
|
||||
"_commentitemspeteggs": "PET EGGS",
|
||||
"wolfEgg": "Mladi volk",
|
||||
"tigerEgg": "Mladi tiger",
|
||||
"pandaEgg": "Mladi panda",
|
||||
"lionEgg": "Mladi lev",
|
||||
"foxEgg": "Lisjak",
|
||||
"pigEgg": "Leteči pujs",
|
||||
"dragonEgg": "Zmaj",
|
||||
"cactusEgg": "Kaktus",
|
||||
"bearEgg": "Mladi medved",
|
||||
|
||||
"_commentitemshatchingpotions": "HATCHING POTIONS",
|
||||
"basePotName": "Osnovni",
|
||||
"basePotText" : "Iz jajca se izvali osnovna zverinica.",
|
||||
"whitePotName": "Beli",
|
||||
"whitePotText" : "Iz jajca se izvali bela zverinica.",
|
||||
"desertPotName": "Puščavski",
|
||||
"desertPotText" : "Iz jajca se izvali puščavska zverinica.",
|
||||
"redPotName": "Rdeči",
|
||||
"redPotText" : "Iz jajca se izvali rdeča zverinica.",
|
||||
"shadePotName": "Senčni",
|
||||
"shadePotText" : "Iz jajca se izvali senčna zverinica.",
|
||||
"skeletonPotName": "Skeletni",
|
||||
"skeletonPotText" : "Iz jajca se izvali skeletna zverinica.",
|
||||
"zombiePotName": "Zombijski",
|
||||
"zombiePotText" : "Iz jajca se izvali zombijska zverinica.",
|
||||
"cottonPinkPotName": "Svetlo roza",
|
||||
"cottonPinkPotText" : "Iz jajca se izvali svetlo roza zverinica.",
|
||||
"cottonBluePotName": "Svetlo modri",
|
||||
"cottonBluePotText" : "Iz jajca se izvali svetlo modra zverinica.",
|
||||
"goldenPotName": "Zlati",
|
||||
"goldenPotText" : "Iz jajca se izvali zlata zverinica.",
|
||||
|
||||
|
||||
|
||||
"_commentnpcsandchars": "NPCS & CHARACTERS",
|
||||
"_commentNPCS" : "NPCS",
|
||||
"NPCBaileyText1" : "mestna klicarka tukaj! Oznanjam nekaj novosti!",
|
||||
"NPCAugustinText1" : "Dobrodošel v trgovini! Jaz sem trgovec;",
|
||||
"NPCAugustinText2" : "Če si neznansko želiš neke zverinice, a nočeš čakati, da jo najdeš, jo lahko kupiš tukaj.",
|
||||
"NPCJohanssonText1" : "Dobrodošel v gostilni! Jaz sem",
|
||||
"NPCJohanssonText2": "točaj. Če hočeš malo počiti (Greš na počitnice? Si zbolel?), ti bom pripravil posteljo - v tem času ti neopravljene dnevne naloge ne bodo škodovale. Usedi se in spoznaj domačine.",
|
||||
"NPCMelchiorText1" : "",
|
||||
"NPCBowenText1" : "",
|
||||
"NPCBochText1" : "",
|
||||
|
||||
"_commentdeathstuff" : "DEATH",
|
||||
"deathTitle" : "Umrl si!",
|
||||
"deathText" : "Izgubil si vso zlato, en level in en kos opreme. Pridno opravljaj dnevne naloge, da se to ne bo ponovilo!",
|
||||
|
||||
"_commentgems" : "GEMS",
|
||||
"gems" : "Dragulji",
|
||||
"outOfGems" : "Zmanjkalo dragljev",
|
||||
"buyMoreGems" : "Kupi več draguljev",
|
||||
"notEnoughGems" : "Nimaš dovolj draguljev",
|
||||
"petsOutOfGems" : "Zmanjkalo ti je draguljev, s katerimi lahko kupiš posebne predmete! HabitRPG je odprtokodni projekt in tvoja pomoč je zelo dobrodošla - kupi več draguljev, da lahko dobiš to zverinico, s tem pa tudi pomagaš ustvarjalcem",
|
||||
"gemsWhatFor" : "Z njimi lahko kupiš posebne predmete (ponastavitev nalog, jajca, valilni napoji itd.). Vendar pa moraš te funkcije najprej odkleniti.",
|
||||
|
||||
"_commentfooter": "FOOTER",
|
||||
"footerCompany" : "Podjetje",
|
||||
"companyAbout" : "O nas",
|
||||
"companyBlog" : "Blog",
|
||||
"companyTeam" : "Ekipa",
|
||||
"companyExtensions" : "Podaljški",
|
||||
"companyFAQ" : "Pogosta vprašanja",
|
||||
"footerLegal" : "Pravno obvestilo",
|
||||
"legalPrivacy" : "Varovanje podatkov",
|
||||
"legalTerms" : "Pravni pogoji",
|
||||
"footerCommunity" : "Skupnost",
|
||||
"communityBugs" : "Oddaj poročilo o hrošču",
|
||||
"communityFeatures" : "Zahtevaj novo funkcijo",
|
||||
"communityExtensions" : "Dodatki / Podaljški",
|
||||
"communityForum" : "Forum",
|
||||
"footerSocial" : "Družbena omrežja",
|
||||
|
||||
|
||||
|
||||
"_commentmisc": "MISC & GLOBAL",
|
||||
"removeAds": "Odstrani reklame",
|
||||
"whyAds": "Zakaj reklame?",
|
||||
"whyAdsContent1": "HabitRPG je odprtokodni projekt in tvoja pomoč je zelo dobrodošla - z donacijo pomagaš ustvarjalcem, prejmeš pa tudi 20 draguljev, s katerimi lahko kupiš posebne predmete.",
|
||||
|
||||
"whyAdsContent2": "'Podprl sem vas pri Kickstarterju!' - sledi",
|
||||
"whyAdsContent3": "tem navodilom",
|
||||
"_commentbuttons": "BUTTONS",
|
||||
"submit":"Pošlji",
|
||||
"close":"Zapri",
|
||||
"saveAndClose": "Shrani in zapri",
|
||||
"cancel":"Prekliči",
|
||||
"ok" : "V redu",
|
||||
"add" : "Dodaj",
|
||||
"undo" : "Razveljavi",
|
||||
"continue" : "Nadaljuj",
|
||||
"accept" : "Sprejmi",
|
||||
"reject" : "Prekliči",
|
||||
"or" : "Ali",
|
||||
"_commenttimestamps":"TIME STAMPS",
|
||||
"justNow":"Pravkar",
|
||||
"aMinuteAgo":"Pred eno minuto",
|
||||
"minutesAgo":"minut nazaj",
|
||||
"anHourAgo": "Pred eno uro",
|
||||
"hoursAgo": "ur nazaj",
|
||||
"yesterday":"Včeraj",
|
||||
"daysAgo":"dni nazaj"
|
||||
|
||||
}
|
||||
@@ -132,6 +132,10 @@
|
||||
"hair": "Волосся",
|
||||
"skin": "Кожа",
|
||||
"clothing" : "Одяг",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Посилання на фото",
|
||||
"fullName": "Повне ім'я",
|
||||
"blurb": "Про себе",
|
||||
|
||||
@@ -131,6 +131,10 @@
|
||||
"hair": "بال",
|
||||
"skin": "Skin",
|
||||
"clothing" : "Clothing",
|
||||
"showArmor": "Show Armor",
|
||||
"other": "Other",
|
||||
"showWeapon": "Show Weapon",
|
||||
"showShield": "Show Shield",
|
||||
"photoUrl": "Photo Url",
|
||||
"fullName": "Full Name",
|
||||
"blurb": "Blurb",
|
||||
|
||||
@@ -1,31 +1,36 @@
|
||||
db.users.find({},{backer: 1, items:1}).forEach(function(user){
|
||||
user.items = {
|
||||
armor: +user.items.armor || 0,
|
||||
weapon: +user.items.weapon || 0,
|
||||
head: +user.items.head || 0,
|
||||
shield: +user.items.shield || 0,
|
||||
db.users.find(
|
||||
{$where: "Array.isArray(this.items.pets) || Array.isArray(this.items.eggs) || Array.isArray(this.items.hatchingPotions)"},
|
||||
{backer: 1, items:1}
|
||||
).forEach(function(user){
|
||||
|
||||
pets: _.reduce(user.items.pets, function(m,v){ m[v] = 5; return m;}, {}),
|
||||
currentPet: user.items.currentPet ? user.items.currentPet.str : '',
|
||||
eggs: _.reduce(user.items.eggs, function(m,v){
|
||||
if (_.isArray(user.items.pets)) {
|
||||
user.items.pets = _.reduce(user.items.pets, function(m,v){ m[v] = 5; return m;}, {});
|
||||
}
|
||||
|
||||
if (!_.isString(user.items.currentPet)) {
|
||||
user.items.currentPet = user.items.currentPet ? user.items.currentPet.str : '';
|
||||
}
|
||||
|
||||
if (_.isArray(user.items.eggs)) {
|
||||
user.items.eggs = _.reduce(user.items.eggs, function(m,v){
|
||||
if (!m[v.name]) m[v.name] = 0;
|
||||
m[v.name]++;
|
||||
return m;
|
||||
}, {}),
|
||||
}, {});
|
||||
}
|
||||
|
||||
hatchingPotions: _.reduce(user.items.hatchingPotions, function(m,v){
|
||||
if (_.isArray(user.items.hatchingPotions)) {
|
||||
user.items.hatchingPotions = _.reduce(user.items.hatchingPotions, function(m,v){
|
||||
if (!m[v]) m[v] = 0;
|
||||
m[v]++;
|
||||
return m;
|
||||
}, {}),
|
||||
}, {});
|
||||
}
|
||||
|
||||
food: {},
|
||||
user.items.food = {};
|
||||
user.items.mounts = {};
|
||||
user.items.currentMount = '';
|
||||
|
||||
mounts: {},
|
||||
currentMount: '',
|
||||
|
||||
lastDrop: user.items.lastDrop || {date: new Date(), count: 0}
|
||||
};
|
||||
if (user.backer && user.backer.tier && user.backer.tier >= 90) {
|
||||
user.items.mounts['LionCub-Ethereal'] = true;
|
||||
}
|
||||
|
||||
10
migrations/20131115_update_gear_preferences.js
Normal file
10
migrations/20131115_update_gear_preferences.js
Normal file
@@ -0,0 +1,10 @@
|
||||
//Add defaults to show gears in all users
|
||||
db.users.update(
|
||||
{},
|
||||
{$set:{
|
||||
'preferences.showWeapon': true,
|
||||
'preferences.showShield': true,
|
||||
'preferences.showArmor': true,
|
||||
}},
|
||||
{multi:true}
|
||||
)
|
||||
18
migrations/20131117_fix_task_types.js
Normal file
18
migrations/20131117_fix_task_types.js
Normal file
@@ -0,0 +1,18 @@
|
||||
// TODO figure out why this is happening in the first place
|
||||
|
||||
db.users.find({},{habits:1, dailys:1, todos:1, rewards:1}).forEach(function(user){
|
||||
_.each(user.habits, function(task){
|
||||
task.type = 'habit';
|
||||
})
|
||||
_.each(user.dailys, function(task){
|
||||
task.type = 'daily';
|
||||
})
|
||||
_.each(user.todos, function(task){
|
||||
task.type = 'todo';
|
||||
})
|
||||
_.each(user.rewards, function(task){
|
||||
task.type = 'reward';
|
||||
})
|
||||
|
||||
db.users.update({_id:user._id}, {$set:{habits: user.habits, dailys: user.dailys, todos: user.todos, rewards: user.rewards}});
|
||||
});
|
||||
12
migrations/20131117_remove_undefined_pets.js
Normal file
12
migrations/20131117_remove_undefined_pets.js
Normal file
@@ -0,0 +1,12 @@
|
||||
// once and for all!
|
||||
|
||||
db.users.find({'items.pets':{$exists:1}},{'items.pets':1}).forEach(function(user){
|
||||
_.reduce(user.items.pets, function(m,v,k){
|
||||
if (!k.indexOf('undefined')) m.push(k);
|
||||
return m;
|
||||
}, []).forEach(function(key){
|
||||
delete user.items.pets[key];
|
||||
})
|
||||
|
||||
db.users.update({_id:user._id}, { $set:{'items.pets':user.items.pets} });
|
||||
});
|
||||
13
migrations/20131122_deleted_tags.js
Normal file
13
migrations/20131122_deleted_tags.js
Normal file
@@ -0,0 +1,13 @@
|
||||
// Cleanup broken tags
|
||||
// -------------------------
|
||||
db.users.find().forEach(function(user){
|
||||
var tasks = user.habits.concat(user.dailys).concat(user.todos).concat(user.rewards);
|
||||
|
||||
_.each(tasks, function(task){
|
||||
_.each(task.tags, function(value, key){ //value is true, key is tag.id
|
||||
if (!_.find(user.tags,{id:key})) delete task.tags[key];
|
||||
});
|
||||
});
|
||||
|
||||
db.users.update({_id:user._id}, user);
|
||||
});
|
||||
8
migrations/20131123_set_default_party_order.js
Normal file
8
migrations/20131123_set_default_party_order.js
Normal file
@@ -0,0 +1,8 @@
|
||||
//Add default to randomize party members list
|
||||
db.users.update(
|
||||
{},
|
||||
{$set:{
|
||||
'party.order': 'random',
|
||||
}},
|
||||
{multi:true}
|
||||
)
|
||||
5
migrations/20131126_clean_dayStart.js
Normal file
5
migrations/20131126_clean_dayStart.js
Normal file
@@ -0,0 +1,5 @@
|
||||
db.users.find({'preferences.dayStart':{$exists:1}},{'preferences.dayStart':1}).forEach(function(user){
|
||||
var dayStart = +user.preferences.dayStart;
|
||||
dayStart = (_.isNaN(dayStart) || dayStart < 0 || dayStart > 24) ? 0 : dayStart;
|
||||
db.users.update({_id:user._id}, {$set:{'preferences.dayStart':dayStart}});
|
||||
});
|
||||
1
migrations/20131126_turkey_pet.js
Normal file
1
migrations/20131126_turkey_pet.js
Normal file
@@ -0,0 +1 @@
|
||||
db.users.update({},{$set:{'items.pets.Turkey-Base':5, 'flags.newStuff':true}}, {multi:true});
|
||||
32
migrations/20131127_restore_dayStart.js
Normal file
32
migrations/20131127_restore_dayStart.js
Normal file
@@ -0,0 +1,32 @@
|
||||
// node .migrations/20131127_restore_dayStart.js
|
||||
|
||||
var mongo = require('mongoskin');
|
||||
var _ = require('lodash');
|
||||
|
||||
var backupUsers = mongo.db('localhost:27017/habitrpg_old?auto_reconnect').collection('users');
|
||||
var liveUsers = mongo.db('localhost:27017/habitrpg_new?auto_reconnect').collection('users');
|
||||
|
||||
var query = {'preferences.dayStart':{$exists:1,$ne:0}};
|
||||
var select = {'preferences.dayStart': 1};
|
||||
|
||||
backupUsers.count(query, function(err, count){
|
||||
if (err) return console.error(err);
|
||||
backupUsers.findEach(query, select, {batchSize:20}, function(err, before){
|
||||
if (err) return console.error(err);
|
||||
if (!before) { count--; return console.log('!before'); }
|
||||
liveUsers.findById(before._id, function(err, after){
|
||||
if (err) return console.error(err);
|
||||
if (!after) { count--; return console.log(before._id + ' deleted?'); }
|
||||
|
||||
var dayStart = +before.preferences.dayStart;
|
||||
if (after.preferences.dayStart == 0 && dayStart != 0){
|
||||
dayStart = (_.isNaN(dayStart) || dayStart < 0 || dayStart > 24) ? 0 : dayStart;
|
||||
} else {
|
||||
dayStart = after.preferences.dayStart;
|
||||
}
|
||||
|
||||
liveUsers.update({_id:after._id}, {$inc:{_v:1}, $set:{'preferences.dayStart':dayStart}});
|
||||
if (--count <= 0) console.log("DONE!");
|
||||
})
|
||||
});
|
||||
});
|
||||
10
package.json
10
package.json
@@ -11,7 +11,7 @@
|
||||
"express": "*",
|
||||
"gzippo": "*",
|
||||
"guid": "*",
|
||||
"moment": "*",
|
||||
"moment": "~2.4.0",
|
||||
"stripe": "*",
|
||||
"coffee-script": "*",
|
||||
"nconf": "*",
|
||||
@@ -19,7 +19,6 @@
|
||||
"superagent": "~0.12.4",
|
||||
"resolve": "~0.2.3",
|
||||
"expect.js": "~0.2.0",
|
||||
"relative-date": "~1.1.1",
|
||||
"lodash": "~2.2.1",
|
||||
"async": "~0.2.9",
|
||||
"optimist": "~0.5.2",
|
||||
@@ -43,7 +42,9 @@
|
||||
"nodemailer": "~0.5.2",
|
||||
"grunt-cli": "~0.1.9",
|
||||
"paypal-ipn": "~1.0.1",
|
||||
"express-csv": "~0.6.0"
|
||||
"express-csv": "~0.6.0",
|
||||
"pretty-data": "git://github.com/vkiryukhin/pretty-data#master",
|
||||
"js2xmlparser": "~0.1.2"
|
||||
},
|
||||
"private": true,
|
||||
"subdomain": "habitrpg",
|
||||
@@ -76,6 +77,7 @@
|
||||
"karma-chai-plugins": "~0.1.0",
|
||||
"mocha": "~1.12.1",
|
||||
"karma-mocha": "~0.1.0",
|
||||
"csv": "~0.3.6"
|
||||
"csv": "~0.3.6",
|
||||
"mongoskin": "~0.6.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -91,3 +91,6 @@ future re: pets and whatnot, this is just temporary.
|
||||
|
||||
.character-sprites span, .pet
|
||||
position: absolute
|
||||
|
||||
.herobox.isLeader
|
||||
background: $better
|
||||
|
||||
@@ -22,7 +22,7 @@ menu
|
||||
line-height: 2
|
||||
|
||||
.customize-option
|
||||
border: 1px solid grey;
|
||||
border: 0px solid grey;
|
||||
background-color: hsl(0, 0%, 93%);
|
||||
margin-bottom: 10px
|
||||
|
||||
|
||||
@@ -23,3 +23,14 @@
|
||||
|
||||
.tag-editing .tag-editing-pill
|
||||
height:auto
|
||||
|
||||
.tag-list
|
||||
overflow-y: auto
|
||||
white-space: nowrap
|
||||
|
||||
.nav-pills
|
||||
height: 43px
|
||||
|
||||
li
|
||||
display: inline-block
|
||||
float: none
|
||||
@@ -12,6 +12,10 @@
|
||||
position relative
|
||||
height 250px
|
||||
|
||||
.chat-form
|
||||
position: relative
|
||||
z-index: 10
|
||||
|
||||
.tavern-chat, .party-chat
|
||||
|
||||
li
|
||||
@@ -19,6 +23,7 @@
|
||||
padding-bottom:15px
|
||||
border-bottom 1px solid #ddd
|
||||
word-wrap:break-word
|
||||
position:relative
|
||||
|
||||
&.highlight
|
||||
background #EEE
|
||||
@@ -26,10 +31,43 @@
|
||||
label
|
||||
margin-right:5px
|
||||
|
||||
.float-label
|
||||
float:left
|
||||
position:absolute
|
||||
top:17px;
|
||||
|
||||
.hidden-label
|
||||
visibility:hidden
|
||||
|
||||
.scrollable-message
|
||||
max-height:80px
|
||||
overflow-y:auto
|
||||
|
||||
.expander
|
||||
float: right
|
||||
position: absolute
|
||||
bottom: 18px
|
||||
right: 20px
|
||||
background: white
|
||||
max-width: 20px
|
||||
max-height: 20px
|
||||
width: 100%
|
||||
height: 100%
|
||||
text-align: center
|
||||
|
||||
.own-message
|
||||
border-left: 4px solid #333
|
||||
padding-left: 2px
|
||||
|
||||
markdown
|
||||
|
||||
p:first-child
|
||||
display:inline
|
||||
|
||||
img
|
||||
max-height:50px
|
||||
vertical-align:top
|
||||
|
||||
// Name tags
|
||||
.label-contributor-1, .label-contributor-2
|
||||
background-color: #333;
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
@import "../bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css"
|
||||
@import "../bower_components/bootstrap-tour/build/css/bootstrap-tour.min.css"
|
||||
@import "../bower_components/angular-loading-bar/build/loading-bar.css"
|
||||
@import "../bower_components/js-emoji/emoji.css"
|
||||
|
||||
// Custom includes
|
||||
@import "./tasks.styl"
|
||||
@@ -66,6 +67,11 @@ hr
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
/* Bootstrap overrides */
|
||||
div.tooltip-inner {
|
||||
max-width: 300px;
|
||||
}
|
||||
|
||||
/* Customizations to make footer sticky */
|
||||
/*html, body {height: 100%;}*/
|
||||
#wrap
|
||||
@@ -159,7 +165,6 @@ hr
|
||||
position absolute
|
||||
bottom 0px
|
||||
right 0px
|
||||
background-color #dfe9ea
|
||||
padding 1px 3px 1px 3px
|
||||
|
||||
a
|
||||
|
||||
@@ -109,6 +109,8 @@ menu button[class*="Pet_Food_"]
|
||||
|
||||
// This adds feeding progress bars to pets. If we have any issues with `menu.pets > button`, revisit
|
||||
menu.pets .customize-menu
|
||||
width: 100%
|
||||
|
||||
button
|
||||
position: relative
|
||||
.progress
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
height: 72px
|
||||
float:left
|
||||
.NPC-Bailey-Head
|
||||
background-position: -168px -42px
|
||||
width: 54px
|
||||
background-position: -162px -42px
|
||||
width: 60px
|
||||
height: 30px
|
||||
position: absolute
|
||||
top: 117px // 147 (header-height) - 30 (bailey height)
|
||||
|
||||
@@ -2,6 +2,15 @@
|
||||
|
||||
window.env = window.env || {}; //FIX tests
|
||||
|
||||
if(window.env.language && window.env.language.momentLang && window.env.language.momentLangCode){
|
||||
var head = document.getElementsByTagName('head')[0];
|
||||
var script = document.createElement('script');
|
||||
script.type = 'text/javascript';
|
||||
script.text = window.env.language.momentLang;
|
||||
head.appendChild(script);
|
||||
moment.lang(window.env.language.momentLangCode);
|
||||
}
|
||||
|
||||
window.env.t = function(string){
|
||||
return (window.env.translations[string] || window.env.translations.stringNotFound);
|
||||
}
|
||||
@@ -9,7 +18,7 @@ window.env.t = function(string){
|
||||
window.habitrpg = angular.module('habitrpg',
|
||||
['ngResource', 'ngSanitize', 'userServices', 'groupServices', 'memberServices', 'challengeServices',
|
||||
'sharedServices', 'authServices', 'notificationServices', 'guideServices',
|
||||
'ui.bootstrap', 'ui.keypress', 'ui.router', 'chieffancypants.loadingBar', 'At'])
|
||||
'ui.bootstrap', 'ui.keypress', 'ui.router', 'chieffancypants.loadingBar', 'At', 'pasvaz.bindonce'])
|
||||
|
||||
// @see https://github.com/angular-ui/ui-router/issues/110 and https://github.com/HabitRPG/habitrpg/issues/1705
|
||||
// temporary hack until they have a better solution
|
||||
|
||||
@@ -65,6 +65,8 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
||||
}
|
||||
// We watch Members.selectedMember because it's asynchronously set, so would be a hassle to handle updates here
|
||||
$scope.$watch( function() { return Members.selectedMember; }, function (member) {
|
||||
if(member)
|
||||
member.petCount = window.habitrpgShared.helpers.countPets(null, member.items.pets);
|
||||
$scope.profile = member;
|
||||
});
|
||||
}
|
||||
@@ -129,6 +131,24 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
||||
$scope.message = {content:''};
|
||||
$scope._sending = false;
|
||||
|
||||
$scope.isUserMentioned = function(user, message) {
|
||||
if(message.hasOwnProperty("highlight"))
|
||||
return message.highlight;
|
||||
message.highlight = false;
|
||||
var messagetext = message.text.toLowerCase();
|
||||
var username = user.profile.name;
|
||||
var mentioned = messagetext.indexOf(username.toLowerCase());
|
||||
var pattern = username+"([^\w]|$){1}";
|
||||
if(mentioned > -1) {
|
||||
var preceedingchar = messagetext.substring(mentioned-1,mentioned);
|
||||
if(mentioned == 0 || preceedingchar.trim() == '' || preceedingchar == '@'){
|
||||
var regex = new RegExp(pattern,'i');
|
||||
message.highlight = regex.test(messagetext);
|
||||
}
|
||||
}
|
||||
return message.highlight;
|
||||
}
|
||||
|
||||
$scope.postChat = function(group, message){
|
||||
if (_.isEmpty(message) || $scope._sending) return;
|
||||
$scope._sending = true;
|
||||
@@ -162,6 +182,14 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
||||
group.$get();
|
||||
}
|
||||
|
||||
// List of Ordering options for the party members list
|
||||
$scope.partyOrderChoices = {
|
||||
'level': 'Sort by Level',
|
||||
'random': 'Sort randomly',
|
||||
'pets': 'Sort by number of pets',
|
||||
'party_date_joined': 'Sort by Party date joined',
|
||||
};
|
||||
|
||||
}])
|
||||
|
||||
.controller("GuildsCtrl", ['$scope', 'Groups', 'User', '$rootScope', '$state', '$location',
|
||||
@@ -172,8 +200,10 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
||||
}
|
||||
$scope.type = 'guild';
|
||||
$scope.text = 'Guild';
|
||||
$scope.newGroup = new Groups.Group({type:'guild', privacy:'private', leader: User.user._id, members: [User.user._id]});
|
||||
|
||||
var newGroup = function(){
|
||||
return new Groups.Group({type:'guild', privacy:'private', leader: User.user._id, members: [User.user._id]});
|
||||
}
|
||||
$scope.newGroup = newGroup()
|
||||
$scope.create = function(group){
|
||||
if (User.user.balance < 1) return $rootScope.modals.buyGems = true;
|
||||
|
||||
@@ -183,6 +213,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
||||
$scope.groups.guilds.push(saved);
|
||||
if(saved.privacy === 'public') $scope.groups.public.push(saved);
|
||||
$state.go('options.social.guilds.detail', {gid: saved._id});
|
||||
$scope.newGroup = newGroup();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,10 +2,31 @@
|
||||
|
||||
habitrpg.controller("HeaderCtrl", ['$scope', 'Groups', 'User',
|
||||
function($scope, Groups, User) {
|
||||
|
||||
|
||||
$scope.party = Groups.party(function(){
|
||||
$scope.partyMinusSelf = _.filter($scope.party.members, function(member){
|
||||
$scope.partyMinusSelf = _.sortBy(
|
||||
_.filter($scope.party.members, function(member){
|
||||
return member._id !== User.user._id;
|
||||
});
|
||||
}),
|
||||
function (member) {
|
||||
switch(User.user.party.order)
|
||||
{
|
||||
case 'level':
|
||||
return member.stats.lvl;
|
||||
break;
|
||||
case 'random':
|
||||
return Math.random();
|
||||
break;
|
||||
case 'pets':
|
||||
return member.items.pets.length;
|
||||
break;
|
||||
default:
|
||||
// party date joined
|
||||
return true;
|
||||
}
|
||||
}
|
||||
).reverse()
|
||||
});
|
||||
}
|
||||
]);
|
||||
|
||||
@@ -7,13 +7,11 @@ habitrpg.controller("InventoryCtrl", ['$rootScope', '$scope', 'User', 'API_URL',
|
||||
|
||||
$scope.selectedEgg = null; // {index: 1, name: "Tiger", value: 5}
|
||||
$scope.selectedPotion = null; // {index: 5, name: "Red", value: 3}
|
||||
$scope.petCount = _.size(User.user.items.pets);
|
||||
$scope.totalPets = _.size($scope.Items.eggs) * _.size($scope.Items.hatchingPotions);
|
||||
|
||||
// count egg, food, hatchingPotion stack totals
|
||||
var countStacks = function(items) { return _.reduce(items,function(m,v){return m+v;},0);}
|
||||
|
||||
$scope.$watch('user.items.pets', function(pets){ $scope.petCount = $rootScope.countExists(pets); }, true);
|
||||
$scope.$watch('user.items.mounts', function(mounts){ $scope.mountCount = $rootScope.countExists(mounts); }, true);
|
||||
$scope.$watch('user.items.eggs', function(eggs){ $scope.eggCount = countStacks(eggs); }, true);
|
||||
$scope.$watch('user.items.hatchingPotions', function(pots){ $scope.potCount = countStacks(pots); }, true);
|
||||
|
||||
@@ -29,7 +29,13 @@ habitrpg.controller('NotificationCtrl',
|
||||
});
|
||||
|
||||
$rootScope.$watch('user._tmp.drop', function(after, before){
|
||||
// won't work when getting the same item twice?
|
||||
if (after == before || !after) return;
|
||||
var type = after.type === 'HatchingPotion' ? 'hatchingPotions' : (after.type.toLowerCase() + 's')
|
||||
if(!User.user.items[type][after.name]){
|
||||
User.user.items[type][after.name] = 0;
|
||||
}
|
||||
User.user.items[type][after.name]++;
|
||||
$rootScope.modals.drop = true;
|
||||
});
|
||||
|
||||
@@ -44,10 +50,11 @@ habitrpg.controller('NotificationCtrl',
|
||||
});
|
||||
|
||||
$rootScope.$watch('user.items.pets', function(after, before){
|
||||
if(_.size(after) === _.size(before) || _.size(after) < 90) return;
|
||||
if(_.size(after) === _.size(before) ||
|
||||
window.habitrpgShared.helpers.countPets(null, after) < 90) return;
|
||||
User.user.achievements.beastMaster = true;
|
||||
$rootScope.modals.achievements.beastMaster = true;
|
||||
})
|
||||
}, true);
|
||||
|
||||
/*_.each(['weapon', 'head', 'chest', 'shield'], function(watched){
|
||||
$rootScope.$watch('user.items.' + watched, function(before, after){
|
||||
|
||||
@@ -21,9 +21,25 @@ habitrpg.controller("RootCtrl", ['$scope', '$rootScope', '$location', 'User', '$
|
||||
return haystack && ~haystack.indexOf(needle);
|
||||
}
|
||||
|
||||
// styling helpers
|
||||
$scope.userLevelStyle = function(user,style){
|
||||
style = style || '';
|
||||
if(user && user.backer && user.backer.npc)
|
||||
style += ' label-npc';
|
||||
if(user && user.contributor && user.contributor.level)
|
||||
style += ' label-contributor-'+user.contributor.level;
|
||||
return style;
|
||||
}
|
||||
|
||||
// count pets, mounts collected totals, etc
|
||||
$rootScope.countExists = function(items) {return _.reduce(items,function(m,v){return m+(v?1:0)},0)}
|
||||
|
||||
$rootScope.petCount = window.habitrpgShared.helpers.countPets(null, User.user.items.pets);
|
||||
|
||||
$rootScope.$watch('user.items.pets', function(pets){
|
||||
$rootScope.petCount = window.habitrpgShared.helpers.countPets($rootScope.countExists(pets), User.user.items.pets);
|
||||
}, true);
|
||||
|
||||
$scope.safeApply = function(fn) {
|
||||
var phase = this.$root.$$phase;
|
||||
if(phase == '$apply' || phase == '$digest') {
|
||||
|
||||
@@ -27,10 +27,11 @@ habitrpg.controller('SettingsCtrl',
|
||||
|
||||
$scope.saveDayStart = function(){
|
||||
var dayStart = +User.user.preferences.dayStart;
|
||||
if (dayStart < 0 || dayStart > 24) {
|
||||
if (_.isNaN(dayStart) || dayStart < 0 || dayStart > 24) {
|
||||
dayStart = 0;
|
||||
return alert('Please enter a number between 0 and 24');
|
||||
}
|
||||
User.log({'op':'set', data:{'preferences.dayStart': dayStart}});
|
||||
User.set('preferences.dayStart', dayStart);
|
||||
}
|
||||
|
||||
$scope.language = window.env.language;
|
||||
@@ -40,7 +41,7 @@ habitrpg.controller('SettingsCtrl',
|
||||
$rootScope.$on('userSynced', function(){
|
||||
location.reload();
|
||||
});
|
||||
User.set('preferences.language', $scope.language);
|
||||
User.set('preferences.language', $scope.language.code);
|
||||
}
|
||||
|
||||
$scope.reroll = function(){
|
||||
|
||||
@@ -6,7 +6,7 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User', '
|
||||
|
||||
$scope.score = function(task, direction) {
|
||||
if (task.type === "reward" && User.user.stats.gp < task.value){
|
||||
return Notification.text('Not enough GP.');
|
||||
return Notification.text('Not enough Gold!');
|
||||
}
|
||||
Algos.score(User.user, task, direction);
|
||||
User.log({op: "score",data: task, dir: direction});
|
||||
@@ -120,7 +120,7 @@ habitrpg.controller("TasksCtrl", ['$scope', '$rootScope', '$location', 'User', '
|
||||
Notification.text("Item purchased.");
|
||||
updateStore();
|
||||
} else {
|
||||
Notification.text("Not enough GP.");
|
||||
Notification.text("Not enough Gold!");
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -6,9 +6,6 @@ habitrpg.controller("UserCtrl", ['$rootScope', '$scope', '$location', 'User', '$
|
||||
$scope.hideUserAvatar = function() {
|
||||
$(".userAvatar").hide();
|
||||
};
|
||||
$scope.toggleHelm = function(val){
|
||||
User.log({op:'set', data:{'preferences.showHelm':val}});
|
||||
}
|
||||
|
||||
$scope.$watch('_editing.profile', function(value){
|
||||
if(value === true) $scope.editingProfile = angular.copy(User.user.profile);
|
||||
|
||||
@@ -82,13 +82,64 @@ habitrpg.directive('habitrpgSortable', ['User', function(User) {
|
||||
// }
|
||||
});
|
||||
|
||||
emoji.img_path = 'bower_components/habitrpg-shared/img/emoji/unicode/';
|
||||
|
||||
var toHtml = function (markdown) {
|
||||
if (markdown == undefined)
|
||||
return '';
|
||||
|
||||
return marked(markdown);
|
||||
markdown = marked(markdown);
|
||||
markdown = emoji.replace_colons(markdown);
|
||||
markdown = emoji.replace_unified(markdown);
|
||||
|
||||
return markdown;
|
||||
};
|
||||
|
||||
// [nickgordon20131123] this hacky override wraps images with a link to the image in a new window, and also adds some classes in case we want to style
|
||||
marked.InlineLexer.prototype.outputLink = function(cap, link) {
|
||||
var escape = function(html, encode) {
|
||||
return html
|
||||
.replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&')
|
||||
.replace(/</g, '<')
|
||||
.replace(/>/g, '>')
|
||||
.replace(/"/g, '"')
|
||||
.replace(/'/g, ''');
|
||||
};
|
||||
if (cap[0].charAt(0) !== '!') {
|
||||
return '<a class="markdown-link" href="'
|
||||
+ escape(link.href)
|
||||
+ '"'
|
||||
+ (link.title
|
||||
? ' title="'
|
||||
+ escape(link.title)
|
||||
+ '"'
|
||||
: '')
|
||||
+ '>'
|
||||
+ this.output(cap[1])
|
||||
+ '</a>';
|
||||
} else {
|
||||
return '<a class="markdown-img-link" href="'
|
||||
+ escape(link.href)
|
||||
+ '"'
|
||||
+ (link.title
|
||||
? ' title="'
|
||||
+ escape(link.title)
|
||||
+ '"'
|
||||
: '')
|
||||
+ '><img class="markdown-img" src="'
|
||||
+ escape(link.href)
|
||||
+ '" alt="'
|
||||
+ escape(cap[1])
|
||||
+ '"'
|
||||
+ (link.title
|
||||
? ' title="'
|
||||
+ escape(link.title)
|
||||
+ '"'
|
||||
: '')
|
||||
+ '></a>';
|
||||
}
|
||||
}
|
||||
|
||||
//hljs.tabReplace = ' ';
|
||||
|
||||
return {
|
||||
@@ -102,7 +153,9 @@ habitrpg.directive('habitrpgSortable', ['User', function(User) {
|
||||
link: function(scope, element, attrs) {
|
||||
scope.$watch(attrs.ngModel, function(value, oldValue) {
|
||||
var markdown = value;
|
||||
var linktarget = attrs.target || '_self';
|
||||
var html = md.toHtml(markdown);
|
||||
html = html.replace(' href','target="'+linktarget+'" href');
|
||||
element.html(html);
|
||||
});
|
||||
}
|
||||
@@ -153,3 +206,16 @@ habitrpg
|
||||
}
|
||||
}]);
|
||||
|
||||
habitrpg.directive('fromNow', ['$interval', function($interval){
|
||||
return function(scope, element, attr){
|
||||
var updateText = function(){ element.text(moment(scope.message.timestamp).fromNow()) };
|
||||
updateText();
|
||||
// Update the counter every 60secs if was sent less than one hour ago otherwise every hour
|
||||
// OPTIMIZATION, every time the interval is run, update the interval time
|
||||
var intervalTime = moment().diff(scope.message.timestamp, 'minute') < 60 ? 60000 : 3600000;
|
||||
var interval = $interval(function(){ updateText() }, intervalTime, false);
|
||||
scope.$on('$destroy', function() {
|
||||
$interval.cancel(interval);
|
||||
});
|
||||
}
|
||||
}]);
|
||||
|
||||
@@ -65,13 +65,14 @@ angular.module('userServices', []).
|
||||
// the user has been modified from another application, sync up
|
||||
if(data.wasModified) {
|
||||
delete data.wasModified;
|
||||
_.extend(user, data);
|
||||
$rootScope.$emit('userUpdated', user);
|
||||
}
|
||||
|
||||
// Update user
|
||||
_.extend(user, data);
|
||||
|
||||
// Emit event when user is synced
|
||||
$rootScope.$emit('userSynced');
|
||||
user._v = data._v;
|
||||
}
|
||||
sent.length = 0;
|
||||
settings.fetching = false;
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
"bower_components/angular-loading-bar/build/loading-bar.js",
|
||||
"bower_components/Angular-At-Directive/src/at.js",
|
||||
"bower_components/Angular-At-Directive/src/caret.js",
|
||||
"bower_components/angular-bindonce/bindonce.js",
|
||||
"bower_components/js-emoji/emoji.js",
|
||||
|
||||
"bower_components/bootstrap/docs/assets/js/bootstrap.js",
|
||||
"bower_components/angular-bootstrap/ui-bootstrap.js",
|
||||
|
||||
@@ -1,8 +1,12 @@
|
||||
var _ = require('lodash');
|
||||
var csv = require('express-csv');
|
||||
var express = require('express');
|
||||
var nconf = require('nconf');
|
||||
var moment = require('moment');
|
||||
var dataexport = module.exports;
|
||||
var js2xmlparser = require("js2xmlparser");
|
||||
var pd = require('pretty-data').pd;
|
||||
var User = require('../models/user').model;
|
||||
|
||||
|
||||
/*
|
||||
@@ -25,3 +29,58 @@ dataexport.history = function(req, res) {
|
||||
});
|
||||
return res.csv(output);
|
||||
}
|
||||
|
||||
var userdata = function(user) {
|
||||
if(user.auth && user.auth.local) {
|
||||
delete user.auth.local.salt;
|
||||
delete user.auth.local.hashed_password;
|
||||
}
|
||||
return user;
|
||||
}
|
||||
|
||||
dataexport.leanuser = function(req, res, next) {
|
||||
var user = res.locals.user;
|
||||
User.findOne({_id: user._id,}).lean().exec(function(err, user) {
|
||||
if (err) return res.json(500, {err: err});
|
||||
if (_.isEmpty(user)) return res.json(401, NO_USER_FOUND);
|
||||
res.locals.user = user;
|
||||
return next();
|
||||
});
|
||||
};
|
||||
|
||||
dataexport.userdata = {
|
||||
xml: function(req, res) {
|
||||
var user = userdata(res.locals.user);
|
||||
return res.xml({data: JSON.stringify(user), rootname: 'user'});
|
||||
},
|
||||
json: function(req, res) {
|
||||
var user = userdata(res.locals.user);
|
||||
return res.jsonstring(user);
|
||||
},
|
||||
}
|
||||
|
||||
/*
|
||||
------------------------------------------------------------------------
|
||||
Express Extensions (should be refactored into a module)
|
||||
------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
var expressres = express.response || http.ServerResponse.prototype;
|
||||
|
||||
expressres.xml = function(obj, headers, status) {
|
||||
var body = '';
|
||||
this.charset = this.charset || 'utf-8';
|
||||
this.header('Content-Type', 'text/xml');
|
||||
this.header('Content-Disposition', 'attachment');
|
||||
body = pd.xml(js2xmlparser(obj.rootname,obj.data));
|
||||
return this.send(body, headers, status);
|
||||
};
|
||||
|
||||
expressres.jsonstring = function(obj, headers, status) {
|
||||
var body = '';
|
||||
this.charset = this.charset || 'utf-8';
|
||||
this.header('Content-Type', 'application/json');
|
||||
this.header('Content-Disposition', 'attachment');
|
||||
body = pd.json(JSON.stringify(obj));
|
||||
return this.send(body, headers, status);
|
||||
};
|
||||
|
||||
@@ -470,11 +470,13 @@ api.deleteTag = function(req, res){
|
||||
delete task.tags[tag.id];
|
||||
})
|
||||
})
|
||||
user.markModified('habits');
|
||||
user.markModified('dailys');
|
||||
user.markModified('todos');
|
||||
user.markModified('rewards');
|
||||
user.save(function(err,saved){
|
||||
if (err) return res.json(500, {err: err});
|
||||
// Need to use this until we found a way to update the ui for tasks when a tag is deleted
|
||||
res.locals.wasModified = true;
|
||||
res.send(200);
|
||||
res.send(204);
|
||||
});
|
||||
} else {
|
||||
res.json(400, {err:'Tag not found'});
|
||||
@@ -628,10 +630,9 @@ api.batchUpdate = function(req, res, next) {
|
||||
if (err) return res.json(500, {err: err});
|
||||
var response = user.toJSON();
|
||||
response.wasModified = res.locals.wasModified;
|
||||
if (response._tmp && response._tmp.drop) response.wasModified = true;
|
||||
|
||||
// Send the response to the server
|
||||
if(response.wasModified){
|
||||
if (response._tmp && response._tmp.drop){
|
||||
res.json(200, {_tmp: {drop: response._tmp.drop}, _v: response._v});
|
||||
}else if(response.wasModified){
|
||||
res.json(200, response);
|
||||
}else{
|
||||
res.json(200, {_v: response._v});
|
||||
|
||||
@@ -106,6 +106,26 @@ var avalaibleLanguages = _.map(langCodes, function(langCode){
|
||||
}
|
||||
});
|
||||
|
||||
// Load MomentJS localization files
|
||||
var momentLangs = {};
|
||||
|
||||
// Handle different language codes from MomentJS and /locales
|
||||
var momentLangsMapping = {
|
||||
'en': 'en-gb',
|
||||
'no': 'nn'
|
||||
};
|
||||
|
||||
_.each(langCodes, function(code){
|
||||
var lang = _.find(avalaibleLanguages, {code: code});
|
||||
lang.momentLangCode = (momentLangsMapping[code] || code);
|
||||
try{
|
||||
var momentLang = momentLangsMapping[code] ? momentLangsMapping[code] : code;
|
||||
// MomentJS lang files are JS files that has to be executed in the browser so we load them as plain text files
|
||||
var f = fs.readFileSync(path.join(__dirname, '/../node_modules/moment/lang/' + lang.momentLangCode + '.js'), 'utf8');
|
||||
lang.momentLang = f;
|
||||
}catch (e){}
|
||||
});
|
||||
|
||||
var getUserLanguage = function(req, callback){
|
||||
var getFromBrowser = function(){
|
||||
var acceptable = _(req.acceptedLanguages).map(function(lang){
|
||||
|
||||
@@ -21,6 +21,8 @@ var eggPotionMapping = _.transform(items.items.eggs, function(m, egg){
|
||||
}));
|
||||
})
|
||||
|
||||
var specialPetsMapping = items.items.specialPets; // may need to revisit if we add additional information about the special pets
|
||||
|
||||
var UserSchema = new Schema({
|
||||
// ### UUID and API Token
|
||||
_id: {
|
||||
@@ -121,7 +123,6 @@ var UserSchema = new Schema({
|
||||
},
|
||||
|
||||
// -------------- Animals -------------------
|
||||
|
||||
// Complex bit here. The result looks like:
|
||||
// pets: {
|
||||
// 'Wolf-Desert': 0, // 0 means does not own
|
||||
@@ -133,11 +134,7 @@ var UserSchema = new Schema({
|
||||
// First transform to a 1D eggs/potions mapping
|
||||
_.transform(eggPotionMapping, function(m,v,k){ m[k] = Number; }),
|
||||
// Then add additional pets (backer, contributor)
|
||||
{
|
||||
'Wolf-Veteran': Number,
|
||||
'Wolf-Cerberus': Number,
|
||||
'Dragon-Hydra': Number
|
||||
}
|
||||
_.transform(specialPetsMapping, function(m,v,k){ m[k] = Number; })
|
||||
),
|
||||
currentPet: String, // Cactus-Desert
|
||||
|
||||
@@ -192,7 +189,8 @@ var UserSchema = new Schema({
|
||||
current: String, // party._id
|
||||
invitation: String, // party._id
|
||||
lastMessageSeen: String,
|
||||
leader: Boolean
|
||||
leader: Boolean,
|
||||
order: {type:String, 'default':'level'}
|
||||
},
|
||||
preferences: {
|
||||
armorSet: String,
|
||||
@@ -205,6 +203,9 @@ var UserSchema = new Schema({
|
||||
},
|
||||
hideHeader: {type:Boolean, 'default':false},
|
||||
showHelm: {type:Boolean, 'default':true},
|
||||
showWeapon: {type:Boolean, 'default':true},
|
||||
showShield: {type:Boolean, 'default':true},
|
||||
showArmor: {type:Boolean, 'default':true},
|
||||
skin: {type:String, 'default':'white'},
|
||||
timezoneOffset: Number,
|
||||
language: String,
|
||||
@@ -286,6 +287,9 @@ UserSchema.virtual('tasks').get(function () {
|
||||
|
||||
UserSchema.pre('save', function(next) {
|
||||
//this.markModified('tasks');
|
||||
if (_.isNaN(this.preferences.dayStart) || this.preferences.dayStart < 0 || this.preferences.dayStart > 24) {
|
||||
this.preferences.dayStart = 0;
|
||||
}
|
||||
|
||||
if (!this.profile.name) {
|
||||
var fb = this.auth.facebook;
|
||||
@@ -299,7 +303,11 @@ UserSchema.pre('save', function(next) {
|
||||
// Actually, can this be used as an attr default? (schema {type: ..., 'default': function(){}})
|
||||
this.stats.points = this.stats.lvl - (this.stats.def + this.stats.str + this.stats.per + this.stats.int);
|
||||
|
||||
var petCount = _.reduce(this.items.pets,function(m,v){return m+(v ? 1 : 0);},0);
|
||||
var petCount = helpers.countPets(_.reduce(this.items.pets,function(m,v){
|
||||
//HOTFIX - Remove when solution is found, the first argument passed to reduce is a function
|
||||
if(_.isFunction(v)) return m;
|
||||
return m+(v?1:0)},0), this.items.pets);
|
||||
|
||||
this.achievements.beastMaster = petCount >= 90;
|
||||
|
||||
//our own version incrementer
|
||||
@@ -316,7 +324,9 @@ UserSchema.methods.syncScoreToChallenge = function(task, delta){
|
||||
var t = chal.tasks[task.id];
|
||||
if (!t) return chal.syncToUser(self); // this task was removed from the challenge, notify user
|
||||
t.value += delta;
|
||||
if (t.type == 'habit' || t.type == 'daily') {
|
||||
t.history.push({value: t.value, date: +new Date});
|
||||
}
|
||||
chal.save();
|
||||
});
|
||||
}
|
||||
|
||||
@@ -6,5 +6,7 @@ var nconf = require('nconf');
|
||||
|
||||
/* Data export */
|
||||
router.get('/history.csv',auth.authWithSession,dataexport.history); //[todo] encode data output options in the data controller and use these to build routes
|
||||
router.get('/userdata.xml',auth.authWithSession,dataexport.leanuser,dataexport.userdata.xml);
|
||||
router.get('/userdata.json',auth.authWithSession,dataexport.leanuser,dataexport.userdata.json);
|
||||
|
||||
module.exports = router;
|
||||
|
||||
@@ -5,7 +5,7 @@ html(ng-app="habitrpg", ng-controller="RootCtrl", ng-class='{"applying-action":a
|
||||
title HabitRPG | Your Life The Role Playing Game
|
||||
|
||||
// ?v=1 needed to force refresh
|
||||
link(rel='shortcut icon' href='#{env.getBuildUrl("favicon.ico")}?v=2')
|
||||
link(rel='shortcut icon', href='#{env.getBuildUrl("favicon.ico")}?v=2')
|
||||
|
||||
script(type='text/javascript').
|
||||
window.env = !{JSON.stringify(env)};
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
.filters(ng-controller='FiltersCtrl')
|
||||
.filters.tag-list(ng-controller='FiltersCtrl')
|
||||
.pull-left.filter-description
|
||||
| Tags:
|
||||
ul.nav.nav-pills
|
||||
li
|
||||
a(rel='tooltip', title='Edit Tags', ng-click='saveOrEdit()')
|
||||
i(ng-class='{"icon-ok": _editing, "icon-pencil": !_editing}')
|
||||
li(ng-class='{active: user.filters[tag.id]}', ng-repeat='tag in user.tags', style='position: relative;')
|
||||
li(bindonce='user.tags', ng-class='{active: user.filters[tag.id]}', ng-repeat='tag in user.tags', style='position: relative;')
|
||||
.input-append.option-group.tag-editing(ng-show='_editing')
|
||||
input.input.input-small.option-content.tag-editing-pill(type='text', ng-model='tag.name')
|
||||
span.add-on.tag-editing-pill
|
||||
a.pull-right(ng-click='delete(tag,$index)')
|
||||
i.icon-trash
|
||||
a(ng-hide='_editing', ng-click='toggleFilter(tag)')
|
||||
i.icon-bullhorn(ng-if="tag.challenge")
|
||||
i.icon-bullhorn(bo-if="tag.challenge")
|
||||
| {{tag.name}}
|
||||
li
|
||||
form.form-inline(ng-show='_editing', ng-submit='createTag(_newTag)')
|
||||
|
||||
@@ -12,7 +12,7 @@ script(type='text/ng-template', id='partials/options.inventory.inventory.html')
|
||||
|
||||
li.customize-menu
|
||||
menu.pets-menu(label='Eggs ({{eggCount}})')
|
||||
p(ng-show='eggCount < 1') You don't have any eggs yet.
|
||||
p(ng-show='eggCount < 1') You don't have any eggs.
|
||||
div(ng-repeat='(egg,points) in ownedItems(user.items.eggs)')
|
||||
//TODO move positioning this styling to css
|
||||
button.customize-option(popover='{{Items.eggs[egg].notes}}', popover-title='{{Items.eggs[egg].text}} Egg', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseEgg(egg)', class='Pet_Egg_{{egg}}', ng-class='{selectableInventory: selectedPotion && !user.items.pets[egg+"-"+selectedPotion.name]}')
|
||||
@@ -21,7 +21,7 @@ script(type='text/ng-template', id='partials/options.inventory.inventory.html')
|
||||
|
||||
li.customize-menu
|
||||
menu.hatchingPotion-menu(label='Hatching Potions ({{potCount}})')
|
||||
p(ng-show='potCount < 1') You don't have any hatching potions yet.
|
||||
p(ng-show='potCount < 1') You don't have any hatching potions.
|
||||
div(ng-repeat='(pot,points) in ownedItems(user.items.hatchingPotions)')
|
||||
button.customize-option(popover='{{Items.hatchingPotions[pot].notes}}', popover-title='{{Items.hatchingPotions[pot].text}} Potion', popover-trigger='mouseenter', popover-placement='right', ng-click='choosePotion(pot)', class='Pet_HatchingPotion_{{pot}}', ng-class='{selectableInventory: selectedEgg && !user.items.pets[selectedEgg.name+"-"+pot]}')
|
||||
.badge.badge-info.stack-count {{points}}
|
||||
@@ -29,7 +29,7 @@ script(type='text/ng-template', id='partials/options.inventory.inventory.html')
|
||||
|
||||
//-li.customize-menu
|
||||
menu.pets-menu(label='Food ({{foodCount}})')
|
||||
p(ng-show='foodCount < 1') You don't have any food yet.
|
||||
p(ng-show='foodCount < 1') You don't have any food.
|
||||
div(ng-repeat='(food,points) in ownedItems(user.items.food)')
|
||||
button.customize-option(popover='{{Items.food[food].notes}}', popover-title='{{Items.food[food].text}}', popover-trigger='mouseenter', popover-placement='right', ng-click='chooseFood(food)', class='Pet_Food_{{food}}')
|
||||
.badge.badge-info.stack-count {{points}}
|
||||
@@ -52,11 +52,11 @@ script(type='text/ng-template', id='partials/options.inventory.inventory.html')
|
||||
| Welcome to the Market. Dying to get that particular pet you're after, but don't want to wait for it to drop? Buy it here! If you have unwanted drops, sell them to me.
|
||||
p
|
||||
button.btn.btn-primary(ng-show='selectedEgg', ng-click='sellInventory()')
|
||||
| Sell {{selectedEgg.name}} for {{selectedEgg.value}} GP
|
||||
| Sell {{selectedEgg.name}} for {{selectedEgg.value}} Gold
|
||||
button.btn.btn-primary(ng-show='selectedPotion', ng-click='sellInventory()')
|
||||
| Sell {{selectedPotion.name}} for {{selectedPotion.value}} GP
|
||||
| Sell {{selectedPotion.name}} for {{selectedPotion.value}} Gold
|
||||
button.btn.btn-primary(ng-show='selectedFood', ng-click='sellInventory()')
|
||||
| Sell {{selectedFood.name}} for {{selectedFood.value}} GP
|
||||
| Sell {{selectedFood.name}} for {{selectedFood.value}} Gold
|
||||
|
||||
menu.inventory-list(type='list')
|
||||
li.customize-menu
|
||||
|
||||
@@ -67,7 +67,8 @@ script(type='text/ng-template', id='partials/options.inventory.stable.pets.html'
|
||||
div
|
||||
button(ng-if='user.items.pets["Wolf-Veteran"]', class="pet-button Pet-Wolf-Veteran", ng-class='{active: user.items.currentPet == "Wolf-Veteran"}', ng-click='choosePet("Wolf", "Veteran")', popover='Veteran Wolf', popover-trigger='mouseenter', popover-placement='bottom')
|
||||
button(ng-if='user.items.pets["Wolf-Cerberus"]', class="pet-button Pet-Wolf-Cerberus", ng-class='{active: user.items.currentPet == "Wolf-Cerberus"}', ng-click='choosePet("Wolf", "Cerberus")', popover='Cerberus Pup', popover-trigger='mouseenter', popover-placement='bottom')
|
||||
button(ng-if='user.items.pets["Dragon-Hydra"]', class="pet-button Pet-Dragon-Hydra", ng-class='{active: user.items.currentPet == "Dragon-Hydra"}', ng-click='choosePet("Dragon", "Hydra")', popover='Hydra Pet', popover-trigger='mouseenter', popover-placement='bottom')
|
||||
button(ng-if='user.items.pets["Dragon-Hydra"]', class="pet-button Pet-Dragon-Hydra", ng-class='{active: user.items.currentPet == "Dragon-Hydra"}', ng-click='choosePet("Dragon", "Hydra")', popover='Hydra', popover-trigger='mouseenter', popover-placement='bottom')
|
||||
button(ng-if='user.items.pets["Turkey-Base"]', class="pet-button Pet-Turkey-Base", ng-class='{active: user.items.currentPet == "Turkey-Base"}', ng-click='choosePet("Turkey", "Base")', popover='Turkey', popover-trigger='mouseenter', popover-placement='bottom')
|
||||
a(target='_blank', href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG')
|
||||
button(ng-if='!user.items.pets["Dragon-Hydra"]', class="pet-button pet-not-owned", popover-trigger='mouseenter', popover-placement='right', popover="Click the gold paw to learn more about how you can obtain this rare pet through contributing to HabitRPG!", popover-title='How to Get this Pet!')
|
||||
img(src='/bower_components/habitrpg-shared/img/PixelPaw-Gold.png')
|
||||
|
||||
@@ -9,14 +9,26 @@ script(id='partials/options.profile.avatar.html', type='text/ng-template')
|
||||
button.m_head_0.customize-option(type='button', ng-click='set("preferences.gender","m")')
|
||||
button.f_head_0.customize-option(type='button', ng-click='set("preferences.gender","f")')
|
||||
label.checkbox
|
||||
input(type='checkbox', ng-model='user.preferences.showHelm', ng-change='toggleHelm(user.preferences.showHelm)')
|
||||
input(type='checkbox', ng-model='user.preferences.showHelm', ng-change='set("preferences.showHelm", user.preferences.showHelm?true: false)')
|
||||
| Show Helm
|
||||
|
||||
menu(ng-show='user.preferences.gender=="f"', type='list')
|
||||
menu(type='list')
|
||||
li.customize-menu
|
||||
menu(label='Clothing')
|
||||
button.f_armor_0_v1.customize-option(type='button', ng-click='set("preferences.armorSet","v1")')
|
||||
button.f_armor_0_v2.customize-option(type='button', ng-click='set("preferences.armorSet","v2")')
|
||||
button.f_armor_0_v1.customize-option(ng-show='user.preferences.gender=="f"', type='button', ng-click='set("preferences.armorSet","v1")')
|
||||
button.f_armor_0_v2.customize-option(ng-show='user.preferences.gender=="f"', type='button', ng-click='set("preferences.armorSet","v2")')
|
||||
label.checkbox
|
||||
input(type='checkbox', ng-model='user.preferences.showArmor', ng-change='set("preferences.showArmor", user.preferences.showArmor?true: false)')
|
||||
| Show Armor
|
||||
menu(type='list')
|
||||
li.customize-menu
|
||||
menu(label='Other')
|
||||
label.checkbox
|
||||
input(type='checkbox', ng-model='user.preferences.showWeapon', ng-change='set("preferences.showWeapon", user.preferences.showWeapon?true: false)')
|
||||
| Show Weapon
|
||||
label.checkbox
|
||||
input(type='checkbox', ng-model='user.preferences.showShield', ng-change='set("preferences.showShield", user.preferences.showShield?true: false)')
|
||||
| Show Shield
|
||||
|
||||
|
||||
.span4
|
||||
h3 Hair
|
||||
|
||||
@@ -71,4 +71,9 @@ script(id='partials/options.settings.export.html', type="text/ng-template")
|
||||
h2 Data Export
|
||||
small Here are a few options for saving your Habit data.
|
||||
h4 Habit History
|
||||
a(href="/export/history.csv") Export History (CSV)
|
||||
Export History:
|
||||
a(href="/export/history.csv") (CSV)
|
||||
h4 User Data
|
||||
Export User Data:
|
||||
a(href="/export/userdata.xml") (XML)
|
||||
a(href="/export/userdata.json") (JSON)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
| Challenges
|
||||
a.pull-right(target='_blank', href='https://trello.com/card/challenges-individual-party-guild-public/50e5d3684fe3a7266b0036d6/58')
|
||||
i.icon-question-sign
|
||||
.modal-body
|
||||
.modal-body(bindonce='group.challenges')
|
||||
div(ng-if='group.challenges.length > 0')
|
||||
table.table.table-striped
|
||||
tr(ng-repeat='challenge in group.challenges')
|
||||
|
||||
@@ -18,7 +18,7 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.me
|
||||
|
||||
script(type='text/ng-template', id='partials/options.social.challenges.detail.html')
|
||||
// Edit button
|
||||
div(ng-if='challenge.leader==user._id')
|
||||
div(bindonce='challenge', ng-if='challenge.leader==user._id')
|
||||
ul.unstyled
|
||||
li(ng-hide='challenge._locked==false')
|
||||
button.btn.btn-small.btn-default(ng-click='challenge._locked = false') Edit
|
||||
@@ -35,12 +35,12 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.ht
|
||||
textarea.option-content(cols='3', placeholder='Description', ng-model='challenge.description')
|
||||
hr
|
||||
|
||||
.well(ng-if='challenge.description') {{challenge.description}}
|
||||
.well(bindonce='challenge', ng-if='challenge.description') {{challenge.description}}
|
||||
i.icon-question-sign(popover="These are the challenge's tasks. As users participate, they will change color and gain graphs to show you the overall progress of the group.", popover-trigger='mouseenter', popover-placement='right')
|
||||
habitrpg-tasks(obj='challenge', main=false)
|
||||
|
||||
// Member List
|
||||
div(ng-if='challenge.members.length > 0')
|
||||
div(bindonce='challenge', ng-if='challenge.members.length > 0')
|
||||
h3 How's Everyone Doing?
|
||||
menu
|
||||
button.customize-option(ng-repeat='member in challenge.members', ng-click='toggleMember(challenge._id, member._id)') {{member.profile.name}}
|
||||
@@ -49,7 +49,7 @@ script(type='text/ng-template', id='partials/options.social.challenges.detail.ht
|
||||
// Accordion version if we choose that instead
|
||||
//- div(ng-if='challenge.members')
|
||||
h4 How's Everyone Doing?
|
||||
.accordion-group(ng-repeat='member in challenge.members')
|
||||
.accordion-group(bindonce='challenge.members', ng-repeat='member in challenge.members')
|
||||
.accordion-heading
|
||||
a.accordion-toggle(ng-click='toggleMember(challenge._id, member._id)') {{member.profile.name}}
|
||||
.accordion-body(ng-class='{collapse: $stateParams.uid != member._id}')
|
||||
@@ -92,7 +92,8 @@ script(type='text/ng-template', id='partials/options.social.challenges.html')
|
||||
|
||||
.option-medium
|
||||
input.option-content(type='text', minlength="3", maxlength="16", ng-model='newChallenge.shortName', placeholder='Tag Name', required)
|
||||
i.icon-question-sign(popover="Challenges appear on tag-lists & task-tooltips. So while you'll want a descriptive title above, you'll also need a 'short name'. Eg, 'Lose 10 pounds in 3 months' might become '-10lb'", popover-trigger='mouseenter', popover-placement='right')
|
||||
a(target='_blank', href='http://habitrpg.wikia.com/wiki/Tags')
|
||||
i.icon-question-sign(popover="Challenges appear on tag-lists & task-tooltips. So while you'll want a descriptive title above, you'll also need a 'short name'. Eg, 'Lose 10 pounds in 3 months' might become '-10lb' (Click the '?' for more info).", popover-trigger='mouseenter', popover-placement='right')
|
||||
|
||||
textarea.option-content(cols='3', placeholder='Description', ng-model='newChallenge.description')
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
form(ng-submit='postChat(group,message.content)')
|
||||
form.chat-form(ng-submit='postChat(group,message.content)')
|
||||
.-options
|
||||
//FIXME ng-model makes this painfully slow! using jquery for now, which is really non-angular-like
|
||||
.control-group.option-large(ng-controller='AutocompleteCtrl')
|
||||
textarea.chat-textarea.option-content(style='height:6em;', ui-keypress='{13:"postChat(group,message.content)"}', ng-model='message.content', updateinterval='250', flag='@', at-user, auto-complete)
|
||||
span.user-list(ng-show='!isAtListHidden')
|
||||
ul.list-at-user
|
||||
li(ng-repeat='user in users | filter:query.text | limitTo: 5', ng-click='autoComplete(user)')
|
||||
li(bindonce='users', ng-repeat='user in users | filter:query.text | limitTo: 5', ng-click='autoComplete(user)')
|
||||
span.username.label(class='label-contributor-{{user.contributor.level}}', ng-class='{"label-npc": user.backer.npc}') {{user.user}}
|
||||
table.pull-right
|
||||
tr
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
li(ng-repeat='message in group.chat', ng-class='{highlight: indexOf(message.text.toLowerCase(), user.profile.name.toLowerCase()), "own-message": user._id == message.uuid}')
|
||||
a.label.chat-message(class='label-contributor-{{message.contributor.level}}', ng-class='{"label-npc": message.backer.npc}', ng-click='clickMember(message.uuid, true)')
|
||||
span(tooltip='{{contribText(message.contributor, message.backer)}}') {{message.user}}
|
||||
li(bindonce='group.chat', ng-repeat='message in group.chat', bo-class='{highlight: isUserMentioned(user,message), "own-message": user._id == message.uuid}')
|
||||
div(class='scrollable-message')
|
||||
a.label.chat-message(class='hidden-label')
|
||||
span {{message.user}}
|
||||
|
|
||||
span(ng-bind-html="message.text | linky:'_blank'")
|
||||
markdown(ng-model='message.text',target='_blank')
|
||||
| -
|
||||
span.muted.time
|
||||
| {{relativeDate(message.timestamp, _currentTime) + ' '}}
|
||||
a(ng-show='user.contributor.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)')
|
||||
span.muted.time(from-now='message.timestamp')
|
||||
a(bo-show='user.contributor.admin || message.uuid == user.id', ng-click='deleteChatMessage(group, message)')
|
||||
|
|
||||
i.icon-remove(tooltip='Delete')
|
||||
a.label.chat-message(class='float-label', bo-class='{"label-npc": message.backer.npc, "label-contributor-{{message.contributor.level}}":message.contributor.level}', ng-click='clickMember(message.uuid, true)')
|
||||
span(tooltip='{{contribText(message.contributor, message.backer)}}') {{message.user}}
|
||||
|
||||
@@ -8,7 +8,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank'
|
||||
|
||||
// ------ Information -------
|
||||
.modal(style='position: relative;top: auto;left: auto;right: auto;margin: 0 auto 20px;z-index: 1;max-width: 100%;')
|
||||
.modal-header
|
||||
.modal-header(bindonce='group')
|
||||
span(ng-if='group.leader == user.id')
|
||||
button.btn.btn-primary.pull-right(ng-click='save(group)', ng-show='group._editing') Save
|
||||
button.btn.btn-default.pull-right(ng-click='group._editing = true', ng-hide='group._editing') Edit Group
|
||||
@@ -20,8 +20,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank'
|
||||
input.option-content(type='text', ng-model='group.name', placeholder='Group Name')
|
||||
.control-group.option-large
|
||||
label.control-label Description
|
||||
textarea.option-content(style='height:15em;', placeholder='Description', ng-model='group.description')
|
||||
include ../../shared/formatting-help
|
||||
textarea.option-content(style='height:15em;', placeholder='Description shown in public Guilds list (Markdown OK)', ng-model='group.description')
|
||||
.control-group.option-large
|
||||
label.control-label Logo URL
|
||||
input.option-content(type='url', placeholder='Logo URL', ng-model='group.logo')
|
||||
@@ -40,7 +39,16 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank'
|
||||
.modal-header
|
||||
h3 Members
|
||||
.modal-body
|
||||
table.table.table-striped
|
||||
span
|
||||
| Party Members list ordering
|
||||
select#partyOrder(
|
||||
style='width:140px',
|
||||
ng-model='user.party.order',
|
||||
ng-controller='ChatCtrl',
|
||||
ng-options='k as v for (k , v) in partyOrderChoices',
|
||||
ng-change='set("party.order", user.party.order)'
|
||||
)
|
||||
table.table.table-striped(bindonce='group')
|
||||
tr(ng-repeat='member in group.members')
|
||||
td
|
||||
// allow leaders to ban members
|
||||
@@ -78,8 +86,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank'
|
||||
.span8
|
||||
div.blah-options(ng-show='group._editing')
|
||||
.option-large
|
||||
textarea.option-content(style='height:15em;', placeholder='Message from group leader', ng-model='group.leaderMessage')
|
||||
include ../../shared/formatting-help
|
||||
textarea.option-content(style='height:15em;', placeholder='Message from group leader (Markdown OK)', ng-model='group.leaderMessage')
|
||||
table(ng-show='group.leaderMessage')
|
||||
tr
|
||||
td
|
||||
@@ -91,6 +98,7 @@ a.pull-right.gem-wallet(popover-trigger='mouseenter', popover-title='Guild Bank'
|
||||
div(ng-controller='ChatCtrl')
|
||||
h3 Chat
|
||||
include ./chat-box
|
||||
include ../../shared/formatting-help
|
||||
|
||||
ul.unstyled.tavern-chat
|
||||
include ./chat-message
|
||||
|
||||
@@ -47,20 +47,22 @@
|
||||
// Player Tiers
|
||||
.modal(style='position: relative;top: auto;left: auto;right: auto;margin: 0 auto 20px;z-index: 1;max-width: 100%;')
|
||||
.modal-header
|
||||
h3 Player Tier Legend
|
||||
h3 Player Tiers
|
||||
.modal-body
|
||||
small.
|
||||
Click labels to expand. See <a href='http://habitrpg.wikia.com/wiki/Contributor_Rewards' target='_blank'>contribution details.</a>
|
||||
Click tier labels below for more information. <br />
|
||||
<a href='http://habitrpg.wikia.com/wiki/Contributor_Rewards' target='_blank'>Learn more about contributor rewards</a> <br />
|
||||
<a href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG' target='_blank'>Learn how to contribute to HabitRPG</a>
|
||||
table.table.table-striped
|
||||
tr
|
||||
td
|
||||
a.label.label-contributor-1(ng-click='toggleUserTier($event)') Friend (1-2)
|
||||
div(style='display:none;')
|
||||
p.
|
||||
<span class='achievement achievement-firefox'></span> When your <strong>first</strong> submission is deployed, you will receive the HabitRPG Contributor's badge. Your name in Tavern chat will proudly display that you are a contributor.
|
||||
<span class='achievement achievement-firefox'></span> When your <strong>first</strong> submission is deployed, you will receive the HabitRPG Contributor's badge. Your name in Tavern chat will proudly display that you are a contributor. As a bounty for your work, you will also receive <strong>2 Gems</strong>.
|
||||
hr
|
||||
p.
|
||||
<span class='shop_armor_7 shop-sprite item-img'></span> When your <strong>second</strong> submission is deployed, the <strong>Crystal Armor</strong> will be available for purchase in the Rewards shop after the Golden Armor. As a bounty for your great work, you will also receive <strong>2 Gems</strong>.
|
||||
<span class='shop_armor_7 shop-sprite item-img'></span> When your <strong>second</strong> submission is deployed, the <strong>Crystal Armor</strong> will be available for purchase in the Rewards shop after the Golden Armor. As a bounty for your continued work, you will also receive <strong>2 Gems</strong>.
|
||||
tr
|
||||
td
|
||||
a.label.label-contributor-3(ng-click='toggleUserTier($event)') Elite (3-4)
|
||||
@@ -69,23 +71,23 @@
|
||||
<span class='shop_head_7 shop-sprite item-img'></span> When your <strong>third</strong> submission is deployed, the <strong>Crystal Helmet</strong> will be available for purchase in the Rewards shop after the Golden Helmet. As a bounty for your great work, you will also receive <strong>2 Gems</strong>.
|
||||
hr
|
||||
p.
|
||||
<span class='shop_weapon_8 shop-sprite item-img'></span> When your <strong>fourth</strong> submission is deployed, the <strong>Crystal Sword</strong> will be available for purchase in the Rewards shop after the Golden Sword. As a bounty for your great work, you will also receive <strong>2 Gems</strong>.
|
||||
<span class='shop_weapon_8 shop-sprite item-img'></span> When your <strong>fourth</strong> submission is deployed, the <strong>Crystal Sword</strong> will be available for purchase in the Rewards shop after the Golden Sword. You will once again receive a bounty of <strong>2 Gems</strong>.
|
||||
|
||||
tr
|
||||
td
|
||||
a.label.label-contributor-5(ng-click='toggleUserTier($event)') Champion (5-6)
|
||||
div(style='display:none;')
|
||||
p.
|
||||
<span class='shop_shield_7 shop-sprite item-img'></span> When your <em>fifth</em> submission is deployed, the <strong>Crystal Shield</strong> will be available for purchase in the Reward shop after the Golden Shield. As a bounty for your great work, you will also receive <strong>2 Gems</strong>.
|
||||
<span class='shop_shield_7 shop-sprite item-img'></span> When your <em>fifth</em> submission is deployed, the <strong>Crystal Shield</strong> will be available for purchase in the Reward shop after the Golden Shield. You will also receive <strong>2 Gems</strong>.
|
||||
hr
|
||||
p.
|
||||
<div class='Pet-Dragon-Hydra pull-left'></div> When your <em>sixth</em> submission is deployed, you will receive a <strong>Hydra Pet</strong>. As a bounty for your great work, you will also receive <strong>2 Gems</strong>.
|
||||
<div class='Pet-Dragon-Hydra pull-left'></div> When your <em>sixth</em> submission is deployed, you will receive a <strong>Hydra Pet</strong>. You will also receive <strong>2 Gems</strong>.
|
||||
tr
|
||||
td
|
||||
a.label.label-contributor-7(ng-click='toggleUserTier($event)') Legendary (7)
|
||||
div(style='display:none;')
|
||||
p.
|
||||
When your <em>seventh</em> submission is deployed, you will receive <strong>2 Gems</strong> and become a member of the honored Contributor's Guild and be privy to the behind-the-scenes details of HabitRPG!
|
||||
When your <em>seventh</em> submission is deployed, you will receive <strong>2 Gems</strong> and become a member of the honored Contributor's Guild and be privy to the behind-the-scenes details of HabitRPG! Further contributions do not increase your level, but you may continue to earn Gem bounties and titles.
|
||||
tr
|
||||
td
|
||||
a.label.label-contributor-8(ng-click='toggleUserTier($event)') Heroic
|
||||
@@ -102,7 +104,9 @@
|
||||
.span8(ng-controller='ChatCtrl')
|
||||
h3 Tavern Talk
|
||||
include ./chat-box
|
||||
small.alert.alert-info.
|
||||
Note: if you're reporting a bug, the developers won't see it here. <a href='http://community.habitrpg.com/node/280' target='_blank'>Follow these instructions</a> instead.
|
||||
small
|
||||
include ../../shared/formatting-help
|
||||
alert.alert-info.
|
||||
Note: if you're reporting a bug, the developers won't see it here. Please <a href='https://github.com/HabitRPG/habitrpg/issues' target='_blank'>use Github instead</a>.
|
||||
ul.unstyled.tavern-chat
|
||||
include ./chat-message
|
||||
|
||||
@@ -32,7 +32,7 @@ footer.footer(ng-controller='FooterCtrl')
|
||||
h4 Community
|
||||
ul.unstyled
|
||||
li
|
||||
a(target='_blank', href='https://github.com/lefnire/habitrpg/issues?state=open') Submit Bug
|
||||
a(target='_blank', href='https://github.com/HabitRPG/habitrpg/issues') Submit Bug
|
||||
li
|
||||
a(target='_blank', href='https://trello.com/board/habitrpg/50e5d3684fe3a7266b0036d6') Request Feature
|
||||
li
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
small
|
||||
a(target='_blank', href='http://daringfireball.net/projects/markdown/') Use Markdown form formatting
|
||||
a(target='_blank', href='http://habitrpg.wikia.com/wiki/Markdown_Cheat_Sheet') Markdown formatting allowed
|
||||
@@ -3,7 +3,7 @@
|
||||
Removing it will remove the user's name, but will allow more room for mounts & helms. IMO this is the lesser of two evils, revisit
|
||||
//-figure.herobox(ng-click='clickMember(profile._id)', data-name='{{profile.profile.name}}', ng-class='{isUser: profile.id==user.id, hasPet: profile.items.currentPet}', data-level='{{profile.stats.lvl}}', data-uid='{{profile.id}}', rel='popover', data-placement='bottom', data-trigger='hover', data-html='true', data-content="<div ng-hide='profile.id == user.id'> <div class='progress progress-danger' style='height:5px;'> <div class='bar' style='height: 5px; width: {{percent(profile.stats.hp, 50)}}%;'></div> </div> <div class='progress progress-warning' style='height:5px;'> <div class='bar' style='height: 5px; width: {{percent(profile.stats.exp, tnl(profile.stats.lvl))}}%;'></div> </div> <div>Level: {{profile.stats.lvl}}</div> <div>GP: {{profile.stats.gp | number:0}}</div> <div>{{count(profile.items.pets)}} / 90 Pets Found</div> </div>")
|
||||
|
||||
figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember(profile._id)', data-name='{{profile.profile.name}}', ng-class='{isUser: user._id==profile._id && !(user.items.currentMount && user.items.currentPet), hasPet: profile.items.currentPet && profile.items.currentMount, "cast-target": applyingAction}')
|
||||
figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember(profile._id)', data-name='{{profile.profile.name}}', ng-class='{isUser: user._id==profile._id && !(user.items.currentMount && user.items.currentPet), hasPet: profile.items.currentPet && profile.items.currentMount, "cast-target": applyingAction, isLeader: party.leader==profile._id}')
|
||||
.character-sprites
|
||||
// Mount Body
|
||||
span(ng-if='profile.items.currentMount', class='Mount_Body_{{profile.items.currentMount}}')
|
||||
@@ -22,10 +22,10 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember(
|
||||
span(class='m_head_0')
|
||||
span(class='m_hair_base_{{profile.preferences.hair.base}}_{{profile.preferences.hair.color}}')
|
||||
span(class='m_hair_bangs_{{profile.preferences.hair.bangs}}_{{profile.preferences.hair.color}}')
|
||||
span(class='m_{{profile.items.gear.current.armor}}')
|
||||
span(class='m_{{profile.items.gear.current.armor}}', ng-show='profile.preferences.showArmor')
|
||||
span(class='m_{{profile.items.gear.current.head}}', ng-show='profile.preferences.showHelm')
|
||||
span(class='m_{{profile.items.gear.current.shield}}')
|
||||
span(class='m_{{profile.items.gear.current.weapon}}')
|
||||
span(class='m_{{profile.items.gear.current.shield}}', ng-show='profile.preferences.showShield')
|
||||
span(class='m_{{profile.items.gear.current.weapon}}', ng-show='profile.preferences.showWeapon')
|
||||
|
||||
// Mount Head
|
||||
span(ng-if='profile.items.currentMount', class='Mount_Head_{{profile.items.currentMount}}')
|
||||
@@ -34,4 +34,5 @@ figure.herobox(ng-click='spell ? castEnd(profile, "user", $event) : clickMember(
|
||||
span(ng-class='{zzz:profile.flags.rest}')
|
||||
// FIXME handle @minimal, this might have to be a directive
|
||||
span.current-pet(class='Pet-{{profile.items.currentPet}}', ng-show='profile.items.currentPet && !minimal')
|
||||
.avatar-level Lvl {{profile.stats.lvl}}
|
||||
.avatar-level(ng-class='userLevelStyle(profile,"label")')
|
||||
| Lvl {{profile.stats.lvl}}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
.bar(style='width: {{percent(user.stats.exp,tnl(user.stats.lvl))}}%;')
|
||||
span.meter-text
|
||||
i.icon-star
|
||||
| {{user.stats.exp | number:0}} / {{tnl(user.stats.lvl)}}
|
||||
| {{user.stats.exp | number:0}} / {{tnl(user.stats.lvl) | number:0}}
|
||||
// FIXME doesn't look great here, but the "Experience" CSS title rollover covers it where it was before
|
||||
span(ng-show='user.history.exp')
|
||||
a(ng-click='toggleChart("exp")', tooltip='Progress')
|
||||
|
||||
@@ -12,4 +12,4 @@ div(modal='user.stats.hp <= 0', options='{backdrop:true, keyboard:false, backdro
|
||||
a.btn.btn-danger.btn-large.notification-action(ng-click='User.revive()') Continue
|
||||
.span8
|
||||
p
|
||||
| You've lost a level, all your gold, and a random piece of equipment. Arise, Habiteer, and try again! Curb those negative Habits, be vigilant in completion of Dailies, and hold death at arm's length with a Potion if you falter!
|
||||
| You've lost a Level, all your Gold, and a random piece of Equipment. Arise, Habiteer, and try again! Curb those negative Habits, be vigilant in completion of Dailies, and hold death at arm's length with a Health Potion if you falter!
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
div(ng-controller='MemberModalCtrl')
|
||||
#memberModal(modal='modals.member')
|
||||
.modal-header
|
||||
.modal-header(bindonce='profile')
|
||||
h3
|
||||
span {{profile.profile.name}}
|
||||
span(ng-if='profile.contributor.level') - {{contribText(profile.contributor, profile.backer)}}
|
||||
.modal-body
|
||||
.modal-body(bindonce='profile')
|
||||
.row-fluid
|
||||
.span6
|
||||
img(ng-show='profile.profile.imageUrl', ng-src='{{profile.profile.imageUrl}}')
|
||||
|
||||
@@ -12,25 +12,38 @@ div(modal='modals.newStuff')
|
||||
h3.popover-title
|
||||
a(target='_blank', href='https://twitter.com/Mihakuu') Bailey
|
||||
.popover-content
|
||||
table
|
||||
table.table.table-striped
|
||||
tr
|
||||
td
|
||||
//ul.modal-indented-list
|
||||
h4 Contrib Gear
|
||||
p.
|
||||
You can now unlock new a top-tier gear set and pet by contributing (code, art, docs, etc) to HabitRPG. <a href='http://habitrpg.wikia.com/wiki/Contributor_Rewards' target='_blank'>Read more</a>
|
||||
small.muted 11/08/2013
|
||||
h4 Turkey Event (by @lemoness)
|
||||
p Say hi to our NPCs, dressed to impressed for Turkey day! Also - check your stable, you'll find a fun new pet.
|
||||
tr
|
||||
td
|
||||
.herobox(style='background-color:transparent;')
|
||||
.character-sprites
|
||||
span.armor_7
|
||||
span.head_7
|
||||
span.shield_7
|
||||
span.weapon_8
|
||||
span.current-pet.Pet-Dragon-Hydra
|
||||
h4 Chat Enhancements (by @Nick Gordon)
|
||||
p.
|
||||
Chat can now use markdown, Emoji, and @-tagging. Some pointers on using markdown & Emoji at <a href="http://habitrpg.wikia.com/wiki/Markdown_Cheat_Sheet" target="_blank">here</a>. To use @-tagging, simply type '@' in chat.
|
||||
tr
|
||||
td
|
||||
h4 Party Sorting (by @Fandekasp)
|
||||
p.
|
||||
You can now adjust the way you view your party members in the top bar. They can be sorted by level, number of pets, the date they joined the party, or just randomly. Also, level colors now reflect your contributor status.
|
||||
tr
|
||||
td
|
||||
h4 Wiki Updates (by @bobbyroberts99)
|
||||
p.
|
||||
The <a href='http://habitrpg.wikia.com/wiki/HabitRPG_Wiki' target='_blank'>HabitRPG wiki</a> is being speedily updated. If you’re confused about anything, go check it out - it’s a treasure trove.
|
||||
|
||||
|
||||
small.muted 11/27/2013
|
||||
|
||||
hr
|
||||
|
||||
h5 11/08/2013
|
||||
table.table.table-striped
|
||||
tr
|
||||
td.
|
||||
Contrib Gear. You can now unlock new a top-tier gear set and pet by contributing (code, art, docs, etc) to HabitRPG. <a href='http://habitrpg.wikia.com/wiki/Contributor_Rewards' target='_blank'>Read more</a>
|
||||
|
||||
h5 11/01/2013
|
||||
table.table.table-striped
|
||||
tr
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
span.label(ng-if='profile.contributor.level', class='label-contributor-{{profile.contributor.level}}') {{contribText(profile.contributor, profile.backer)}}
|
||||
span.label(ng-if='!profile.contributor.level') Contributor
|
||||
small.
|
||||
Has contributed to HabitRPG (code, design, pixel art, legal advice, docs, etc). Want this badge? Fix a bug :)
|
||||
Has contributed to HabitRPG (code, design, pixel art, legal advice, docs, etc). Want this badge? <a href='http://habitrpg.wikia.com/wiki/Contributing_to_HabitRPG' target='_blank'>Read more</a>.
|
||||
hr
|
||||
|
||||
div(ng-if='profile.backer.tier')
|
||||
|
||||
@@ -1,42 +1,47 @@
|
||||
h4 Items
|
||||
h4 Equipment
|
||||
p
|
||||
strong {{itemText('weapon',profile.items.weapon)}}
|
||||
| : {{itemStat('weapon',profile.items.weapon)}}% Exp gain
|
||||
| : {{itemStat('weapon',profile.items.weapon)}} Attack
|
||||
p
|
||||
strong {{itemText('armor',profile.items.armor)}}
|
||||
| : {{itemStat('armor',profile.items.armor)}}% Defense
|
||||
| : {{itemStat('armor',profile.items.armor)}} Protection
|
||||
p
|
||||
strong {{itemText('head',profile.items.head)}}
|
||||
| : {{itemStat('head',profile.items.head)}}% Defense
|
||||
| : {{itemStat('head',profile.items.head)}} Protection
|
||||
p
|
||||
strong {{itemText('shield',profile.items.shield)}}
|
||||
| : {{itemStat('shield',profile.items.shield)}}% Defense
|
||||
| : {{itemStat('shield',profile.items.shield)}} Protection
|
||||
h4 Stats
|
||||
p
|
||||
strong HP
|
||||
strong Health
|
||||
| : {{profile.stats.hp | number:0}} / 50
|
||||
p
|
||||
strong GP
|
||||
strong Gold
|
||||
| : {{profile.stats.gp | number:0}}
|
||||
p
|
||||
strong Lvl
|
||||
strong Level
|
||||
| : {{profile.stats.lvl}}
|
||||
p
|
||||
strong Exp
|
||||
strong Experience
|
||||
| : {{profile.stats.exp | number:0}} / {{tnl(profile.stats.lvl)}}
|
||||
p
|
||||
strong Strength
|
||||
| : {{userStr(profile.stats.lvl)}}
|
||||
| :
|
||||
span(popover-trigger='mouseenter', popover='(Level-1)/2') {{userStr(profile.stats.lvl)}}
|
||||
p
|
||||
strong Defense
|
||||
| : {{userDef(profile.stats.lvl)}}
|
||||
| :
|
||||
span(popover-trigger='mouseenter', popover='(Level-1)/2') {{userDef(profile.stats.lvl)}}
|
||||
p
|
||||
strong Pets Found
|
||||
| : {{countExists(profile.items.pets)}}
|
||||
| : {{profile.petCount}}
|
||||
hr
|
||||
p
|
||||
strong Total Strength
|
||||
| : {{totalStr(profile.stats.lvl, profile.items.weapon)}} %
|
||||
strong Total Experience Boost
|
||||
| :
|
||||
span(popover-trigger='mouseenter', popover='Attack + Strength') {{totalStr(profile.stats.lvl, profile.items.weapon)}} %
|
||||
|
||||
p
|
||||
strong Total Defense
|
||||
| : {{totalDef(profile.stats.lvl, profile.items.armor, profile.items.head, profile.items.shield)}} %
|
||||
strong Total Damage Reduction
|
||||
| :
|
||||
span(popover-trigger='mouseenter', popover='Defense + Protection') {{totalDef(profile.stats.lvl, profile.items.armor, profile.items.head, profile.items.shield)}} %
|
||||
@@ -3,20 +3,20 @@
|
||||
// started to get unwieldy
|
||||
script(id='templates/habitrpg-tasks.html', type="text/ng-template")
|
||||
.grid
|
||||
.module(ng-repeat='list in lists', ng-class='{"rewards-module": list.type==="reward"}')
|
||||
.module(bindonce='lists', ng-repeat='list in lists', bo-class='{"rewards-module": list.type==="reward"}')
|
||||
.task-column(class='{{list.type}}s')
|
||||
|
||||
// Todos export/graph options
|
||||
span.option-box.pull-right(ng-if='main && list.type=="todo"')
|
||||
span.option-box.pull-right(bo-if='main && list.type=="todo"')
|
||||
a.option-action(ng-show='obj.history.todos', ng-click='toggleChart("todos")', tooltip='Progress')
|
||||
i.icon-signal
|
||||
//-a.option-action(ng-href='/v1/users/{{user.id}}/calendar.ics?apiToken={{user.apiToken}}', tooltip='iCal')
|
||||
//a.option-action(ng-href='/v1/users/{{user.id}}/calendar.ics?apiToken={{user.apiToken}}', tooltip='iCal')
|
||||
a.option-action(ng-click='notPorted()', tooltip='iCal', ng-show='false')
|
||||
i.icon-calendar
|
||||
// <a href="https://www.google.com/calendar/render?cid={{encodeiCalLink(_user.id, _user.apiToken)}}" rel=tooltip title="Google Calendar"><i class=icon-calendar></i></a>
|
||||
|
||||
// Gold & Gems
|
||||
span.option-box.pull-right.wallet(ng-if='main && list.type=="reward"')
|
||||
span.option-box.pull-right.wallet(bo-if='main && list.type=="reward"')
|
||||
.money
|
||||
| {{gold(user.stats.gp)}}
|
||||
span.shop_gold(tooltip='Gold')
|
||||
@@ -28,7 +28,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
|
||||
h2.task-column_title {{list.header}}
|
||||
|
||||
// Todo Chart
|
||||
.todos-chart(ng-if='list.type == "todo"', ng-show='charts.todos')
|
||||
.todos-chart(bo-if='list.type == "todo"', ng-show='charts.todos')
|
||||
|
||||
// Add New
|
||||
form.addtask-form.form-inline.new-task-form(name='new{{list.type}}form', ng-hide='obj._locked || (list.showCompleted && list.type=="todo")', ng-submit='addTask(obj[list.type+"s"],list)')
|
||||
@@ -45,7 +45,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
|
||||
include ./task
|
||||
|
||||
// Static Rewards
|
||||
ul.items.rewards(ng-if='main && list.type=="reward" && user.flags.itemsEnabled')
|
||||
ul.items.rewards(bo-if='main && list.type=="reward" && user.flags.itemsEnabled')
|
||||
li.task.reward-item(ng-hide='item.hide', ng-repeat='item in itemStore')
|
||||
// right-hand side control buttons
|
||||
.task-meta-controls
|
||||
@@ -53,13 +53,13 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
|
||||
i.icon-comment
|
||||
//left-hand size commands
|
||||
.task-controls
|
||||
a.task-action-btn.btn-reroll(ng-if='item.type=="reroll"', ng-click='modals.reroll = true')
|
||||
a.task-action-btn.btn-reroll(bo-if='item.type=="reroll"', ng-click='modals.reroll = true')
|
||||
i.icon-repeat
|
||||
a.money.btn-buy.item-btn(ng-if='item.type!="reroll"', ng-click='buy(item.type)')
|
||||
a.money.btn-buy.item-btn(bo-if='item.type!="reroll"', ng-click='buy(item.type)')
|
||||
span.reward-cost {{item.value}}
|
||||
span.shop_gold
|
||||
// main content
|
||||
span(ng-class='{"shop_{{item.key}} shop-sprite item-img": true}')
|
||||
span(bo-class='{"shop_{{item.key}} shop-sprite item-img": true}')
|
||||
p.task-text {{item.text}}
|
||||
|
||||
// Spells
|
||||
@@ -81,7 +81,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
|
||||
br
|
||||
|
||||
// Ads
|
||||
div(ng-if='main && !user.purchased.ads && list.type!="reward"')
|
||||
div(bo-if='main && !user.purchased.ads && list.type!="reward"')
|
||||
span.pull-right
|
||||
a(ng-click='modals.buyGems=true', tooltip=env.t('removeAds'))
|
||||
i.icon-remove
|
||||
@@ -89,7 +89,7 @@ script(id='templates/habitrpg-tasks.html', type="text/ng-template")
|
||||
ins.adsbygoogle(ng-init='initAds()', style='display: inline-block; width: 234px; height: 60px;', data-ad-client='ca-pub-3242350243827794', data-ad-slot='9529624576')
|
||||
|
||||
// Todo Tabs
|
||||
div(ng-if='main && list.type=="todo"', ng-class='{"tabbable tabs-below": list.type=="todo"}')
|
||||
div(bo-if='main && list.type=="todo"', bo-class='{"tabbable tabs-below": list.type=="todo"}')
|
||||
button.task-action-btn.tile.spacious.bright(ng-show='list.showCompleted', ng-click='clearCompleted()') Clear Completed
|
||||
// remaining/completed tabs
|
||||
ul.nav.nav-tabs
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
li(ng-repeat='task in obj[list.type+"s"]', class='task {{taskClasses(task, user.filters, user.preferences.dayStart, user.lastCron, list.showCompleted, main)}}', ng-click='spell && castEnd(task, "task", $event)', ng-class='{"cast-target":spell}')
|
||||
li(bindonce='list', ng-repeat='task in obj[list.type+"s"]', class='task {{taskClasses(task, user.filters, user.preferences.dayStart, user.lastCron, list.showCompleted, main)}}', ng-click='spell && castEnd(task, "task", $event)', ng-class='{"cast-target":spell}')
|
||||
// right-hand side control buttons
|
||||
.task-meta-controls
|
||||
|
||||
@@ -43,7 +43,7 @@ li(ng-repeat='task in obj[list.type+"s"]', class='task {{taskClasses(task, user.
|
||||
.task-controls.task-primary
|
||||
|
||||
// Habits
|
||||
span(ng-if='task.type=="habit"')
|
||||
span(bo-if='task.type=="habit"')
|
||||
// score() is overridden in challengesCtrl to do nothing
|
||||
a.task-action-btn(ng-if='task.up', ng-click='score(task,"up")') +
|
||||
a.task-action-btn(ng-if='task.down', ng-click='score(task,"down")') -
|
||||
@@ -55,7 +55,7 @@ li(ng-repeat='task in obj[list.type+"s"]', class='task {{taskClasses(task, user.
|
||||
span.shop_gold
|
||||
|
||||
// Daily & Todos
|
||||
span.task-checker.action-yesno(ng-if='task.type=="daily" || task.type=="todo"')
|
||||
span.task-checker.action-yesno(bo-if='task.type=="daily" || task.type=="todo"')
|
||||
input.visuallyhidden.focusable(ng-if='$state.includes("tasks")', id='box-{{obj._id}}_{{task.id}}', type='checkbox', ng-model='task.completed', ng-change='changeCheck(task)')
|
||||
input.visuallyhidden.focusable(ng-if='!$state.includes("tasks")', id='box-{{obj._id}}_{{task.id}}', type='checkbox')
|
||||
label(for='box-{{obj._id}}_{{task.id}}')
|
||||
@@ -87,7 +87,7 @@ li(ng-repeat='task in obj[list.type+"s"]', class='task {{taskClasses(task, user.
|
||||
a(ng-click='unlink(task, "keep-all")') Keep Them
|
||||
| |
|
||||
a(ng-click='unlink(task, "remove-all")') Remove Them
|
||||
//-div(ng-if='task.challenge.broken=="UNSUBSCRIBED"')
|
||||
//div(ng-if='task.challenge.broken=="UNSUBSCRIBED"')
|
||||
p Broken Challenge Link: this task was part of a challenge, but you have unsubscribed from the challenge. What to do with the orphan tasks?
|
||||
p
|
||||
a(ng-click="unlink(task, 'keep-all')") Keep Them
|
||||
@@ -114,17 +114,17 @@ li(ng-repeat='task in obj[list.type+"s"]', class='task {{taskClasses(task, user.
|
||||
label(for='{{obj._id}}_{{task.id}}-option-minus')
|
||||
|
||||
// if Daily, calendar
|
||||
fieldset(ng-if='task.type=="daily"', class="option-group")
|
||||
fieldset(bo-if='task.type=="daily"', class="option-group")
|
||||
legend.option-title Repeat
|
||||
.task-controls.tile-group.repeat-days
|
||||
.task-controls.tile-group.repeat-days(bindonce)
|
||||
// note, does not use data-toggle="buttons-checkbox" - it would interfere with our own click binding
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.su}', type='button', data-day='su', ng-click='task.challenge.id || (task.repeat.su = !task.repeat.su)') Su
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.m}', type='button', data-day='m', ng-click='task.challenge.id || (task.repeat.m = !task.repeat.m)') M
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.t}', type='button', data-day='t', ng-click='task.challenge.id || (task.repeat.t = !task.repeat.t)') T
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.w}', type='button', data-day='w', ng-click='task.challenge.id || (task.repeat.w = !task.repeat.w)') W
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.th}', type='button', data-day='th', ng-click='task.challenge.id || (task.repeat.th = !task.repeat.th)') Th
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.f}', type='button', data-day='f', ng-click='task.challenge.id || (task.repeat.f= !task.repeat.f)') F
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.s}', type='button', data-day='s', ng-click='task.challenge.id || (task.repeat.s = !task.repeat.s)') S
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.su}', type='button', ng-click='task.challenge.id || (task.repeat.su = !task.repeat.su)' bo-text='moment.weekdaysMin(0)')
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.m}', type='button', ng-click='task.challenge.id || (task.repeat.m = !task.repeat.m)' bo-text='moment.weekdaysMin(1)')
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.t}', type='button', ng-click='task.challenge.id || (task.repeat.t = !task.repeat.t)' bo-text='moment.weekdaysMin(2)')
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.w}', type='button', ng-click='task.challenge.id || (task.repeat.w = !task.repeat.w)' bo-text='moment.weekdaysMin(3)')
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.th}', type='button', ng-click='task.challenge.id || (task.repeat.th = !task.repeat.th)' bo-text='moment.weekdaysMin(4)')
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.f}', type='button', ng-click='task.challenge.id || (task.repeat.f= !task.repeat.f)' bo-text='moment.weekdaysMin(5)')
|
||||
button.task-action-btn.tile(ng-class='{active: task.repeat.s}', type='button', ng-click='task.challenge.id || (task.repeat.s = !task.repeat.s)' bo-text='moment.weekdaysMin(6)')
|
||||
|
||||
// if Reward, pricing
|
||||
fieldset.option-group.option-short(ng-if='task.type=="reward" && !task.challenge.id')
|
||||
@@ -145,7 +145,7 @@ li(ng-repeat='task in obj[list.type+"s"]', class='task {{taskClasses(task, user.
|
||||
| {{tag.name}}
|
||||
|
||||
// Advanced Options
|
||||
span(ng-if='task.type!="reward"')
|
||||
span(bo-if='task.type!="reward"')
|
||||
p.option-title.mega(ng-click='task._advanced = !task._advanced') Advanced Options
|
||||
fieldset.option-group.advanced-option(ng-class="{visuallyhidden: !task._advanced}")
|
||||
legend.option-title
|
||||
@@ -156,7 +156,8 @@ li(ng-repeat='task in obj[list.type+"s"]', class='task {{taskClasses(task, user.
|
||||
button.task-action-btn.tile(type='button', ng-class='{active: task.priority=="!" || !task.priority}', ng-click='task.challenge.id || (task.priority="!")') Easy
|
||||
button.task-action-btn.tile(type='button', ng-class='{active: task.priority=="!!"}', ng-click='task.challenge.id || (task.priority="!!")') Medium
|
||||
button.task-action-btn.tile(type='button', ng-class='{active: task.priority=="!!!"}', ng-click='task.challenge.id || (task.priority="!!!")') Hard
|
||||
span(ng-if='task.type=="daily" && !task.challenge.id')
|
||||
//span(ng-if='task.type=="daily" && !task.challenge.id')
|
||||
span(ng-if='task.type=="daily"')
|
||||
legend.option-title Restore Streak
|
||||
input.option-content(type='number', ng-model='task.streak')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user