diff --git a/app/core/ParticleMan.coffee b/app/core/ParticleMan.coffee index f4ec2c4e0..63a8767d5 100644 --- a/app/core/ParticleMan.coffee +++ b/app/core/ParticleMan.coffee @@ -193,6 +193,16 @@ particleKinds = colorStart: hsl 0.56, 0.97, 0.5 colorMiddle: hsl 0.56, 0.57, 0.5 colorEnd: hsl 0.56, 0.17, 0.5 + 'level-glacier-premium': ext defaults, + emitter: + colorStart: hsl 0.56, 0.97, 0.5 + colorMiddle: hsl 0.56, 0.57, 0.5 + colorEnd: hsl 0.56, 0.17, 0.5 + 'level-volcano-premium': ext defaults, + emitter: + colorStart: hsl 0.56, 0.97, 0.5 + colorMiddle: hsl 0.56, 0.57, 0.5 + colorEnd: hsl 0.56, 0.17, 0.5 particleKinds['level-dungeon-premium-hero'] = ext particleKinds['level-dungeon-premium'], emitter: @@ -344,3 +354,71 @@ particleKinds['level-mountain-replayable'] = particleKinds['level-mountain-repla colorStart: hsl 0.17, 0.75, 0.7 colorMiddle: hsl 0.17, 0.75, 0.5 colorEnd: hsl 0.17, 0.75, 0.3 + +particleKinds['level-glacier-premium-hero'] = ext particleKinds['level-glacier-premium'], + emitter: + particleCount: 200 + radius: 1.5 + acceleration: vec 0, 4, 0 + opacityStart: 0.25 + opacityMiddle: 0.5 + opacityEnd: 0.75 + +particleKinds['level-glacier-gate'] = ext particleKinds['level-glacier-premium'], + emitter: + particleCount: 120 + velocity: vec 0, 8, 0 + colorStart: hsl 0.56, 0.97, 0.3 + colorMiddle: hsl 0.56, 0.57, 0.3 + colorEnd: hsl 0.56, 0.17, 0.3 + colorStartSpread: vec 1, 1, 1 + colorMiddleSpread: vec 1.5, 1.5, 1.5 + colorEndSpread: vec 2.5, 2.5, 2.5 + +particleKinds['level-glacier-hero-ladder'] = ext particleKinds['level-glacier-premium'], + emitter: + particleCount: 90 + velocity: vec 0, 4, 0 + colorStart: hsl 0, 0.95, 0.3 + colorMiddle: hsl 0, 1, 0.5 + colorEnd: hsl 0, 0.75, 0.1 + +particleKinds['level-glacier-replayable'] = particleKinds['level-glacier-replayable-premium'] = ext particleKinds['level-glacier-hero-ladder'], + emitter: + colorStart: hsl 0.17, 0.75, 0.7 + colorMiddle: hsl 0.17, 0.75, 0.5 + colorEnd: hsl 0.17, 0.75, 0.3 + +particleKinds['level-volcano-premium-hero'] = ext particleKinds['level-volcano-premium'], + emitter: + particleCount: 200 + radius: 1.5 + acceleration: vec 0, 4, 0 + opacityStart: 0.25 + opacityMiddle: 0.5 + opacityEnd: 0.75 + +particleKinds['level-volcano-gate'] = ext particleKinds['level-volcano-premium'], + emitter: + particleCount: 120 + velocity: vec 0, 8, 0 + colorStart: hsl 0.56, 0.97, 0.3 + colorMiddle: hsl 0.56, 0.57, 0.3 + colorEnd: hsl 0.56, 0.17, 0.3 + colorStartSpread: vec 1, 1, 1 + colorMiddleSpread: vec 1.5, 1.5, 1.5 + colorEndSpread: vec 2.5, 2.5, 2.5 + +particleKinds['level-volcano-hero-ladder'] = ext particleKinds['level-volcano-premium'], + emitter: + particleCount: 90 + velocity: vec 0, 4, 0 + colorStart: hsl 0, 0.95, 0.3 + colorMiddle: hsl 0, 1, 0.5 + colorEnd: hsl 0, 0.75, 0.1 + +particleKinds['level-volcano-replayable'] = particleKinds['level-volcano-replayable-premium'] = ext particleKinds['level-volcano-hero-ladder'], + emitter: + colorStart: hsl 0.17, 0.75, 0.7 + colorMiddle: hsl 0.17, 0.75, 0.5 + colorEnd: hsl 0.17, 0.75, 0.3 diff --git a/app/lib/surface/LankBoss.coffee b/app/lib/surface/LankBoss.coffee index a2eab4536..a8fc7379c 100644 --- a/app/lib/surface/LankBoss.coffee +++ b/app/lib/surface/LankBoss.coffee @@ -87,7 +87,7 @@ module.exports = class LankBoss extends CocoClass console.error 'Lank collision! Already have:', id if @lanks[id] @lanks[id] = lank @lankArray.push lank - layer ?= @layerAdapters['Obstacle'] if lank.thang?.spriteName.search(/(dungeon|indoor).wall/i) isnt -1 + layer ?= @layerAdapters['Obstacle'] if lank.thang?.spriteName.search(/(dungeon|indoor|ice).wall/i) isnt -1 layer ?= @layerForChild lank.sprite, lank layer.addLank lank layer.updateLayerOrder() @@ -252,7 +252,7 @@ module.exports = class LankBoss extends CocoClass cacheObstacles: (updatedObstacles=null) -> return if @cachedObstacles and not updatedObstacles lankArray = @lankArray - wallLanks = (lank for lank in lankArray when lank.thangType?.get('name').search(/(dungeon|indoor).wall/i) isnt -1) + wallLanks = (lank for lank in lankArray when lank.thangType?.get('name').search(/(dungeon|indoor|ice).wall/i) isnt -1) return if _.any (s.stillLoading for s in wallLanks) walls = (lank.thang for lank in wallLanks) @world.calculateBounds() diff --git a/app/lib/surface/SingularSprite.coffee b/app/lib/surface/SingularSprite.coffee index 1200d1771..86a79586a 100644 --- a/app/lib/surface/SingularSprite.coffee +++ b/app/lib/surface/SingularSprite.coffee @@ -1,6 +1,6 @@ SpriteBuilder = require 'lib/sprites/SpriteBuilder' -floors = ['Dungeon Floor', 'Indoor Floor', 'Grass', 'Grass01', 'Grass02', 'Grass03', 'Grass04', 'Grass05', 'Goal Trigger', 'Obstacle', 'Sand 01', 'Sand 02', 'Sand 03', 'Sand 04', 'Sand 05', 'Sand 06', 'Talus 1', 'Talus 2', 'Talus 3', 'Talus 4', 'Talus 5', 'Talus 6'] +floors = ['Dungeon Floor', 'Indoor Floor', 'Grass', 'Grass01', 'Grass02', 'Grass03', 'Grass04', 'Grass05', 'Goal Trigger', 'Obstacle', 'Sand 01', 'Sand 02', 'Sand 03', 'Sand 04', 'Sand 05', 'Sand 06', 'Talus 1', 'Talus 2', 'Talus 3', 'Talus 4', 'Talus 5', 'Talus 6', 'Firn 1', 'Firn 2', 'Firn 3', 'Firn 4', 'Firn 5', 'Firn 6'] module.exports = class SingularSprite extends createjs.Sprite childMovieClips: null diff --git a/app/locale/pt-PT.coffee b/app/locale/pt-PT.coffee index 381843f04..4be230a2e 100644 --- a/app/locale/pt-PT.coffee +++ b/app/locale/pt-PT.coffee @@ -634,9 +634,9 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: # how_much_5: "We accept discounted one-time purchases and yearly subscription purchases for groups, such as a class or school. Please contact" # how_much_6: "for more details." more_info_title: "Onde posso encontrar mais informação?" -# more_info_1: "Our" -# more_info_2: "teachers forum" -# more_info_3: "is a good place to connect with fellow educators who are using CodeCombat." + more_info_1: "O nosso" + more_info_2: "fórum para professores" + more_info_3: "é um bom sítio para te ligares a outros professores que também usam o CodeCombat." sys_requirements_title: "Requisitos do Sistema" sys_requirements_1: "Um navegador moderno. As versões mais recentes do Chrome, Firefox ou Safari. Internet Explorer 9 ou mais recente." sys_requirements_2: "O CodeCombat ainda não é suportado em iPad's." @@ -654,9 +654,9 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription: denied_2: "recusada" contact_1: "Por favor, contacta" contact_2: "se tiveres mais questões." - description_1: "Oferecemos subscrições gratuitas a professores para efeitos de avaliação. Podes encontar mais informações na nossa página de" + description_1: "Oferecemos subscrições gratuitas a professores para efeitos de avaliação. Na nossa página para" description_2: "professores" - description_3: "." + description_3: ", podes encontar muitas mais informações." description_4: "Por favor, preenche este pequeno inquérito e nós enviar-te-emos, por e-mail, as instruções de configuração." email: "Endereço de E-mail" school_city: "Nome da Escola, Cidade" diff --git a/app/schemas/schemas.coffee b/app/schemas/schemas.coffee index 580a87e56..8240f2e8b 100644 --- a/app/schemas/schemas.coffee +++ b/app/schemas/schemas.coffee @@ -210,7 +210,7 @@ me.activity = me.object {description: 'Stats on an activity'}, last: me.date() count: {type: 'integer', minimum: 0} -me.terrainString = me.shortString {enum: ['Grass', 'Dungeon', 'Indoor', 'Desert', 'Mountain'], title: 'Terrain', description: 'Which terrain type this is.'} +me.terrainString = me.shortString {enum: ['Grass', 'Dungeon', 'Indoor', 'Desert', 'Mountain', 'Glacier', 'Volcano'], title: 'Terrain', description: 'Which terrain type this is.'} me.HeroConfigSchema = me.object {description: 'Which hero the player is using, equipped with what inventory.'}, inventory: diff --git a/app/styles/play/campaign-view.sass b/app/styles/play/campaign-view.sass index 656cdd9d0..6f358bd6e 100644 --- a/app/styles/play/campaign-view.sass +++ b/app/styles/play/campaign-view.sass @@ -568,7 +568,7 @@ $gameControlMargin: 30px background-position: (-2 * $campaignWidth) 0 &.mountain background-position: (-3 * $campaignWidth) 0 - &.ice + &.glacier background-position: (-4 * $campaignWidth) 0 &.volcano background-position: (-5 * $campaignWidth) 0 diff --git a/app/templates/play/campaign-view.jade b/app/templates/play/campaign-view.jade index 7d4f41f25..ecb95043a 100644 --- a/app/templates/play/campaign-view.jade +++ b/app/templates/play/campaign-view.jade @@ -61,7 +61,7 @@ if campaign else .portal .portals - for campaignSlug in ['dungeon', 'forest', 'desert', 'mountain', 'ice', 'volcano'] + for campaignSlug in ['dungeon', 'forest', 'desert', 'mountain', 'glacier', 'volcano'] - var campaign = campaigns[campaignSlug]; - var godmode = me.get('permissions', true).indexOf('godmode') != -1; div(class="campaign #{campaignSlug}" + (campaign ? "" : " silhouette") + (campaign && campaign.locked && !godmode ? " locked" : ""), data-campaign-slug=campaignSlug) diff --git a/app/views/clans/ClanDetailsView.coffee b/app/views/clans/ClanDetailsView.coffee index 4992d9919..6946ae4cd 100644 --- a/app/views/clans/ClanDetailsView.coffee +++ b/app/views/clans/ClanDetailsView.coffee @@ -129,15 +129,8 @@ module.exports = class ClanDetailsView extends RootView campaignLevelProgression = ID: campaign.id slug: campaign.get('slug') - name: campaign.get('name') + name: campaign.get('fullName') or campaign.get('name') levels: [] - # TODO: Where do these proper names come from? - campaignLevelProgression.name = switch - when campaignLevelProgression.slug is 'dungeon' then 'Kithgard Dungeon' - when campaignLevelProgression.slug is 'forest' then 'Backwoods Forest' - when campaignLevelProgression.slug is 'desert' then 'Sarven Desert' - when campaignLevelProgression.slug is 'mountain' then 'Cloudrip Mountain' - else campaignLevelProgression.name for levelID, level of campaign.get('levels') campaignLevelProgression.levels.push ID: levelID diff --git a/app/views/editor/level/systems/SystemsTabView.coffee b/app/views/editor/level/systems/SystemsTabView.coffee index 8d30250a5..dbebf0c8c 100644 --- a/app/views/editor/level/systems/SystemsTabView.coffee +++ b/app/views/editor/level/systems/SystemsTabView.coffee @@ -128,7 +128,7 @@ module.exports = class SystemsTabView extends CocoView @levelSystemEditView = null onTerrainChanged: (e) -> - defaultPathfinding = e.terrain in ['Dungeon', 'Indoor', 'Mountain'] + defaultPathfinding = e.terrain in ['Dungeon', 'Indoor', 'Mountain', 'Glacier', 'Volcano'] changed = false if AI = @systemsTreema.get 'original=528110f30268d018e3000001' unless AI.config?.findsPaths is defaultPathfinding diff --git a/app/views/editor/thang/ThangTypeEditView.coffee b/app/views/editor/thang/ThangTypeEditView.coffee index be6b2ade9..df722f079 100644 --- a/app/views/editor/thang/ThangTypeEditView.coffee +++ b/app/views/editor/thang/ThangTypeEditView.coffee @@ -540,7 +540,7 @@ module.exports = class ThangTypeEditView extends RootView @lastKind = kind Backbone.Mediator.publish 'editor:thang-type-kind-changed', kind: kind if kind in ['Doodad', 'Floor', 'Wall'] and not @treema.data.terrains - @treema.set '/terrains', ['Grass', 'Dungeon', 'Indoor', 'Desert', 'Mountain'] # So editors know to set them. + @treema.set '/terrains', ['Grass', 'Dungeon', 'Indoor', 'Desert', 'Mountain', 'Glacier', 'Volcano'] # So editors know to set them. if not @treema.data.tasks @treema.set '/tasks', (name: t for t in defaultTasks[kind]) diff --git a/app/views/play/CampaignView.coffee b/app/views/play/CampaignView.coffee index 229252365..54f4d35ca 100644 --- a/app/views/play/CampaignView.coffee +++ b/app/views/play/CampaignView.coffee @@ -491,7 +491,7 @@ module.exports = class CampaignView extends RootView onWindowResize: (e) => mapHeight = iPadHeight = 1536 - mapWidth = {dungeon: 2350, forest: 2500, auditions: 2500, desert: 2350, mountain: 2422}[@terrain] or 2350 + mapWidth = {dungeon: 2350, forest: 2500, auditions: 2500, desert: 2350, mountain: 2422, glacier: 2421}[@terrain] or 2350 aspectRatio = mapWidth / mapHeight pageWidth = @$el.width() pageHeight = @$el.height()