This commit is contained in:
Ruben Vereecken 2014-07-14 20:27:47 +02:00
commit 1f1ff25a5a
99 changed files with 683 additions and 222 deletions
app
config.coffee
headless_client
server
server_setup.coffee

View file

@ -298,6 +298,9 @@ self.setupDebugWorldToRunUntilFrame = function (args) {
} }
Math.random = self.debugWorld.rand.randf; // so user code is predictable Math.random = self.debugWorld.rand.randf; // so user code is predictable
Aether.replaceBuiltin("Math", Math); Aether.replaceBuiltin("Math", Math);
replacedLoDash = _.runInContext(self);
for(var key in replacedLoDash)
_[key] = replacedLoDash[key];
} }
self.debugWorld.totalFrames = args.frame; //hack to work around error checking self.debugWorld.totalFrames = args.frame; //hack to work around error checking
self.currentDebugWorldFrame = args.frame; self.currentDebugWorldFrame = args.frame;
@ -353,6 +356,9 @@ self.runWorld = function runWorld(args) {
} }
Math.random = self.world.rand.randf; // so user code is predictable Math.random = self.world.rand.randf; // so user code is predictable
Aether.replaceBuiltin("Math", Math); Aether.replaceBuiltin("Math", Math);
replacedLoDash = _.runInContext(self);
for(var key in replacedLoDash)
_[key] = replacedLoDash[key];
self.postMessage({type: 'start-load-frames'}); self.postMessage({type: 'start-load-frames'});
self.world.loadFrames(self.onWorldLoaded, self.onWorldError, self.onWorldLoadProgress); self.world.loadFrames(self.onWorldLoaded, self.onWorldError, self.onWorldLoadProgress);
}; };

View file

@ -23,7 +23,9 @@ module.exports = class CocoRouter extends Backbone.Router
# 'account(/:subview)(/*rest)': 'accountView' # 'account(/:subview)(/*rest)': 'accountView'
# Direct links # Direct links
'test': go('TestView')
'test/*subpath': go('TestView') 'test/*subpath': go('TestView')
'demo': go('DemoView')
'demo/*subpath': go('DemoView') 'demo/*subpath': go('DemoView')
'play/ladder/:levelID': go('play/ladder/ladder_view') 'play/ladder/:levelID': go('play/ladder/ladder_view')
'play/ladder': go('play/ladder_home') 'play/ladder': go('play/ladder_home')

View file

@ -320,6 +320,7 @@ module.exports = ScriptManager = class ScriptManager extends CocoClass
if ((noteGroup.script?.skippable) is false) and not options.force if ((noteGroup.script?.skippable) is false) and not options.force
@noteGroupQueue = @noteGroupQueue[i..] @noteGroupQueue = @noteGroupQueue[i..]
@run() @run()
@notifyScriptStateChanged()
return return
@processNoteGroup(noteGroup) @processNoteGroup(noteGroup)
@ -331,6 +332,7 @@ module.exports = ScriptManager = class ScriptManager extends CocoClass
@noteGroupQueue = [] @noteGroupQueue = []
@resetThings() @resetThings()
@notifyScriptStateChanged()
onNoteGroupTimeout: (noteGroup) -> onNoteGroupTimeout: (noteGroup) ->
return unless noteGroup is @currentNoteGroup return unless noteGroup is @currentNoteGroup

View file

@ -25,9 +25,11 @@ module.exports = class CoordinateDisplay extends createjs.Container
@mouseEnabled = @mouseChildren = false @mouseEnabled = @mouseChildren = false
@addChild @background = new createjs.Shape() @addChild @background = new createjs.Shape()
@addChild @label = new createjs.Text('', 'bold 16px Arial', '#FFFFFF') @addChild @label = new createjs.Text('', 'bold 16px Arial', '#FFFFFF')
@addChild @pointMarker = new createjs.Shape()
@label.name = 'Coordinate Display Text' @label.name = 'Coordinate Display Text'
@label.shadow = new createjs.Shadow('#000000', 1, 1, 0) @label.shadow = new createjs.Shadow('#000000', 1, 1, 0)
@background.name = 'Coordinate Display Background' @background.name = 'Coordinate Display Background'
@pointMarker.name = 'Point Marker'
onMouseOver: (e) -> @mouseInBounds = true onMouseOver: (e) -> @mouseInBounds = true
onMouseOut: (e) -> @mouseInBounds = false onMouseOut: (e) -> @mouseInBounds = false
@ -60,26 +62,58 @@ module.exports = class CoordinateDisplay extends createjs.Container
return unless @label.parent return unless @label.parent
@removeChild @label @removeChild @label
@removeChild @background @removeChild @background
@removeChild @pointMarker
@uncache() @uncache()
updateSize: -> updateSize: ->
margin = 3 margin = 3
radius = 2.5 contentWidth = @label.getMeasuredWidth() + (2 * margin)
width = @label.getMeasuredWidth() + 2 * margin contentHeight = @label.getMeasuredHeight() + (2 * margin)
height = @label.getMeasuredHeight() + 2 * margin
@label.regX = @background.regX = width / 2 # Shift all contents up so marker is at pointer (affects container cache position)
@label.regY = @background.regY = height / 2 @label.regY = @background.regY = @pointMarker.regY = contentHeight
@label.regX -= margin
@label.regY -= margin pointMarkerStroke = 2
pointMarkerLength = 3
contributionsToTotalSize = []
contributionsToTotalSize = contributionsToTotalSize.concat @updateCoordinates contentWidth, contentHeight, pointMarkerStroke
contributionsToTotalSize = contributionsToTotalSize.concat @updatePointMarker contentHeight, pointMarkerLength, pointMarkerStroke
totalWidth = contentWidth + contributionsToTotalSize.reduce (a, b) -> a + b
totalHeight = contentHeight + contributionsToTotalSize.reduce (a, b) -> a + b
[totalWidth, totalHeight]
updateCoordinates: (contentWidth, contentHeight, initialXYOffset) ->
gap = 2
labelAndBgMarkerOffset = initialXYOffset * gap
# Center label horizontally and vertically
@label.x = contentWidth / 2 - (@label.getMeasuredWidth() / 2) + labelAndBgMarkerOffset
@label.y = contentHeight / 2 - (@label.getMeasuredHeight() / 2) - labelAndBgMarkerOffset
@background.graphics @background.graphics
.clear() .clear()
.beginFill('rgba(0,0,0,0.4)') .beginFill('rgba(0,0,0,0.4)')
.beginStroke('rgba(0,0,0,0.6)') .beginStroke('rgba(0,0,0,0.6)')
.setStrokeStyle(1) .setStrokeStyle(backgroundStroke = 1)
.drawRoundRect(0, 0, width, height, radius) .drawRoundRect(labelAndBgMarkerOffset, -labelAndBgMarkerOffset, contentWidth, contentHeight, radius = 2.5)
.endFill() .endFill()
.endStroke() .endStroke()
[width, height] contributionsToTotalSize = [labelAndBgMarkerOffset, backgroundStroke]
updatePointMarker: (contentHeight, length, strokeSize) ->
shiftToLineupWithGrid = strokeSize / 2
pointMarkerInitialX = strokeSize - shiftToLineupWithGrid
pointMarkerInitialY = contentHeight - strokeSize + shiftToLineupWithGrid
@pointMarker.graphics
.beginStroke('rgb(142, 198, 67')
.setStrokeStyle(strokeSize, 'square')
.moveTo(pointMarkerInitialX, pointMarkerInitialY)
.lineTo(pointMarkerInitialX, pointMarkerInitialY - length)
.moveTo(pointMarkerInitialX, pointMarkerInitialY)
.lineTo(pointMarkerInitialX + length, pointMarkerInitialY)
.endStroke()
contributionsToTotalSize = [strokeSize]
show: => show: =>
return unless @mouseInBounds and @lastPos and not @destroyed return unless @mouseInBounds and @lastPos and not @destroyed
@ -87,8 +121,9 @@ module.exports = class CoordinateDisplay extends createjs.Container
[width, height] = @updateSize() [width, height] = @updateSize()
sup = @camera.worldToSurface @lastPos sup = @camera.worldToSurface @lastPos
@x = sup.x @x = sup.x
@y = sup.y - 2.5 @y = sup.y
@addChild @background @addChild @background
@addChild @label @addChild @label
@cache -width / 2, -height / 2, width, height @addChild @pointMarker
@cache 0, -height, width, height
Backbone.Mediator.publish 'surface:coordinates-shown', {} Backbone.Mediator.publish 'surface:coordinates-shown', {}

View file

@ -106,7 +106,7 @@ module.exports = class SpriteBoss extends CocoClass
createOpponentWizard: (opponent) -> createOpponentWizard: (opponent) ->
# TODO: colorize name and cloud by team, colorize wizard by user's color config, level-specific wizard spawn points # TODO: colorize name and cloud by team, colorize wizard by user's color config, level-specific wizard spawn points
sprite = @createWizardSprite thangID: opponent.id, name: opponent.name sprite = @createWizardSprite thangID: opponent.id, name: opponent.name, codeLanguage: opponent.codeLanguage
if not opponent.levelSlug or opponent.levelSlug is 'brawlwood' if not opponent.levelSlug or opponent.levelSlug is 'brawlwood'
sprite.targetPos = if opponent.team is 'ogres' then {x: 52, y: 52} else {x: 28, y: 28} sprite.targetPos = if opponent.team is 'ogres' then {x: 52, y: 52} else {x: 28, y: 28}
else if opponent.levelSlug is 'dungeon-arena' else if opponent.levelSlug is 'dungeon-arena'

View file

@ -608,7 +608,7 @@ module.exports = Surface = class Surface extends CocoClass
ratio = current % 1 ratio = current % 1
@world.frames[next].restorePartialState ratio if next > 1 @world.frames[next].restorePartialState ratio if next > 1
frame.clearEvents() if parseInt(@currentFrame) is parseInt(@lastFrame) frame.clearEvents() if parseInt(@currentFrame) is parseInt(@lastFrame)
@spriteBoss.updateSounds() @spriteBoss.updateSounds() if parseInt(@currentFrame) isnt parseInt(@lastFrame)
updateState: (frameChanged) -> updateState: (frameChanged) ->
# world state must have been restored in @restoreWorldState # world state must have been restored in @restoreWorldState

View file

@ -54,6 +54,11 @@ module.exports = class WizardSprite extends IndieSprite
@updateRotation() @updateRotation()
# Don't call general update() because Thang isn't built yet # Don't call general update() because Thang isn't built yet
setNameLabel: (name) ->
if @options.codeLanguage and @options.codeLanguage isnt 'javascript' and not @isSelf
name += " (#{@options.codeLanguage})" # TODO: move on second line, capitalize properly
super name
onPlayerStatesChanged: (e) -> onPlayerStatesChanged: (e) ->
for playerID, state of e.states for playerID, state of e.states
continue unless playerID is @thang.id continue unless playerID is @thang.id

View file

@ -54,6 +54,7 @@ module.exports.i18n = (say, target, language=me.lang(), fallback='en') ->
generalName = matches[0] if matches generalName = matches[0] if matches
for localeName, locale of say.i18n for localeName, locale of say.i18n
continue if localeName is '-'
if target of locale if target of locale
result = locale[target] result = locale[target]
else continue else continue

View file

