diff --git a/app/locale/en.coffee b/app/locale/en.coffee index 3582654a7..a74e53f5d 100644 --- a/app/locale/en.coffee +++ b/app/locale/en.coffee @@ -314,7 +314,7 @@ restricted: "(restricted in this level)" equip: "Equip" unequip: "Unequip" - + buy_gems: few_gems: 'A few gems' pile_gems: 'Pile of gems' @@ -324,6 +324,8 @@ choose_hero: "Choose Your Hero" programming_language: "Programming Language" programming_language_description: "Which programming language do you want to use?" + default: "Default" + experimental: "Experimental" python_blurb: "Simple yet powerful, great for beginners and experts." javascript_blurb: "The language of the web. (Not the same as Java.)" coffeescript_blurb: "Nicer JavaScript syntax." diff --git a/app/models/ThangType.coffee b/app/models/ThangType.coffee index 0f7f57abd..0b73b4d99 100644 --- a/app/models/ThangType.coffee +++ b/app/models/ThangType.coffee @@ -260,7 +260,7 @@ module.exports = class ThangType extends CocoModel createjs.Ticker.removeEventListener 'tick', @tick @tick = null stage - + getVectorPortraitStage: (size=100) -> return unless @actions canvas = $("<canvas width='#{size}' height='#{size}'></canvas>") @@ -336,10 +336,12 @@ module.exports = class ThangType extends CocoModel return console.warn @get('name'), 'is not an equipping hero, but you are asking for its hero stats. (Did you project away components?)' unless movesConfig = _.find(components, original: LevelComponent.MovesID)?.config return console.warn @get('name'), 'is not a moving hero, but you are asking for its hero stats.' + unless programmableConfig = _.find(components, original: LevelComponent.ProgrammableID)?.config + return console.warn @get('name'), 'is not a Programmable hero, but you are asking for its hero stats.' @classStatAverages ?= attack: {Warrior: 7.5, Ranger: 5, Wizard: 2.5} health: {Warrior: 7.5, Ranger: 5, Wizard: 3.5} - stats = {skills: []} # TODO: find skills + stats = {} rawNumbers = attack: equipsConfig.attackDamageFactor ? 1, health: equipsConfig.maxHealthFactor ? 1, speed: movesConfig.maxSpeed for prop in ['attack', 'health'] stat = rawNumbers[prop] @@ -349,11 +351,15 @@ module.exports = class ThangType extends CocoModel classSpecificScore = stat * 5 classAverage = @classStatAverages[prop][@get('heroClass')] stats[prop] = Math.round(2 * ((classAverage - 2.5) + classSpecificScore / 2)) / 2 / 10 + minSpeed = 4 maxSpeed = 16 speedRange = maxSpeed - minSpeed speedPoints = rawNumbers.speed - minSpeed stats.speed = Math.round(20 * speedPoints / speedRange) / 2 / 10 + + stats.skills = (_.string.titleize(_.string.humanize(skill)) for skill in programmableConfig.programmableProperties when skill isnt 'say') + stats getFrontFacingStats: -> diff --git a/app/templates/play/modal/play-heroes-modal.jade b/app/templates/play/modal/play-heroes-modal.jade index 6b8e8dee6..7de87994b 100644 --- a/app/templates/play/modal/play-heroes-modal.jade +++ b/app/templates/play/modal/play-heroes-modal.jade @@ -12,7 +12,7 @@ .carousel-indicator-container ol.carousel-indicators for hero, index in heroes - li(data-hero-id=hero.get('original'), title=hero.get('name'), data-slide-to=index, data-target="#hero-carousel", class="hero-indicator hero-index-" + index + (hero.locked ? " locked" : "")) + li(data-hero-id=hero.get('original'), title=hero.name, data-slide-to=index, data-target="#hero-carousel", class="hero-indicator hero-index-" + index + (hero.locked ? " locked" : "")) .hero-avatar if hero.locked img.lock-indicator(src="/images/pages/game-menu/lock.png") diff --git a/app/views/game-menu/InventoryModal.coffee b/app/views/game-menu/InventoryModal.coffee index 69865e442..8036dd8c1 100644 --- a/app/views/game-menu/InventoryModal.coffee +++ b/app/views/game-menu/InventoryModal.coffee @@ -83,7 +83,7 @@ module.exports = class InventoryModal extends ModalView # sort into one of the four groups locked = not (item.get('original') in me.items()) - locked = false if me.get('slug') is 'nick' + #locked = false if me.get('slug') is 'nick' if locked and item.get('slug') isnt 'simple-boots' @itemGroups.lockedItems.add(item) diff --git a/app/views/play/modal/PlayHeroesModal.coffee b/app/views/play/modal/PlayHeroesModal.coffee index 88a78ecbd..b126c4e0e 100644 --- a/app/views/play/modal/PlayHeroesModal.coffee +++ b/app/views/play/modal/PlayHeroesModal.coffee @@ -28,7 +28,7 @@ module.exports = class PlayHeroesModal extends ModalView @confirmButtonI18N = options.confirmButtonI18N ? "common.save" @heroes = new CocoCollection([], {model: ThangType}) @heroes.url = '/db/thang.type?view=heroes' - @heroes.setProjection ['original','name','slug','soundTriggers','featureImage','gems','heroClass','description','components','extendedName'] + @heroes.setProjection ['original','name','slug','soundTriggers','featureImage','gems','heroClass','description','components','extendedName','i18n'] @heroes.comparator = 'gems' @listenToOnce @heroes, 'sync', @onHeroesLoaded @supermodel.loadCollection(@heroes, 'heroes') @@ -75,7 +75,7 @@ module.exports = class PlayHeroesModal extends ModalView initCodeLanguageList: (hadEverChosenHero) -> @codeLanguageList = [ - {id: 'python', name: 'Python (Default)'} + {id: 'python', name: "Python (#{$.i18n.t('choose_hero.default')})"} {id: 'javascript', name: 'JavaScript'} {id: 'coffeescript', name: 'CoffeeScript'} ] @@ -86,9 +86,9 @@ module.exports = class PlayHeroesModal extends ModalView # Group 1 isn't shown experimental languages in hero modal when launching beginner campaign level testGroup = me.getExperimentalLangGroup() if hadEverChosenHero? or testGroup isnt 1 - @codeLanguageList.push id: 'clojure', name: 'Clojure (Experimental)' - @codeLanguageList.push id: 'lua', name: 'Lua (Experimental)' - @codeLanguageList.push id: 'io', name: 'Io (Experimental)' + @codeLanguageList.push id: 'clojure', name: "Clojure (#{$.i18n.t('choose_hero.experimental')})" + @codeLanguageList.push id: 'lua', name: "Lua (#{$.i18n.t('choose_hero.experimental')})" + @codeLanguageList.push id: 'io', name: "Io (#{$.i18n.t('choose_hero.experimental')})" unless hadEverChosenHero? or testGroup is -1 window.tracker?.trackEvent 'Heroes Modal', experimentalLangGroup: testGroup