@ -2,13 +2,13 @@
class Vector class Vector
@className: 'Vector' @className: 'Vector'
# Class methods for nondestructively operating # Class methods for nondestructively operating
for name in ['add', 'subtract', 'multiply', 'divide', 'limit', 'normalize'] for name in ['add', 'subtract', 'multiply', 'divide', 'limit', 'normalize', 'rotate']
do (name) -> do (name) ->
Vector[name] = (a, b, useZ) -> Vector[name] = (a, b, useZ) ->
a.copy()[name](b, useZ) a.copy()[name](b, useZ)
isVector: true isVector: true
apiProperties: ['x', 'y', 'z', 'magnitude', 'heading', 'distance', 'dot', 'equals', 'copy', 'distanceSquared'] apiProperties: ['x', 'y', 'z', 'magnitude', 'heading', 'distance', 'dot', 'equals', 'copy', 'distanceSquared', 'rotate']
constructor: (@x=0, @y=0, @z=0) -> constructor: (@x=0, @y=0, @z=0) ->

View file

@ -207,7 +207,11 @@ module.exports = class World
map = if kind is 'component' then @componentCodeClassMap else @systemCodeClassMap map = if kind is 'component' then @componentCodeClassMap else @systemCodeClassMap
c = map[js] c = map[js]
return c if c return c if c
c = map[js] = eval js try
c = map[js] = eval js
catch err
console.error "Couldn't compile #{kind} code:", err, "\n", js
c = map[js] = {}
c.className = name c.className = name
c c

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "български език", englishDescri
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "български език", englishDescri
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
revert_models: "Models zurücksetzen." revert_models: "Models zurücksetzen."
fork_title: "Forke neue Version" fork_title: "Forke neue Version"
fork_creating: "Erzeuge Fork..." fork_creating: "Erzeuge Fork..."
# randomize: "Randomize"
more: "Mehr" more: "Mehr"
wiki: "Wiki" wiki: "Wiki"
live_chat: "Live Chat" live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
choose_opponent: "Wähle einen Gegner" choose_opponent: "Wähle einen Gegner"
# select_your_language: "Select your language!"
tutorial_play: "Spiele Tutorial" tutorial_play: "Spiele Tutorial"
tutorial_recommended: "Empfohlen, wenn du noch nie zuvor gespielt hast." tutorial_recommended: "Empfohlen, wenn du noch nie zuvor gespielt hast."
tutorial_skip: "Überspringe Tutorial" tutorial_skip: "Überspringe Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra
revert_models: "Models zurücksetzen." revert_models: "Models zurücksetzen."
fork_title: "Forke neue Version" fork_title: "Forke neue Version"
fork_creating: "Erzeuge Fork..." fork_creating: "Erzeuge Fork..."
# randomize: "Randomize"
more: "Mehr" more: "Mehr"
wiki: "Wiki" wiki: "Wiki"
live_chat: "Live Chat" live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Deutsch", englishDescription: "German", tra
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
choose_opponent: "Wähle einen Gegner" choose_opponent: "Wähle einen Gegner"
# select_your_language: "Select your language!"
tutorial_play: "Spiele Tutorial" tutorial_play: "Spiele Tutorial"
tutorial_recommended: "Empfohlen, wenn du noch nie zuvor gespielt hast." tutorial_recommended: "Empfohlen, wenn du noch nie zuvor gespielt hast."
tutorial_skip: "Überspringe Tutorial" tutorial_skip: "Überspringe Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "ελληνικά", englishDescription: "Gre
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -482,7 +482,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# twitter: "Twitter" # twitter: "Twitter"
# gplus: "Google+" # gplus: "Google+"
# editor: editor:
# main_title: "CodeCombat Editors" # main_title: "CodeCombat Editors"
# main_description: "Build your own levels, campaigns, units and educational content. We provide all the tools you need!" # main_description: "Build your own levels, campaigns, units and educational content. We provide all the tools you need!"
# article_title: "Article Editor" # article_title: "Article Editor"
@ -501,6 +501,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
randomize: "Randomise"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -499,8 +499,12 @@
back: "Back" back: "Back"
revert: "Revert" revert: "Revert"
revert_models: "Revert Models" revert_models: "Revert Models"
pick_a_terrain: "Pick A Terrain"
small: "Small"
grassy: "Grassy"
fork_title: "Fork New Version" fork_title: "Fork New Version"
fork_creating: "Creating Fork..." fork_creating: "Creating Fork..."
randomize: "Randomize"
more: "More" more: "More"
wiki: "Wiki" wiki: "Wiki"
live_chat: "Live Chat" live_chat: "Live Chat"
@ -801,6 +805,7 @@
no_ranked_matches_pre: "No ranked matches for the " no_ranked_matches_pre: "No ranked matches for the "
no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
choose_opponent: "Choose an Opponent" choose_opponent: "Choose an Opponent"
select_your_language: "Select your language!"
tutorial_play: "Play Tutorial" tutorial_play: "Play Tutorial"
tutorial_recommended: "Recommended if you've never played before" tutorial_recommended: "Recommended if you've never played before"
tutorial_skip: "Skip Tutorial" tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
no_ranked_matches_pre: "Sin partidas clasificadas para el " no_ranked_matches_pre: "Sin partidas clasificadas para el "
no_ranked_matches_post: " equipo! Juega en contra de algunos competidores y luego vuelve aquí para ver tu juego clasificado." no_ranked_matches_post: " equipo! Juega en contra de algunos competidores y luego vuelve aquí para ver tu juego clasificado."
choose_opponent: "Escoge un Oponente" choose_opponent: "Escoge un Oponente"
# select_your_language: "Select your language!"
tutorial_play: "Juega el Tutorial" tutorial_play: "Juega el Tutorial"
tutorial_recommended: "Recomendado si nunca has jugado antes" tutorial_recommended: "Recomendado si nunca has jugado antes"
tutorial_skip: "Saltar Tutorial" tutorial_skip: "Saltar Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
revert_models: "Revertir Modelos" revert_models: "Revertir Modelos"
fork_title: "Bifurcar nueva versión" fork_title: "Bifurcar nueva versión"
fork_creating: "Creando bifurcación..." fork_creating: "Creando bifurcación..."
# randomize: "Randomize"
more: "Más" more: "Más"
wiki: "Wiki" wiki: "Wiki"
live_chat: "Chat en directo" live_chat: "Chat en directo"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
no_ranked_matches_pre: "No hay partidas calificadas para " no_ranked_matches_pre: "No hay partidas calificadas para "
no_ranked_matches_post: " equipo! Juega contra otros competidores y luego vuelve aquí para que tu partida aparezca en la clasificación." no_ranked_matches_post: " equipo! Juega contra otros competidores y luego vuelve aquí para que tu partida aparezca en la clasificación."
choose_opponent: "Elige un contrincante" choose_opponent: "Elige un contrincante"
# select_your_language: "Select your language!"
tutorial_play: "Jugar el Tutorial" tutorial_play: "Jugar el Tutorial"
tutorial_recommended: "Recomendado si no has jugado antes." tutorial_recommended: "Recomendado si no has jugado antes."
tutorial_skip: "Saltar el Tutorial" tutorial_skip: "Saltar el Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "español", englishDescription: "Spanish", t
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
tutorial_play: "Jugar Tutorial" tutorial_play: "Jugar Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
tutorial_skip: "Saltar Tutorial" tutorial_skip: "Saltar Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
revert_models: "Annuler les modèles" revert_models: "Annuler les modèles"
fork_title: "Fork une nouvelle version" fork_title: "Fork une nouvelle version"
fork_creating: "Créer un Fork..." fork_creating: "Créer un Fork..."
# randomize: "Randomize"
more: "Plus" more: "Plus"
wiki: "Wiki" wiki: "Wiki"
live_chat: "Chat en live" live_chat: "Chat en live"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
no_ranked_matches_pre: "Pas de match classé pour l'équipe " no_ranked_matches_pre: "Pas de match classé pour l'équipe "
no_ranked_matches_post: "! Affronte d'autres compétiteurs et reviens ici pour classer ta partie." no_ranked_matches_post: "! Affronte d'autres compétiteurs et reviens ici pour classer ta partie."
choose_opponent: "Choisir un Adversaire" choose_opponent: "Choisir un Adversaire"
# select_your_language: "Select your language!"
tutorial_play: "Jouer au Tutoriel" tutorial_play: "Jouer au Tutoriel"
tutorial_recommended: "Recommendé si tu n'as jamais joué avant" tutorial_recommended: "Recommendé si tu n'as jamais joué avant"
tutorial_skip: "Passer le Tutoriel" tutorial_skip: "Passer le Tutoriel"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -173,8 +173,8 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
email_announcements: "Bejelentések" email_announcements: "Bejelentések"
email_announcements_description: "Szeretnél levelet kapni a legújabb fejlesztéseinkről?" email_announcements_description: "Szeretnél levelet kapni a legújabb fejlesztéseinkről?"
email_notifications: "Értesítések" email_notifications: "Értesítések"
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." email_notifications_summary: "CodeCombat tevékenységedre vonatkozó személyre szóló, automatikus értesítések beállításai."
email_any_notes: "Bármely értesítés" email_any_notes: "Bármely megjegyzés"
email_any_notes_description: "Minden tevékenységgel kapcsolatos e-mail értesítés letiltása." email_any_notes_description: "Minden tevékenységgel kapcsolatos e-mail értesítés letiltása."
email_recruit_notes: "Álláslehetőségek" email_recruit_notes: "Álláslehetőségek"
email_recruit_notes_description: "Ha igazán jól játszol lehet, hogy felveszzük veled a kapcsolatot és megbeszéljük, hogy szerezzünk-e neked egy (jobb) állást." email_recruit_notes_description: "Ha igazán jól játszol lehet, hogy felveszzük veled a kapcsolatot és megbeszéljük, hogy szerezzünk-e neked egy (jobb) állást."
@ -501,6 +501,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
no_ranked_matches_pre: "Nessuna partita valutata per " no_ranked_matches_pre: "Nessuna partita valutata per "
no_ranked_matches_post: " squadra! Gioca contro altri avversari e poi torna qui affinchè la tua partita venga valutata." no_ranked_matches_post: " squadra! Gioca contro altri avversari e poi torna qui affinchè la tua partita venga valutata."
choose_opponent: "Scegli un avversario" choose_opponent: "Scegli un avversario"
# select_your_language: "Select your language!"
tutorial_play: "Gioca il Tutorial" tutorial_play: "Gioca il Tutorial"
tutorial_recommended: "Consigliato se questa è la tua primissima partita" tutorial_recommended: "Consigliato se questa è la tua primissima partita"
tutorial_skip: "Salta il Tutorial" tutorial_skip: "Salta il Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
revert_models: "모델 되돌리기" revert_models: "모델 되돌리기"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
revert_models: "keer wijziging model terug" revert_models: "keer wijziging model terug"
fork_title: "Kloon naar nieuwe versie" fork_title: "Kloon naar nieuwe versie"
fork_creating: "Kloon aanmaken..." fork_creating: "Kloon aanmaken..."
# randomize: "Randomize"
more: "Meer" more: "Meer"
wiki: "Wiki" wiki: "Wiki"
live_chat: "Live Chat" live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het" no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het"
no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen." no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen."
choose_opponent: "Kies een tegenstander" choose_opponent: "Kies een tegenstander"
# select_your_language: "Select your language!"
tutorial_play: "Speel de Tutorial" tutorial_play: "Speel de Tutorial"
tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld" tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld"
tutorial_skip: "Sla Tutorial over" tutorial_skip: "Sla Tutorial over"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
revert_models: "keer wijziging model terug" revert_models: "keer wijziging model terug"
fork_title: "Kloon naar nieuwe versie" fork_title: "Kloon naar nieuwe versie"
fork_creating: "Kloon aanmaken..." fork_creating: "Kloon aanmaken..."
# randomize: "Randomize"
more: "Meer" more: "Meer"
wiki: "Wiki" wiki: "Wiki"
live_chat: "Live Chat" live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het" no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het"
no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen." no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen."
choose_opponent: "Kies een tegenstander" choose_opponent: "Kies een tegenstander"
# select_your_language: "Select your language!"
tutorial_play: "Speel de Tutorial" tutorial_play: "Speel de Tutorial"
tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld" tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld"
tutorial_skip: "Sla Tutorial over" tutorial_skip: "Sla Tutorial over"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
revert_models: "keer wijziging model terug" revert_models: "keer wijziging model terug"
fork_title: "Kloon naar nieuwe versie" fork_title: "Kloon naar nieuwe versie"
fork_creating: "Kloon aanmaken..." fork_creating: "Kloon aanmaken..."
# randomize: "Randomize"
more: "Meer" more: "Meer"
wiki: "Wiki" wiki: "Wiki"
live_chat: "Live Chat" live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Nederlands", englishDescription: "Dutch", t
no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het" no_ranked_matches_pre: "Geen beoordeelde wedstrijden voor het"
no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen." no_ranked_matches_post: " team! Speel tegen enkele tegenstanders en kom terug hier om uw spel te laten beoordelen."
choose_opponent: "Kies een tegenstander" choose_opponent: "Kies een tegenstander"
# select_your_language: "Select your language!"
tutorial_play: "Speel de Tutorial" tutorial_play: "Speel de Tutorial"
tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld" tutorial_recommended: "Aanbevolen als je nog niet eerder hebt gespeeld"
tutorial_skip: "Sla Tutorial over" tutorial_skip: "Sla Tutorial over"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
revert_models: "Przywróć wersję" revert_models: "Przywróć wersję"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
no_ranked_matches_pre: "Brak ocenionych pojedynków dla drużyny " no_ranked_matches_pre: "Brak ocenionych pojedynków dla drużyny "
no_ranked_matches_post: " ! Zagraj przeciwko kilku oponentom i wróc tutaj, aby uzyskać ocenę gry." no_ranked_matches_post: " ! Zagraj przeciwko kilku oponentom i wróc tutaj, aby uzyskać ocenę gry."
choose_opponent: "Wybierz przeciwnika" choose_opponent: "Wybierz przeciwnika"
# select_your_language: "Select your language!"
tutorial_play: "Rozegraj samouczek" tutorial_play: "Rozegraj samouczek"
tutorial_recommended: "Zalecane, jeśli wcześniej nie grałeś" tutorial_recommended: "Zalecane, jeśli wcześniej nie grałeś"
tutorial_skip: "Pomiń samouczek" tutorial_skip: "Pomiń samouczek"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
revert_models: "Reverter Modelos" revert_models: "Reverter Modelos"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
more: "Mais" more: "Mais"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
no_ranked_matches_pre: "Sem partidas classificadas para o " no_ranked_matches_pre: "Sem partidas classificadas para o "
no_ranked_matches_post: " time! Jogue contra alguns competidores e então volte aqui para ter seu jogo classificado." no_ranked_matches_post: " time! Jogue contra alguns competidores e então volte aqui para ter seu jogo classificado."
choose_opponent: "Escolha um Oponente" choose_opponent: "Escolha um Oponente"
# select_your_language: "Select your language!"
tutorial_play: "Jogue o Tutorial" tutorial_play: "Jogue o Tutorial"
tutorial_recommended: "Recomendado se você nunca jogou antes" tutorial_recommended: "Recomendado se você nunca jogou antes"
tutorial_skip: "Pular Tutorial" tutorial_skip: "Pular Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
revert_models: "Reverter Modelos" revert_models: "Reverter Modelos"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
no_ranked_matches_pre: "Sem jogos classificados pela equipa " no_ranked_matches_pre: "Sem jogos classificados pela equipa "
no_ranked_matches_post: "! Joga contra alguns adversários e volta aqui para veres o teu jogo classificado." no_ranked_matches_post: "! Joga contra alguns adversários e volta aqui para veres o teu jogo classificado."
choose_opponent: "Escolhe um Adversário" choose_opponent: "Escolhe um Adversário"
# select_your_language: "Select your language!"
tutorial_play: "Jogar Tutorial" tutorial_play: "Jogar Tutorial"
tutorial_recommended: "Recomendado se nunca jogaste antes" tutorial_recommended: "Recomendado se nunca jogaste antes"
tutorial_skip: "Saltar Tutorial" tutorial_skip: "Saltar Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "português", englishDescription: "Portugues
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
revert_models: "Resetează Modelele" revert_models: "Resetează Modelele"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
no_ranked_matches_pre: "Nici un meci de clasament pentru " no_ranked_matches_pre: "Nici un meci de clasament pentru "
no_ranked_matches_post: " echipă! Joacă împotriva unor concurenți și revino apoi aici pentr a-ți plasa meciul in clasament." no_ranked_matches_post: " echipă! Joacă împotriva unor concurenți și revino apoi aici pentr a-ți plasa meciul in clasament."
choose_opponent: "Alege un adversar" choose_opponent: "Alege un adversar"
# select_your_language: "Select your language!"
tutorial_play: "Joacă Tutorial-ul" tutorial_play: "Joacă Tutorial-ul"
tutorial_recommended: "Recomandat dacă nu ai mai jucat niciodată înainte" tutorial_recommended: "Recomandat dacă nu ai mai jucat niciodată înainte"
tutorial_skip: "Sari peste Tutorial" tutorial_skip: "Sari peste Tutorial"

View file

@ -173,7 +173,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
email_announcements: "Оповещения" email_announcements: "Оповещения"
email_announcements_description: "Получать email-оповещения о последних новостях CodeCombat." email_announcements_description: "Получать email-оповещения о последних новостях CodeCombat."
email_notifications: "Уведомления" email_notifications: "Уведомления"
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity." email_notifications_summary: "Настройки автоматических email-уведомлений, основанных на вашей активности на CodeCombat."
email_any_notes: "Все уведомления" email_any_notes: "Все уведомления"
email_any_notes_description: "Отключите, чтобы больше не получать извещения." email_any_notes_description: "Отключите, чтобы больше не получать извещения."
email_recruit_notes: "Возможности для работы" email_recruit_notes: "Возможности для работы"
@ -399,8 +399,8 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
editor_config_keybindings_label: "Сочетания клавиш" editor_config_keybindings_label: "Сочетания клавиш"
editor_config_keybindings_default: "По умолчанию (Ace)" editor_config_keybindings_default: "По умолчанию (Ace)"
editor_config_keybindings_description: "Добавляет дополнительные сочетания, известные из популярных редакторов." editor_config_keybindings_description: "Добавляет дополнительные сочетания, известные из популярных редакторов."
# editor_config_livecompletion_label: "Live Autocompletion" editor_config_livecompletion_label: "Автозаполнение"
# editor_config_livecompletion_description: "Displays autocomplete suggestions while typing." editor_config_livecompletion_description: "Отображение вариантов автозаполнения во время печати."
editor_config_invisibles_label: "Показывать непечатные символы" editor_config_invisibles_label: "Показывать непечатные символы"
editor_config_invisibles_description: "Отображение непечатных символов, таких как пробелы или табуляции." editor_config_invisibles_description: "Отображение непечатных символов, таких как пробелы или табуляции."
editor_config_indentguides_label: "Показывать направляющие отступов" editor_config_indentguides_label: "Показывать направляющие отступов"
@ -451,8 +451,8 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
enter: "Enter" enter: "Enter"
escape: "Escape" escape: "Escape"
cast_spell: "Произнести текущее заклинание." cast_spell: "Произнести текущее заклинание."
# continue_script: "Continue past current script." continue_script: "Продолжить текущий скрипт."
# skip_scripts: "Skip past all skippable scripts." skip_scripts: "Пропустить все возможные скрипты."
toggle_playback: "Переключить проигрывание/паузу." toggle_playback: "Переключить проигрывание/паузу."
scrub_playback: "Перемотка назад и вперед во времени." scrub_playback: "Перемотка назад и вперед во времени."
# single_scrub_playback: "Scrub back and forward through time by a single frame." # single_scrub_playback: "Scrub back and forward through time by a single frame."
@ -501,6 +501,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
revert_models: "Откатить Модели" revert_models: "Откатить Модели"
fork_title: "Форк новой версии" fork_title: "Форк новой версии"
fork_creating: "Создание форка..." fork_creating: "Создание форка..."
# randomize: "Randomize"
more: "Ещё" more: "Ещё"
wiki: "Вики" wiki: "Вики"
live_chat: "Онлайн-чат" live_chat: "Онлайн-чат"
@ -535,10 +536,10 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
new_thang_title: "Создать новый тип объектов" new_thang_title: "Создать новый тип объектов"
new_level_title: "Создать новый уровень" new_level_title: "Создать новый уровень"
new_article_title_login: "Войти, чтобы создать новую статью" new_article_title_login: "Войти, чтобы создать новую статью"
# new_thang_title_login: "Log In to Create a New Thang Type" new_thang_title_login: "Войти, чтобы создать новый тип объектов"
new_level_title_login: "Войти чтобы создать новый уровень" new_level_title_login: "Войти, чтобы создать новый уровень"
# new_achievement_title: "Create a New Achievement" new_achievement_title: "Создать новое достижение"
# new_achievement_title_login: "Log In to Create a New Achievement" new_achievement_title_login: "Войти, чтобы создать новое достижение"
article_search_title: "Искать статьи" article_search_title: "Искать статьи"
thang_search_title: "Искать типы объектов" thang_search_title: "Искать типы объектов"
level_search_title: "Искать уровни" level_search_title: "Искать уровни"
@ -795,12 +796,13 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
rank_submitted: "Отправлено для оценки" rank_submitted: "Отправлено для оценки"
rank_failed: "Сбой в оценке" rank_failed: "Сбой в оценке"
rank_being_ranked: "Игра оценивается" rank_being_ranked: "Игра оценивается"
# rank_last_submitted: "submitted " rank_last_submitted: "отправлено "
# help_simulate: "Help simulate games?" help_simulate: "Нужна помощь в симуляции игр?"
code_being_simulated: "Ваш новый код участвует в симуляции других игроков для оценки. Обновление будет при поступлении новых матчей." code_being_simulated: "Ваш новый код участвует в симуляции других игроков для оценки. Обновление будет при поступлении новых матчей."
no_ranked_matches_pre: "Нет оценённых матчей для команды" no_ranked_matches_pre: "Нет оценённых матчей для команды"
no_ranked_matches_post: "! Сыграйте против нескольких противников и возвращайтесь сюда для оценки вашей игры." no_ranked_matches_post: "! Сыграйте против нескольких противников и возвращайтесь сюда для оценки вашей игры."
choose_opponent: "Выберите противника" choose_opponent: "Выберите противника"
# select_your_language: "Select your language!"
tutorial_play: "Пройти обучение" tutorial_play: "Пройти обучение"
tutorial_recommended: "Рекомендуется, если вы раньше никогда не играли" tutorial_recommended: "Рекомендуется, если вы раньше никогда не играли"
tutorial_skip: "Пропустить обучение" tutorial_skip: "Пропустить обучение"
@ -809,19 +811,19 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
simple_ai: "Простой ИИ" simple_ai: "Простой ИИ"
warmup: "Разминка" warmup: "Разминка"
vs: "против" vs: "против"
# friends_playing: "Friends Playing" friends_playing: "Друзья в игре"
# log_in_for_friends: "Log in to play with your friends!" log_in_for_friends: "Войти, чтобы поиграть с друзьями!"
# social_connect_blurb: "Connect and play against your friends!" social_connect_blurb: "Свяжите учетную запись и играйте против друзей!"
invite_friends_to_battle: "Пригласить друзей присоединиться к вам в сражении!" invite_friends_to_battle: "Пригласить друзей присоединиться к вам в сражении!"
fight: "В бой!" fight: "В бой!"
# watch_victory: "Watch your victory" watch_victory: "Наблюдать за победой"
# defeat_the: "Defeat the" defeat_the: "Победить"
# tournament_ends: "Tournament ends" tournament_ends: "Турнир заканчивается"
# tournament_ended: "Tournament ended" tournament_ended: "Турнир закончился"
# tournament_rules: "Tournament Rules" tournament_rules: "Правила турнира"
# tournament_blurb: "Write code, collect gold, build armies, crush foes, win prizes, and upgrade your career in our $40,000 Greed tournament! Check out the details" tournament_blurb: "Пишите код, собирайте золото, стройте армию, крушите противников, получайте призы и улучшайте вашу карьеру в нашем \"$40,000 турнире жадности\"! Узнайте больше"
# tournament_blurb_blog: "on our blog" tournament_blurb_blog: "в нашем блоге"
# rules: "Rules" rules: "Правила"
winners: "Победители" winners: "Победители"
# ladder_prizes: # ladder_prizes:

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
revert_models: "Återställ modeller" revert_models: "Återställ modeller"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
no_ranked_matches_pre: "Inga rankade matcher för " no_ranked_matches_pre: "Inga rankade matcher för "
no_ranked_matches_post: " laget! Spela mot några motståndare och kom sedan tillbaka it för att få din match rankad." no_ranked_matches_post: " laget! Spela mot några motståndare och kom sedan tillbaka it för att få din match rankad."
choose_opponent: "Välj en motståndare" choose_opponent: "Välj en motståndare"
# select_your_language: "Select your language!"
tutorial_play: "Spela tutorial" tutorial_play: "Spela tutorial"
tutorial_recommended: "Rekommenderas om du aldrig har spelat tidigare" tutorial_recommended: "Rekommenderas om du aldrig har spelat tidigare"
tutorial_skip: "Hoppa över tutorial" tutorial_skip: "Hoppa över tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
revert_models: "Önceki Modeller" revert_models: "Önceki Modeller"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
revert_models: "Моделі повернення" revert_models: "Моделі повернення"
fork_title: "Нова версія Форк" fork_title: "Нова версія Форк"
fork_creating: "Створення Форк..." fork_creating: "Створення Форк..."
# randomize: "Randomize"
more: "Більше" more: "Більше"
wiki: "Wiki" wiki: "Wiki"
live_chat: "Online чат" live_chat: "Online чат"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
revert_models: "还原模式" revert_models: "还原模式"
fork_title: "派生新版本" fork_title: "派生新版本"
fork_creating: "正在执行派生..." fork_creating: "正在执行派生..."
# randomize: "Randomize"
more: "更多" more: "更多"
wiki: "维基" wiki: "维基"
live_chat: "在线聊天" live_chat: "在线聊天"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
choose_opponent: "选择一个对手" choose_opponent: "选择一个对手"
# select_your_language: "Select your language!"
tutorial_play: "玩教程" tutorial_play: "玩教程"
tutorial_recommended: "如果你从未玩过的话,推荐先玩下教程" tutorial_recommended: "如果你从未玩过的话,推荐先玩下教程"
tutorial_skip: "跳过教材" tutorial_skip: "跳过教材"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
revert_models: "還原模式" revert_models: "還原模式"
fork_title: "派生新版本" fork_title: "派生新版本"
fork_creating: "徠搭執行派生..." fork_creating: "徠搭執行派生..."
# randomize: "Randomize"
more: "無數" more: "無數"
wiki: "維基" wiki: "維基"
live_chat: "上線白嗒" live_chat: "上線白嗒"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
choose_opponent: "揀一個對手" choose_opponent: "揀一個對手"
# select_your_language: "Select your language!"
tutorial_play: "攪教程" tutorial_play: "攪教程"
tutorial_recommended: "假使爾從來朆攪過個話,建議爾先畀教程攪攪相" tutorial_recommended: "假使爾從來朆攪過個話,建議爾先畀教程攪攪相"
tutorial_skip: "跳過教程" tutorial_skip: "跳過教程"

View file

@ -501,6 +501,7 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra
# revert_models: "Revert Models" # revert_models: "Revert Models"
# fork_title: "Fork New Version" # fork_title: "Fork New Version"
# fork_creating: "Creating Fork..." # fork_creating: "Creating Fork..."
# randomize: "Randomize"
# more: "More" # more: "More"
# wiki: "Wiki" # wiki: "Wiki"
# live_chat: "Live Chat" # live_chat: "Live Chat"
@ -801,6 +802,7 @@ module.exports = nativeDescription: "中文", englishDescription: "Chinese", tra
# no_ranked_matches_pre: "No ranked matches for the " # no_ranked_matches_pre: "No ranked matches for the "
# no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked." # no_ranked_matches_post: " team! Play against some competitors and then come back here to get your game ranked."
# choose_opponent: "Choose an Opponent" # choose_opponent: "Choose an Opponent"
# select_your_language: "Select your language!"
# tutorial_play: "Play Tutorial" # tutorial_play: "Play Tutorial"
# tutorial_recommended: "Recommended if you've never played before" # tutorial_recommended: "Recommended if you've never played before"
# tutorial_skip: "Skip Tutorial" # tutorial_skip: "Skip Tutorial"

View file

@ -30,7 +30,7 @@ module.exports = class Level extends CocoModel
visit = (system) -> visit = (system) ->
return if system.original of originalsSeen return if system.original of originalsSeen
systemModel = _.find systemModels, {original: system.original} systemModel = _.find systemModels, {original: system.original}
console.error 'Couldn\'t find model for original', system.original, 'from', systemModels unless systemModel return console.error 'Couldn\'t find model for original', system.original, 'from', systemModels unless systemModel
for d in systemModel.dependencies or [] for d in systemModel.dependencies or []
system2 = _.find levelSystems, {original: d.original} system2 = _.find levelSystems, {original: d.original}
visit system2 visit system2
@ -61,7 +61,7 @@ module.exports = class Level extends CocoModel
for d in lc.dependencies or [] for d in lc.dependencies or []
c2 = _.find thang.components, {original: d.original} c2 = _.find thang.components, {original: d.original}
console.error thang.id, 'couldn\'t find dependent Component', d.original, 'from', lc.name unless c2 console.error thang.id, 'couldn\'t find dependent Component', d.original, 'from', lc.name unless c2
visit c2 visit c2 if c2
if lc.name is 'Collides' if lc.name is 'Collides'
allied = _.find levelComponents, {name: 'Allied'} allied = _.find levelComponents, {name: 'Allied'}
if allied if allied

View file

@ -7,6 +7,7 @@ module.exports = class User extends CocoModel
@className: 'User' @className: 'User'
@schema: require 'schemas/models/user' @schema: require 'schemas/models/user'
urlRoot: '/db/user' urlRoot: '/db/user'
notyErrors: false
defaults: defaults:
points: 0 points: 0

View file

@ -239,6 +239,9 @@ _.extend LevelSessionSchema.properties,
title: 'Opponent Rank' title: 'Opponent Rank'
description: 'The opponent\'s ranking in a given match' description: 'The opponent\'s ranking in a given match'
type: 'number' type: 'number'
codeLanguage:
type: 'string'
description: 'What submittedCodeLanguage the opponent used during the match'
c.extendBasicProperties LevelSessionSchema, 'level.session' c.extendBasicProperties LevelSessionSchema, 'level.session'
c.extendPermissionsProperties LevelSessionSchema, 'level.session' c.extendPermissionsProperties LevelSessionSchema, 'level.session'

View file

@ -9,6 +9,9 @@ module.exports =
'note-group-ended': 'note-group-ended':
{} # TODO schema {} # TODO schema
'modal-opened':
{} # TODO schema
'modal-closed': 'modal-closed':
{} # TODO schema {} # TODO schema

View file

@ -32,9 +32,6 @@ module.exports =
'level-set-grid': 'level-set-grid':
{} # TODO schema {} # TODO schema
'tome:cast-spell':
{} # TODO schema
'level:restarted': 'level:restarted':
{} # TODO schema {} # TODO schema

View file

@ -1,74 +1,217 @@
module.exports = module.exports =
'tome:cast-spell': "tome:cast-spell":
{} # TODO schema title: "Cast Spell"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when a spell is cast"
type: ["object", "undefined"]
properties:
spell:
type: "object"
thang:
type: "object"
preload:
type: "boolean"
required: []
additionalProperties: false
# TODO do we really need both 'cast-spell' and 'cast-spells'? # TODO do we really need both 'cast-spell' and 'cast-spells'?
'tome:cast-spells': "tome:cast-spells":
{} # TODO schema title: "Cast Spells"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when spells are cast"
type: ["object", "undefined"]
properties:
spells:
type: "object"
preload:
type: "boolean"
required: []
additionalProperties: false
'tome:manual-cast': "tome:manual-cast":
{} # TODO schema title: "Manually Cast Spells"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you wish to manually recast all spells"
type: "object"
properties: {}
required: []
additionalProperties: false
'tome:spell-created': "tome:spell-created":
{} # TODO schema title: "Spell Created"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published after a new spell has been created"
type: "object"
properties:
"spell": "object"
required: ["spell"]
additionalProperties: false
'tome:spell-debug-property-hovered': "tome:spell-debug-property-hovered":
{} # TODO schema title: "Spell Debug Property Hovered"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you hover over a spell property"
type: "object"
properties:
"property": "string"
"owner": "string"
required: []
additionalProperties: false
'tome:toggle-spell-list': "tome:toggle-spell-list":
{} # TODO schema title: "Toggle Spell List"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you toggle the dropdown for a thang's spells"
type: "undefined"
additionalProperties: false
'tome:reload-code': "tome:reload-code":
{} # TODO schema title: "Reload Code"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you reset a spell to its original source"
type: "object"
properties:
"spell": "object"
required: ["spell"]
additionalProperties: false
'tome:palette-hovered': "tome:palette-hovered":
{} # TODO schema title: "Palette Hovered"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you hover over a Thang in the spell palette"
type: "object"
properties:
"thang": "object"
"prop": "string"
"entry": "object"
required: ["thang", "prop", "entry"]
additionalProperties: false
'tome:palette-pin-toggled': "tome:palette-pin-toggled":
{} # TODO schema title: "Palette Pin Toggled"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you pin or unpin the spell palette"
type: "object"
properties:
"entry": "object"
"pinned": "boolean"
required: ["entry", "pinned"]
additionalProperties: false
'tome:palette-clicked': "tome:palette-clicked":
{} # TODO schema title: "Palette Clicked"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you click on the spell palette"
type: "object"
properties:
"thang": "object"
"prop": "string"
"entry": "object"
required: ["thang", "prop", "entry"]
additionalProperties: false
'tome:spell-statement-index-updated': "tome:spell-statement-index-updated":
{} # TODO schema title: "Spell Statement Index Updated"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when the spell index is updated"
type: "object"
properties:
"statementIndex": "object"
"ace": "object"
required: ["statementIndex", "ace"]
additionalProperties: false
# TODO proposition: refactor 'tome' into spell events # TODO proposition: refactor 'tome' into spell events
'spell-beautify': "spell-beautify":
{} # TODO schema title: "Beautify"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you click the \"beautify\" button"
type: "object"
properties:
"spell": "object"
required: []
additionalProperties: false
'spell-step-forward': "spell-step-forward":
{} # TODO schema title: "Step Forward"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you step forward in time"
type: "undefined"
additionalProperties: false
'spell-step-backward': "spell-step-backward":
{} # TODO schema title: "Step Backward"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you step backward in time"
type: "undefined"
additionalProperties: false
'tome:spell-loaded': "tome:spell-loaded":
{} # TODO schema title: "Spell Loaded"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when a spell is loaded"
type: "object"
properties:
"spell": "object"
required: ["spell"]
additionalProperties: false
'tome:cast-spell': "tome:spell-changed":
{} # TODO schema title: "Spell Changed"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when a spell is changed"
type: "object"
properties:
"spell": "object"
required: ["spell"]
additionalProperties: false
'tome:spell-changed': "tome:editing-began":
{} # TODO schema title: "Editing Began"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you have begun changing code"
type: "undefined"
additionalProperties: false
'tome:editing-ended': "tome:editing-ended":
{} # TODO schema title: "Editing Ended"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you have stopped changing code"
type: "undefined"
additionalProperties: false
'tome:editing-began': "tome:problems-updated":
{} # TODO schema title: "Problems Updated"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when problems have been updated"
type: "object"
properties:
"spell": "object"
"problems": "array"
"isCast": "boolean"
required: ["spell", "problems", "isCast"]
additionalProperties: false
'tome:problems-updated': "tome:thang-list-entry-popover-shown":
{} # TODO schema title: "Thang List Entry Popover Shown"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when we show the popover for a thang in the master list"
type: "object"
properties:
"entry": "object"
required: ["entry"]
additionalProperties: false
'tome:thang-list-entry-popover-shown': "tome:spell-shown":
{} # TODO schema title: "Spell Shown"
$schema: "http://json-schema.org/draft-04/schema#"
'tome:spell-shown': description: "Published when we show a spell"
{} # TODO schema type: "object"
properties:
'tome:focus-editor': "thang": "object"
{} # TODO schema "spell": "object"
required: ["thang", "spell"]
additionalProperties: false
'tome:change-language': 'tome:change-language':
title: 'Tome Change Language' title: 'Tome Change Language'
@ -93,3 +236,37 @@ module.exports =
language: language:
type: 'string' type: 'string'
required: ['spell'] required: ['spell']
"tome:comment-my-code":
title: "Comment My Code"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when we comment out a chunk of your code"
type: "undefined"
additionalProperties: false
"tome:change-config":
title: "Change Config"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when you change your tome settings"
type: "undefined"
additionalProperties: false
"tome:update-snippets":
title: "Update Snippets"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published when we need to add Zatanna Snippets"
type: "object"
properties:
"propGroups": "object"
"allDocs": "object"
"language": "string"
required: ["propGroups", "allDocs"]
additionalProperties: false
# TODO proposition: add tome to name
"focus-editor":
title: "Focus Editor"
$schema: "http://json-schema.org/draft-04/schema#"
description: "Published whenever we want to give focus back to the editor"
type: "undefined"
additionalProperties: false

View file

@ -1 +0,0 @@
@import "bootstrap/bootstrap";

View file

@ -1,4 +1,4 @@
#terrain-randomise-modal #terrain-randomize-modal
.choose-option .choose-option
margin-bottom: 15px margin-bottom: 15px

View file

@ -9,9 +9,9 @@
display: block display: block
float: none float: none
background: white background: white
.wizard-name-line #wizard-settings-name-wrapper
padding-left: 0px !important
.help-block
text-align: center text-align: center
margin-bottom: 10px
label
margin-right: 10px

View file

@ -50,3 +50,9 @@
td td
padding: 1px 2px padding: 1px 2px
.code-language-cell
padding: 0 10px
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
background-size: contain
height: 19px

View file

@ -37,3 +37,9 @@
td td
padding: 1px 2px padding: 1px 2px
.code-language-cell
padding: 0 10px
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
background-size: contain
height: 19px

View file

@ -95,7 +95,17 @@
span span
position: relative position: relative
top: 1px top: 1px
.code-language
position: absolute
background: transparent url(/images/pages/home/language_logo_javascript.png) no-repeat center center
background-size: contain
width: 40px
height: 40px
right: -5px
top: -15px
display: block
.my-name .my-name
border-right: 15px solid transparent border-right: 15px solid transparent
left: 0 left: 0
@ -145,4 +155,4 @@
top: 35px top: 35px
font-size: 40px font-size: 40px
font-weight: bolder font-weight: bolder
color: black color: black

View file

@ -13,13 +13,14 @@
$childMargin: 2px $childMargin: 2px
$childSize: $height - 2 * $childMargin $childSize: $height - 2 * $childMargin
height: $height height: $height
width: 80% width: 90%
width: -webkit-calc(100% - 100px) width: -webkit-calc(100% - 50px)
width: calc(100% - 100px) width: calc(100% - 50px)
padding: 0px 8px padding: 0px 8px
border-width: 3px border-width: 3px
border-image: url(/images/level/code_editor_tab_background.png) 4 fill repeat border-image: url(/images/level/code_editor_tab_background.png) 4 fill repeat
text-align: center white-space: nowrap
position: relative
&.read-only &.read-only
background: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%,rgba(0,0,0,0.2) 100%), url(/images/level/code_editor_tab_background.png) background: linear-gradient(to bottom, rgba(0,0,0,0.2) 0%,rgba(0,0,0,0.2) 100%), url(/images/level/code_editor_tab_background.png)
@ -34,6 +35,11 @@
.spell-list-button, .thang-avatar-wrapper .spell-list-button, .thang-avatar-wrapper
float: left float: left
.spell-tool-buttons
position: absolute
right: 0px
top: 0px
.reload-code .reload-code
float: right float: right
display: none display: none
@ -66,6 +72,7 @@
code code
margin-top: 7px margin-top: 7px
font-size: 1vw
.spell-list-entry-view:not(.spell-tab) .spell-list-entry-view:not(.spell-tab)
cursor: pointer cursor: pointer
@ -110,4 +117,4 @@ html.no-borderimage
border-width: 0 border-width: 0
border-image: none border-image: none
background: transparent url(/images/level/code_editor_tab_background.png) no-repeat background: transparent url(/images/level/code_editor_tab_background.png) no-repeat
background-size: 100% 100% background-size: 100% 100%

View file

@ -1,7 +1,7 @@
extends /templates/base extends /templates/base
block content block content
h1(data-i18n="community.main_title") CodeCombat Community h1(data-i18n="community.main_title") CodeCombat Community
p There are dozens of ways you can get involved with CodeCombat. Check out the resources we've built, decide what sounds the most fun, and we look forward to working with you! p There are dozens of ways you can get involved with CodeCombat. Check out the resources we've built, decide what sounds the most fun, and we look forward to working with you!
@ -15,13 +15,13 @@ block content
p We have built several tools that enable users to get not only edit, but also build new game content! p We have built several tools that enable users to get not only edit, but also build new game content!
ul ul
li li
a(href="/editor/level", data-i18n="community.level_editor") a(href="/editor/level", data-i18n="community.level_editor")
| : fork, edit, or build your own CodeCombat levels. New levels can be kept private or published to the community. | : fork, edit, or build your own CodeCombat levels. New levels can be kept private or published to the community.
li li
a(href="/editor/thang", data-i18n="editor.thang_title") a(href="/editor/thang", data-i18n="editor.thang_title")
| : modify or import new art assets for the game using our powerful editor. | : modify or import new art assets for the game using our powerful editor.
li li
a(href="/editor/article", data-i18n="editor.article_title") a(href="/editor/article", data-i18n="editor.article_title")
| : edit or create documentation used in CodeCombat levels. | : edit or create documentation used in CodeCombat levels.
@ -35,51 +35,51 @@ block content
ul ul
li We write about our progress and current projects on our li We write about our progress and current projects on our
a(href="http://blog.codecombat.com", data-i18n="nav.blog") a.spl(href="http://blog.codecombat.com", data-i18n="nav.blog")
| . | .
li Participate in our active user community by checking out our li Participate in our active user community by checking out our
a(href="http://discourse.codecombat.com", data-i18n="nav.forum") a.spl(href="http://discourse.codecombat.com", data-i18n="nav.forum")
| . | .
li For regular news about learning to code, games, and education, check out our li For regular news about learning to code, games, and education, check out our
a(href="https://www.facebook.com/codecombat", data-i18n="community.facebook") a.spl(href="https://www.facebook.com/codecombat", data-i18n="community.facebook")
| . | .
li For realtime status or to have a quick chat, follow us on li For realtime status or to have a quick chat, follow us on
a(href="https://twitter.com/CodeCombat", data-i18n="community.twitter") a.spl(href="https://twitter.com/CodeCombat", data-i18n="community.twitter")
| . | .
li Don't like Facebook? We're on li Don't like Facebook? We're on
a(href="https://plus.google.com/115285980638641924488/posts", data-i18n="community.gplus") a.spl(href="https://plus.google.com/115285980638641924488/posts", data-i18n="community.gplus")
| . | .
li You can also find us in our li You can also find us in our
a(href="http://www.hipchat.com/g3plnOKqa", data-i18n="editor.hipchat_url") a.spl(href="http://www.hipchat.com/g3plnOKqa", data-i18n="editor.hipchat_url")
.community_columns .community_columns
h2 Contribute h2 Contribute
p Put your skills to use helping us teach the world to code. We have a lot of roles you can consider, and if we don't have a role for you, let us know: p Put your skills to use helping us teach the world to code. We have a lot of roles you can consider, and if we don't have a role for you, let us know:
ul ul
li li
a(href="/contribute#archmage", data-i18n="classes.archmage_title") a(href="/contribute#archmage", data-i18n="classes.archmage_title")
| : contribute by writing code. | : contribute by writing code.
li li
a(href="/contribute#artisan", data-i18n="classes.artisan_title") a(href="/contribute#artisan", data-i18n="classes.artisan_title")
| : build new game levels. | : build new game levels.
li li
a(href="/contribute#adventurer", data-i18n="classes.adventurer_title") a(href="/contribute#adventurer", data-i18n="classes.adventurer_title")
| : test new game levels. | : test new game levels.
li li
a(href="/contribute#scribe", data-i18n="classes.scribe_title") a(href="/contribute#scribe", data-i18n="classes.scribe_title")
| : write educational documentation. | : write educational documentation.
li li
a(href="/contribute#diplomat", data-i18n="classes.diplomat_title") a(href="/contribute#diplomat", data-i18n="classes.diplomat_title")
| : translate site content. | : translate site content.
li li
a(href="/contribute#ambassador", data-i18n="classes.ambassador_title") a(href="/contribute#ambassador", data-i18n="classes.ambassador_title")
| : support our community of educators and coders. | : support our community of educators and coders.
| Check out the | Check out the
a(href="/contribute", data-i18n="nav.contribute") a.spl(href="/contribute", data-i18n="nav.contribute")
| page to find out more about the roles and how you can get started. | page to find out more about the roles and how you can get started.

View file

@ -49,7 +49,7 @@ block header
if level.get('type') === 'ladder' if level.get('type') === 'ladder'
li.dropdown li.dropdown
a(data-toggle='dropdown') a(data-toggle='dropdown').play-with-team-parent
span.glyphicon-play.glyphicon span.glyphicon-play.glyphicon
ul.dropdown-menu ul.dropdown-menu
li.dropdown-header Play As Which Team? li.dropdown-header Play As Which Team?
@ -70,17 +70,17 @@ block header
a#level-watch-button a#level-watch-button
span.watch span.watch
span.glyphicon.glyphicon-eye-open span.glyphicon.glyphicon-eye-open
span.spl Watch span.spl(data-i18n="common.watch") Watch
span.unwatch.secret span.unwatch.secret
span.glyphicon.glyphicon-eye-close span.glyphicon.glyphicon-eye-close
span.spl Unwatch span.spl(data-i18n="common.unwatch") Unwatch
li(class=anonymous ? "disabled": "") li(class=anonymous ? "disabled": "")
a(data-i18n="common.fork")#fork-level-start-button Fork a(data-i18n="common.fork")#fork-level-start-button Fork
li(class=anonymous ? "disabled": "") li(class=anonymous ? "disabled": "")
a(data-toggle="coco-modal", data-target="modal/revert", data-i18n="editor.revert")#revert-button Revert a(data-toggle="coco-modal", data-target="modal/revert", data-i18n="editor.revert")#revert-button Revert
li(class=anonymous ? "disabled": "") li(class=anonymous ? "disabled": "")
a(data-toggle="coco-modal", data-target="modal/terrain_randomise", data-i18n="editor.randomise")#randomise-button Randomise a(data-toggle="coco-modal", data-target="editor/level/modal/terrain_randomize", data-i18n="editor.randomize")#randomize-button Randomize
li(class=anonymous ? "disabled": "") li(class=anonymous ? "disabled": "")
a(data-i18n="editor.pop_i18n")#pop-level-i18n-button Populate i18n a(data-i18n="editor.pop_i18n")#pop-level-i18n-button Populate i18n
li.divider li.divider

View file

@ -8,8 +8,8 @@ block modal-body-content
a(href="#") a(href="#")
div.choose-option(data-preset-type="grassy", data-preset-size="small") div.choose-option(data-preset-type="grassy", data-preset-size="small")
div.preset-size.name-label div.preset-size.name-label
span(data-i18n="ladder.small") Small span(data-i18n="editor.small") Small
div.preset-name div.preset-name
span(data-i18n="ladder.grassy") Grassy span(data-i18n="editor.grassy") Grassy
//- for model in models //- for model in models
block modal-footer block modal-footer

View file

@ -4,10 +4,13 @@ block modal-header-content
h3(data-i18n="wizard_settings.title2") Customize Your Character h3(data-i18n="wizard_settings.title2") Customize Your Character
block modal-body-content block modal-body-content
div.wizard-name-line.form-group form.form-horizontal
label.control-label(for="name") div.form-group
| Your Wizardly Name: .row
input#wizard-settings-name(name="name", type="text", value="#{me.get('name')||''}") label.control-label.col-sm-6(for="name")
| Your Wizardly Name:
#wizard-settings-name-wrapper.col-sm-4
input#wizard-settings-name.form-control.input-sm(name="name", type="text", value="#{me.get('name')||''}")
#wizard-settings-view #wizard-settings-view

View file

@ -4,13 +4,13 @@ div#columns.row
div(id="histogram-display-#{team.name}", class="histogram-display",data-team-name=team.name) div(id="histogram-display-#{team.name}", class="histogram-display",data-team-name=team.name)
table.table.table-bordered.table-condensed.table-hover table.table.table-bordered.table-condensed.table-hover
tr tr
th th(colspan=2)
th(colspan=3, style="color: #{team.primaryColor}") th(colspan=3, style="color: #{team.primaryColor}")
span= team.name span= team.name
span span
span(data-i18n="ladder.leaderboard") Leaderboard span(data-i18n="ladder.leaderboard") Leaderboard
tr tr
th th(colspan=2)
th(data-i18n="general.score") Score th(data-i18n="general.score") Score
th(data-i18n="general.name").name-col-cell Name th(data-i18n="general.name").name-col-cell Name
th th
@ -21,6 +21,7 @@ div#columns.row
for session, rank in topSessions for session, rank in topSessions
- var myRow = session.get('creator') == me.id - var myRow = session.get('creator') == me.id
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id) tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id)
td.code-language-cell(style="background-image: url(/images/pages/home/language_logo_" + session.get('submittedCodeLanguage') + ".png)")
td.rank-cell= rank + 1 td.rank-cell= rank + 1
td.score-cell= Math.round(session.get('totalScore') * 100) td.score-cell= Math.round(session.get('totalScore') * 100)
td.name-col-cell= session.get('creatorName') || "Anonymous" td.name-col-cell= session.get('creatorName') || "Anonymous"
@ -34,6 +35,7 @@ div#columns.row
for session in team.leaderboard.nearbySessions() for session in team.leaderboard.nearbySessions()
- var myRow = session.get('creator') == me.id - var myRow = session.get('creator') == me.id
tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id) tr(class=myRow ? "success" : "", data-player-id=session.get('creator'), data-session-id=session.id)
td.code-language-cell(style="background-image: url(/images/pages/home/language_logo_" + session.get('submittedCodeLanguage') + ".png)")
td.rank-cell= session.rank td.rank-cell= session.rank
td.score-cell= Math.round(session.get('totalScore') * 100) td.score-cell= Math.round(session.get('totalScore') * 100)
td.name-col-cell= session.get('creatorName') || "Anonymous" td.name-col-cell= session.get('creatorName') || "Anonymous"

View file

@ -4,7 +4,7 @@ div#columns.row
table.table.table-bordered.table-condensed table.table.table-bordered.table-condensed
tr tr
th(colspan=4, style="color: #{team.primaryColor}") th(colspan=5, style="color: #{team.primaryColor}")
span(data-i18n="ladder.summary_your") Your span(data-i18n="ladder.summary_your") Your
|#{team.name} |#{team.name}
| |
@ -16,16 +16,17 @@ div#columns.row
if team.session if team.session
tr tr
th(colspan=4) th(colspan=5)
.ladder-submission-view(data-session-id=team.session.id) .ladder-submission-view(data-session-id=team.session.id)
if team.scoreHistory if team.scoreHistory
tr tr
th(colspan=4, style="color: #{team.primaryColor}") th(colspan=5, style="color: #{team.primaryColor}")
div(class="score-chart-wrapper", data-team-name=team.name, id="score-chart-#{team.name}") div(class="score-chart-wrapper", data-team-name=team.name, id="score-chart-#{team.name}")
tr tr
th(data-i18n="general.result") Result th(data-i18n="general.result") Result
th
th(data-i18n="general.opponent") Opponent th(data-i18n="general.opponent") Opponent
th(data-i18n="general.when") When th(data-i18n="general.when") When
th th
@ -38,6 +39,7 @@ div#columns.row
span(data-i18n="general.loss").loss Loss span(data-i18n="general.loss").loss Loss
if match.state === 'tie' if match.state === 'tie'
span(data-i18n="general.tie").tie Tie span(data-i18n="general.tie").tie Tie
td.code-language-cell(style="background-image: url(/images/pages/home/language_logo_" + match.codeLanguage + ".png)")
td.name-cell= match.opponentName || "Anonymous" td.name-cell= match.opponentName || "Anonymous"
td.time-cell= match.when td.time-cell= match.when
td.battle-cell td.battle-cell

View file

@ -13,13 +13,16 @@ block modal-body-content
span.btn.btn-primary.btn-block.btn-lg#skip-tutorial-button(data-i18n="ladder.tutorial_skip") Skip Tutorial span.btn.btn-primary.btn-block.btn-lg#skip-tutorial-button(data-i18n="ladder.tutorial_skip") Skip Tutorial
div#normal-view div#normal-view
if tutorialLevelExists if tutorialLevelExists
p.tutorial-suggestion p.tutorial-suggestion
strong(data-i18n="ladder.tutorial_not_sure") Not sure what's going on? strong(data-i18n="ladder.tutorial_not_sure") Not sure what's going on?
| |
a(href="/play/level/#{levelID}-tutorial", data-i18n="ladder.tutorial_play_first") Play the tutorial first. a(href="/play/level/#{levelID}-tutorial", data-i18n="ladder.tutorial_play_first") Play the tutorial first.
h4.language-selection(data-i18n="ladder.select_your_language") Select your language!
.form-group.select-group
select#tome-language(name="language")
for option in languages
option(value=option.id selected=(language === option.id))= option.name
a(href="/play/level/#{levelID}?team=#{teamID}") a(href="/play/level/#{levelID}?team=#{teamID}")
div.play-option div.play-option
img(src=myPortrait).my-icon.only-one img(src=myPortrait).my-icon.only-one
@ -30,6 +33,7 @@ block modal-body-content
span= myName span= myName
div.opponent-name.name-label div.opponent-name.name-label
span(data-i18n="ladder.simple_ai") Simple AI span(data-i18n="ladder.simple_ai") Simple AI
//span.code-language(style="background-image: url(/images/pages/home/language_logo_javascript.png)")
div.difficulty div.difficulty
span(data-i18n="ladder.warmup") Warmup span(data-i18n="ladder.warmup") Warmup
div(data-i18n="ladder.vs").vs VS div(data-i18n="ladder.vs").vs VS
@ -45,6 +49,8 @@ block modal-body-content
span= myName span= myName
div.opponent-name.name-label div.opponent-name.name-label
span= challengers.easy.opponentName span= challengers.easy.opponentName
if challengers.easy.codeLanguage
span.code-language(style="background-image: url(/images/pages/home/language_logo_" + challengers.easy.codeLanguage + ".png)")
div.difficulty div.difficulty
span(data-i18n="general.easy") Easy span(data-i18n="general.easy") Easy
div(data-i18n="ladder.vs").vs VS div(data-i18n="ladder.vs").vs VS
@ -60,6 +66,8 @@ block modal-body-content
span= myName span= myName
div.opponent-name.name-label div.opponent-name.name-label
span= challengers.medium.opponentName span= challengers.medium.opponentName
if challengers.medium.codeLanguage
span.code-language(style="background-image: url(/images/pages/home/language_logo_" + challengers.medium.codeLanguage + ".png)")
div.difficulty div.difficulty
span(data-i18n="general.medium") Medium span(data-i18n="general.medium") Medium
div(data-i18n="ladder.vs").vs VS div(data-i18n="ladder.vs").vs VS
@ -75,6 +83,8 @@ block modal-body-content
span= myName span= myName
div.opponent-name.name-label div.opponent-name.name-label
span= challengers.hard.opponentName span= challengers.hard.opponentName
if challengers.hard.codeLanguage
span.code-language(style="background-image: url(/images/pages/home/language_logo_" + challengers.hard.codeLanguage + ".png)")
div.difficulty div.difficulty
span(data-i18n="general.hard") Hard span(data-i18n="general.hard") Hard
div(data-i18n="ladder.vs").vs VS div(data-i18n="ladder.vs").vs VS

View file

@ -4,15 +4,15 @@
code #{methodSignature} code #{methodSignature}
.btn.btn-small.fullscreen-code(title="Expand code editor") .spell-tool-buttons
i.icon-fullscreen .btn.btn-small.fullscreen-code(title="Expand code editor")
i.icon-resize-small i.icon-fullscreen
i.icon-resize-small
.btn.btn-small.reload-code(title="Reload original code for " + spell.name)
i.icon-repeat .btn.btn-small.reload-code(title="Reload original code for " + spell.name)
i.icon-repeat
.btn.btn-small.beautify-code(title="Ctrl+Shift+B: Beautify code for " + spell.name)
i.icon-magnet
.btn.btn-small.beautify-code(title="Ctrl+Shift+B: Beautify code for " + spell.name) .clearfix
i.icon-magnet
.clearfix

View file

@ -249,9 +249,9 @@ class JavaScriptTreema extends CodeTreema
class InternationalizationNode extends TreemaNode.nodeMap.object class InternationalizationNode extends TreemaNode.nodeMap.object
findLanguageName: (languageCode) -> findLanguageName: (languageCode) ->
# to get around mongoose emtpy object bug, there's a prop in the object which needs to be ignored # to get around mongoose emtpy object bug, there's a prop in the object which needs to be ignored
return '' if languageCode is '-' return '' if languageCode is '-'
locale[languageCode]?.nativeDescription or "#{languageCode} Not Found" locale[languageCode]?.nativeDescription or "#{languageCode} Not Found"
getChildren: -> getChildren: ->
res = super(arguments...) res = super(arguments...)
res = (r for r in res when r[0] isnt '-') res = (r for r in res when r[0] isnt '-')
@ -322,7 +322,7 @@ class LatestVersionReferenceNode extends TreemaNode
return unless term return unless term
@lastTerm = term @lastTerm = term
@getSearchResultsEl().empty().append('Searching') @getSearchResultsEl().empty().append('Searching')
@collection = new LatestVersionCollection() @collection = new LatestVersionCollection([], model: @model)
# HACK while search is broken # HACK while search is broken
# @collection.url = "#{@url}?term=#{term}&project=true" # @collection.url = "#{@url}?term=#{term}&project=true"

View file

@ -26,6 +26,7 @@ module.exports = class EditorLevelView extends View
events: events:
'click #play-button': 'onPlayLevel' 'click #play-button': 'onPlayLevel'
'click .play-with-team-button': 'onPlayLevel' 'click .play-with-team-button': 'onPlayLevel'
'click .play-with-team-parent': 'onPlayLevelTeamSelect'
'click #commit-level-start-button': 'startCommittingLevel' 'click #commit-level-start-button': 'startCommittingLevel'
'click #fork-level-start-button': 'startForkingLevel' 'click #fork-level-start-button': 'startForkingLevel'
'click #level-history-button': 'showVersionHistory' 'click #level-history-button': 'showVersionHistory'
@ -77,6 +78,12 @@ module.exports = class EditorLevelView extends View
@listenTo @patchesView, 'accepted-patch', -> location.reload() @listenTo @patchesView, 'accepted-patch', -> location.reload()
@$el.find('#level-watch-button').find('> span').toggleClass('secret') if @level.watching() @$el.find('#level-watch-button').find('> span').toggleClass('secret') if @level.watching()
onPlayLevelTeamSelect: (e) ->
if @childWindow and not @childWindow.closed
# We already have a child window open, so we don't need to ask for a team; we'll use its existing team.
e.stopImmediatePropagation()
@onPlayLevel e
onPlayLevel: (e) -> onPlayLevel: (e) ->
team = $(e.target).data('team') team = $(e.target).data('team')
sendLevel = => sendLevel = =>

View file

@ -1,5 +1,5 @@
ModalView = require 'views/kinds/ModalView' ModalView = require 'views/kinds/ModalView'
template = require 'templates/modal/terrain_randomise' template = require 'templates/editor/level/modal/terrain_randomize'
CocoModel = require 'models/CocoModel' CocoModel = require 'models/CocoModel'
clusters = { clusters = {
@ -66,16 +66,17 @@ sizes = {
'borderSize': { 'borderSize': {
'x':4 'x':4
'y':4 'y':4
'thickness':2
} }
} }
module.exports = class TerrainRandomiseModal extends ModalView module.exports = class TerrainRandomizeModal extends ModalView
id: 'terrain-randomise-modal' id: 'terrain-randomize-modal'
template: template template: template
thangs = [] thangs = []
events: events:
'click .choose-option': 'onRandomise' 'click .choose-option': 'onRandomize'
onRevertModel: (e) -> onRevertModel: (e) ->
id = $(e.target).val() id = $(e.target).val()
@ -83,25 +84,25 @@ module.exports = class TerrainRandomiseModal extends ModalView
$(e.target).closest('tr').remove() $(e.target).closest('tr').remove()
@reloadOnClose = true @reloadOnClose = true
onRandomise: (e) -> onRandomize: (e) ->
target = $(e.target) target = $(e.target)
presetType = target.attr 'data-preset-type' presetType = target.attr 'data-preset-type'
presetSize = target.attr 'data-preset-size' presetSize = target.attr 'data-preset-size'
@randomiseThangs presetType, presetSize @randomizeThangs presetType, presetSize
Backbone.Mediator.publish('randomise:terrain-generated', Backbone.Mediator.publish('randomize:terrain-generated',
'thangs': @thangs 'thangs': @thangs
) )
@hide() @hide()
randomiseThangs: (presetName, presetSize) -> randomizeThangs: (presetName, presetSize) ->
preset = presets[presetName] preset = presets[presetName]
presetSize = sizes[presetSize] presetSize = sizes[presetSize]
@thangs = [] @thangs = []
@randomiseFloor preset, presetSize @randomizeFloor preset, presetSize
@randomiseBorder preset, presetSize @randomizeBorder preset, presetSize
@randomiseDecorations preset, presetSize @randomizeDecorations preset, presetSize
randomiseFloor: (preset, presetSize) -> randomizeFloor: (preset, presetSize) ->
for i in _.range(0, presetSize.x, sizes.floorSize.x) for i in _.range(0, presetSize.x, sizes.floorSize.x)
for j in _.range(0, presetSize.y, sizes.floorSize.y) for j in _.range(0, presetSize.y, sizes.floorSize.y)
@thangs.push { @thangs.push {
@ -112,40 +113,42 @@ module.exports = class TerrainRandomiseModal extends ModalView
} }
} }
randomiseBorder: (preset, presetSize) -> randomizeBorder: (preset, presetSize) ->
for i in _.range(0-sizes.floorSize.x/2+sizes.borderSize.x, presetSize.x-sizes.floorSize.x/2, sizes.borderSize.x) for i in _.range(0-sizes.floorSize.x/2+sizes.borderSize.x, presetSize.x-sizes.floorSize.x/2, sizes.borderSize.x)
@thangs.push { for j in _.range(sizes.borderSize.thickness)
'id': @getRandomThang(preset.borders) @thangs.push {
'pos': { 'id': @getRandomThang(preset.borders)
'x': i 'pos': {
'y': 0-sizes.floorSize.x/2 'x': i + _.random(-sizes.borderSize.x/2, sizes.borderSize.x/2)
'y': 0 - sizes.floorSize.x/2 + _.random(-sizes.borderSize.x/2, sizes.borderSize.x/2)
}
} }
} @thangs.push {
@thangs.push { 'id': @getRandomThang(preset.borders)
'id': @getRandomThang(preset.borders) 'pos': {
'pos': { 'x': i + _.random(-sizes.borderSize.x/2, sizes.borderSize.x/2)
'x': i 'y': presetSize.y - sizes.borderSize.y + _.random(-sizes.borderSize.x/2, sizes.borderSize.x/2)
'y': presetSize.y - sizes.borderSize.y }
} }
}
for i in _.range(0-sizes.floorSize.y/2, presetSize.y-sizes.borderSize.y, sizes.borderSize.y) for i in _.range(0-sizes.floorSize.y/2, presetSize.y-sizes.borderSize.y, sizes.borderSize.y)
@thangs.push { for j in _.range(3)
'id': @getRandomThang(preset.borders) @thangs.push {
'pos': { 'id': @getRandomThang(preset.borders)
'x': 0-sizes.floorSize.x/2+sizes.borderSize.x 'pos': {
'y': i 'x': 0-sizes.floorSize.x/2+sizes.borderSize.x + _.random(-sizes.borderSize.y/2, sizes.borderSize.y/2)
'y': i + _.random(-sizes.borderSize.y/2, sizes.borderSize.y/2)
}
} }
} @thangs.push {
@thangs.push { 'id': @getRandomThang(preset.borders)
'id': @getRandomThang(preset.borders) 'pos': {
'pos': { 'x': presetSize.x - sizes.borderSize.x - sizes.floorSize.x/2 + _.random(-sizes.borderSize.y/2, sizes.borderSize.y/2)
'x': presetSize.x - sizes.borderSize.x - sizes.floorSize.x/2 'y': i + _.random(-sizes.borderSize.y/2, sizes.borderSize.y/2)
'y': i }
} }
}
randomiseDecorations: (preset, presetSize)-> randomizeDecorations: (preset, presetSize)->
for name, decoration of preset.decorations for name, decoration of preset.decorations
for num in _.range(_.random(decoration.num[0], decoration.num[1])) for num in _.range(_.random(decoration.num[0], decoration.num[1]))
center = center =

View file

@ -43,7 +43,7 @@ module.exports = class ThangsTabView extends View
'sprite:mouse-up': 'onSpriteMouseUp' 'sprite:mouse-up': 'onSpriteMouseUp'
'sprite:double-clicked': 'onSpriteDoubleClicked' 'sprite:double-clicked': 'onSpriteDoubleClicked'
'surface:stage-mouse-up': 'onStageMouseUp' 'surface:stage-mouse-up': 'onStageMouseUp'
'randomise:terrain-generated': 'onRandomiseTerrain' 'randomize:terrain-generated': 'onRandomizeTerrain'
events: events:
'click #extant-thangs-filter button': 'onFilterExtantThangs' 'click #extant-thangs-filter button': 'onFilterExtantThangs'
@ -224,10 +224,14 @@ module.exports = class ThangsTabView extends View
return unless e.thang return unless e.thang
@editThang thangID: e.thang.id @editThang thangID: e.thang.id
onRandomiseTerrain: (e) -> onRandomizeTerrain: (e) ->
@thangsBatch = []
nonRandomThangs = (thang for thang in @thangsTreema.get('') when not /Random/.test thang.id)
@thangsTreema.set '', nonRandomThangs
for thang in e.thangs for thang in e.thangs
@selectAddThangType thang.id @selectAddThangType thang.id
@addThang @addThangType, thang.pos @addThang @addThangType, thang.pos, true
@batchInsert()
@selectAddThangType null @selectAddThangType null
# TODO: figure out a good way to have all Surface clicks and Treema clicks just proxy in one direction, so we can maintain only one way of handling selection and deletion # TODO: figure out a good way to have all Surface clicks and Treema clicks just proxy in one direction, so we can maintain only one way of handling selection and deletion
@ -397,8 +401,15 @@ module.exports = class ThangsTabView extends View
id = treema?.data?.id id = treema?.data?.id
@editThang thangID: id if id @editThang thangID: id if id
addThang: (thangType, pos) -> batchInsert: ->
thangID = Thang.nextID(thangType.get('name'), @world) until thangID and not @thangsTreema.get "id=#{thangID}" @thangsTreema.set '', @thangsTreema.get('').concat(@thangsBatch)
@thangsBatch = []
addThang: (thangType, pos, batchInsert=false) ->
if batchInsert
thangID = "Random #{thangType.get('name')} #{@thangsBatch.length}"
else
thangID = Thang.nextID(thangType.get('name'), @world) until thangID and not @thangsTreema.get "id=#{thangID}"
if @cloneSourceThang if @cloneSourceThang
components = _.cloneDeep @thangsTreema.get "id=#{@cloneSourceThang.id}/components" components = _.cloneDeep @thangsTreema.get "id=#{@cloneSourceThang.id}/components"
@selectAddThang null @selectAddThang null
@ -408,7 +419,10 @@ module.exports = class ThangsTabView extends View
physical = _.find components, (c) -> c.config?.pos? physical = _.find components, (c) -> c.config?.pos?
physical.config.pos = x: pos.x, y: pos.y, z: physical.config.pos.z if physical physical.config.pos = x: pos.x, y: pos.y, z: physical.config.pos.z if physical
thang = thangType: thangType.get('original'), id: thangID, components: components thang = thangType: thangType.get('original'), id: thangID, components: components
@thangsTreema.insert '', thang if batchInsert
@thangsBatch.push thang
else
@thangsTreema.insert '', thang
editThang: (e) -> editThang: (e) ->
if e.target # click event if e.target # click event

View file

@ -177,6 +177,7 @@ module.exports = class CocoView extends Backbone.View
$('#modal-wrapper .modal').modal(modalOptions).on 'hidden.bs.modal', @modalClosed $('#modal-wrapper .modal').modal(modalOptions).on 'hidden.bs.modal', @modalClosed
window.currentModal = modalView window.currentModal = modalView
@getRootView().stopListeningToShortcuts(true) @getRootView().stopListeningToShortcuts(true)
Backbone.Mediator.publish 'modal-opened', {}
modalClosed: => modalClosed: =>
visibleModal.willDisappear() if visibleModal visibleModal.willDisappear() if visibleModal
@ -190,7 +191,7 @@ module.exports = class CocoView extends Backbone.View
@openModalView(wm) @openModalView(wm)
else else
@getRootView().listenToShortcuts(true) @getRootView().listenToShortcuts(true)
Backbone.Mediator.publish 'modal-closed' Backbone.Mediator.publish 'modal-closed', {}
# Loading RootViews # Loading RootViews

View file

@ -73,6 +73,7 @@ module.exports = class MyMatchesTabView extends CocoView
sessionID: opponent.sessionID sessionID: opponent.sessionID
stale: match.date < submitDate stale: match.date < submitDate
fresh: fresh fresh: fresh
codeLanguage: match.codeLanguage
} }
for team in @teams for team in @teams

View file

@ -15,6 +15,15 @@ module.exports = class LadderPlayModal extends View
events: events:
'click #skip-tutorial-button': 'hideTutorialButtons' 'click #skip-tutorial-button': 'hideTutorialButtons'
'change #tome-language': 'updateLanguage'
defaultAceConfig:
language: 'javascript'
keyBindings: 'default'
invisibles: false
indentGuides: false
behaviors: false
liveCompletion: true
constructor: (options, @level, @session, @team) -> constructor: (options, @level, @session, @team) ->
super(options) super(options)
@ -23,8 +32,14 @@ module.exports = class LadderPlayModal extends View
@startLoadingChallengersMaybe() @startLoadingChallengersMaybe()
@wizardType = ThangType.loadUniversalWizard() @wizardType = ThangType.loadUniversalWizard()
# PART 1: Load challengers from the db unless some are in the matches updateLanguage: ->
aceConfig = _.cloneDeep me.get('aceConfig') ? {}
aceConfig = _.defaults aceConfig, @defaultAceConfig
aceConfig.language = @$el.find('#tome-language').val()
me.set 'aceConfig', aceConfig
me.patch()
# PART 1: Load challengers from the db unless some are in the matches
startLoadingChallengersMaybe: -> startLoadingChallengersMaybe: ->
matches = @session?.get('matches') matches = @session?.get('matches')
if matches?.length then @loadNames() else @loadChallengers() if matches?.length then @loadNames() else @loadChallengers()
@ -73,7 +88,14 @@ module.exports = class LadderPlayModal extends View
ctx.teamID = @team ctx.teamID = @team
ctx.otherTeamID = @otherTeam ctx.otherTeamID = @otherTeam
ctx.tutorialLevelExists = @tutorialLevelExists ctx.tutorialLevelExists = @tutorialLevelExists
ctx.languages = [
{id: 'javascript', name: 'JavaScript'}
{id: 'coffeescript', name: 'CoffeeScript'}
{id: 'python', name: 'Python (Experimental)'}
{id: 'clojure', name: 'Clojure (Experimental)'}
{id: 'lua', name: 'Lua (Experimental)'}
{id: 'io', name: 'Io (Experimental)'}
]
teamsList = teamDataFromLevel @level teamsList = teamDataFromLevel @level
teams = {} teams = {}
teams[team.id] = team for team in teamsList teams[team.id] = team for team in teamsList
@ -154,7 +176,8 @@ module.exports = class LadderPlayModal extends View
return unless session return unless session
return { return {
sessionID: session.id sessionID: session.id
opponentID: session.get('creator') opponentID: session.get 'creator'
codeLanguage: session.get 'submittedCodeLanguage'
} }
challengeInfoFromMatches: (matches) -> challengeInfoFromMatches: (matches) ->
@ -164,6 +187,7 @@ module.exports = class LadderPlayModal extends View
return { return {
sessionID: opponent.sessionID sessionID: opponent.sessionID
opponentID: opponent.userID opponentID: opponent.userID
codeLanguage: opponent.codeLanguage
} }
class ChallengersData class ChallengersData

View file

@ -138,7 +138,13 @@ module.exports = class PlayLevelView extends View
supermodel: @supermodel supermodel: @supermodel
firstOnly: true firstOnly: true
@openModalView(new DocsModal(options), true) @openModalView(new DocsModal(options), true)
Backbone.Mediator.subscribeOnce 'modal-closed', @onLevelStarted, @ onGuideOpened = ->
@guideOpenTime = new Date()
onGuideClosed = ->
application.tracker?.trackTiming new Date() - @guideOpenTime, 'Intro Guide Time', @levelID, @levelID, 100
@onLevelStarted()
Backbone.Mediator.subscribeOnce 'modal-opened', onGuideOpened, @
Backbone.Mediator.subscribeOnce 'modal-closed', onGuideClosed, @
return true return true
getRenderData: -> getRenderData: ->
@ -281,7 +287,7 @@ module.exports = class PlayLevelView extends View
@surface.showLevel() @surface.showLevel()
if @otherSession if @otherSession
# TODO: colorize name and cloud by team, colorize wizard by user's color config # TODO: colorize name and cloud by team, colorize wizard by user's color config
@surface.createOpponentWizard id: @otherSession.get('creator'), name: @otherSession.get('creatorName'), team: @otherSession.get('team'), levelSlug: @level.get('slug') @surface.createOpponentWizard id: @otherSession.get('creator'), name: @otherSession.get('creatorName'), team: @otherSession.get('team'), levelSlug: @level.get('slug'), codeLanguage: @otherSession.get('submittedCodeLanguage')
@loadingView?.unveil() @loadingView?.unveil()
onLoadingViewUnveiled: (e) -> onLoadingViewUnveiled: (e) ->

View file

@ -64,7 +64,7 @@ exports.config =
'stylesheets/app.css': /^(app|vendor|bower_components)/ 'stylesheets/app.css': /^(app|vendor|bower_components)/
order: order:
before: [ before: [
'app/styles/bootstrap.scss' 'app/styles/bootstrap/*'
'vendor/styles/nanoscroller.scss' 'vendor/styles/nanoscroller.scss'
] ]
templates: templates:

View file

@ -91,6 +91,8 @@ work = () ->
return return
Math.random = self.world.rand.randf # so user code is predictable Math.random = self.world.rand.randf # so user code is predictable
Aether.replaceBuiltin('Math', Math) Aether.replaceBuiltin('Math', Math)
replacedLoDash = _.runInContext(self)
_[key] = replacedLoDash[key] for key, val of replacedLoDash
console.log 'Loading frames.' console.log 'Loading frames.'
self.postMessage type: 'start-load-frames' self.postMessage type: 'start-load-frames'

View file

@ -155,7 +155,7 @@ LevelHandler = class LevelHandler extends Handler
sortParameters = sortParameters =
'totalScore': req.query.order 'totalScore': req.query.order
selectProperties = ['totalScore', 'creatorName', 'creator'] selectProperties = ['totalScore', 'creatorName', 'creator', 'submittedCodeLanguage']
query = Session query = Session
.find(sessionsQueryParameters) .find(sessionsQueryParameters)

View file

@ -579,6 +579,7 @@ addMatchToSessions = (newScoreObject, callback) ->
matchObject.opponents[sessionID].totalScore = session.totalScore matchObject.opponents[sessionID].totalScore = session.totalScore
matchObject.opponents[sessionID].metrics = {} matchObject.opponents[sessionID].metrics = {}
matchObject.opponents[sessionID].metrics.rank = Number(newScoreObject[sessionID]?.gameRanking ? 0) matchObject.opponents[sessionID].metrics.rank = Number(newScoreObject[sessionID]?.gameRanking ? 0)
matchObject.opponents[sessionID].codeLanguage = newScoreObject[sessionID].submittedCodeLanguage
#log.info "Match object computed, result: #{matchObject}" #log.info "Match object computed, result: #{matchObject}"
#log.info 'Writing match object to database...' #log.info 'Writing match object to database...'
@ -595,6 +596,7 @@ updateMatchesInSession = (matchObject, sessionID, callback) ->
opponentsClone = _.omit opponentsClone, sessionID opponentsClone = _.omit opponentsClone, sessionID
opponentsArray = _.toArray opponentsClone opponentsArray = _.toArray opponentsClone
currentMatchObject.opponents = opponentsArray currentMatchObject.opponents = opponentsArray
currentMatchObject.codeLanguage = matchObject.opponents[opponentsArray[0].sessionID].codeLanguage
LevelSession.findOne {'_id': sessionID}, (err, session) -> LevelSession.findOne {'_id': sessionID}, (err, session) ->
session = session.toObject() session = session.toObject()
currentMatchObject.playtime = session.playtime ? 0 currentMatchObject.playtime = session.playtime ? 0
@ -770,6 +772,7 @@ retrieveOldSessionData = (sessionID, callback) ->
'meanStrength': session.meanStrength ? 25 'meanStrength': session.meanStrength ? 25
'totalScore': session.totalScore ? (25 - 1.8*(25/3)) 'totalScore': session.totalScore ? (25 - 1.8*(25/3))
'id': sessionID 'id': sessionID
'submittedCodeLanguage': session.submittedCodeLanguage
callback err, oldScoreObject callback err, oldScoreObject
markSessionAsDoneRanking = (sessionID, cb) -> markSessionAsDoneRanking = (sessionID, cb) ->

View file

@ -75,11 +75,17 @@ setupRedirectMiddleware = (app) ->
nameOrID = req.path.split('/')[3] nameOrID = req.path.split('/')[3]
res.redirect 301, "/user/#{nameOrID}/profile" res.redirect 301, "/user/#{nameOrID}/profile"
setupTrailingSlashRemovingMiddleware = (app) ->
app.use (req, res, next) ->
return res.redirect 301, req.url[...-1] if req.url.length > 1 and req.url.slice(-1) is '/'
next()
exports.setupMiddleware = (app) -> exports.setupMiddleware = (app) ->
setupMiddlewareToSendOldBrowserWarningWhenPlayersViewLevelDirectly app setupMiddlewareToSendOldBrowserWarningWhenPlayersViewLevelDirectly app
setupExpressMiddleware app setupExpressMiddleware app
setupPassportMiddleware app setupPassportMiddleware app
setupOneSecondDelayMiddleware app setupOneSecondDelayMiddleware app
setupTrailingSlashRemovingMiddleware app
setupRedirectMiddleware app setupRedirectMiddleware app
###Routing function implementations### ###Routing function implementations###