This commit is contained in:
Scott Erickson 2014-10-21 10:21:46 -07:00
commit cd8f5800a6
119 changed files with 1202 additions and 1019 deletions
app
assets
images/pages/game-menu
javascripts/workers
main.html
initialize.coffee
lib
locale
models
schemas
styles
templates
views

Binary file not shown.

Before

(image error) Size: 54 KiB

After

(image error) Size: 55 KiB

Before After
Before After

View file

@ -290,6 +290,8 @@ self.setupDebugWorldToRunUntilFrame = function (args) {
try {
self.debugWorld = new World(args.userCodeMap);
self.debugWorld.levelSessionIDs = args.levelSessionIDs;
self.debugWorld.submissionCount = args.submissionCount;
self.debugWorld.flagHistory = args.flagHistory;
if (args.level)
self.debugWorld.loadFromLevel(args.level, true);
self.debugWorld.debugging = true;
@ -347,6 +349,8 @@ self.runWorld = function runWorld(args) {
try {
self.world = new World(args.userCodeMap);
self.world.levelSessionIDs = args.levelSessionIDs;
self.world.submissionCount = args.submissionCount;
self.world.flagHistory = args.flagHistory || [];
if(args.level)
self.world.loadFromLevel(args.level, true);
self.world.preloading = args.preload;

View file

@ -37,18 +37,14 @@
<script src="/javascripts/aether.js"></script>
<script src="/javascripts/app.js"></script> <!-- it's all Backbone! -->
<script>
window.linkedInAsyncInit = function() {
console.log("Linkedin Async Init!");
Backbone.Mediator.publish('linkedin-loaded');
};
<!-- Can move to lib/services/linkedin.coffee instead somehow? Or just get rid of LinkedIn...
</script>
<script type="text/javascript" async src="http://platform.linkedin.com/in.js">
api_key: 75v8mv4ictvmx6
onLoad: linkedInAsyncInit
authorize: true
</script>
-->
<script>
window.userObject = "userObjectTag";

View file

@ -78,7 +78,6 @@ initializeUtilityServices = ->
services = [
'./lib/services/filepicker'
'./lib/services/segmentio'
'./lib/services/olark'
]
for service in services

View file

@ -54,9 +54,11 @@ module.exports = class God extends CocoClass
setWorldClassMap: (worldClassMap) -> @angelsShare.worldClassMap = worldClassMap
onTomeCast: (e) ->
@lastSubmissionCount = e.submissionCount
@lastFlagHistory = e.flagHistory
@createWorld e.spells, e.preload, e.realTime
createWorld: (spells, preload=false, realTime=false) ->
createWorld: (spells, preload, realTime) ->
console.log "#{@nick}: Let there be light upon #{@level.name}! (preload: #{preload})"
userCodeMap = @getUserCodeMap spells
@ -81,6 +83,8 @@ module.exports = class God extends CocoClass
userCodeMap: userCodeMap
level: @level
levelSessionIDs: @levelSessionIDs
submissionCount: @lastSubmissionCount
flagHistory: @lastFlagHistory
goals: @angelsShare.goalManager?.getGoals()
headless: @angelsShare.headless
preload: preload
@ -110,6 +114,8 @@ module.exports = class God extends CocoClass
userCodeMap: @currentUserCodeMap
level: @level
levelSessionIDs: @levelSessionIDs
submissionCount: @lastSubmissionCount
flagHistory: @lastFlagHistory
goals: @goalManager?.getGoals()
frame: args.frame
currentThangID: args.thangID

View file

@ -23,8 +23,10 @@ module.exports = class LevelBus extends Bus
'level:show-victory': 'onVictory'
'tome:spell-changed': 'onSpellChanged'
'tome:spell-created': 'onSpellCreated'
'tome:cast-spells': 'onCastSpells'
'application:idle-changed': 'onIdleChanged'
'goal-manager:new-goal-states': 'onNewGoalStates'
'god:new-world-created': 'onNewWorldCreated'
constructor: ->
super(arguments...)
@ -126,6 +128,22 @@ module.exports = class LevelBus extends Bus
# https://github.com/codecombat/codecombat/issues/81
@onSpellChanged e # Save the new spell to the session, too.
onCastSpells: (e) ->
return unless @onPoint() and e.realTime
# We have incremented state.submissionCount and reset state.flagHistory.
@changedSessionProperties.state = true
@saveSession()
onNewWorldCreated: (e) ->
return unless @onPoint()
# Record the flag history.
state = @session.get('state')
return if _.isEqual state.flagHistory, e.world.flagHistory
state.flagHistory = e.world.flagHistory
@changedSessionProperties.state = true
@session.set('state', state)
@saveSession()
onScriptStateChanged: (e) ->
return unless @onPoint()
@fireScriptsRef?.update(e)

View file

@ -61,7 +61,6 @@ module.exports = class LevelLoader extends CocoClass
# Session Loading
loadSession: ->
return if @headless
if @sessionID
url = "/db/level.session/#{@sessionID}"
else
@ -71,6 +70,11 @@ module.exports = class LevelLoader extends CocoClass
session = new LevelSession().setURL url
@sessionResource = @supermodel.loadModel(session, 'level_session', {cache: false})
@session = @sessionResource.model
if @opponentSessionID
opponentSession = new LevelSession().setURL "/db/level.session/#{@opponentSessionID}"
@opponentSessionResource = @supermodel.loadModel(opponentSession, 'opponent_session')
@opponentSession = @opponentSessionResource.model
if @session.loaded
@session.setURL '/db/level.session/' + @session.id
@loadDependenciesForSession @session
@ -78,11 +82,7 @@ module.exports = class LevelLoader extends CocoClass
@listenToOnce @session, 'sync', ->
@session.setURL '/db/level.session/' + @session.id
@loadDependenciesForSession @session
if @opponentSessionID
opponentSession = new LevelSession().setURL "/db/level.session/#{@opponentSessionID}"
@opponentSessionResource = @supermodel.loadModel(opponentSession, 'opponent_session')
@opponentSession = @opponentSessionResource.model
if @opponentSession
if @opponentSession.loaded
@loadDependenciesForSession @opponentSession
else
@ -91,9 +91,13 @@ module.exports = class LevelLoader extends CocoClass
loadDependenciesForSession: (session) ->
if session is @session
Backbone.Mediator.publish 'level:session-loaded', level: @level, session: @session
return unless @level.get('type', true) is 'hero'
@consolidateFlagHistory() if @opponentSession?.loaded
else if session is @opponentSession
@consolidateFlagHistory() if @session.loaded
return unless @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
@sessionDependenciesRegistered ?= {}
heroConfig = session.get('heroConfig')
heroConfig ?= me.get('heroConfig')
heroConfig ?= me.get('heroConfig') if session is @session and not @headless
heroConfig ?= {inventory: {}, thangType: '529ffbf1cf1818f2be000001'} # If all else fails, assign Tharin as the hero.
session.set 'heroConfig', heroConfig unless _.isEqual heroConfig, session.get('heroConfig')
url = "/db/thang.type/#{heroConfig.thangType}/version"
@ -105,13 +109,23 @@ module.exports = class LevelLoader extends CocoClass
@loadThangsRequiredByThangType heroThangType
for itemThangType in _.values(heroConfig.inventory)
url = "/db/thang.type/#{itemThangType}/version?project=name,components,original,rasterIcon"
url = "/db/thang.type/#{itemThangType}/version?project=name,components,original,rasterIcon,kind"
if itemResource = @maybeLoadURL(url, ThangType, 'thang')
@worldNecessities.push itemResource
else
itemThangType = @supermodel.getModel url
@loadDefaultComponentsForThangType itemThangType
@loadThangsRequiredByThangType itemThangType
@sessionDependenciesRegistered[session.id] = true
if _.size(@sessionDependenciesRegistered) is 2 and not (r for r in @worldNecessities when r?).length
@onWorldNecessitiesLoaded()
consolidateFlagHistory: ->
state = @session.get('state') ? {}
myFlagHistory = _.filter state.flagHistory ? [], team: @session.get('team')
opponentFlagHistory = _.filter @opponentSession.get('state')?.flagHistory ? [], team: @opponentSession.get('team')
state.flagHistory = myFlagHistory.concat opponentFlagHistory
@session.set 'state', state
# Grabbing the rest of the required data for the level
@ -162,7 +176,7 @@ module.exports = class LevelLoader extends CocoClass
url = "/db/level/#{obj.original}/version/#{obj.majorVersion}"
@maybeLoadURL url, Level, 'level'
unless @headless
unless @headless or @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
wizard = ThangType.loadUniversalWizard()
@supermodel.loadModel wizard, 'thang'
@ -183,7 +197,7 @@ module.exports = class LevelLoader extends CocoClass
else if component.config.requiredThangTypes
requiredThangTypes = requiredThangTypes.concat component.config.requiredThangTypes
for thangType in requiredThangTypes
url = "/db/thang.type/#{thangType}/version?project=name,components,original,rasterIcon"
url = "/db/thang.type/#{thangType}/version?project=name,components,original,rasterIcon,kind"
@worldNecessities.push @maybeLoadURL(url, ThangType, 'thang')
onThangNamesLoaded: (thangNames) ->
@ -206,9 +220,10 @@ module.exports = class LevelLoader extends CocoClass
return unless index >= 0
@worldNecessities.splice(index, 1)
@worldNecessities = (r for r in @worldNecessities when r?)
@onWorldNecessitiesLoaded() if @worldNecessities.length is 0
if @worldNecessities.length is 0 and (not @sessionDependenciesRegistered or @sessionDependenciesRegistered[@session.id] and (not @opponentSession or @sessionDependenciesRegistered[@opponentSession.id]))
@onWorldNecessitiesLoaded()
onWorldNecessitiesLoaded: =>
onWorldNecessitiesLoaded: ->
@initWorld()
@supermodel.clearMaxProgress()
@trigger 'world-necessities-loaded'
@ -240,7 +255,6 @@ module.exports = class LevelLoader extends CocoClass
console.log 'SuperModel for Level loaded in', new Date().getTime() - @t0, 'ms'
@loadLevelSounds()
@denormalizeSession()
app.tracker.updatePlayState(@level, @session) unless @headless
buildLoop: =>
someLeft = false
@ -334,7 +348,9 @@ module.exports = class LevelLoader extends CocoClass
@initialized = true
@world = new World()
@world.levelSessionIDs = if @opponentSessionID then [@sessionID, @opponentSessionID] else [@sessionID]
serializedLevel = @level.serialize(@supermodel, @session)
@world.submissionCount = @session?.get('state')?.submissionCount ? 0
@world.flagHistory = @session?.get('state')?.flagHistory ? []
serializedLevel = @level.serialize(@supermodel, @session, @opponentSession)
@world.loadFromLevel serializedLevel, false
console.log 'World has been initialized from level loader.'

View file

@ -9,7 +9,6 @@ module.exports = class Tracker
window.tracker = @
@isProduction = document.location.href.search('codecombat.com') isnt -1
@identify()
@updateOlark()
identify: (traits) ->
console.log 'Would identify', traits if debugAnalytics
@ -20,24 +19,6 @@ module.exports = class Tracker
traits[userTrait] ?= me.get(userTrait)
analytics.identify me.id, traits
updateOlark: ->
return unless me and olark?
olark 'api.chat.updateVisitorStatus', snippet: ["User ID: #{me.id}"]
return if me.get('anonymous')
olark 'api.visitor.updateEmailAddress', emailAddress: me.get('email') if me.get('email')
olark 'api.chat.updateVisitorNickname', snippet: me.displayName()
updatePlayState: (level, session) ->
return unless olark?
link = "codecombat.com/play/level/#{level.get('slug') or level.id}?session=#{session.id}"
snippet = [
"#{link}"
"User ID: #{me.id}"
"Session ID: #{session.id}"
"Level: #{level.get('name')}"
]
olark 'api.chat.updateVisitorStatus', snippet: snippet
trackPageView: ->
return unless @isProduction and analytics?
url = Backbone.history.getFragment()

View file

@ -1,115 +0,0 @@
module.exports = initializeOlark = ->
window.olark or ((c) -> #<![CDATA[
f = window
d = document
l = (if f.location.protocol is 'https:' then 'https:' else 'http:')
z = c.name
r = 'load'
nt = ->
s = ->
a.P r
f[z] r
return
f[z] = ->
(a.s = a.s or []).push arguments
return
a = f[z]._ = {}
q = c.methods.length
while q--
((n) ->
f[z][n] = ->
f[z] 'call', n, arguments
return
return
) c.methods[q]
a.l = c.loader
a.i = nt
a.p = 0: +new Date
a.P = (u) ->
a.p[u] = new Date - a.p[0]
return
(if f.addEventListener then f.addEventListener(r, s, false) else f.attachEvent('on' + r, s))
ld = ->
p = (hd) ->
hd = 'head'
[
'<'
hd
'></'
hd
'><'
i
' onl' + 'oad=\"var d='
g
";d.getElementsByTagName('head')[0]."
j
'(d.'
h
"('script'))."
k
"='"
l
'//'
a.l
"'"
'\"'
'></'
i
'>'
].join ''
i = 'body'
m = d[i]
return setTimeout(ld, 100) unless m
a.P 1
j = 'appendChild'
h = 'createElement'
k = 'src'
n = d[h]('div')
v = n[j](d[h](z))
b = d[h]('iframe')
g = 'document'
e = 'domain'
o = undefined
n.style.display = 'none'
m.insertBefore(n, m.firstChild).id = z
b.frameBorder = '0'
b.id = z + '-loader'
b.src = 'javascript:false' if /MSIE[ ]+6/.test(navigator.userAgent)
b.allowTransparency = 'true'
v[j] b
try
b.contentWindow[g].open()
catch w
c[e] = d[e]
o = 'javascript:var d=' + g + ".open();d.domain='" + d.domain + "';"
b[k] = o + 'void(0);'
try
t = b.contentWindow[g]
t.write p()
t.close()
catch x
b[k] = o + 'd.write(\"' + p().replace(/"/g, String.fromCharCode(92) + '\"') + '\");d.close();'
a.P 2
return
ld()
return
nt()
return
)(
loader: 'static.olark.com/jsclient/loader0.js'
name: 'olark'
methods: [
'configure'
'extend'
'declare'
'identify'
]
)
# custom configuration goes here (www.olark.com/documentation)
olark.identify '1451-787-10-5544' #]]>

View file

@ -45,7 +45,7 @@ module.exports = class Simulator extends CocoClass
@supermodel ?= new SuperModel()
@supermodel.resetProgress()
@stopListening @supermodel, 'loaded-all'
@levelLoader = new LevelLoader supermodel: @supermodel, levelID: @task.getLevelName(), sessionID: @task.getFirstSessionID(), headless: true
@levelLoader = new LevelLoader supermodel: @supermodel, levelID: @task.getLevelName(), sessionID: @task.getFirstSessionID(), opponentSessionID: @task.getSecondSessionID(), headless: true
if @supermodel.finished()
@simulateSingleGame()
@ -165,7 +165,7 @@ module.exports = class Simulator extends CocoClass
@supermodel ?= new SuperModel()
@supermodel.resetProgress()
@stopListening @supermodel, 'loaded-all'
@levelLoader = new LevelLoader supermodel: @supermodel, levelID: levelID, sessionID: @task.getFirstSessionID(), headless: true
@levelLoader = new LevelLoader supermodel: @supermodel, levelID: levelID, sessionID: @task.getFirstSessionID(), opponentSessionID: @task.getSecondSessionID(), headless: true
if @supermodel.finished()
@simulateGame()
else
@ -189,11 +189,13 @@ module.exports = class Simulator extends CocoClass
@world = @levelLoader.world
@task.setWorld(@world)
@level = @levelLoader.level
@session = @levelLoader.session
@otherSession = @levelLoader.opponentSession
@levelLoader.destroy()
@levelLoader = null
setupGod: ->
@god.setLevel @level.serialize @supermodel
@god.setLevel @level.serialize(@supermodel, @session, @otherSession)
@god.setLevelSessionIDs (session.sessionID for session in @task.getSessions())
@god.setWorldClassMap @world.classMap
@god.setGoalManager new GoalManager(@world, @level.get 'goals')
@ -424,6 +426,8 @@ class SimulationTask
getFirstSessionID: -> @rawData.sessions[0].sessionID
getSecondSessionID: -> @rawData.sessions[1].sessionID
getTaskID: -> @rawData.taskID
getReceiptHandle: -> @rawData.receiptHandle

View file

@ -500,8 +500,8 @@ module.exports = LayerAdapter = class LayerAdapter extends CocoClass
renderGroupingKey: (thangType, grouping, colorConfig) ->
key = thangType.get('slug')
if colorConfig?.team
key += "(#{colorConfig.team.hue},#{colorConfig.team.saturation},#{colorConfig.team.lightness})"
for colorKey, colorValue of colorConfig ? {}
key += "(#{colorKey}:#{colorValue.hue},#{colorValue.saturation},#{colorValue.lightness})"
key += '.'+grouping if grouping
key

View file

@ -522,7 +522,7 @@ module.exports = Surface = class Surface extends CocoClass
newWidth = 0.55 * pageWidth
newHeight = newWidth / aspectRatio
return unless newWidth > 0 and newHeight > 0
return if newWidth is oldWidth and newHeight is oldHeight
return if newWidth is oldWidth and newHeight is oldHeight and not @options.spectateGame
#scaleFactor = if application.isIPadApp then 2 else 1 # Retina
scaleFactor = 1
@normalCanvas.add(@webGLCanvas).attr width: newWidth * scaleFactor, height: newHeight * scaleFactor
@ -533,12 +533,16 @@ module.exports = Surface = class Surface extends CocoClass
@normalStage.scaleX *= newWidth / oldWidth
@normalStage.scaleY *= newHeight / oldHeight
@camera.onResize newWidth, newHeight
if @options.spectateGame
# Since normalCanvas is absolutely positioned, it needs help aligning with webGLCanvas. But not further than +149px (1920px screen).
@normalCanvas.css 'left', Math.min 149, @webGLCanvas.offset().left
#- Camera focus on hero
focusOnHero: ->
@heroLank = @lankBoss.lankFor 'Hero Placeholder'
if me.team is 'ogres'
# TODO: do this for real
@heroLank = @lankBoss.lankFor 'Hero Placeholder 1'
#- Real-time playback

View file

@ -44,7 +44,8 @@ module.exports = class GoalManager extends CocoClass
'world:thang-touched-goal': 'onThangTouchedGoal'
'world:thang-left-map': 'onThangLeftMap'
'world:thang-collected-item': 'onThangCollectedItem'
'world:ended': 'onWorldEnded'
'world:user-code-problem': 'onUserCodeProblem'
'world:lines-of-code-counted': 'onLinesOfCodeCounted'
onLevelRestarted: ->
@goals = []
@ -62,7 +63,9 @@ module.exports = class GoalManager extends CocoClass
# gets these goals and code, and is told to be all ears during world gen
setGoals: (@goals) ->
setCode: (@userCodeMap) -> @updateCodeGoalStates()
worldGenerationWillBegin: -> @initGoalStates()
worldGenerationWillBegin: ->
@initGoalStates()
@checkForInitialUserCodeProblems()
# World generator feeds world events to the goal manager to keep track
submitWorldGenerationEvent: (channel, event, frameNumber) ->
@ -115,10 +118,12 @@ module.exports = class GoalManager extends CocoClass
checkOverallStatus: (ignoreIncomplete=false) ->
overallStatus = null
goals = if @goalStates then _.values @goalStates else []
goals = (g for g in goals when not g.optional)
goals = (g for g in goals when g.team in [undefined, @team]) if @team
statuses = if @goalStates then (goal.status for goal in goals) else []
overallStatus = 'success' if statuses.length > 0 and _.every(statuses, (s) -> s is 'success' or (ignoreIncomplete and s is null))
overallStatus = 'failure' if statuses.length > 0 and 'failure' in statuses
#console.log 'got overallStatus', overallStatus, 'from goals', goals, 'goalStates', @goalStates, 'statuses', statuses
overallStatus
# WORLD GOAL TRACKING
@ -131,6 +136,7 @@ module.exports = class GoalManager extends CocoClass
status: null # should eventually be either 'success', 'failure', or 'incomplete'
keyFrame: 0 # when it became a 'success' or 'failure'
team: goal.team
optional: goal.optional
}
@initGoalState(state, [goal.killThangs, goal.saveThangs], 'killed')
for getTo in goal.getAllToLocations ? []
@ -140,8 +146,16 @@ module.exports = class GoalManager extends CocoClass
@initGoalState(state, [goal.getToLocations?.who, goal.keepFromLocations?.who], 'arrived')
@initGoalState(state, [goal.leaveOffSides?.who, goal.keepFromLeavingOffSides?.who], 'left')
@initGoalState(state, [goal.collectThangs?.targets, goal.keepFromCollectingThangs?.targets], 'collected')
@initGoalState(state, [goal.codeProblems], 'problems')
@initGoalState(state, [_.keys(goal.linesOfCode ? {})], 'lines')
@goalStates[goal.id] = state
checkForInitialUserCodeProblems: ->
# There might have been some user code problems reported before the goal manager started listening.
for thang in @world.thangs when thang.isProgrammable
for message, problem of thang.publishedUserCodeProblems
@onUserCodeProblem {thang: thang, problem: problem}, 0
onThangDied: (e, frameNumber) ->
for goal in @goals ? []
@checkKillThangs(goal.id, goal.killThangs, e.thang, frameNumber) if goal.killThangs?
@ -187,6 +201,22 @@ module.exports = class GoalManager extends CocoClass
return unless thang.id in who or thang.team in who
@updateGoalState(goalID, itemID, 'collected', frameNumber)
onUserCodeProblem: (e, frameNumber) ->
for goal in @goals ? [] when goal.codeProblems
@checkCodeProblem goal.id, goal.codeProblems, e.thang, frameNumber
checkCodeProblem: (goalID, who, thang, frameNumber) ->
return unless thang.id in who or thang.team in who
@updateGoalState goalID, thang.id, 'problems', frameNumber
onLinesOfCodeCounted: (e, frameNumber) ->
for goal in @goals ? [] when goal.linesOfCode
@checkLinesOfCode goal.id, goal.linesOfCode, e.thang, e.linesUsed, frameNumber
checkLinesOfCode: (goalID, who, thang, linesUsed, frameNumber) ->
return unless linesAllowed = who[thang.id] ? who[thang.team]
@updateGoalState goalID, thang.id, 'lines', frameNumber if linesUsed > linesAllowed
wrapUpGoalStates: (finalFrame) ->
for goalID, state of @goalStates
if state.status is null
@ -247,7 +277,7 @@ module.exports = class GoalManager extends CocoClass
# saveThangs: by default we would want to save all the Thangs, which means that we would want none of them to be 'done'
numNeeded = _.size(stateThangs) - Math.max((goal.howMany ? 1), _.size stateThangs) + 1
numDone = _.filter(stateThangs).length
#console.log 'needed', numNeeded, 'done', numDone, 'of total', _.size(stateThangs), 'with how many', goal.howMany, 'and stateThangs', stateThangs
#console.log 'needed', numNeeded, 'done', numDone, 'of total', _.size(stateThangs), 'with how many', goal.howMany, 'and stateThangs', stateThangs, 'for', goalID, thangID, 'on frame', frameNumber
return unless numDone >= numNeeded
return if state.status and not success # already failed it; don't wipe keyframe
state.status = if success then 'success' else 'failure'
@ -278,6 +308,8 @@ module.exports = class GoalManager extends CocoClass
keepFromLeavingOffSides: 0
collectThangs: 1
keepFromCollectingThangs: 0
linesOfCode: 0
codeProblems: 0
updateCodeGoalStates: ->
# TODO

View file

@ -39,7 +39,6 @@ module.exports = class World
@systems = []
@systemMap = {}
@scriptNotes = []
@flagHistory = []
@rand = new Rand 0 # Existence System may change this seed
@frames = [new WorldFrame(@, 0)]
@ -202,9 +201,9 @@ module.exports = class World
@levelID = level.slug
@levelComponents = level.levelComponents
@thangTypes = level.thangTypes
@loadScriptsFromLevel level
@loadSystemsFromLevel level
@loadThangsFromLevel level, willSimulate
@loadScriptsFromLevel level
system.start @thangs for system in @systems
loadSystemsFromLevel: (level) ->
@ -308,7 +307,7 @@ module.exports = class World
publishNote: (channel, event) ->
event ?= {}
channel = 'world:' + channel
for script in @scripts
for script in @scripts ? []
continue if script.channel isnt channel
scriptNote = new WorldScriptNote script, event
continue if scriptNote.invalid
@ -349,7 +348,8 @@ module.exports = class World
endFrame = @frames.length
#console.log "... world serializing frames from", startFrame, "to", endFrame, "of", @totalFrames
[transferableObjects, nontransferableObjects] = [0, 0]
o = {totalFrames: @totalFrames, maxTotalFrames: @maxTotalFrames, frameRate: @frameRate, dt: @dt, victory: @victory, userCodeMap: {}, trackedProperties: {}}
delete flag.processed for flag in @flagHistory
o = {totalFrames: @totalFrames, maxTotalFrames: @maxTotalFrames, frameRate: @frameRate, dt: @dt, victory: @victory, userCodeMap: {}, trackedProperties: {}, flagHistory: @flagHistory}
o.trackedProperties[prop] = @[prop] for prop in @trackedProperties or []
for thangID, methods of @userCodeMap
@ -455,7 +455,7 @@ module.exports = class World
w.userCodeMap[thangID][methodName][aetherStateKey] = serializedAether[aetherStateKey]
else
w = new World o.userCodeMap, classMap
[w.totalFrames, w.maxTotalFrames, w.frameRate, w.dt, w.scriptNotes, w.victory] = [o.totalFrames, o.maxTotalFrames, o.frameRate, o.dt, o.scriptNotes ? [], o.victory]
[w.totalFrames, w.maxTotalFrames, w.frameRate, w.dt, w.scriptNotes, w.victory, w.flagHistory] = [o.totalFrames, o.maxTotalFrames, o.frameRate, o.dt, o.scriptNotes ? [], o.victory, o.flagHistory]
w[prop] = val for prop, val of o.trackedProperties
perf.t1 = now()

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
adventurer_forum: "منتدى المغامر"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... فيها تتعلم سحر البرمجة."
campaign_old_beginner_description: "... فيها تتعلم سحر البرمجة."
campaign_dev: "مستويات أصعب عشوائية"
campaign_dev_description: "... فيها تتعلم واجهة بينما تفعل شيئا أصعب قليلا."
campaign_multiplayer: "ساحات متعددة اللاّعبين"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "العربية", englishDescription: "Arabi
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "български език", englishDescri
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "български език", englishDescri
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "български език", englishDescri
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
adventurer_forum: "El fòrum de l'aventurer"
adventurer_suffix: "."
campaign_old_beginner: "Antiga campanya del principiant"
campaign_beginner_description: "... on aprens la bruixeria de la programació."
campaign_old_beginner_description: "... on aprens la bruixeria de la programació."
campaign_dev: "Nivells difícils aleatoris"
campaign_dev_description: "... on aprens a interactuar amb la interfície tot fent coses un pèl més difícils."
campaign_multiplayer: "Arenes Multijugador"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
armor: "Armadura"
hands: "Mans"
accessories: "Accessoris"
books: "Llibres"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Català", englishDescription: "Catalan", tr
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "Jugar el següent nivell" # Only in old-style levels.
victory_play_continue: "Continuar"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Tornar a l'inici" # Only in old-style levels.
victory_review: "Diguens més!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
adventurer_forum: "fóru Dobrodruhů"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "...ve které se naučíte kouzla programování."
campaign_old_beginner_description: "...ve které se naučíte kouzla programování."
campaign_dev: "Náhodné težší úrovně"
campaign_dev_description: "...ve kterých se dozvíte více o prostředí při plnění těžších úkolů."
campaign_multiplayer: "Multiplayer Aréna"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "čeština", englishDescription: "Czech", tr
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "Hrát další úroveň" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Přejít domů" # Only in old-style levels.
victory_review: "Připomínky!" # Only in old-style levels.
victory_hour_of_code_done: "Skončili jste?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
adventurer_forum: "Eventyrer-forummet"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... hvor du lærer programmeringens kunst."
campaign_old_beginner_description: "... hvor du lærer programmeringens kunst."
campaign_dev: "Tilfældige Sværere Niveauer"
campaign_dev_description: "... hvor du lærer grænsefladen imens du udfører lidt sværere opgaver."
campaign_multiplayer: "Multiplayer Arenaer"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "dansk", englishDescription: "Danish", trans
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "Spil næste bane" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Gå hjem" # Only in old-style levels.
victory_review: "Fortæl os mere!" # Only in old-style levels.
victory_hour_of_code_done: "Er du færdig?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
adventurer_forum: "im Abenteurerforum"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... in der Du die Zauberei der Programmierung lernst."
campaign_old_beginner_description: "... in der Du die Zauberei der Programmierung lernst."
campaign_dev: "Beliebiges schwierigeres Level"
campaign_dev_description: "... in welchem Du die Bedienung erlernst, indem Du etwas schwierigeres machst."
campaign_multiplayer: "Multiplayerarena"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
armor: "Rüstung"
hands: "Hände"
accessories: "Zubehör"
books: "Bücher"
minions: "Minions"
misc: "Sonstiges"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Deutsch (Österreich)", englishDescription:
victory_return_to_ladder: "Zurück zur Rangliste"
victory_play_next_level: "Spiel das nächste Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Geh auf die Startseite" # Only in old-style levels.
victory_review: "Erzähl uns davon!" # Only in old-style levels.
victory_hour_of_code_done: "Bist Du fertig?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
adventurer_forum: "Abentürer-Forum"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... i dere du d Zauberkunst vom Programmiere lernsch."
campaign_old_beginner_description: "... i dere du d Zauberkunst vom Programmiere lernsch."
campaign_dev: "Zuefälligi schwierigeri Level"
campaign_dev_description: "... i dene du s Interface kenne lernsch, während du öppis chli Schwierigers machsch."
campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Deutsch (Schweiz)", englishDescription: "Ge
victory_return_to_ladder: "Zrugg zum letzte Level"
victory_play_next_level: "Spiel s nögste Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
victory_review: "Verzell üs meh!" # Only in old-style levels.
victory_hour_of_code_done: "Bisch fertig?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
adventurer_forum: "im Abenteurerforum"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... in der Du die Zauberei der Programmierung lernst."
campaign_old_beginner_description: "... in der Du die Zauberei der Programmierung lernst."
campaign_dev: "Beliebiges schwierigeres Level"
campaign_dev_description: "... in welchem Du die Bedienung erlernst, indem Du etwas schwierigeres machst."
campaign_multiplayer: "Multiplayerarena"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
armor: "Rüstung"
hands: "Hände"
accessories: "Zubehör"
books: "Bücher"
minions: "Minions"
misc: "Sonstiges"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Deutsch (Deutschland)", englishDescription:
victory_return_to_ladder: "Zurück zur Rangliste"
victory_play_next_level: "Spiel das nächste Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Geh auf die Startseite" # Only in old-style levels.
victory_review: "Erzähl uns davon!" # Only in old-style levels.
victory_hour_of_code_done: "Bist Du fertig?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
adventurer_forum: "Φόρουμ του Adventurer"
adventurer_suffix: "."
campaign_old_beginner: "Παλαιότερη Εκστρατεία Αρχαρίων"
campaign_beginner_description: "... στην οποία μαθαίνετε τη μαγεία του προγραμματισμού."
campaign_old_beginner_description: "... στην οποία μαθαίνετε τη μαγεία του προγραμματισμού."
campaign_dev: "Τυχαία Δυσκολότερα Επίπεδα"
campaign_dev_description: "... στα οποία μπορείτε να μάθετε το περιβάλλον, ενώ κάνετε κάτι λίγο δυσκολότερο."
campaign_multiplayer: "Αρένες Πολλαπλών Παικτών"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
armor: "Πανοπλία"
hands: "Χέρια"
accessories: "Εξαρτήματα"
books: "Βιβλία"
minions: "Minions"
misc: "Διάφορα"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Ελληνικά", englishDescription: "Gre
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "Παίξε το επόμενο επίπεδο" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Πηγαίνετε στην Αρχική" # Only in old-style levels.
victory_review: "Πείτε μας περισσότερα!" # Only in old-style levels.
victory_hour_of_code_done: "Τελείωσες;"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "English (AU)", englishDescription: "English
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "English (UK)", englishDescription: "English
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "English (US)", englishDescription: "English
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@
adventurer_forum: "the Adventurer forum"
adventurer_suffix: "."
campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... in which you learn the wizardry of programming."
campaign_old_beginner_description: "... in which you learn the wizardry of programming."
campaign_dev: "Random Harder Levels"
campaign_dev_description: "... in which you learn the interface while doing something a little harder."
campaign_multiplayer: "Multiplayer Arenas"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
adventurer_forum: "el foro del aventurero"
adventurer_suffix: "."
campaign_old_beginner: "Campaña anterior de principiante"
campaign_beginner_description: "... en la que aprendes la hechicería de la programación."
campaign_old_beginner_description: "... en la que aprendes la hechicería de la programación."
campaign_dev: "Niveles aleatorios más difíciles"
campaign_dev_description: "... en los que aprendes sobre la interfaz mientras haces algo un poco más difícil."
campaign_multiplayer: "Arenas Multijugador"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
armor: "Armadura"
hands: "Manos"
accessories: "Accesorios"
books: "Libros"
minions: "Seguidores"
misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "español (América Latina)", englishDescrip
victory_return_to_ladder: "Volver a la escalera"
victory_play_next_level: "Jugar Próximo Nivel" # Only in old-style levels.
victory_play_continue: "Continuar"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Ir al Inicio" # Only in old-style levels.
victory_review: "¡Cuéntanos más!" # Only in old-style levels.
victory_hour_of_code_done: "¿Has acabado?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
adventurer_forum: "el foro del aventurero "
adventurer_suffix: "sobre ello."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... en la que aprenderás la magia de la programación."
campaign_old_beginner_description: "... en la que aprenderás la magia de la programación."
campaign_dev: "Niveles aleatorios más dificiles"
campaign_dev_description: "... en los que aprenderás sobre la interfaz mientras haces algo más difícil."
campaign_multiplayer: "Arenas Multijugador"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "español (ES)", englishDescription: "Spanis
victory_return_to_ladder: "Volver a Clasificación"
victory_play_next_level: "Jugar el siguiente nivel" # Only in old-style levels.
victory_play_continue: "Continuar"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Ir a Inicio" # Only in old-style levels.
victory_review: "¡Cuéntanos más!" # Only in old-style levels.
victory_hour_of_code_done: "¿Ya terminaste?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
adventurer_forum: "انجمن ماجراجو ها"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: ".که شما در آن می توانید جادوگری به وسیله برنامه نویسی را یادبگیرید..."
campaign_old_beginner_description: ".که شما در آن می توانید جادوگری به وسیله برنامه نویسی را یادبگیرید..."
campaign_dev: "مراحل سخت تصادفی"
campaign_dev_description: "... جایی که میتونید طراحی ظاهر رو یاد بگیرید درحالی که فعالیت سخت تری انجام میدید"
campaign_multiplayer: "مسابقات چند نفره"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "فارسی", englishDescription: "Persian",
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "suomi", englishDescription: "Finnish", tran
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
adventurer_forum: "le forum de l'Aventurier"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... dans laquelle vous apprendrez la magie de la programmation."
campaign_old_beginner_description: "... dans laquelle vous apprendrez la magie de la programmation."
campaign_dev: "Niveaux aléatoires plus difficiles"
campaign_dev_description: "... dans lesquels vous apprendrez à utiliser l'interface en faisant quelque chose d'un petit peu plus dur."
campaign_multiplayer: "Campagne multi-joueurs"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "français", englishDescription: "French", t
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "Jouer au prochain niveau" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Retourner à l'accueil" # Only in old-style levels.
victory_review: "Dites-nous en plus!" # Only in old-style levels.
victory_hour_of_code_done: "Déjà fini ?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
adventurer_forum: "פורום ההרפתקנים"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "...שבו תלמד את קסם התכנות."
campaign_old_beginner_description: "...שבו תלמד את קסם התכנות."
campaign_dev: "שלבים אקראים קשים יותר"
campaign_dev_description: "...שבהם תלמד על הממשק בזמן שתעשה משהו קצת קשה יותר."
campaign_multiplayer: "זירות רב-המשתתפים"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "עברית", englishDescription: "Hebrew",
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "मानक हिन्दी", englishDe
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
adventurer_forum: "a Kalandozók Fórumán"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... amelyben megtanulhatod a programozás varázslatait."
campaign_old_beginner_description: "... amelyben megtanulhatod a programozás varázslatait."
campaign_dev: "Véletlenszerű Nehezebb Pályák"
campaign_dev_description: "... amelyekben kicsit nehezebb dolgokkal nézhetsz szembe."
campaign_multiplayer: "Multiplayer Arénák"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "magyar", englishDescription: "Hungarian", t
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "Következő pálya" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Vissza a kezdőoldalra" # Only in old-style levels.
victory_review: "Mondd el a véleményedet!" # Only in old-style levels.
victory_hour_of_code_done: "Készen vagy?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Bahasa Indonesia", englishDescription: "Ind
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
adventurer_forum: "forum degli Avventurieri"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... nelle quali imparerai i trucchi della programmazione."
campaign_old_beginner_description: "... nelle quali imparerai i trucchi della programmazione."
campaign_dev: "Livelli difficili casuali"
campaign_dev_description: "... nei quali imparerai a usare l'interfaccia facendo qualcosa di un po' più difficile."
campaign_multiplayer: "Arene multigiocatore"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Italiano", englishDescription: "Italian", t
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "Gioca il prossimo livello" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Torna alla pagina iniziale" # Only in old-style levels.
victory_review: "Dicci di più!" # Only in old-style levels.
victory_hour_of_code_done: "Finito?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
adventurer_forum: "冒険者の掲示板"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "プログラミングの魔法を学びましょう"
campaign_old_beginner_description: "プログラミングの魔法を学びましょう"
campaign_dev: "いろんな難しいレベル"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
campaign_multiplayer: "マルチプレイ・アリーナ"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "日本語", englishDescription: "Japanese",
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "次のレベル" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "ホームに戻る" # Only in old-style levels.
victory_review: "フィードバック" # Only in old-style levels.
victory_hour_of_code_done: "完了してよろしいですか?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
adventurer_forum: "모험가들의 포럼"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... 이곳에서 당신은 프로그래밍의 마법을 배우게 될 것입니다."
campaign_old_beginner_description: "... 이곳에서 당신은 프로그래밍의 마법을 배우게 될 것입니다."
campaign_dev: "상급 레벨 랜덤 선택"
campaign_dev_description: "... 이곳에서 당신은 조금 더 어려운 레벨에 도전할때 필요한 조작 방법을 배울 것입니다."
campaign_multiplayer: "멀티 플레이어 전투장"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "한국어", englishDescription: "Korean", t
victory_return_to_ladder: "레더로 돌아가기"
victory_play_next_level: "다음 레벨 플레이 하기" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "홈으로" # Only in old-style levels.
victory_review: "리뷰를 남겨주세요" # Only in old-style levels.
victory_hour_of_code_done: "정말 종료합니까?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "lietuvių kalba", englishDescription: "Lith
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Bahasa Melayu", englishDescription: "Bahasa
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
adventurer_forum: "Adventurer forumet"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... hvor du lærer trolldommen bak programmering."
campaign_old_beginner_description: "... hvor du lærer trolldommen bak programmering."
campaign_dev: "Tilfeldig Vanskeligere Nivåer"
campaign_dev_description: "... hvor du lærer grensesnittet mens du stadig gjør mer vanskeligere utfordringer."
campaign_multiplayer: "Multispiller Arenaer"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Norsk Bokmål", englishDescription: "Norweg
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "Spill Neste Nivå" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Gå Hjem" # Only in old-style levels.
victory_review: "Fortell oss mer!" # Only in old-style levels.
victory_hour_of_code_done: "Er du ferdig?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
adventurer_forum: "het Avonturiersforum"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... waarin je de toverkunst van het programmeren leert."
campaign_old_beginner_description: "... waarin je de toverkunst van het programmeren leert."
campaign_dev: "Willekeurige moeilijkere levels"
campaign_dev_description: "... waarin je de interface leert kennen terwijl je wat moeilijkers doet."
campaign_multiplayer: "Multiplayer Arena's"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Nederlands (België)", englishDescription:
victory_return_to_ladder: "Keer terug naar de ladder"
victory_play_next_level: "Speel Volgend Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Ga naar Home" # Only in old-style levels.
victory_review: "Vertel ons meer!" # Only in old-style levels.
victory_hour_of_code_done: "Ben Je Klaar?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
adventurer_forum: "het Avonturiersforum"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... waarin je de toverkunst van het programmeren leert."
campaign_old_beginner_description: "... waarin je de toverkunst van het programmeren leert."
campaign_dev: "Willekeurige moeilijkere levels"
campaign_dev_description: "... waarin je de interface leert kennen terwijl je wat moeilijkers doet."
campaign_multiplayer: "Multiplayer Arena's"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Nederlands (Nederland)", englishDescription
victory_return_to_ladder: "Keer terug naar de ladder"
victory_play_next_level: "Speel Volgend Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Ga naar Home" # Only in old-style levels.
victory_review: "Vertel ons meer!" # Only in old-style levels.
victory_hour_of_code_done: "Ben Je Klaar?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Norwegian Nynorsk", englishDescription: "No
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
adventurer_forum: "Eventyrerforumet"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... hvor du lærer trolldommen bak programmering."
campaign_old_beginner_description: "... hvor du lærer trolldommen bak programmering."
campaign_dev: "Vanskeligere brett (tilfeldige)"
campaign_dev_description: "... hvor du lærer hvordan du bruker skjermbildene mens du stadig løser mer vanskelige utfordringer."
campaign_multiplayer: "Flerspiller brett (arenaer)"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Norsk", englishDescription: "Norwegian", tr
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "Spill neste nivå" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Gå til Hovedsiden" # Only in old-style levels.
victory_review: "Fortell oss mer!" # Only in old-style levels.
victory_hour_of_code_done: "Er du ferdig?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
adventurer_forum: "forum Podróżników"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... w której nauczysz się magii programowania"
campaign_old_beginner_description: "... w której nauczysz się magii programowania"
campaign_dev: "Losowe trudniejsze poziomy"
campaign_dev_description: "... w których nauczysz się interfejsu robiąc coś trudniejszego."
campaign_multiplayer: "Pola walki dla wielu graczy"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "język polski", englishDescription: "Polish
victory_return_to_ladder: "Powrót do drabinki"
victory_play_next_level: "Przejdź na następny poziom" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Powrót do strony głównej" # Only in old-style levels.
victory_review: "Powiedz nam coś więcej!" # Only in old-style levels.
victory_hour_of_code_done: "Skończyłeś już?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
adventurer_forum: "Fórum do Aventureiro"
adventurer_suffix: "."
campaign_old_beginner: "Campanha antiga para Iniciantes"
campaign_beginner_description: "... na qual você aprenderá a magia da programação."
campaign_old_beginner_description: "... na qual você aprenderá a magia da programação."
campaign_dev: "Fases Difíceis Aleatórias"
campaign_dev_description: "... nas quais você aprenderá a interface enquanto faz algo um pouco mais difícil."
campaign_multiplayer: "Arenas Multijogador"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
armor: "Armadura"
hands: "Mãos"
accessories: "Accessórios"
books: "Livross"
minions: "Minions"
misc: "Diversos"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
victory_return_to_ladder: "Retornar para a Ladder"
victory_play_next_level: "Jogar o próximo estágio" # Only in old-style levels.
victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Ir à página inicial" # Only in old-style levels.
victory_review: "Diga-nos mais!" # Only in old-style levels.
victory_hour_of_code_done: "Terminou?"
@ -216,13 +216,13 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
tome_cast_button_castable: "Lançar" # Temporary, if tome_cast_button_run isn't translated.
tome_cast_button_casting: "Conjurando" # Temporary, if tome_cast_button_running isn't translated.
tome_cast_button_cast: "Feitiço" # Temporary, if tome_cast_button_ran isn't translated.
# tome_cast_button_run: "Run"
# tome_cast_button_running: "Running"
# tome_cast_button_ran: "Ran"
tome_cast_button_run: "Rodar"
tome_cast_button_running: "Rodando"
tome_cast_button_ran: "Encerrado"
tome_submit_button: "Enviar"
# tome_reload_method: "Reload original code for this method" # Title text for individual method reload button.
tome_reload_method: "Recarregar o código original para este método" # Title text for individual method reload button.
tome_select_method: "Selecione um Método"
# tome_see_all_methods: "See all methods you can edit" # Title text for method list selector (shown when there are multiple programmable methdos).
tome_see_all_methods: "Visualizar todos os métodos que você pode editar" # Title text for method list selector (shown when there are multiple programmable methdos).
tome_select_a_thang: "Selecione alguém para "
tome_available_spells: "Feitiços Disponíveis"
tome_your_skills: "Suas habilidades"
@ -236,37 +236,37 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
time_total: "Máximo:"
time_goto: "Ir para:"
infinite_loop_try_again: "Tentar novamente"
# infinite_loop_reset_level: "Reset Level"
# infinite_loop_comment_out: "Comment Out My Code"
# tip_toggle_play: "Toggle play/paused with Ctrl+P."
# tip_scrub_shortcut: "Ctrl+[ and Ctrl+] rewind and fast-forward."
# tip_guide_exists: "Click the guide at the top of the page for useful info."
# tip_open_source: "CodeCombat is 100% open source!"
# tip_beta_launch: "CodeCombat launched its beta in October, 2013."
# tip_think_solution: "Think of the solution, not the problem."
# tip_theory_practice: "In theory, there is no difference between theory and practice. But in practice, there is. - Yogi Berra"
# tip_error_free: "There are two ways to write error-free programs; only the third one works. - Alan Perlis"
# tip_debugging_program: "If debugging is the process of removing bugs, then programming must be the process of putting them in. - Edsger W. Dijkstra"
# tip_forums: "Head over to the forums and tell us what you think!"
# tip_baby_coders: "In the future, even babies will be Archmages."
# tip_morale_improves: "Loading will continue until morale improves."
# tip_all_species: "We believe in equal opportunities to learn programming for all species."
# tip_reticulating: "Reticulating spines."
# tip_harry: "Yer a Wizard, "
# tip_great_responsibility: "With great coding skill comes great debug responsibility."
# tip_munchkin: "If you don't eat your vegetables, a munchkin will come after you while you're asleep."
# tip_binary: "There are only 10 types of people in the world: those who understand binary, and those who don't."
# tip_commitment_yoda: "A programmer must have the deepest commitment, the most serious mind. ~ Yoda"
# tip_no_try: "Do. Or do not. There is no try. - Yoda"
# tip_patience: "Patience you must have, young Padawan. - Yoda"
# tip_documented_bug: "A documented bug is not a bug; it is a feature."
# tip_impossible: "It always seems impossible until it's done. - Nelson Mandela"
# tip_talk_is_cheap: "Talk is cheap. Show me the code. - Linus Torvalds"
# tip_first_language: "The most disastrous thing that you can ever learn is your first programming language. - Alan Kay"
# tip_hardware_problem: "Q: How many programmers does it take to change a light bulb? A: None, it's a hardware problem."
# tip_hofstadters_law: "Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law."
# tip_premature_optimization: "Premature optimization is the root of all evil. - Donald Knuth"
# tip_brute_force: "When in doubt, use brute force. - Ken Thompson"
infinite_loop_reset_level: "Resetar nível"
infinite_loop_comment_out: "Comentar Meu Código"
tip_toggle_play: "Alterne entre rodando/pausado com Ctrl+P."
tip_scrub_shortcut: "Ctrl+[ e Ctrl+] rebobina e avança."
tip_guide_exists: "Clique no guia no topo da página para informações úteis."
tip_open_source: "CodeCombat é 100% código aberto!"
tip_beta_launch: "CodeCombat lançou sua versão beta em outubro de 2013."
tip_think_solution: "Pense na solução, não no problema."
tip_theory_practice: "Na teoria, não existe diferença entre teoria e prática. Mas, na prática, há. - Yogi Berra"
tip_error_free: "Existem duas formas de escrever programas sem erros; apenas a terceira funciona. - Alan Perlis"
tip_debugging_program: "Se depurar é o processo de remover erros, então programar deve ser o processo de adicioná-los. - Edsger W. Dijkstra"
tip_forums: "Vá aos fóruns e diga-nos o que você pensa!"
tip_baby_coders: "No futuro, até bebês serão Arquimagos."
tip_morale_improves: "O carregamento continuará até que a ânimo melhore."
tip_all_species: "Nós acreditamos em oportunidades iguais para todas as espécies aprenderem a programar."
tip_reticulating: "Reticulando espinhas."
tip_harry: "Você é um Feiticeiro, "
tip_great_responsibility: "Com grandes poderes de programacão vêm grandes responsabilidades de debug."
tip_munchkin: "Se você não comer legumes e verduras, um ogro virá te buscar equanto você estiver dormindo."
tip_binary: "Existem apenas 10 tipos de pessoas no mundo: as que entendem binário e as que não entendem."
tip_commitment_yoda: "Um programador deve possuir um compromisso profundo, uma mente séria. ~ Yoda"
tip_no_try: "Faça. Ou não faça. Não existe tentar. - Yoda"
tip_patience: "Paciência você deve ter, jovem Padawan. - Yoda"
tip_documented_bug: "Um bug documentado não é um bug; é uma funcionalidade."
tip_impossible: "Sempre parece impossível, até ser feito. - Nelson Mandela"
tip_talk_is_cheap: "Falar é fácil. Mostre-me o código. - Linus Torvalds"
tip_first_language: "A coisa mais desastrosa que você pode aprender é a sua primeira linguagem de programação. - Alan Kay"
tip_hardware_problem: "P: Quantos programadores são necessários para se trocar uma lâmpada? R: Nenhum, é um problema de hardware."
tip_hofstadters_law: "Lei de Hofstadter: Sempre demora mais do que você espera, mesmo quando você leva em consideração a Lei de Hofstadter."
tip_premature_optimization: "Uma otimização permatura é a raíz de todos os males. - Donald Knuth"
tip_brute_force: "Na dúvida, utilize força bruta. - Ken Thompson"
customize_wizard: "Personalize o feiticeiro"
game_menu:
@ -277,14 +277,14 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
guide_tab: "Guia"
multiplayer_tab: "Multijogador"
inventory_caption: "Equipar seu herói"
# choose_hero_caption: "Choose hero, language"
# save_load_caption: "... and view history"
# options_caption: "Configure settings"
choose_hero_caption: "Escolha seu herói, linguagem"
save_load_caption: "... e visualizar o histórico"
options_caption: "Configurar preferências"
guide_caption: "Documentos e dicas"
# multiplayer_caption: "Play with friends!"
multiplayer_caption: "Jogue com seus amigos!"
# inventory:
# choose_inventory: "Equip Items"
inventory:
choose_inventory: "Equipar itens"
choose_hero:
choose_hero: "Escolha seu Herói"
@ -300,23 +300,23 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
granularity_change_history: "Histórico"
options:
# general_options: "General Options" # Check out the Options tab in the Game Menu while playing a level
general_options: "Opções Gerais" # Check out the Options tab in the Game Menu while playing a level
volume_label: "Volume"
music_label: "Música"
# music_description: "Turn background music on/off."
# autorun_label: "Autorun"
# autorun_description: "Control automatic code execution."
music_description: "Ligar/desligar música de fundo."
autorun_label: "Rodar automaticamente"
autorun_description: "Controlar execução automática do código."
editor_config: "Editor de Configurações"
editor_config_title: "Editor de Configurações"
# editor_config_level_language_label: "Language for This Level"
# editor_config_level_language_description: "Define the programming language for this particular level."
# editor_config_default_language_label: "Default Programming Language"
# editor_config_default_language_description: "Define the programming language you want to code in when starting new levels."
editor_config_level_language_label: "Linguagem para este nível"
editor_config_level_language_description: "Definir linguagem para esse nível específico."
editor_config_default_language_label: "Linguagem de programação padrão"
editor_config_default_language_description: "Define a linguagem de programação que você quer utilizar quando iniciar novos níveis."
editor_config_keybindings_label: "Teclas de Atalho"
editor_config_keybindings_default: "Padrão (Ace)"
editor_config_keybindings_description: "Adicionar atalhos conhecidos de editores comuns."
# editor_config_livecompletion_label: "Live Autocompletion"
# editor_config_livecompletion_description: "Displays autocomplete suggestions while typing."
editor_config_livecompletion_label: "Autocompletar durante a escrita"
editor_config_livecompletion_description: "Mostra opções de autocompletar enquanto estiver escrevendo."
editor_config_invisibles_label: "Mostrar Invisíveis"
editor_config_invisibles_description: "Mostrar invisíveis como espaços e tabs."
editor_config_indentguides_label: "Mostrar Linhas de Identação"
@ -339,14 +339,14 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
press_paragraph_1_suffix: ". Todas as logomarcas e imagens podem ser usadas sem nos contactar previamente."
team: "Time"
george_title: "CEO"
george_blurb: "Administrador" # Businesser
george_blurb: "Administrador"
scott_title: "Programador"
scott_blurb: "O Sensato"
nick_title: "Programador"
nick_blurb: "Guru Motivacional"
michael_title: "Programador"
michael_blurb: "Administrador de Sistemas"
matt_title: "PProgramador"
matt_title: "Programador"
matt_blurb: "O Ciclista"
versions:
@ -367,8 +367,8 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
forum_page: "nosso fórum"
forum_suffix: " ao invés disso."
send: "Enviar opinião"
# contact_candidate: "Contact Candidate" # Deprecated
# recruitment_reminder: "Use this form to reach out to candidates you are interested in interviewing. Remember that CodeCombat charges 15% of first-year salary. The fee is due upon hiring the employee and is refundable for 90 days if the employee does not remain employed. Part time, remote, and contract employees are free, as are interns." # Deprecated
contact_candidate: "Contactar Candidato" # Deprecated
recruitment_reminder: "Utilize esse formulário para entrar em contato com candidatos que você esteja interessado em entrevistar. Lembre-se que o CodeCombat cobra 15% do salário do primeiro ano. A taxa de contratação é cobrada quando da contratação do empregado e é reembolsável por 90 dias, se o empregado não permanece no emprego. Empregados de meio-turno, remotos ou com contrato serão gratuitos como estagiários." # Deprecated
account_settings:
title: "Configurações da Conta"
@ -387,8 +387,8 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
email_announcements: "Notícias"
email_announcements_description: "Receba emails com as últimas notícias e desenvolvimentos do CodeCombat."
email_notifications: "Notificações"
# email_notifications_summary: "Controls for personalized, automatic email notifications related to your CodeCombat activity."
# email_any_notes: "Any Notifications"
email_notifications_summary: "Controles para notificações por email, automáticas e personalizadas, relacionadas a sua atividade no CodeCombat."
email_any_notes: "Quaisquer Notificações"
email_any_notes_description: "Desabilitar todas as atividades de notificação por email."
email_news: "Notícias"
email_recruit_notes: "Oportunidades de emprego"
@ -403,8 +403,8 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
password_mismatch: "As senhas não estão iguais"
password_repeat: "Por favor repita sua senha."
job_profile: "Perfil de trabalho" # Rest of this section (the job profile stuff and wizard stuff) is deprecated
# job_profile_approved: "Your job profile has been approved by CodeCombat. Employers will be able to see it until you either mark it inactive or it has not been changed for four weeks."
# job_profile_explanation: "Hi! Fill this out, and we will get in touch about finding you a software developer job."
job_profile_approved: "Seu perfil de trabalho foi aprovado pelo CodeCombat. Empregadores poderão vê-lo até que você o marque como inativo ou caso não seja alterado por quatro semanas."
job_profile_explanation: "Olá! Preencha tudo e iremos entrar em contato sobre encontrar um trabalho como desenvolvedor de software."
sample_profile: "Veja um perfil de exemplo"
view_profile: "Visualizar seu perfil"
wizard_tab: "Feiticeiro"
@ -416,37 +416,37 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
enter: "Enter"
escape: "Esc"
shift: "Shift"
# cast_spell: "Cast current spell."
# run_real_time: "Run in real time."
# continue_script: "Continue past current script."
# skip_scripts: "Skip past all skippable scripts."
# toggle_playback: "Toggle play/pause."
# scrub_playback: "Scrub back and forward through time."
# single_scrub_playback: "Scrub back and forward through time by a single frame."
# scrub_execution: "Scrub through current spell execution."
# toggle_debug: "Toggle debug display."
# toggle_grid: "Toggle grid overlay."
# toggle_pathfinding: "Toggle pathfinding overlay."
# beautify: "Beautify your code by standardizing its formatting."
# maximize_editor: "Maximize/minimize code editor."
# move_wizard: "Move your Wizard around the level."
cast_spell: "Lançar feitiço atual."
run_real_time: "Rodar em tempo real."
continue_script: "Pular script atual."
skip_scripts: "Pular todos os scripts puláveis."
toggle_playback: "Alternar play/pause."
scrub_playback: "Rolar para frente e para trás no tempo."
single_scrub_playback: "Rolar para frente e para trás no tempo, quadro a quadro."
scrub_execution: "Rolar através da execução do feitiço atual."
toggle_debug: "Ligar/desligar informações de debug."
toggle_grid: "Ligar/desligar exibição da grade."
toggle_pathfinding: "Ligar/desligar exibição do pathfinding (caminho)."
beautify: "Embeleze seu código a partir da padronização de formatação."
maximize_editor: "Maximizar/minimizar editor de código."
move_wizard: "Mova o Wizard pelo nível."
community:
main_title: "Comunidade CodeCombat"
# introduction: "Check out the ways you can get involved below and decide what sounds the most fun. We look forward to working with you!"
introduction: "Verifique abaixo de que maneires você pode se envolver e decida qual lhe parece mais divertida. Esperamos trabalhar com você em breve!"
level_editor_prefix: "Use o CodeCombat"
# level_editor_suffix: "to create and edit levels. Users have created levels for their classes, friends, hackathons, students, and siblings. If create a new level sounds intimidating you can start by forking one of ours!"
# thang_editor_prefix: "We call units within the game 'thangs'. Use the"
# thang_editor_suffix: "to modify the CodeCombat source artwork. Allow units to throw projectiles, alter the direction of an animation, change a unit's hit points, or upload your own vector sprites."
# article_editor_prefix: "See a mistake in some of our docs? Want to make some instructions for your own creations? Check out the"
# article_editor_suffix: "and help CodeCombat players get the most out of their playtime."
# find_us: "Find us on these sites"
# social_blog: "Read the CodeCombat blog on Sett"
# social_discource: "Join the discussion on our Discourse forum"
level_editor_suffix: "para criar e editar níveis. Usuários criaram níveis para suas classes, amigos, hackathons, estudantes e parentes. Se criar um novo nível soa intimidador, você pode iniciar fazendo um fork de um dos nossos."
thang_editor_prefix: "Nós chamamos as unidades do jogo de 'thangs'. Utilize o"
thang_editor_suffix: "para modificar o fonte das artes. Permita que lancem projéteis, modifique a direção das animações, modifique os pontos de vida da unidade ou envie seu próprio vetor de sprites."
article_editor_prefix: "Encontrou algo errado na nossa documentação? Gostaria de criar algumas instruções para suas próprias criações? Dê uma olhada em"
article_editor_suffix: "e ajude os jogadores do CodeCombat a aproveitar o máximo de seu jogo."
find_us: "Encontre-nos nestes sites"
social_blog: "Leia o blog do CodeCombat no Sett"
social_discource: "Entre na discussão no nosso Fórum"
social_facebook: "Curta o CodeCombat no Facebook"
social_twitter: "Siga o CodeCombat no Twitter"
# social_gplus: "Join CodeCombat on Google+"
# social_hipchat: "Chat with us in the public CodeCombat HipChat room"
social_gplus: "Ingresse no CodeCombat no Google+"
social_hipchat: "Converse conosco na sala pública do CodeCombat no HipChat"
contribute_to_the_project: "Contribuir para o projeto"
classes:
@ -468,19 +468,19 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
article_title: "Editor de Artigo"
thang_title: "Editor de Thang"
level_title: "Editor de Nível"
# achievement_title: "Achievement Editor"
achievement_title: "Editor de Conquistas"
back: "Voltar"
revert: "Reverter"
revert_models: "Reverter Modelos"
pick_a_terrain: "Escolha um Terreno"
small: "Pequeno"
# grassy: "Grassy"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# generate_terrain: "Generate Terrain"
grassy: "Gramado"
fork_title: "Realizar um Novo Fork"
fork_creating: "Criando Fork..."
generate_terrain: "Gerando Terreno"
more: "Mais"
wiki: "Wiki"
# live_chat: "Live Chat"
live_chat: "Chat Ao Vivo"
level_some_options: "Algumas Opções?"
level_tab_thangs: "Thangs"
level_tab_scripts: "Scripts"
@ -489,7 +489,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
level_tab_systems: "Sistemas"
level_tab_docs: "Documentação"
level_tab_thangs_title: "Thangs Atuais"
# level_tab_thangs_all: "All"
level_tab_thangs_all: "Tudo"
level_tab_thangs_conditions: "Condições de Início"
level_tab_thangs_add: "Adicionar Thangs"
delete: "Excluir"
@ -512,20 +512,20 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
new_article_title: "Criar um Novo Artigo"
new_thang_title: "Criar um Novo Tipo de Thang"
new_level_title: "Criar um Novo Nível"
# new_article_title_login: "Log In to Create a New Article"
new_article_title_login: "Faça login para Criar um Novo Artigo"
# new_thang_title_login: "Log In to Create a New Thang Type"
# new_level_title_login: "Log In to Create a New Level"
# new_achievement_title: "Create a New Achievement"
# new_achievement_title_login: "Log In to Create a New Achievement"
new_level_title_login: "Faça login para Criar um Novo Nível"
new_achievement_title: "Criar Nova Conquista"
new_achievement_title_login: "Faça login para Criar uma Nova Conquista"
article_search_title: "Procurar Artigos Aqui"
thang_search_title: "Procurar Tipos de Thang Aqui"
level_search_title: "Procurar Níveis Aqui"
# achievement_search_title: "Search Achievements"
# read_only_warning2: "Note: you can't save any edits here, because you're not logged in."
# no_achievements: "No achievements have been added for this level yet."
achievement_search_title: "Buscar Conquistas"
read_only_warning2: "Nota: você não pode salvar suas edições aqui pois não está logado."
no_achievements: "Nenhuma conquista foi adicionada para esse nível ainda."
# achievement_query_misc: "Key achievement off of miscellanea"
# achievement_query_goals: "Key achievement off of level goals"
# level_completion: "Level Completion"
level_completion: "Conclusão do Nível"
article:
edit_btn_preview: "Prever"
@ -541,7 +541,7 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
introduction_desc_ending: "Nós esperamos que você se junte a nossa festa!"
introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy and Matt"
alert_account_message_intro: "Ei!"
# alert_account_message: "To subscribe for class emails, you'll need to be logged in first."
alert_account_message: "Para assinar os emails de classe, você precisa estar logado."
archmage_summary: "Interessado em trabalhar em gráficos do jogo, design de interface de usuário, banco de dados e organização de servidores, networking multijogador, física, som ou desempenho do motor de jogo? Quer ajudar a construir um jogo para ajudar outras pessoas a aprender o que você é bom? Temos muito a fazer e se você é um programador experiente e quer desenvolver para o CodeCombat, esta classe é para você. Gostaríamos muito de sua ajuda a construir o melhor jogo de programação da história."
archmage_introduction: "Uma das melhores partes sobre a construção de jogos é que eles sintetizam diversas coisas diferentes. Gráficos, som, interação em tempo real, redes sociais, e, claro, muitos dos aspectos mais comuns da programação, desde a gestão em baixo nível de banco de dados, e administração do servidor até interação com o usuário e desenvolvimento da interface. Há muito a fazer, e se você é um programador experiente com um desejo ardente de realmente mergulhar no âmago da questão do CodeCombat, esta classe pode ser para você. Nós gostaríamos de ter sua ajuda para construir o melhor jogo de programação de todos os tempos."
class_attributes: "Atributos da Classe"
@ -623,11 +623,11 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
simulation_explanation: "Por simular partidas você pode classificar seu jogo mais rápido!"
simulate_games: "Simular Partidas!"
simulate_all: "RESETAR E SIMULAR PARTIDAS"
# games_simulated_by: "Games simulated by you:"
# games_simulated_for: "Games simulated for you:"
# games_simulated: "Games simulated"
# games_played: "Games played"
# ratio: "Ratio"
games_simulated_by: "Partidas simuladas por você:"
games_simulated_for: "Partidas simuladas para você:"
games_simulated: "Partidas simuladas"
games_played: "Partidas jogadas"
ratio: "Taxa"
leaderboard: "Tabela de Classificação"
battle_as: "Lutar como "
summary_your: "Seus "
@ -640,13 +640,13 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
rank_submitted: "Submetendo para a Classificação"
rank_failed: "Falha ao Classificar"
rank_being_ranked: "Jogo sendo Classificado"
# rank_last_submitted: "submitted "
# help_simulate: "Help simulate games?"
rank_last_submitted: "enviado "
help_simulate: "Ajuda simulando partidas?"
code_being_simulated: "Seu novo código está sendo simulado por outros jogadores para ser classificado. Isto atualizará automaticamente assim que novas partidas entrarem."
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."
choose_opponent: "Escolha um Oponente"
# select_your_language: "Select your language!"
select_your_language: "Selecione sua linguagem!"
tutorial_play: "Jogue o Tutorial"
tutorial_recommended: "Recomendado se você nunca jogou antes"
tutorial_skip: "Pular Tutorial"
@ -654,21 +654,21 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
tutorial_play_first: "Jogue o Tutorial primeiro."
simple_ai: "IA Simples"
warmup: "Aquecimento"
# friends_playing: "Friends Playing"
# log_in_for_friends: "Log in to play with your friends!"
# social_connect_blurb: "Connect and play against your friends!"
# invite_friends_to_battle: "Invite your friends to join you in battle!"
# fight: "Fight!"
# watch_victory: "Watch your victory"
# defeat_the: "Defeat the"
# tournament_ends: "Tournament ends"
# tournament_ended: "Tournament ended"
# 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_criss_cross: "Win bids, construct paths, outwit opponents, grab gems, and upgrade your career in our Criss-Cross tournament! Check out the details"
# tournament_blurb_blog: "on our blog"
# rules: "Rules"
# winners: "Winners"
friends_playing: "Amigos Jogando"
log_in_for_friends: "Faça loginp ara jogar com seus amigos!"
social_connect_blurb: "Conecte-se e jogue contra seus amigos!"
invite_friends_to_battle: "Convide seus amigos para juntarem-se à sua batalha!"
fight: "Lutem!"
watch_victory: "Assista sua vitória"
defeat_the: "Derrote"
tournament_ends: "Fim do torneio"
tournament_ended: "Torneio encerrado"
tournament_rules: "Regras do Torneio"
tournament_blurb: "Escreva códigos, colete ouro, construa exércitos, esmague inimigos, ganhe prêmios e aprimore sua carreira no nosso Torneio da Cobiça de $40,000! Veja os detalhes"
tournament_blurb_criss_cross: "Ganhe leilões, construa caminhos, despiste oponentes, agarre joias e aprimore sua carreira no nosso Torneio de Cruzadas! Veja os detalhes"
tournament_blurb_blog: "no nosso blog"
rules: "Regras"
winners: "Vencedores"
user:
stats: "Estatísticas"
@ -687,8 +687,8 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
achievements:
last_earned: "Últimos Ganhos"
# amount_achieved: "Amount"
# achievement: "Achievement"
amount_achieved: "Montante"
achievement: "Conquista"
category_contributor: "Cotribuidor"
category_miscellaneous: "Diversos"
category_levels: "Níveis"
@ -696,95 +696,95 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
current_xp_prefix: ""
current_xp_postfix: " no total"
new_xp_prefix: ""
# new_xp_postfix: " earned"
new_xp_postfix: " adquirido"
left_xp_prefix: ""
# left_xp_infix: " until level "
left_xp_infix: " até o nível "
left_xp_postfix: ""
account:
recently_played: "Jogos Recentes"
no_recent_games: "Não foram feitos jogos durante duas semanas."
# loading_error:
# could_not_load: "Error loading from server"
# connection_failure: "Connection failed."
# unauthorized: "You need to be signed in. Do you have cookies disabled?"
# forbidden: "You do not have the permissions."
# not_found: "Not found."
# not_allowed: "Method not allowed."
# timeout: "Server timeout."
# conflict: "Resource conflict."
# bad_input: "Bad input."
# server_error: "Server error."
# unknown: "Unknown error."
loading_error:
could_not_load: "Erro ao carregar do servidor"
connection_failure: "Conexão falhou."
unauthorized: "Você precisa estar autenticado. Você desativou os cookies?"
forbidden: "Você não possui permissão."
not_found: "Não encontrado."
not_allowed: "Método não permitodo."
timeout: "Tempo de requisição esgotado."
conflict: "Conflito de recurso."
bad_input: "Problema de entrada (bad input)."
server_error: "Erro do servidor."
unknown: "Erro desconhecido."
# resources:
# sessions: "Sessions"
# your_sessions: "Your Sessions"
# level: "Level"
# social_network_apis: "Social Network APIs"
# facebook_status: "Facebook Status"
# facebook_friends: "Facebook Friends"
# facebook_friend_sessions: "Facebook Friend Sessions"
# gplus_friends: "G+ Friends"
# gplus_friend_sessions: "G+ Friend Sessions"
# leaderboard: "Leaderboard"
# user_schema: "User Schema"
# user_profile: "User Profile"
# patches: "Patches"
# patched_model: "Source Document"
# model: "Model"
# system: "System"
# systems: "Systems"
# component: "Component"
# components: "Components"
# thang: "Thang"
# thangs: "Thangs"
# level_session: "Your Session"
# opponent_session: "Opponent Session"
# article: "Article"
# user_names: "User Names"
# thang_names: "Thang Names"
# files: "Files"
# top_simulators: "Top Simulators"
# source_document: "Source Document"
# document: "Document"
# sprite_sheet: "Sprite Sheet"
# employers: "Employers"
# candidates: "Candidates"
# candidate_sessions: "Candidate Sessions"
# user_remark: "User Remark"
# user_remarks: "User Remarks"
# versions: "Versions"
# items: "Items"
# heroes: "Heroes"
# wizard: "Wizard"
# achievement: "Achievement"
# clas: "CLAs"
# play_counts: "Play Counts"
# feedback: "Feedback"
resources:
sessions: "Sessão"
your_sessions: "Sua sessão"
level: "vel"
social_network_apis: "APIs das Redes Sociais"
facebook_status: "Status do Facebook"
facebook_friends: "Amigos do Facebook"
facebook_friend_sessions: "Sessões de Amigos do Facebook"
gplus_friends: "Amigos do G+"
gplus_friend_sessions: "Sessões de Amigos do G+"
leaderboard: "Tabela de Classificação"
user_schema: "Esquema do Usuário"
user_profile: "Perfil do Usuário"
patches: "Patches"
patched_model: "Documento da Fonte"
model: "Modelo"
system: "Sistema"
systems: "Sistemas"
component: "Componente"
components: "Componentes"
thang: "Thang"
thangs: "Thangs"
level_session: "Sua Sessão"
opponent_session: "Sessão do Oponente"
article: "Artigo"
user_names: "Nomes de Usuários"
thang_names: "Nome do Thang"
files: "Arquivos"
top_simulators: "Top Simuladores"
source_document: "Documento da Fonte"
document: "Documento"
sprite_sheet: "Folha de Sprites"
employers: "Empregadores"
candidates: "Candidatos"
candidate_sessions: "Sessão do Candidato"
user_remark: "Observação do Usuário"
user_remarks: "Observações do Usuário"
versions: "Versões"
items: "Itens"
heroes: "Heróis"
wizard: "Assistente"
achievement: "Conquista"
clas: "CLAs"
play_counts: "Contagem de Jogos"
feedback: "Comentários"
delta:
# added: "Added"
# modified: "Modified"
# deleted: "Deleted"
# moved_index: "Moved Index"
# text_diff: "Text Diff"
# merge_conflict_with: "MERGE CONFLICT WITH"
added: "Adicionado"
modified: "Modificado"
deleted: "Removido"
moved_index: "Índice Movido"
text_diff: "Diff do Texto"
merge_conflict_with: "MERGE DO CONFLITO COM"
no_changes: "Sem Alterações"
# guide:
# temp: "Temp"
multiplayer:
multiplayer_title: "Configurações do Multijogador" # We'll be changing this around significantly soon. Until then, it's not important to translate.
# multiplayer_toggle: "Enable multiplayer"
# multiplayer_toggle_description: "Allow others to join your game."
multiplayer_title: "Configurações de Multijogador" # We'll be changing this around significantly soon. Until then, it's not important to translate.
multiplayer_toggle: "Habilitar multijogador"
multiplayer_toggle_description: "Permitir que outros entrem no seu jogo."
multiplayer_link_description: "Passe este link para quem você quiser que se una à partida."
multiplayer_hint_label: "Dica:"
multiplayer_hint: " Clique no link para selecionar tudo, então dê Ctrl+C ou ⌘+C para copiar o link. "
multiplayer_coming_soon: "Mais novidades no multijogador estão chegando!"
# multiplayer_sign_in_leaderboard: "Sign in or create an account and get your solution on the leaderboard."
multiplayer_sign_in_leaderboard: "Autentique-se ou crie uma conta para enviar sua solução para a tabela de classificação."
legal:
page_title: "Jurídico"
@ -847,25 +847,25 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
nutshell_description: "Todos os recursos que oferecemos no Editor de Níveis é livre para usar como quiser para a criação de níveis. Mas nós nos reservamos o direito de restringir a distribuição dos próprios níveis (que são criados em codecombat.com) para que possam ser cobrados no futuro, se é que isso precise acontecer."
canonical: "A versão em inglês deste documento é a versão canônica definitiva. Se houver discrepâncias entre traduções, o documento em inglês tem precedência."
# ladder_prizes:
# title: "Tournament Prizes" # This section was for an old tournament and doesn't need new translations now.
# blurb_1: "These prizes will be awarded according to"
# blurb_2: "the tournament rules"
# blurb_3: "to the top human and ogre players."
# blurb_4: "Two teams means double the prizes!"
# blurb_5: "(There will be two first place winners, two second-place winners, etc.)"
# rank: "Rank"
# prizes: "Prizes"
# total_value: "Total Value"
ladder_prizes:
title: "Prêmios do Torneio" # This section was for an old tournament and doesn't need new translations now.
blurb_1: "Esses prêmios serão entregues de acordo com"
blurb_2: "as regras do torneio"
blurb_3: "para os melhores jogadores humano e ogro."
blurb_4: "Dois times significa o dobro de prêmios!"
blurb_5: "(Haverá dois vencedores em primeiro lugar, dois vencedores em segundo lugar etc.)"
rank: "Classificação"
prizes: "Prêmios"
total_value: "Valor Total"
# in_cash: "in cash"
# custom_wizard: "Custom CodeCombat Wizard"
# custom_avatar: "Custom CodeCombat avatar"
# heap: "for six months of \"Startup\" access"
# credits: "credits"
# one_month_coupon: "coupon: choose either Rails or HTML"
# one_month_discount: "discount, 30% off: choose either Rails or HTML"
# license: "license"
# oreilly: "ebook of your choice"
custom_wizard: "Assistente Personalizado do CodeCombat"
custom_avatar: "Avatar Personalizado do CodeCombat"
heap: "para seis meses de acesso \"Startup\""
credits: "créditos"
one_month_coupon: "cupom: escolha Rails ou HTML"
one_month_discount: "desconto de 30%: escolha Rails ou HTML"
license: "licença"
oreilly: "ebook de sua escolha"
wizard_settings:
title: "Configurações do Feiticeiro"
@ -889,110 +889,110 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
done_editing: "Edição Feita"
profile_for_prefix: "Perfil de "
profile_for_suffix: ""
# featured: "Featured"
# not_featured: "Not Featured"
# looking_for: "Looking for:"
featured: "Disponível"
not_featured: "Não disponível"
looking_for: "Procurando por:"
last_updated: "Última atualização:"
contact: "Contato"
# active: "Looking for interview offers now"
# inactive: "Not looking for offers right now"
active: "Procurando por entrevistas de emprego no momento"
inactive: "Não está procurando por oportunidades no momento"
complete: "Completo"
next: "Próximo"
next_city: "Cidade?"
# next_country: "pick your country."
next_country: "escolha seu país."
next_name: "Nome?"
# next_short_description: "write a short description."
# next_long_description: "describe your desired position."
# next_skills: "list at least five skills."
# next_work: "chronicle your work history."
# next_education: "recount your educational ordeals."
# next_projects: "show off up to three projects you've worked on."
# next_links: "add any personal or social links."
# next_photo: "add an optional professional photo."
# next_active: "mark yourself open to offers to show up in searches."
next_short_description: "escreva uma breve descrição."
next_long_description: "descreva o tipo de vaga ou cargo desejados."
next_skills: "relacione pelo menos cinco habilidades."
next_work: "descreva seu histórico de trabalho."
next_education: "descreva seu percurso acadêmico."
next_projects: "mostre até três projetos nos quais você trabalhou."
next_links: "adicione links pessoais ou sociais."
next_photo: "adicione uma foto profissional (opcional)."
next_active: "marque-se como \"aberto a oportunidades\"."
example_blog: "Blog"
example_personal_site: "Site Pessoal"
# links_header: "Personal Links"
# links_blurb: "Link any other sites or profiles you want to highlight, like your GitHub, your LinkedIn, or your blog."
# links_name: "Link Name"
# links_name_help: "What are you linking to?"
# links_link_blurb: "Link URL"
# basics_header: "Update basic info"
basics_active: "Aberto para Ofertas"
# basics_active_help: "Want interview offers right now?"
# basics_job_title: "Desired Job Title"
# basics_job_title_help: "What role are you looking for?"
links_header: "Links Pessoais"
links_blurb: "Adicione links para sites ou perfis que você gostaria de destacar, como seu GitHub, LinkedIn ou seu blog."
links_name: "Nome do Link"
links_name_help: "Para onde você está linkando?"
links_link_blurb: "URL do Link"
basics_header: "Atualizar informações básicas"
basics_active: "Aberto para Oportunidades"
basics_active_help: "Está procurando oportunidades de entrevista agora?"
basics_job_title: "Título do Trabalho Desejado"
basics_job_title_help: "Qual cargo você está procurando?"
basics_city: "Cidade"
# basics_city_help: "City you want to work in (or live in now)."
basics_city_help: "Cidade que você quer trabalhar (ou morar)."
basics_country: "País"
# basics_country_help: "Country you want to work in (or live in now)."
# basics_visa: "US Work Status"
# basics_visa_help: "Are you authorized to work in the US, or do you need visa sponsorship? (If you live in Canada or Australia, mark authorized.)"
# basics_looking_for: "Looking For"
# basics_looking_for_full_time: "Full-time"
# basics_looking_for_part_time: "Part-time"
# basics_looking_for_remote: "Remote"
# basics_looking_for_contracting: "Contracting"
# basics_looking_for_internship: "Internship"
# basics_looking_for_help: "What kind of developer position do you want?"
# name_header: "Fill in your name"
# name_anonymous: "Anonymous Developer"
# name_help: "Name you want employers to see, like 'Nick Winter'."
# short_description_header: "Write a short description of yourself"
# short_description_blurb: "Add a tagline to help an employer quickly learn more about you."
# short_description: "Tagline"
# short_description_help: "Who are you, and what are you looking for? 140 characters max."
# skills_header: "Skills"
# skills_help: "Tag relevant developer skills in order of proficiency."
# long_description_header: "Describe your desired position"
# long_description_blurb: "Tell employers how awesome you are and what role you want."
# long_description: "Self Description"
# long_description_help: "Describe yourself to potential employers. Keep it short and to the point. We recommend outlining the position that would most interest you. Tasteful markdown okay; 600 characters max."
# work_experience: "Work Experience"
# work_header: "Chronicle your work history"
# work_years: "Years of Experience"
# work_years_help: "How many years of professional experience (getting paid) developing software do you have?"
# work_blurb: "List your relevant work experience, most recent first."
# work_employer: "Employer"
# work_employer_help: "Name of your employer."
# work_role: "Job Title"
# work_role_help: "What was your job title or role?"
basics_country_help: "País que você quer trabalhar (ou morar)."
basics_visa: "Status de Trabalho nos EUA"
basics_visa_help: "Você está autorizado a trabalhar nos EUA ou você precisa de patrocínio para o VISA? (Se você mora no Canadá ou na Austrália, marque como autorizado.)"
basics_looking_for: "Procurando por"
basics_looking_for_full_time: "Tempo integral"
basics_looking_for_part_time: "Meio-turno"
basics_looking_for_remote: "Remoto"
basics_looking_for_contracting: "Contratando"
basics_looking_for_internship: "Estágio"
basics_looking_for_help: "Que tipo de cargo de desenvolvendor você procura?"
name_header: "Preencha seu nome"
name_anonymous: "Desenvolvedor Anônimo"
name_help: "Nome que você quer que os empregadores vejam, por exemplo 'Nick Winter'."
short_description_header: "Escreva uma breve descrição de si mesmo"
short_description_blurb: "Adicione um slogan (frase) que ajudará o empregador a lhe conhecer rapidamente."
short_description: "Slogan"
short_description_help: "Quem é você e o que você está procurando? Máximo de 140 caracteres."
skills_header: "Habilidades"
skills_help: "Marque habilidades de desenvolvimento relevantes em ordem de proficiência."
long_description_header: "Descreva o cargo desejado"
long_description_blurb: "Diga aos empregadores o quão incrível você é e qual cargo você deseja."
long_description: "Autodescrição"
long_description_help: "Descreva a si mesmo para seu potencial empregador. Mantenha curto e direto. Recomendamos esboçar o cargo que mais lhe interessa. Máximo de 600 caracteres."
work_experience: "Experiência de Trabalho"
work_header: "Descreva seu histórico de trabalho"
work_years: "Anos de Experiência"
work_years_help: "Quantos anos de experiência profissional (sendo pago) de desenvolvimento de software você tem?"
work_blurb: "Liste experiências relevantes de trabalho. As mais recentes primeiro."
work_employer: "Empregador"
work_employer_help: "Nome do empregador."
work_role: "Título do Emprego"
work_role_help: "Qual era a sua função ou cargo no emprego?"
work_duration: "Duração"
# work_duration_help: "When did you hold this gig?"
work_duration_help: "Por quanto tempo?"
work_description: "Descrição"
# work_description_help: "What did you do there? (140 chars; optional)"
work_description_help: "O que você fez lá? (140 carac.; opcional)"
education: "Educação"
# education_header: "Recount your academic ordeals"
# education_blurb: "List your academic ordeals."
education_header: "Descreva seu percurso acadêmico"
education_blurb: "Liste seu percurso acadêmico."
education_school: "Escola"
education_school_help: "Nome da sua escola."
education_degree: "Grau"
# education_degree_help: "What was your degree and field of study?"
education_degree_help: "Qual é o seu grau e área de estudo?"
education_duration: "Datas"
education_duration_help: "Quando?"
education_description: "Descrição"
# education_description_help: "Highlight anything about this educational experience. (140 chars; optional)"
education_description_help: "Destaque qualquer coisa sobre essa experiência acadêmica. (140 carac.; opcional)"
our_notes: "Nossas notas"
# remarks: "Remarks"
remarks: "Observações"
projects: "Projetos"
projects_header: "Adicione 3 projetos"
projects_header_2: "Projetos (Top 3)"
projects_blurb: "Destaque seus projetos para impressionar os empregadores."
project_name: "Nome do Projeto"
# project_name_help: "What was the project called?"
project_name_help: "Como o projeto se chama?"
project_description: "Descrição"
# project_description_help: "Briefly describe the project."
project_description_help: "Descreva o projeto brevemente."
project_picture: "Imagem"
# project_picture_help: "Upload a 230x115px or larger image showing off the project."
project_picture_help: "Envie uma imagem com 230x115px ou maior mostrando o projeto."
project_link: "Link"
project_link_help: "Link para o projeto."
# player_code: "Player Code"
player_code: "Código do Jogador"
# employers:
# deprecation_warning_title: "Sorry, CodeCombat is not recruiting right now."
# deprecation_warning: "We are focusing on beginner levels instead of finding expert developers for the time being."
# hire_developers_not_credentials: "Hire developers, not credentials." # We are not actively recruiting right now, so there's no need to add new translations for the rest of this section.
# get_started: "Get Started"
employers:
deprecation_warning_title: "Desculpe, o CodeCombat não está recrutando no momento."
deprecation_warning: "Estamos nos concentrando em níveis iniciante, em vez de encontrar desenvolvedores especializados no momento."
hire_developers_not_credentials: "Contrate desenvolvedores, não referências." # We are not actively recruiting right now, so there's no need to add new translations for the rest of this section.
get_started: "Comece"
# already_screened: "We've already technically screened all our candidates"
# filter_further: ", but you can also filter further:"
# filter_visa: "Visa"
@ -1035,19 +1035,19 @@ module.exports = nativeDescription: "português do Brasil", englishDescription:
# inactive_developers: "Inactive Developers"
admin:
# av_espionage: "Espionage" # Really not important to translate /admin controls.
# av_espionage_placeholder: "Email or username"
# av_usersearch: "User Search"
# av_usersearch_placeholder: "Email, username, name, whatever"
# av_usersearch_search: "Search"
av_espionage: "Espionagem" # Really not important to translate /admin controls.
av_espionage_placeholder: "Email ou username"
av_usersearch: "Busca de Usuário"
av_usersearch_placeholder: "Email, username, nome, qualquer coisa"
av_usersearch_search: "Buscar"
av_title: "Visualização de Administrador"
av_entities_sub_title: "Entidades"
av_entities_users_url: "Usuários"
av_entities_active_instances_url: "Instâncias Ativas"
# av_entities_employer_list_url: "Employer List"
# av_entities_candidates_list_url: "Candidate List"
av_entities_employer_list_url: "Lista de Empregadores"
av_entities_candidates_list_url: "Lista de Candidatos"
av_other_sub_title: "Outro"
av_other_debug_base_url: "Base (para debugar base.jade)"
u_title: "Lista de Usuários"
lg_title: "Últimos Jogos"
# clas: "CLAs"
clas: "CLAs"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
adventurer_forum: "fórum do Aventureiro"
adventurer_suffix: "."
campaign_old_beginner: "Campanha para Iniciantes Antiga"
campaign_beginner_description: "... onde aprendes a magia da programação."
campaign_old_beginner_description: "... onde aprendes a magia da programação."
campaign_dev: "Níveis mais Difíceis Aleatórios"
campaign_dev_description: "... onde aprendes a interface enquanto fazes coisas um bocadinho mais difíceis."
campaign_multiplayer: "Arenas Multijogador"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
armor: "Armadura"
hands: "Mãos"
accessories: "Acessórios"
books: "Livros"
minions: "Minions"
misc: "Vários"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Português (Portugal)", englishDescription:
victory_return_to_ladder: "Voltar à Classificação"
victory_play_next_level: "Jogar Próximo Nível" # Only in old-style levels.
victory_play_continue: "Continuar"
victory_saving_progress: "A Guardar o Progresso"
victory_go_home: "Ir para o Início" # Only in old-style levels.
victory_review: "Conta-nos mais!" # Only in old-style levels.
victory_hour_of_code_done: "Terminaste?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
adventurer_forum: "forumul Aventurierului"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... în care se învață tainele programării."
campaign_old_beginner_description: "... în care se învață tainele programării."
campaign_dev: "Nivele aleatoare mai grele"
campaign_dev_description: "... în care se învață interfața, cu o dificultate puțin mai mare."
campaign_multiplayer: "Arene Multiplayer"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "limba română", englishDescription: "Roman
victory_return_to_ladder: "Înapoi la jocurile de clasament"
victory_play_next_level: "Joacă nivelul următor" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Acasă" # Only in old-style levels.
victory_review: "Spune-ne mai multe!" # Only in old-style levels.
victory_hour_of_code_done: "Ai terminat?"

View file

@ -56,14 +56,14 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
spectate: "Наблюдать" # Ladder page
players: "игроки" # Hover over a level on /play
hours_played: "часов сыграно" # Hover over a level on /play
# items: "Items" # Tooltip on item shop button from /play
items: "Предметы" # Tooltip on item shop button from /play
heroes: "Герои" # Tooltip on hero shop button from /play
achievements: "Достижения" # Tooltip on achievement list button from /play
account: "Аккаунт" # Tooltip on account button from /play
settings: "Настройки" # Tooltip on settings button from /play
next: "Следующий" # Go from choose hero to choose inventory before playing a level
change_hero: "Выбрать героя" # Go back from choose inventory to choose hero
# choose_inventory: "Equip Items"
choose_inventory: "Выбрать предметы"
older_campaigns: "Старые компании"
anonymous: "Неизвестный игрок"
level_difficulty: "Сложность: "
@ -73,7 +73,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
adventurer_forum: "форуме Искателей приключений"
adventurer_suffix: "."
campaign_old_beginner: "Старые компании для новичков"
campaign_beginner_description: "... в которой вы познакомитесь с магией программирования."
campaign_old_beginner_description: "... в которой вы познакомитесь с магией программирования."
campaign_dev: "Случайные уровни потруднее"
campaign_dev_description: "... в которых вы изучите интерфейс и научитесь делать кое-что посложнее."
campaign_multiplayer: "Арены для мультиплеера"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
armor: "Броня"
hands: "Руки"
accessories: "Аксессуары"
books: "Книги"
# minions: "Minions"
misc: "Разное"
@ -135,7 +134,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
general:
and: "и"
name: "Имя"
# date: "Date"
date: "Дата"
body: "Содержание"
version: "Версия"
commit_msg: "Сопроводительное сообщение"
@ -204,7 +203,8 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
victory_rate_the_level: "Оцените уровень:" # Only in old-style levels.
victory_return_to_ladder: "Вернуться к ладдеру"
victory_play_next_level: "Следующий уровень" # Only in old-style levels.
# victory_play_continue: "Continue"
victory_play_continue: "Продолжить"
# victory_saving_progress: "Saving Progress"
victory_go_home: "На главную" # Only in old-style levels.
victory_review: "Расскажите нам больше!" # Only in old-style levels.
victory_hour_of_code_done: "Вы закончили?"
@ -225,13 +225,13 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
# tome_see_all_methods: "See all methods you can edit" # Title text for method list selector (shown when there are multiple programmable methdos).
tome_select_a_thang: "Выбрать кого-нибудь для "
tome_available_spells: "Доступные заклинания"
# tome_your_skills: "Your Skills"
tome_your_skills: "Ваши навыки"
hud_continue: "Продолжить (Shift+Пробел)"
spell_saved: "Заклинание сохранено"
skip_tutorial: "Пропуск (Esc)"
keyboard_shortcuts: "Горячие клавиши"
loading_ready: "Готово!"
# loading_start: "Start Level"
loading_start: "Начать уровень"
time_current: "Текущее:"
time_total: "Максимальное:"
time_goto: "Перейти на:"
@ -265,7 +265,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
tip_first_language: "Наиболее катастрофическая вещь, которую вы можете выучить - ваш первый язык программирования. - Alan Kay"
tip_hardware_problem: "В: Сколько программистов нужно, чтобы вкрутить лампочку? О: Нисколько, это проблемы с железом."
# tip_hofstadters_law: "Hofstadter's Law: It always takes longer than you expect, even when you take into account Hofstadter's Law."
# tip_premature_optimization: "Premature optimization is the root of all evil. - Donald Knuth"
tip_premature_optimization: "Поспешная оптимизация - корень всех зол. - Donald Knuth"
# tip_brute_force: "When in doubt, use brute force. - Ken Thompson"
customize_wizard: "Настройки волшебника"
@ -274,9 +274,9 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
choose_hero_tab: "Перезапустить уровень"
save_load_tab: "Сохранить/Загрузить"
options_tab: "Настройки"
# guide_tab: "Guide"
guide_tab: "Руководство"
multiplayer_tab: "Мультиплеер"
# inventory_caption: "Equip your hero"
inventory_caption: "Оденьте своего героя"
choose_hero_caption: "Выбор героя, языка"
# save_load_caption: "... and view history"
# options_caption: "Configure settings"
@ -305,7 +305,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
music_label: "Музыка"
music_description: "Фоновая музыка вкл/выкл"
autorun_label: "Автозапуск"
# autorun_description: "Control automatic code execution."
autorun_description: "Настройка автоматического выполнения кода."
editor_config: "Настройки редактора"
editor_config_title: "Настройки редактора"
editor_config_level_language_label: "Язык для этого уровня"
@ -417,7 +417,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
escape: "Escape"
# shift: "Shift"
cast_spell: "Произнести текущее заклинание."
# run_real_time: "Run in real time."
run_real_time: "Запустить в реальном времени."
continue_script: "Продолжить текущий скрипт."
skip_scripts: "Пропустить все возможные скрипты."
toggle_playback: "Переключить проигрывание/паузу."
@ -428,7 +428,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
toggle_grid: "Включить наложение сетки."
toggle_pathfinding: "Включить путевой оверлей.."
beautify: "Приукрасьте свой код стандартизацией его форматирования."
# maximize_editor: "Maximize/minimize code editor."
maximize_editor: "Развернуть/свернуть редактор кода."
move_wizard: "Перемещайте своего Волшебника по уровню."
community:
@ -477,7 +477,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
grassy: "Травянистый"
fork_title: "Форк новой версии"
fork_creating: "Создание форка..."
# generate_terrain: "Generate Terrain"
generate_terrain: "Создать ландшафт"
more: "Ещё"
wiki: "Вики"
live_chat: "Онлайн-чат"
@ -487,7 +487,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
level_tab_settings: "Настройки"
level_tab_components: "Компоненты"
level_tab_systems: "Системы"
# level_tab_docs: "Documentation"
level_tab_docs: "Документация"
level_tab_thangs_title: "Текущие объекты"
level_tab_thangs_all: "Все"
level_tab_thangs_conditions: "Начальные условия"
@ -522,7 +522,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
level_search_title: "Искать уровни"
achievement_search_title: "Искать достижения"
read_only_warning2: "Примечание: вы не можете сохранять любые правки здесь, потому что вы не авторизованы."
# no_achievements: "No achievements have been added for this level yet."
no_achievements: "Для этого уровня еще не были добавлены достижения."
# achievement_query_misc: "Key achievement off of miscellanea"
# achievement_query_goals: "Key achievement off of level goals"
# level_completion: "Level Completion"
@ -719,7 +719,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
unknown: "Неизвестная ошибка."
resources:
# sessions: "Sessions"
sessions: "Сессии"
your_sessions: "Ваши сессии"
level: "Уровень"
social_network_apis: "API социальных сетей"
@ -735,7 +735,7 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
patched_model: "Исходный документ"
model: "Модель"
system: "Система"
# systems: "Systems"
systems: "Системы"
component: "Компонент"
components: "Компоненты"
# thang: "Thang"
@ -756,13 +756,13 @@ module.exports = nativeDescription: "русский", englishDescription: "Russi
user_remark: "Пользовательские поправки"
# user_remarks: "User Remarks"
versions: "Версии"
# items: "Items"
# heroes: "Heroes"
# wizard: "Wizard"
# achievement: "Achievement"
items: "Предметы"
heroes: "Герои"
wizard: "Волшебник"
achievement: "Достижение"
# clas: "CLAs"
# play_counts: "Play Counts"
# feedback: "Feedback"
feedback: "Отзыв"
delta:
added: "Добавлено"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
adventurer_forum: "fóre pre dobrodruhov"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... v ktorom sa naučíš mágiu programovania."
campaign_old_beginner_description: "... v ktorom sa naučíš mágiu programovania."
campaign_dev: "Náhodné ťažšie úrovne"
campaign_dev_description: "... v ktorych sa naučíš používať rozhranie a čeliť väčším výzvam."
campaign_multiplayer: "Aréna pre viacerých hráčov"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "slovenčina", englishDescription: "Slovak",
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "slovenščina", englishDescription: "Sloven
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
adventurer_forum: "форуму Авантуриста"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... у којој учиш магију програмирања."
campaign_old_beginner_description: "... у којој учиш магију програмирања."
campaign_dev: "Насумични тежи нивои"
campaign_dev_description: "... у којима учиш о интерфејсу док радиш нешто теже."
campaign_multiplayer: "Арене за више играча"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "српски", englishDescription: "Serbian
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "Играј следећи ниво" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Иди на почетну" # Only in old-style levels.
victory_review: "Реци нам више!" # Only in old-style levels.
victory_hour_of_code_done: "Јеси ли завршио?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
adventurer_forum: "Äventyrarforumet"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... i vilken du lär dig programmerandets magi."
campaign_old_beginner_description: "... i vilken du lär dig programmerandets magi."
campaign_dev: "Slumpad svårare nivå"
campaign_dev_description: "... där du lär dig att hantera gränssnittet medan du gör något lite svårare."
campaign_multiplayer: "Flerspelararenor"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Svenska", englishDescription: "Swedish", tr
victory_return_to_ladder: "Gå tillbaka till stegen"
victory_play_next_level: "Spela nästa nivå" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "Gå hem" # Only in old-style levels.
victory_review: "Berätta mer!" # Only in old-style levels.
victory_hour_of_code_done: "Är du klar?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "ไทย", englishDescription: "Thai", tra
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "เล่นด่านถัดไป" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "ไปหน้าแรก" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
victory_hour_of_code_done: "เสร็จหรือยัง?"

View file

@ -6,27 +6,27 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
play: "Oyna" # The big play button that just starts playing a level
old_browser: "Olamaz, Tarayıcınız CodeCombat'ı çalıştırmak için çok eski. Üzgünüz!" # Warning that shows up on really old Firefox/Chrome/Safari
old_browser_suffix: "Deneyebilirsiniz, ama muhtemelen oyun çalışmayacaktır."
campaign: "Senaryo Modu"
campaign: "Senaryo Kipi"
for_beginners: "Yeni Başlayanlar için"
multiplayer: "Çoklu-oyuncu Modu" # Not currently shown on home page
multiplayer: "Çoklu-oyuncu Kipi" # Not currently shown on home page
for_developers: "Geliştiriciler için" # Not currently shown on home page.
# javascript_blurb: "The language of the web. Great for writing websites, web apps, HTML5 games, and servers." # Not currently shown on home page
# python_blurb: "Simple yet powerful, Python is a great general purpose programming language." # Not currently shown on home page
# coffeescript_blurb: "Nicer JavaScript syntax." # Not currently shown on home page
# clojure_blurb: "A modern Lisp." # Not currently shown on home page
# lua_blurb: "Game scripting language." # Not currently shown on home page
# io_blurb: "Simple but obscure." # Not currently shown on home page
javascript_blurb: "Web'in dili. web siteleri, web uygulamaları, HTML5 oyunları ve sunucular yazmak için mükemmeldir." # Not currently shown on home page
python_blurb: "Basit ancak güçlü. Python mükemmel bir genel amaçlı dildir." # Not currently shown on home page
coffeescript_blurb: "Daha iyi JavaScript sözdizimi." # Not currently shown on home page
clojure_blurb: "Modern bir Lisp." # Not currently shown on home page
lua_blurb: "Oyun betik dili." # Not currently shown on home page
io_blurb: "Basit fakat anlaşılması güç." # Not currently shown on home page
nav:
play: "Oyna" # The top nav bar entry where players choose which levels to play
# community: "Community"
community: "Topluluk"
editor: "Düzenleyici"
blog: "Blog"
forum: "Forum"
# account: "Account"
# profile: "Profile"
# stats: "Stats"
# code: "Code"
account: "Hesap"
profile: "Profil"
stats: "İstatistikler"
code: "Kod"
admin: "Yönetici" # Only shows up when you are an admin
home: "Anasayfa"
contribute: "Katkıda bulun"
@ -34,7 +34,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
about: "Hakkında"
contact: "İletişim"
twitter_follow: "Takip et"
# teachers: "Teachers"
teachers: "Öğretmenler"
modal:
close: "Kapat"
@ -54,41 +54,41 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
play:
play_as: "Olarak Oyna" # Ladder page
spectate: "İzleyici olarak katıl" # Ladder page
# players: "players" # Hover over a level on /play
# hours_played: "hours played" # Hover over a level on /play
# items: "Items" # Tooltip on item shop button from /play
# heroes: "Heroes" # Tooltip on hero shop button from /play
# achievements: "Achievements" # Tooltip on achievement list button from /play
# account: "Account" # Tooltip on account button from /play
# settings: "Settings" # Tooltip on settings button from /play
# next: "Next" # Go from choose hero to choose inventory before playing a level
# change_hero: "Change Hero" # Go back from choose inventory to choose hero
# choose_inventory: "Equip Items"
# older_campaigns: "Older Campaigns"
# anonymous: "Anonymous Player"
players: "oyuncu" # Hover over a level on /play
hours_played: "saat oynandı" # Hover over a level on /play
items: "Ögeler" # Tooltip on item shop button from /play
heroes: "Kahramanlar" # Tooltip on hero shop button from /play
achievements: "Başarımlar" # Tooltip on achievement list button from /play
account: "Hesap" # Tooltip on account button from /play
settings: "Ayarlar" # Tooltip on settings button from /play
next: "İleri" # Go from choose hero to choose inventory before playing a level
change_hero: "Kahramanı Değiştir" # Go back from choose inventory to choose hero
choose_inventory: "Ögeleri Giy"
older_campaigns: "Daha Eski Görevler"
anonymous: "Anonim Oyuncu"
level_difficulty: "Zorluk: "
campaign_beginner: "Acemi Seferi"
choose_your_level: "Seviye Seçimi" # The rest of this section is the old play view at /play-old and isn't very important.
adventurer_prefix: "Aşağıdaki seviyelerden birini doğrudan oynayabilirsiniz, veya seviye ile ilgili "
adventurer_forum: "Maceracı forumunda"
adventurer_suffix: " tartışabilirsiniz."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "Programlama büyüsünü öğrenmek için..."
campaign_old_beginner: "Eski Yeni Başlayan Görevi"
campaign_old_beginner_description: "Programlama büyüsünü öğrenmek için..."
campaign_dev: "Rastgele Daha Zor Seviyeler"
campaign_dev_description: "Biraz daha zor işlerle uğraşırken arayüzü öğrenmek için..."
campaign_multiplayer: "Çok Oyunculu Meydanlar"
campaign_multiplayer_description: "Diğer oyuncularla kafa kafaya verip kodlamak için..."
campaign_player_created: "Oyuncuların Oluşturdukları"
campaign_player_created_description: "<a href=\"/contribute#artisan\">Zanaatkâr Büyücüler</a>in yaratıcılıklarına karşı mücadele etmek için..."
# campaign_classic_algorithms: "Classic Algorithms"
# campaign_classic_algorithms_description: "... in which you learn the most popular algorithms in Computer Science."
campaign_classic_algorithms: "Klasik Algoritmalar"
campaign_classic_algorithms_description: "... Bilgisayar Bilimleri'nde öğrendiğiniz en yaygın algoritmalar."
login:
sign_up: "Kaydol"
sign_up: "Hesap Oluştur"
log_in: "Giriş Yap"
logging_in: "Giriş Yapılıyor"
log_out: "Çıkış Yap"
recover: "şifrenizi sıfırlayabilirsiniz."
recover: "hesabı kurtar."
signup:
create_account_title: "İlerlemenizi Kaydetmek için Hesap Oluşturun"
@ -99,43 +99,42 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
creating: "Hesap oluşturuluyor..."
sign_up: "Kaydol"
log_in: "buradan giriş yapabilirsiniz."
# social_signup: "Or, you can sign up through Facebook or G+:"
# required: "You need to log in before you can go that way."
social_signup: "veya Facebook ya da G+ ile oturum açabilirsiniz:"
required: "Buraya gidebilmeniz için oturum açmanız gerekli."
recover:
recover_account_title: "Hesabı Kurtar"
send_password: "Kurtarma Parolası Gönder"
# recovery_sent: "Recovery email sent."
recovery_sent: "Kurtarma e-postası gönderildi."
# items:
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
items:
armor: "Zırh"
hands: "Eller"
accessories: "Aksesuarlar"
minions: "Köleler"
misc: "Çeşitli"
common:
loading: "Yükleniyor..."
saving: "Kaydediliyor..."
sending: "Gönderiliyor..."
# send: "Send"
send: "Gönder"
cancel: "İptal"
save: "Kaydet"
# publish: "Publish"
publish: "Yayınla"
create: "Oluştur"
manual: "El ile"
fork: "Çatalla"
play: "Oyna" # When used as an action verb, like "Play next level"
retry: "Yeniden Dene"
# watch: "Watch"
# unwatch: "Unwatch"
# submit_patch: "Submit Patch"
watch: "İzle"
unwatch: "İzlemeyi Bırak"
submit_patch: "Yama Gönder"
general:
and: "ve"
name: "İsim"
# date: "Date"
date: "Tarih"
body: "Gövde"
version: "Sürüm"
commit_msg: "Gönderme İletisi"
@ -145,12 +144,12 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
results: "Sonuçlar"
description: "ıklama"
or: "veya"
# subject: "Subject"
subject: "Konu"
email: "E-posta"
password: "Şifre"
message: "İleti"
code: "Kod"
# ladder: "Ladder"
ladder: "Merdiven"
when: "iken"
opponent: "Rakip"
rank: "Sıra"
@ -161,7 +160,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
easy: "Kolay"
medium: "Normal"
hard: "Zor"
# player: "Player"
player: "Oyuncu"
units:
second: "saniye"
@ -170,28 +169,28 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
minutes: "dakika"
hour: "saat"
hours: "saat"
# day: "day"
# days: "days"
# week: "week"
# weeks: "weeks"
# month: "month"
# months: "months"
# year: "year"
# years: "years"
day: "gün"
days: "gün"
week: "hafta"
weeks: "hafta"
month: "ay"
months: "ay"
year: "yıl"
years: "yıl"
play_level:
done: "Tamamdır"
home: "Anasayfa"
# skip: "Skip"
# game_menu: "Game Menu"
skip: "Atla"
game_menu: "Oyun Menüsü"
guide: "Rehber"
restart: "Yeniden başlat"
goals: "Hedefler"
# goal: "Goal"
# success: "Success!"
# incomplete: "Incomplete"
# timed_out: "Ran out of time"
# failing: "Failing"
goal: "Amaç"
success: "Başarılı!"
incomplete: "Tamamlanmamış"
timed_out: "Süre bitti"
failing: "Başarısız"
action_timeline: "Eylem Çizelgesi"
click_to_select: "Birimi seçmek için üzerine tıklayın."
reload_title: "Tüm kod yeniden yüklensin mi?"
@ -199,39 +198,40 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
reload_confirm: "Tümünü Yeniden Yükle"
victory_title_prefix: ""
victory_title_suffix: "Tamamlandı "
victory_sign_up: " Güncellemelere Abone Ol"
victory_sign_up_poke: "Son haberleri e-postanızda görmek ister misiniz? Ücretsiz bir hesap oluşturmanız durumunda sizi bilgilendirebiliriz."
victory_sign_up: "İlerlemeyi Kaydetmek için Kaydolun"
victory_sign_up_poke: "Kodu kaydetmek ister misiniz? Ücretsiz bir hesap oluşturun!"
victory_rate_the_level: "Seviyeyi oyla:" # Only in old-style levels.
# victory_return_to_ladder: "Return to Ladder"
victory_return_to_ladder: "Merdivene Dön"
victory_play_next_level: "Sonraki Seviyeyi Oyna: " # Only in old-style levels.
# victory_play_continue: "Continue"
victory_play_continue: "Devam Et"
victory_saving_progress: "İlerlemeyi Kaydediliyor"
victory_go_home: "Anasayfaya Git" # Only in old-style levels.
victory_review: "Daha detaylı bilgi verebilirsiniz!" # Only in old-style levels.
victory_review: "Daha fazla söyleyin!" # Only in old-style levels.
victory_hour_of_code_done: "Bitirdiniz mi?"
victory_hour_of_code_done_yes: "Evet, Kod Saatimi (Hour of Code) bitirdim!"
guide_title: "Rehber"
tome_minion_spells: "Minyonlarınızın Büyüleri" # Only in old-style levels.
tome_read_only_spells: "Salt Okunur Büyüler" # Only in old-style levels.
tome_other_units: "Diğer Birimler" # Only in old-style levels.
tome_cast_button_castable: "Fırlatılabilir" # Temporary, if tome_cast_button_run isn't translated.
tome_cast_button_casting: "Fırlatılıyor" # Temporary, if tome_cast_button_running isn't translated.
tome_cast_button_cast: "Fırlat" # Temporary, if tome_cast_button_ran isn't translated.
# tome_cast_button_run: "Run"
# tome_cast_button_running: "Running"
# tome_cast_button_ran: "Ran"
# tome_submit_button: "Submit"
# tome_reload_method: "Reload original code for this method" # Title text for individual method reload button.
# tome_select_method: "Select a Method"
# tome_see_all_methods: "See all methods you can edit" # Title text for method list selector (shown when there are multiple programmable methdos).
tome_cast_button_castable: "Başlatılabilir" # Temporary, if tome_cast_button_run isn't translated.
tome_cast_button_casting: "Başlatılıyor" # Temporary, if tome_cast_button_running isn't translated.
tome_cast_button_cast: "Başlat" # Temporary, if tome_cast_button_ran isn't translated.
tome_cast_button_run: "Çalıştır"
tome_cast_button_running: "Çalıştırılıyor"
tome_cast_button_ran: "Çalıştırıldı"
tome_submit_button: "Gönder"
tome_reload_method: "Bu yöntem için özgün kodu yeniden yükle" # Title text for individual method reload button.
tome_select_method: "Bir Yöntem Seçin"
tome_see_all_methods: "Düzenleyebileceğiniz tüm yöntemleri görün" # Title text for method list selector (shown when there are multiple programmable methdos).
tome_select_a_thang: "Birini seç..."
tome_available_spells: "Kullanılabilir Büyüler"
# tome_your_skills: "Your Skills"
tome_your_skills: "Yetenekleriniz"
hud_continue: "Devam (ÜstKarakter+Boşluk)"
spell_saved: "Büyü Kaydedildi"
skip_tutorial: "Atla (esc)"
# keyboard_shortcuts: "Key Shortcuts"
keyboard_shortcuts: "Klavye Kısayolları"
loading_ready: "Hazır!"
# loading_start: "Start Level"
loading_start: "Seviyeyi Başlat"
time_current: "Şimdi:"
time_total: "Max:"
time_goto: "Git:"
@ -270,30 +270,30 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
customize_wizard: "Sihirbazı Düzenle"
game_menu:
# inventory_tab: "Inventory"
# choose_hero_tab: "Restart Level"
# save_load_tab: "Save/Load"
# options_tab: "Options"
# guide_tab: "Guide"
inventory_tab: "Envanter"
choose_hero_tab: "Seviyeyi Yeniden Başlat"
save_load_tab: "Kaydet/Yükle"
options_tab: "Seçenekler"
guide_tab: "Rehber"
multiplayer_tab: "Çoklu-oyuncu"
# inventory_caption: "Equip your hero"
# choose_hero_caption: "Choose hero, language"
# save_load_caption: "... and view history"
# options_caption: "Configure settings"
# guide_caption: "Docs and tips"
# multiplayer_caption: "Play with friends!"
inventory_caption: "Kahramanınızı donatın"
choose_hero_caption: "Kahraman, dil seçin"
save_load_caption: "... ve geçmişe bak"
options_caption: "Ayarları yapılandır"
guide_caption: "Belgeler ve ipuçları"
multiplayer_caption: "Arkadaşlarla oyna!"
# inventory:
# choose_inventory: "Equip Items"
inventory:
choose_inventory: "Ögeleri Donan"
# choose_hero:
# choose_hero: "Choose Your Hero"
# programming_language: "Programming Language"
# programming_language_description: "Which programming language do you want to use?"
# status: "Status"
# weapons: "Weapons"
# health: "Health"
# speed: "Speed"
choose_hero:
choose_hero: "Kahramanınızı Seçin"
programming_language: "Programlama Dili"
programming_language_description: "Hangi programlama dilini kullanmak istiyorsunuz?"
status: "Durum"
weapons: "Silahlar"
health: "Sağlık"
speed: "Hız"
# save_load:
# granularity_saved_games: "Saved"
@ -376,14 +376,14 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
autosave: "Değişiklikler Kendiliğinden Kaydedilir"
me_tab: "Ben"
picture_tab: "Resim"
# upload_picture: "Upload a picture"
upload_picture: "Bir Resim Yükle"
password_tab: "Şifre"
emails_tab: "E-postalar"
admin: "Yönetici"
new_password: "Yeni Şifre"
new_password_verify: "Teyit Et"
email_subscriptions: "E-posta Abonelikleri"
# email_subscriptions_none: "No Email Subscriptions."
email_subscriptions_none: "E-posta aboneliği yok."
email_announcements: "Duyurular"
email_announcements_description: "CodeCombat ile ilgili son haberlere ve gelişmelere ulaşın."
email_notifications: "Bilgilendirme"
@ -401,7 +401,7 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
error_saving: "Kayıt Esnasında Hata"
saved: "Değişiklikler Kaydedildi"
password_mismatch: "Şifreler Uyuşmuyor"
# password_repeat: "Please repeat your password."
password_repeat: "Lütfen şifrenizi yenileyin."
# job_profile: "Job Profile" # Rest of this section (the job profile stuff and wizard stuff) is deprecated
# job_profile_approved: "Your job profile has been approved by CodeCombat. Employers will be able to see it until you either mark it inactive or it has not been changed for four weeks."
# job_profile_explanation: "Hi! Fill this out, and we will get in touch about finding you a software developer job."
@ -410,14 +410,14 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
wizard_tab: "Sihirbaz"
wizard_color: "Sihirbaz Kıyafeti Rengi"
# keyboard_shortcuts:
# keyboard_shortcuts: "Keyboard Shortcuts"
# space: "Space"
# enter: "Enter"
# escape: "Escape"
# shift: "Shift"
# cast_spell: "Cast current spell."
# run_real_time: "Run in real time."
keyboard_shortcuts:
keyboard_shortcuts: "Klavye Kısayolları"
space: "Boşluk"
enter: "Enter"
escape: "Escape"
shift: "ÜstKarakter"
cast_spell: "Geçerli büyüyü çalıştır."
run_real_time: "Eşzamanlı çalış."
# continue_script: "Continue past current script."
# skip_scripts: "Skip past all skippable scripts."
# toggle_playback: "Toggle play/pause."
@ -468,32 +468,32 @@ module.exports = nativeDescription: "Türkçe", englishDescription: "Turkish", t
article_title: "Makale Düzenleyici"
thang_title: "Nesne Düzenleyici"
level_title: "Bölüm Düzenleyici"
# achievement_title: "Achievement Editor"
# back: "Back"
achievement_title: "Başarı Düzenleyici"
back: "Geri"
revert: "Geri al"
revert_models: "Önceki Modeller"
# pick_a_terrain: "Pick A Terrain"
# small: "Small"
# grassy: "Grassy"
# fork_title: "Fork New Version"
# fork_creating: "Creating Fork..."
# generate_terrain: "Generate Terrain"
# more: "More"
# wiki: "Wiki"
# live_chat: "Live Chat"
pick_a_terrain: "Bir Arazi Seçin"
small: "Küçük"
grassy: "Çimli"
fork_title: "Yeni Sürüm Çatalla"
fork_creating: "Çatal Oluşturuluyor..."
generate_terrain: "Arazi Oluştur"
more: "Daha Fazla"
wiki: "Viki"
live_chat: "Canlı Sohbet"
level_some_options: "Bazı Seçenekler?"
level_tab_thangs: "Nesneler"
level_tab_scripts: "Betikler"
level_tab_settings: "Ayarlar"
level_tab_components: "Bileşenler"
level_tab_systems: "Sistemler"
# level_tab_docs: "Documentation"
level_tab_docs: "Belgelendirme"
level_tab_thangs_title: "Geçerli Şartlar"
# level_tab_thangs_all: "All"
level_tab_thangs_all: "Tüm"
level_tab_thangs_conditions: "Başlama Şartları"
level_tab_thangs_add: "Nesne Ekle"
# delete: "Delete"
# duplicate: "Duplicate"
delete: "Sil"
duplicate: "Kopyala"
level_settings_title: "Ayarlar"
level_component_tab_title: "Geçerli Bileşenler"
level_component_btn_new: "Yeni Bileşen Oluştur"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
adventurer_forum: "форумі Шукачів пригод"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "... у якій ви навчитеся магії програмування."
campaign_old_beginner_description: "... у якій ви навчитеся магії програмування."
campaign_dev: "Випадкові складніші рівні"
campaign_dev_description: "... в яких ви вивчите інтерфейс, одночасно роблячи щось складніше."
campaign_multiplayer: "Арени для мультиплеєра"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "українська мова", englishDesc
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "українська мова", englishDesc
victory_return_to_ladder: "Повернутись до таблиці рівнів"
victory_play_next_level: "Наступний рівень" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "На головну" # Only in old-style levels.
victory_review: "Розкажіть нам більше!" # Only in old-style levels.
victory_hour_of_code_done: "Ви закінчили?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "اُردُو", englishDescription: "Urdu",
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
adventurer_forum: "diễn đàn Adventurer"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
campaign_dev: "Các cấp độ khó hơn ngẫu nhiên"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
campaign_multiplayer: "Khu vực đa người chơi"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "Tiếng Việt", englishDescription: "Vietn
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -34,7 +34,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
about: "关于"
contact: "联系我们"
twitter_follow: "关注"
# teachers: "Teachers"
teachers: "教师"
modal:
close: "关闭"
@ -52,16 +52,16 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
subscribe_as_diplomat: "提交翻译人员申请"
play:
play_as: "Play As" # Ladder page
# play_as: "Play As" # Ladder page
spectate: "旁观他人的游戏" # Ladder page
# players: "players" # Hover over a level on /play
# hours_played: "hours played" # Hover over a level on /play
# items: "Items" # Tooltip on item shop button from /play
# heroes: "Heroes" # Tooltip on hero shop button from /play
items: "道具" # Tooltip on item shop button from /play
heroes: "英雄" # Tooltip on hero shop button from /play
achievements: "成就" # Tooltip on achievement list button from /play
account: "账户" # Tooltip on account button from /play
settings: "设置" # Tooltip on settings button from /play
# next: "Next" # Go from choose hero to choose inventory before playing a level
next: "下一步" # Go from choose hero to choose inventory before playing a level
change_hero: "重新选择英雄" # Go back from choose inventory to choose hero
choose_inventory: "装备道具"
older_campaigns: "旧的战役"
@ -73,7 +73,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
adventurer_forum: "冒险者论坛"
adventurer_suffix: ""
campaign_old_beginner: "旧的新手战役"
campaign_beginner_description: "……在这里你可以学习到编程技巧。"
campaign_old_beginner_description: "……在这里你可以学习到编程技巧。"
campaign_dev: "随机困难关卡"
campaign_dev_description: "……在这里你可以学到做一些复杂功能的接口。"
campaign_multiplayer: "多人竞技场"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
armor: "盔甲"
hands: "手持"
accessories: "配饰"
books: "图书"
minions: "部下"
misc: "辅助道具"
@ -204,7 +203,8 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
victory_rate_the_level: "评估关卡:" # Only in old-style levels.
victory_return_to_ladder: "返回"
victory_play_next_level: "下一关" # Only in old-style levels.
# victory_play_continue: "Continue"
victory_play_continue: "继续"
# victory_saving_progress: "Saving Progress"
victory_go_home: "返回主页" # Only in old-style levels.
victory_review: "给我们反馈!" # Only in old-style levels.
victory_hour_of_code_done: "你完成了吗?"
@ -283,8 +283,8 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
# guide_caption: "Docs and tips"
# multiplayer_caption: "Play with friends!"
# inventory:
# choose_inventory: "Equip Items"
inventory:
choose_inventory: "装备道具"
choose_hero:
choose_hero: "请选择您的英雄"
@ -334,9 +334,9 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
why_paragraph_2_suffix: "这就是为什么 CodeCombat 是个多人游戏,而不是一个游戏化的编程课。你不停,我们就不停——但这次这是件好事。"
why_paragraph_3: "如果你一定要对游戏上瘾,那就对这个游戏上瘾,然后成为科技时代的法师吧。"
press_title: "博客/媒体"
# press_paragraph_1_prefix: "Want to write about us? Feel free to download and use all of the resources included in our"
# press_paragraph_1_link: "press packet"
# press_paragraph_1_suffix: ". All logos and images may be used without contacting us directly."
press_paragraph_1_prefix: "想要报道我们? 您可以自由下载和使用"
press_paragraph_1_link: "成套宣传包"
press_paragraph_1_suffix: "里的所有材料. 所有商标和图像的使用都不必事先联系我们。"
team: "团队"
# george_title: "CEO"
# george_blurb: "Businesser"
@ -541,7 +541,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
introduction_desc_ending: "我们希望你也能一起加入进来!"
introduction_desc_signature: "- Nick, George, Scott, Michael, Jeremy 以及 Matt"
alert_account_message_intro: "你好!"
# alert_account_message: "To subscribe for class emails, you'll need to be logged in first."
alert_account_message: "想要订阅邮件? 您必须先登录"
archmage_summary: "你对游戏图像、界面设计、数据库和服务器运营、多人在线、物理、声音、游戏引擎性能感兴趣吗?想做一个教别人编程的游戏吗?如果你有编程经验,想要开发 CodeCombat ,那就选择这个职业吧。我们会非常高兴在制作史上最棒编程游戏的过程中得到你的帮助。"
archmage_introduction: "制作游戏时,最令人激动的事莫过于整合诸多东西。图像、音响、实时网络交流、社交网络,从底层数据库管理到服务器运维,再到用户界面的设计和实现。制作游戏有很多事情要做,所以如果你有编程经验, 那么你应该选择这个职业。我们会很高兴在制作史上最好编程游戏的路上有你的陪伴."
class_attributes: "职业说明"
@ -670,25 +670,25 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
# rules: "Rules"
# winners: "Winners"
# user:
# stats: "Stats"
# singleplayer_title: "Singleplayer Levels"
# multiplayer_title: "Multiplayer Levels"
# achievements_title: "Achievements"
# last_played: "Last Played"
# status: "Status"
# status_completed: "Completed"
# status_unfinished: "Unfinished"
# no_singleplayer: "No Singleplayer games played yet."
# no_multiplayer: "No Multiplayer games played yet."
# no_achievements: "No Achievements earned yet."
# favorite_prefix: "Favorite language is "
# favorite_postfix: "."
user:
stats: "成就"
singleplayer_title: "单人关卡"
multiplayer_title: "多人关卡"
achievements_title: "成就"
last_played: "最近玩的时间"
status: "状态"
status_completed: "完成"
status_unfinished: "未完成"
no_singleplayer: "还未玩过任何单人关卡。"
no_multiplayer: "还未玩过任何多人关卡。"
no_achievements: "还未得到任何成就"
favorite_prefix: "最喜爱的语言是 "
favorite_postfix: "."
# achievements:
# last_earned: "Last Earned"
# amount_achieved: "Amount"
# achievement: "Achievement"
achievements:
last_earned: "最近取得的时间"
amount_achieved: "数量"
achievement: "成就"
# category_contributor: "Contributor"
# category_miscellaneous: "Miscellaneous"
# category_levels: "Levels"
@ -701,9 +701,9 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
# left_xp_infix: " until level "
# left_xp_postfix: ""
# account:
# recently_played: "Recently Played"
# no_recent_games: "No games played during the past two weeks."
account:
recently_played: "最近玩过的关卡"
no_recent_games: "最近两个星期没有玩过游戏。"
loading_error:
could_not_load: "载入失败"
@ -730,7 +730,7 @@ module.exports = nativeDescription: "简体中文", englishDescription: "Chinese
# gplus_friend_sessions: "G+ Friend Sessions"
leaderboard: "排行榜"
user_schema: "用户模式"
user_profile: "User Profile"
user_profile: "用户信息"
patches: "补丁"
# patched_model: "Source Document"
# model: "Model"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
adventurer_forum: "冒險家論壇"
adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "...在這裡可以學到編程技巧。"
campaign_old_beginner_description: "...在這裡可以學到編程技巧。"
campaign_dev: "隨機關卡"
campaign_dev_description: "...在這裡你可以學到做一些較複雜的程式技巧。"
campaign_multiplayer: "多人競技場"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "繁体中文", englishDescription: "Chinese
# victory_return_to_ladder: "Return to Ladder"
victory_play_next_level: "下一關" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "返回首頁" # Only in old-style levels.
victory_review: "給我們回饋!" # Only in old-style levels.
victory_hour_of_code_done: "你完成了嗎?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# adventurer_forum: "the Adventurer forum"
# adventurer_suffix: "."
# campaign_old_beginner: "Old Beginner Campaign"
# campaign_beginner_description: "... in which you learn the wizardry of programming."
# campaign_old_beginner_description: "... in which you learn the wizardry of programming."
# campaign_dev: "Random Harder Levels"
# campaign_dev_description: "... in which you learn the interface while doing something a little harder."
# campaign_multiplayer: "Multiplayer Arenas"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "吴语", englishDescription: "Wuu (Simplifi
# victory_return_to_ladder: "Return to Ladder"
# victory_play_next_level: "Play Next Level" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
# victory_go_home: "Go Home" # Only in old-style levels.
# victory_review: "Tell us more!" # Only in old-style levels.
# victory_hour_of_code_done: "Are You Done?"

View file

@ -73,7 +73,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
adventurer_forum: "冒險者論壇"
adventurer_suffix: ""
# campaign_old_beginner: "Old Beginner Campaign"
campaign_beginner_description: "……徠箇裏爾學得到編程手法。"
campaign_old_beginner_description: "……徠箇裏爾學得到編程手法。"
campaign_dev: "照摸難關"
campaign_dev_description: "……徠箇搭爾學得到做一許囉唆功能個接口。"
campaign_multiplayer: "多人競賽場"
@ -111,7 +111,6 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
# armor: "Armor"
# hands: "Hands"
# accessories: "Accessories"
# books: "Books"
# minions: "Minions"
# misc: "Misc"
@ -205,6 +204,7 @@ module.exports = nativeDescription: "吳語", englishDescription: "Wuu (Traditio
victory_return_to_ladder: "走轉"
victory_play_next_level: "下關" # Only in old-style levels.
# victory_play_continue: "Continue"
# victory_saving_progress: "Saving Progress"
victory_go_home: "轉到主頁" # Only in old-style levels.
victory_review: "搭我裏反應!" # Only in old-style levels.
victory_hour_of_code_done: "爾妝下落爻噃?"

View file

@ -78,7 +78,8 @@ class CocoModel extends Backbone.Model
thisTV4.addSchema('metaschema', require('schemas/metaschema'))
TreemaNode.utils.populateDefaults(clone, @schema(), thisTV4)
@attributesWithDefaults = clone
console.debug "Populated defaults for #{@attributes.name or @type()} in #{new Date() - t0}ms"
duration = new Date() - t0
console.debug "Populated defaults for #{@attributes.name or @type()} in #{duration}ms" if duration > 10
loadFromBackup: ->
return unless @saveBackups

View file

@ -8,8 +8,8 @@ module.exports = class Level extends CocoModel
@schema: require 'schemas/models/level'
urlRoot: '/db/level'
serialize: (supermodel, session, cached=false) ->
o = @denormalize supermodel, session # hot spot to optimize
serialize: (supermodel, session, otherSession, cached=false) ->
o = @denormalize supermodel, session, otherSession # hot spot to optimize
# Figure out Components
o.levelComponents = if cached then @getCachedLevelComponents(supermodel) else $.extend true, [], (lc.attributes for lc in supermodel.getModels LevelComponent)
@ -44,17 +44,24 @@ module.exports = class Level extends CocoModel
newLevelComponents.push(@cachedLevelComponents[levelComponent.id])
newLevelComponents
denormalize: (supermodel, session) ->
denormalize: (supermodel, session, otherSession) ->
o = $.extend true, {}, @attributes
if o.thangs and @get('type', true) is 'hero'
# TOOD: figure out if/when/how we are doing this for non-Hero levels that aren't expecting denormalization.
if o.thangs and @get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
for levelThang in o.thangs
@denormalizeThang(levelThang, supermodel, session)
@denormalizeThang(levelThang, supermodel, session, otherSession)
o
denormalizeThang: (levelThang, supermodel, session) ->
denormalizeThang: (levelThang, supermodel, session, otherSession) ->
levelThang.components ?= []
isHero = levelThang.id is 'Hero Placeholder'
isHero = /Hero Placeholder/.test levelThang.id
if isHero and otherSession
# If it's a hero and there's another session, find the right session for it.
# If there is no other session (playing against default code, or on single player), clone all placeholders.
# TODO: actually look at the teams on these Thangs to determine which session should go with which placeholder.
if levelThang.id is 'Hero Placeholder 1' and session.get('team') is 'humans'
session = otherSession
else if levelThang.id is 'Hero Placeholder' and session.get('team') is 'ogres'
session = otherSession
# Empty out placeholder Components and store their values if we're the hero placeholder.
if isHero
@ -129,6 +136,7 @@ module.exports = class Level extends CocoModel
# Example: Programmable must come last, since it has to override any Component-provided methods that any other Component might have created. Can't enumerate all soft dependencies.
# Example: Plans needs to come after everything except Programmable, since other Components that add plannable methods need to have done so by the time Plans is attached.
# Example: Collides doesn't depend on Allied, but if both exist, Collides must come after Allied. Soft dependency example. Can't just figure out a proper priority to take care of it.
# Example: Moves doesn't depend on Acts, but if both exist, Moves must come after Acts. Another soft dependency example.
# Decision? Just special case the sort logic in here until we have more examples than these two and decide how best to handle most of the cases then, since we don't really know the whole of the problem yet.
# TODO: anything that depends on Programmable will break right now.
@ -158,10 +166,13 @@ module.exports = class Level extends CocoModel
console.error parentType, thang.id or thang.name, 'does not have dependent Component', dependent, 'from', lc.name
visit c2 if c2
if lc.name is 'Collides'
allied = _.find levelComponents, {name: 'Allied'}
if allied
collides = _.find(thang.components, {original: allied.original})
visit collides if collides
if allied = _.find levelComponents, {name: 'Allied'}
allied = _.find(thang.components, {original: allied.original})
visit allied if allied
if lc.name is 'Moves'
if acts = _.find levelComponents, {name: 'Acts'}
acts = _.find(thang.components, {original: acts.original})
visit acts if acts
#console.log thang.id, 'sorted comps adding', lc.name
sorted.push c
for comp in thang.components

View file

@ -121,7 +121,7 @@ module.exports = class SuperModel extends Backbone.Model
if cachedModel
clone = $.extend true, {}, model.attributes
cachedModel.set(clone, {silent: true, fromMerge: true})
console.debug "Updated cached model <#{cachedModel.get('name') or cachedModel.getURL()}> with new data"
#console.debug "Updated cached model <#{cachedModel.get('name') or cachedModel.getURL()}> with new data"
else
@registerModel(model)
collection

View file

@ -43,7 +43,7 @@ module.exports = class ThangType extends CocoModel
isFullyLoaded: ->
# TODO: Come up with a better way to identify when the model doesn't have everything needed to build the sprite. ie when it's a projection without all the required data.
return @get('actions') or @get('raster') # needs one of these two things
loadRasterImage: ->
return if @loadingRaster or @loadedRaster
return unless raster = @get('raster')
@ -57,7 +57,7 @@ module.exports = class ThangType extends CocoModel
@loadingRaster = false
@trigger('raster-image-load-errored', @)
)
getActions: ->
return {} unless @isFullyLoaded()
return @actions or @buildActions()
@ -72,11 +72,6 @@ module.exports = class ThangType extends CocoModel
@actions[relatedAction.name] = relatedAction
@actions
getSpriteSheet: (options) ->
options = @fillOptions options
key = @spriteSheetKey(options)
return @spriteSheets[key] or @buildSpriteSheet(options)
fillOptions: (options) ->
options ?= {}
options = _.clone options
@ -240,6 +235,7 @@ module.exports = class ThangType extends CocoModel
return if _.isString spriteSheet
return unless spriteSheet
canvas = $("<canvas width='#{size}' height='#{size}'></canvas>")
console.log 'made canvas', canvas, 'with size', size unless canvas[0]
stage = new createjs.Stage(canvas[0])
sprite = new createjs.Sprite(spriteSheet)
pt = @actions.portrait?.positions?.registration

View file

@ -31,6 +31,7 @@ GoalSchema = c.object {title: 'Goal', description: 'A goal that the player can a
worldEndsAfter: {title: 'World Ends After', description: 'When included, ends the world this many seconds after this goal succeeds or fails.', type: 'number', minimum: 0, exclusiveMinimum: true, maximum: 300, default: 3}
howMany: {title: 'How Many', description: 'When included, require only this many of the listed goal targets instead of all of them.', type: 'integer', minimum: 1}
hiddenGoal: {title: 'Hidden', description: 'Hidden goals don\'t show up in the goals area for the player until they\'re failed. (Usually they\'re obvious, like "don\'t die".)', 'type': 'boolean' }
optional: {title: 'Optional', description: 'Optional goals do not need to be completed for overallStatus to be success.', type: 'boolean'}
team: c.shortString(title: 'Team', description: 'Name of the team this goal is for, if it is not for all of the playable teams.')
killThangs: c.array {title: 'Kill Thangs', description: 'A list of Thang IDs the player should kill, or team names.', uniqueItems: true, minItems: 1, 'default': ['ogres']}, thang
saveThangs: c.array {title: 'Save Thangs', description: 'A list of Thang IDs the player should save, or team names', uniqueItems: true, minItems: 1, 'default': ['humans']}, thang
@ -62,6 +63,8 @@ GoalSchema = c.object {title: 'Goal', description: 'A goal that the player can a
keepFromCollectingThangs: c.object {title: 'Keep From Collecting', description: 'Thangs that the player must prevent other Thangs from collecting.', required: ['who', 'targets']},
who: c.array {title: 'Who', description: 'The Thangs which must not collect the target items.', minItems: 1}, thang
targets: c.array {title: 'Targets', description: 'The target items which the Thangs must not collect.', minItems: 1}, thang
codeProblems: c.array {title: 'Code Problems', description: 'A list of Thang IDs that should not have any code problems, or team names.', uniqueItems: true, minItems: 1, 'default': ['humans']}, thang
linesOfCode: {title: 'Lines of Code', description: 'A mapping of Thang IDs or teams to how many many lines of code should be allowed (well, statements).', type: 'object', default: {humans: 10}, additionalProperties: {type: 'integer', description: 'How many lines to allow for this Thang.'}}
ResponseSchema = c.object {title: 'Dialogue Button', description: 'A button to be shown to the user with the dialogue.', required: ['text']},
text: {title: 'Title', description: 'The text that will be on the button', 'default': 'Okay', type: 'string', maxLength: 30}
@ -244,7 +247,7 @@ _.extend LevelSchema.properties,
icon: {type: 'string', format: 'image-file', title: 'Icon'}
banner: {type: 'string', format: 'image-file', title: 'Banner'}
goals: c.array {title: 'Goals', description: 'An array of goals which are visible to the player and can trigger scripts.'}, GoalSchema
type: c.shortString(title: 'Type', description: 'What kind of level this is.', 'enum': ['campaign', 'ladder', 'ladder-tutorial', 'hero'])
type: c.shortString(title: 'Type', description: 'What kind of level this is.', 'enum': ['campaign', 'ladder', 'ladder-tutorial', 'hero', 'hero-ladder', 'hero-coop'])
terrain: c.terrainString
showsGuide: c.shortString(title: 'Shows Guide', description: 'If the guide is shown at the beginning of the level.', 'enum': ['first-time', 'always'])

View file

@ -110,6 +110,22 @@ _.extend LevelSessionSchema.properties,
type: 'object'
properties:
status: enum: ['failure', 'incomplete', 'success']
submissionCount:
description: 'How many times the session has been submitted for real-time playback (can affect the random seed).'
type: 'integer'
minimum: 0
flagHistory:
description: 'The history of flag events during the last real-time playback submission.'
type: 'array'
items: c.object {required: ['player', 'color', 'time', 'active']},
player: {type: 'string'}
team: {type: 'string'}
color: {type: 'string', enum: ['green', 'black', 'violet']}
time: {type: 'number', minimum: 0}
active: {type: 'boolean'}
pos: c.object {required: ['x', 'y']},
x: {type: 'number'}
y: {type: 'number'}
code:
type: 'object'

View file

@ -7,10 +7,12 @@ module.exports =
preload: {type: 'boolean'}
realTime: {type: 'boolean'}
'tome:cast-spells': c.object {title: 'Cast Spells', description: 'Published when spells are cast', required: ['spells', 'preload', 'realTime']},
'tome:cast-spells': c.object {title: 'Cast Spells', description: 'Published when spells are cast', required: ['spells', 'preload', 'realTime', 'submissionCount', 'flagHistory']},
spells: [type: 'object']
preload: [type: 'boolean']
realTime: [type: 'boolean']
submissionCount: [type: 'integer']
flagHistory: [type: 'array']
'tome:manual-cast': c.object {title: 'Manually Cast Spells', description: 'Published when you wish to manually recast all spells', required: []},
realTime: {type: 'boolean'}

View file

@ -30,3 +30,16 @@ module.exports =
thang: {type: 'object'}
'world:custom-script-trigger': {type: 'object'}
'world:user-code-problem': c.object {required: ['thang', 'problem']},
thang: {type: 'object'}
problem: c.object {required: ['message', 'level', 'type']}, #, 'userInfo', 'error']},
userInfo: {type: 'object'}
message: {type: 'string'}
level: {type: 'string', enum: ['info', 'warning', 'error']}
type: {type: 'string'}
error: {type: 'object'}
'world:lines-of-code-counted': c.object {required: ['thang', 'linesUsed']},
thang: {type: 'object'}
linesUsed: {type: 'integer'}

View file

@ -86,6 +86,12 @@
-ms-flex-pack: justify
justify-content: space-between
@mixin flex-justify-center()
-webkit-box-pack: center
-webkit-justify-content: center
-ms-flex-pack: center
justify-content: center
@mixin flex-align-content-start()
-webkit-align-content: flex-start
-ms-flex-align-content: flex-start

View file

@ -1,18 +1,32 @@
@import "app/styles/mixins"
@import "app/styles/bootstrap/variables"
#hero-victory-modal
//- Top-level modal container
.modal-dialog
margin-top: 15px
padding-top: 0
//- Header
.background-wrapper
background: url("/images/pages/play/level/modal/victory_modal_background.png")
height: 650px
//background: url("/images/pages/play/level/modal/victory_modal_background.png")
width: 550px
border-width: 25px
border-image: url("/images/pages/play/level/modal/victory_modal_background.png") 25 fill round
border-radius: 10px
#victory-header
display: block
margin: 40px auto 0
margin: 15px auto 0
// http://easings.net/#easeOutBack plus tweaked a bit: http://cubic-bezier.com/#.18,.68,.75,2
@include transition(0.5s cubic-bezier(0.18, 0.68, 0.75, 2))
&.out
@include scale(0)
.modal-header
height: 110px
height: 85px
border: none
@ -20,6 +34,7 @@
.modal-body
padding: 0 20px
min-height: 30px
.achievement-panel
background: url("/images/pages/play/level/modal/achievement_plate.png")
@ -28,15 +43,12 @@
margin: 5px auto
position: relative
-webkit-transition-duration: 1s
-moz-transition-duration: 1s
-o-transition-duration: 1s
transition-duration: 1s
@include transition-duration(1s)
-webkit-filter: grayscale(100%)
-moz-filter: grayscale(100%)
-o-filter: grayscale(100%)
filter: grayscale(100%)
-webkit-filter: grayscale(100%) brightness(75%)
-moz-filter: grayscale(100%) brightness(75%)
-o-filter: grayscale(100%) brightness(75%)
filter: grayscale(100%) brightness(75%)
&.earned
-webkit-filter: none
@ -44,7 +56,11 @@
-o-filter: none
filter: none
.achievement-description
@include opacity(1)
.achievement-description
@include opacity(0.75)
position: absolute
text-align: center
left: 95px
@ -54,25 +70,36 @@
white-space: nowrap
overflow: hidden
text-overflow: ellipsis
.achievement-rewards
position: absolute
left: 25px
right: 23px
top: 41px
bottom: 18px
@include flexbox()
@include flex-justify-center()
//- Reward panels
.reward-panel
background: url("/images/pages/play/level/modal/reward_plate.png")
background: url("/images/pages/play/level/modal/reward_plate.png")
width: 77px
height: 85px
float: left
margin: 0 1.8px
position: relative
z-index: 1
@include transition(0.25s ease)
&.animating
@include scale(1.5)
z-index: 2
&.numerical &.animating .reward-text
font-size: 18px
overflow: visible
bottom: 9px
.reward-image-container
top: 8px
@ -81,39 +108,27 @@
width: 56px
position: relative
-webkit-transform: scale(0, 0)
-moz-transform: scale(0, 0)
-o-transform: scale(0, 0)
transform: scale(0, 0)
-webkit-transition-duration: 0.5s
-moz-transition-duration: 0.5s
-o-transition-duration: 0.5s
transition-duration: 0.5s
@include scale(0)
@include transition-duration(0.5s)
&.show
-webkit-transform: scale(1, 1)
-moz-transform: scale(1, 1)
-o-transform: scale(1, 1)
transform: scale(1, 1)
@include scale(1)
&.pending-reward-image
img
-webkit-filter: brightness(2000%) contrast(25%)
-moz-filter: brightness(2000%) contrast(25%)
-o-filter: brightness(2000%) contrast(25%)
filter: brightness(2000%) contrast(25%)
img
margin: 0
position: absolute
top: 50%
left: 50%
margin-right: -50%
-webkit-transition-duration: 0.5s
-moz-transition-duration: 0.5s
-o-transition-duration: 0.5s
transition-duration: 0.5s
-webkit-transform: translate(-50%, -50%)
-moz-transform: translate(-50%, -50%)
-o-transform: translate(-50%, -50%)
transform: translate(-50%, -50%)
@include transition-duration(0.5s)
@include translate(-50%, -50%)
max-width: 56px
max-height: 55px
@ -130,59 +145,79 @@
white-space: nowrap
overflow: hidden
text-overflow: ellipsis
//- Pulse effect
@-webkit-keyframes pulse
+keyframes(rewardPulse)
from
-webkit-transform: translate(-50%, -50%) scale(1.0)
max-width: 56px
max-height: 55px
50%
-webkit-transform: translate(-50%, -50%) scale(1.3)
width: 66px
max-width: 66px
max-height: 66px
to
-webkit-transform: translate(-50%, -50%) scale(1.0)
max-width: 56px
max-height: 55px
@-moz-keyframes pulse
from
-moz-transform: translate(-50%, -50%) scale(1.0)
50%
-moz-transform: translate(-50%, -50%) scale(1.3)
to
-moz-transform: translate(-50%, -50%) scale(1.0)
.xp .pulse
@include animation(rewardPulse 0.15s infinite)
@-o-keyframes pulse
from
-o-transform: translate(-50%, -50%) scale(1.0)
50%
-o-transform: translate(-50%, -50%) scale(1.3)
to
-o-transform: translate(-50%, -50%) scale(1.0)
@keyframes pulse
from
transform: translate(-50%, -50%) scale(1.0)
50%
transform: translate(-50%, -50%) scale(1.3)
to
transform: translate(-50%, -50%) scale(1.0)
.pulse
-webkit-animation: pulse 0.5s infinite
-moz-animation: pulse 0.5s infinite
-o-animation: pulse 0.5s infinite
animation: pulse 0.5s infinite
.gems .pulse
@include animation(rewardPulse 0.25s infinite)
//- Footer
.modal-content
height: 650px // so the footer appears at the bottom
padding-bottom: 50px // so the footer appears at the bottom
&.with-sign-up .modal-content
padding-bottom: 100px // need more space for signup poke
.modal-footer
position: absolute
bottom: 20px
bottom: -20px
left: 20px
right: 20px
#totals
color: white
color: white
p.sign-up-poke
position: absolute
bottom: 60px
right: 20px
color: white
.sign-up-button
float: right
margin-left: 10px
.ladder-submission-view
display: inline-block
color: white
.rank-button.btn-block
display: inline-block
width: initial
padding-left: 19px
padding-right: 19px
.last-submitted
float: none
html.no-borderimage
#hero-victory-modal
.background-wrapper
background: url("/images/pages/play/level/modal/victory_modal_background.png")
height: 650px
#victory-header
margin-top: 40px
.modal-header
height: 110px
.modal-content
height: 650px
padding-bottom: 0
.modal-footer
bottom: 20px

View file

@ -9,7 +9,7 @@
left: 10px
right: 10px
background: transparent
border: 0
border: 1px solid transparent
padding: 0
text-shadow: none
color: white
@ -31,14 +31,14 @@
&:hover, &:focus
@include opacity(1)
.problem-hint
.problem-subtitle
font-size: 80%
//&.alert-error
&.alert-warning
border-image-source: url(/images/level/code_editor_warning_background.png)
&.alert-info
border-image-source: url(/images/level/code_editor_info_background.png)

View file

@ -42,12 +42,18 @@
position: relative
margin: 0 auto
canvas#surface
background-color: #333
canvas#webgl-surface, canvas#normal-surface
display: block
z-index: 1
margin: 0 auto
canvas#webgl-surface
background-color: #333
canvas#normal-surface
position: absolute
top: 0
pointer-events: none
min-width: 1024px
position: relative

View file

@ -287,3 +287,7 @@ $gameControlMargin: 30px
&.vol-down .glyphicon.glyphicon-volume-down
display: inline-block
body:not(.ipad) #world-map-view
.level-info-container
pointer-events: none

View file

@ -43,11 +43,11 @@
.form
.form-group.select-group
span.help-block(data-i18n="choose_hero.programming_language_description") Which programming language do you want to use?
label.control-label(for="option-code-language", data-i18n="choose_hero.programming_language") Programming Language
select#option-code-language(name="code-language")
for option in codeLanguages
option(value=option.id, selected=codeLanguage === option.id)= option.name
span.help-block(data-i18n="choose_hero.programming_language_description") Which programming language do you want to use?
if level
.form-group.select-group

View file

@ -5,6 +5,11 @@ block modal-header-content
h3
span(data-i18n="general.version_history_for") Version History for:
|"#{dataList[0].name}"
p
|Select two changes below to see the difference.
div.delta-container
div.delta-view
block modal-body-content
if dataList
@ -25,7 +30,4 @@ block modal-body-content
td= data.creator
td #{data.commitMessage}
div.delta-container
div.delta-view
block modal-footer-content

View file

@ -9,7 +9,6 @@
.progress-bar.progress-bar-success
#tip-wrapper
strong.tip(data-i18n='play_level.tip_insert_positions') Shift+Click a point on the map to insert it into the spell editor.
strong.tip(data-i18n='play_level.tip_toggle_play') Toggle play/paused with Ctrl+P.
strong.tip(data-i18n='play_level.tip_scrub_shortcut') Ctrl+[ and Ctrl+] rewind and fast-forward.
strong.tip(data-i18n='play_level.tip_guide_exists') Click the guide at the top of the page for useful info.

View file

@ -1,6 +1,6 @@
extends /templates/modal/modal_base
block modal-header-content
img(src="/images/pages/play/level/modal/victory_word.png")#victory-header
img(src="/images/pages/play/level/modal/victory_word.png")#victory-header.out
block modal-body-content
@ -14,32 +14,32 @@ block modal-body-content
div.achievement-rewards
- var worth = achievement.get('worth', true);
if worth
.reward-panel.numerical(data-number=worth, data-number-unit='xp')
.reward-image-container(class=animate?'':'show')
.reward-panel.numerical.xp(data-number=worth, data-number-unit='xp')
.reward-image-container(class=animate ? 'pending-reward-image' : 'show')
img(src="/images/pages/play/level/modal/reward_icon_xp.png")
.reward-text= animate ? 'x0' : '+'+worth
.reward-text= animate ? '+0' : '+'+worth
if rewards.gems
.reward-panel.numerical(data-number=rewards.gems, data-number-unit='gem')
.reward-image-container(class=animate?'':'show')
.reward-panel.numerical.gems(data-number=rewards.gems, data-number-unit='gem')
.reward-image-container(class=animate ? 'pending-reward-image' : 'show')
img(src="/images/pages/play/level/modal/reward_icon_gems.png")
.reward-text= animate ? 'x0' : '+'+rewards.gems
.reward-text= animate ? '+0' : '+'+rewards.gems
if rewards.heroes
for hero in rewards.heroes
- var hero = thangTypes[hero];
.reward-panel
.reward-image-container(class=animate?'':'show')
.reward-panel.hero(data-hero-thang-type=hero.get('original'))
.reward-image-container(class=animate ? 'pending-reward-image' : 'show')
img(src=hero.getPortraitURL())
.reward-text= hero.get('name')
.reward-text= animate ? 'New Hero' : hero.get('name')
if rewards.items
for item in rewards.items
- var item = thangTypes[item];
.reward-panel
.reward-image-container(class=animate?'':'show')
.reward-panel.item(data-item-thang-type=item.get('original'))
.reward-image-container(class=animate ? 'pending-reward-image' : 'show')
img(src=item.getPortraitURL())
.reward-text= item.get('name')
.reward-text= animate ? 'New Item' : item.get('name')
block modal-footer-content
@ -51,4 +51,16 @@ block modal-footer-content
span#gem-total +0
button.btn.btn-warning.hide#saving-progress-label(disabled, data-i18n="play_level.victory_saving_progress") Saving Progress
a.btn.btn-success.world-map-button.hide#continue-button(href="/play-hero", data-dismiss="modal", data-i18n="play_level.victory_play_continue") Continue
if readyToRank
.ladder-submission-view
else if level.get('type') === 'hero-ladder'
a.btn.btn-primary(href="/play/ladder/#{level.get('slug')}#my-matches", data-dismiss="modal", data-i18n="play_level.victory_return_to_ladder") Return to Ladder
else
a.btn.btn-success.world-map-button.hide#continue-button(href="/play-hero", data-dismiss="modal", data-i18n="play_level.victory_play_continue") Continue
if me.get('anonymous')
p.sign-up-poke.hide
button.btn.btn-success.sign-up-button.btn-large(data-toggle="coco-modal", data-target="modal/SignupModal", data-i18n="play_level.victory_sign_up") Sign Up to Save Progress
span(data-i18n="play_level.victory_sign_up_poke") Want to save your code? Create a free account!

View file

@ -1,3 +1,3 @@
button.btn.btn-lg.btn-inverse.banner.cast-button(title=castVerbose, data-i18n="play_level.tome_run_button_ran") Ran
button.btn.btn-lg.btn-success.banner.submit-button(title=castRealTimeVerbose) Submit
button.btn.btn-lg.btn-success.banner.submit-button(title=castRealTimeVerbose, data-i18n="play_level.tome_submit_button") Submit

View file

@ -1,5 +1,7 @@
button.close(type="button", data-dismiss="alert") &times;
span.problem-message!= message
if hint
span.problem-title!= hint
br
span.problem-hint!= hint
span.problem-subtitle!= message
else
span.problem-title!= message

View file

@ -3,7 +3,8 @@
.level-content
#control-bar-view
#canvas-wrapper
canvas(width=924, height=589)#surface
canvas(width=924, height=589)#webgl-surface
canvas(width=924, height=589)#normal-surface
#canvas-left-gradient.gradient
#canvas-top-gradient.gradient
#gold-view.secret.expanded

View file

@ -36,15 +36,17 @@ block append content
th XP
each earnedAchievement in earnedAchievements.models
- var achievement = earnedAchievement.get('achievement');
tr
td= achievement.i18nName()
td= achievement.i18nDescription()
td= moment().format("MMMM Do YYYY", earnedAchievement.get('changed'))
if achievement.isRepeatable()
td= earnedAchievement.get('achievedAmount')
else
td
td= earnedAchievement.get('earnedPoints')
if achievement.get('category')
// No level-specific achievements in here.
tr
td= achievement.i18nName()
td= achievement.i18nDescription()
td= moment().format("MMMM Do YYYY", earnedAchievement.get('changed'))
if achievement.isRepeatable()
td= earnedAchievement.get('achievedAmount')
else
td
td= earnedAchievement.get('earnedPoints')
else
.panel#no-achievements
.panel-body(data-i18n="user.no_achievements") No achievements earned yet.

View file

@ -94,11 +94,17 @@ module.exports = class DeltaView extends CocoView
if _.isObject(deltaData.left) and leftEl = deltaEl.find('.old-value')
options = _.defaults {data: deltaData.left}, treemaOptions
TreemaNode.make(leftEl, options).build()
try
TreemaNode.make(leftEl, options).build()
catch error
console.error "Couldn't show left details Treema for", deltaData.left, treemaOptions
if _.isObject(deltaData.right) and rightEl = deltaEl.find('.new-value')
options = _.defaults {data: deltaData.right}, treemaOptions
TreemaNode.make(rightEl, options).build()
try
TreemaNode.make(rightEl, options).build()
catch error
console.error "Couldn't show right details Treema for", deltaData.right, treemaOptions
if deltaData.action is 'text-diff'
return console.error "Couldn't show diff for left: #{deltaData.left}, right: #{deltaData.right} of delta:", deltaData unless deltaData.left? and deltaData.right?

View file

@ -52,7 +52,7 @@ module.exports = class ThangComponentConfigView extends CocoView
schema.default ?= {}
_.merge schema.default, @additionalDefaults if @additionalDefaults
if @level?.get('type', true) is 'hero'
if @level?.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
schema.required = []
treemaOptions =
supermodel: @supermodel

View file

@ -52,6 +52,7 @@ module.exports = class SaveLevelModal extends SaveVersionModal
console.log "Should we save", m.get('system'), m.get('name'), m, "? localChanges:", m.hasLocalChanges(), "version:", m.get('version'), 'isPublished:', m.isPublished(), 'collection:', m.collection
return false
return true if m.hasLocalChanges()
console.error "Trying to check major version of #{m.type()} #{m.get('name')}, but it doesn't have a version:", m unless m.get('version')
return true if (m.get('version').major is 0 and m.get('version').minor is 0) or not m.isPublished() and not m.collection
# Sometimes we have two versions: one in a search collection and one with a URL. We only save changes to the latter.
false

View file

@ -46,7 +46,7 @@ module.exports = class LevelThangEditView extends CocoView
level: @level
world: @world
if @level.get('type', true) is 'hero' then options.thangType = thangType
if @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'] then options.thangType = thangType
@thangComponentEditView = new ThangComponentsEditView options
@listenTo @thangComponentEditView, 'components-changed', @onComponentsChanged

View file

@ -484,7 +484,8 @@ module.exports = class ThangsTabView extends CocoView
folderForThang: (thang) ->
thangType = @supermodel.getModelByOriginal ThangType, thang.thangType
[thangType.get('kind'), thangType.get('name')]
console.error 'uhh, we had kind', thangType.get('kind', true), 'for', thangType unless thangType.get('kind', true)
[thangType.get('kind', true), thangType.get('name', true)]
pathForThang: (thang) ->
folder = @folderForThang(thang)
@ -520,7 +521,7 @@ module.exports = class ThangsTabView extends CocoView
@level.set 'thangs', thangs
return if @editThangView
serializedLevel = @level.serialize @supermodel, null, true
serializedLevel = @level.serialize @supermodel, null, null, true
try
@world.loadFromLevel serializedLevel, false
catch error
@ -552,14 +553,14 @@ module.exports = class ThangsTabView extends CocoView
if batchInsert
if thangType.get('name') is 'Hero Placeholder'
thangID = 'Hero Placeholder'
return if @level.get('type', true) isnt 'hero' or @getThangByID(thangID)
return if not (@level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']) or @getThangByID(thangID)
else
thangID = "Random #{thangType.get('name')} #{@thangsBatch.length}"
else
thangID = Thang.nextID(thangType.get('name'), @world) until thangID and not @getThangByID(thangID)
if @cloneSourceThang
components = _.cloneDeep @getThangByID(@cloneSourceThang.id).components
else if @level.get('type', true) is 'hero'
else if @level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
components = [] # Load them all from default ThangType Components
else
components = _.cloneDeep thangType.get('components') ? []

View file

@ -77,7 +77,7 @@ module.exports = class ThangTypeEditView extends RootView
context
getAnimationNames: -> _.keys(@thangType.get('actions') or {})
afterRender: ->
super()
return unless @supermodel.finished()
@ -119,7 +119,7 @@ module.exports = class ThangTypeEditView extends RootView
@stage = new createjs.Stage(canvas[0])
@layerAdapter = new LayerAdapter({name:'Default', webGL: true})
@topLayer = new createjs.Container()
@layerAdapter.container.x = @topLayer.x = CENTER.x
@layerAdapter.container.y = @topLayer.y = CENTER.y
@stage.addChild(@layerAdapter.container, @topLayer)
@ -135,7 +135,7 @@ module.exports = class ThangTypeEditView extends RootView
@updateGrid()
_.defer @refreshAnimation
@toggleDots(false)
createjs.Ticker.setFPS(30)
createjs.Ticker.addEventListener('tick', @stage)
@ -244,7 +244,7 @@ module.exports = class ThangTypeEditView extends RootView
lank = new Lank(@thangType, @getLankOptions())
@showLank(lank)
@updateScale()
onNewSpriteSheet: ->
$('#spritesheets').empty()
for image in @layerAdapter.spriteSheet._images
@ -260,7 +260,7 @@ module.exports = class ThangTypeEditView extends RootView
@showAction(animationName)
@updateRotation()
@updateScale() # must happen after update rotation, because updateRotation calls the sprite update() method.
showMovieClip: (animationName) ->
vectorParser = new SpriteBuilder(@thangType)
movieClip = vectorParser.buildMovieClip(animationName)
@ -289,7 +289,7 @@ module.exports = class ThangTypeEditView extends RootView
portrait?.attr('id', 'portrait').addClass('img-thumbnail')
portrait.addClass 'img-thumbnail'
$('#portrait').replaceWith(portrait)
showLank: (lank) ->
@clearDisplayObject()
@clearLank()
@ -306,7 +306,7 @@ module.exports = class ThangTypeEditView extends RootView
clearDisplayObject: ->
@topLayer.removeChild(@currentObject) if @currentObject?
clearLank: ->
@layerAdapter.removeLank(@currentLank) if @currentLank
@currentLank?.destroy()
@ -365,7 +365,8 @@ module.exports = class ThangTypeEditView extends RootView
url = "/editor/thang/#{newThangType.get('slug') or newThangType.id}"
portraitSource = null
if @thangType.get('raster')
image = @currentLank.sprite.image
#image = @currentLank.sprite.image # Doesn't work?
image = @currentLank.sprite.spriteSheet._images[0]
portraitSource = imageToPortrait image
# bit of a hacky way to get that portrait
success = =>
@ -429,7 +430,7 @@ module.exports = class ThangTypeEditView extends RootView
obj = vectorParser.buildMovieClip(key) if type is 'animations'
obj = vectorParser.buildContainerFromStore(key) if type is 'containers'
obj = vectorParser.buildShapeFromStore(key) if type is 'shapes'
bounds = obj?.bounds or obj?.nominalBounds
if bounds
@boundsBox = new createjs.Shape()
@ -437,7 +438,7 @@ module.exports = class ThangTypeEditView extends RootView
@topLayer.addChild(@boundsBox)
obj.regX = @boundsBox.regX = bounds.x + bounds.width / 2
obj.regY = @boundsBox.regY = bounds.y + bounds.height / 2
@showSprite(obj) if obj
@showingSelectedNode = true
@currentLank?.destroy()

View file

@ -21,7 +21,7 @@ module.exports = class GameMenuModal extends ModalView
constructor: (options) ->
super options
@options.showDevBits = me.isAdmin() or /https?:\/\/localhost/.test(window.location.href)
@options.showInventory = @options.level.get('type', true) is 'hero'
@options.showInventory = @options.level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
@options.levelID = @options.level.get('slug')
@options.startingSessionHeroConfig = $.extend {}, true, (@options.session.get('heroConfig') ? {})

View file

@ -40,7 +40,7 @@ module.exports = class MultiplayerView extends CocoView
c.team = @session.get 'team'
c.levelSlug = @level?.get 'slug'
# For now, ladderGame will disallow multiplayer, because session code combining doesn't play nice yet.
if @level?.get('type') is 'ladder'
if @level?.get('type') in ['ladder', 'hero-ladder']
c.ladderGame = true
c.readyToRank = @session?.readyToRank()
@ -68,7 +68,7 @@ module.exports = class MultiplayerView extends CocoView
updateLinkSection: ->
multiplayer = @$el.find('#multiplayer').prop('checked')
la = @$el.find('#link-area')
la.toggle if @level?.get('type') is 'ladder' then false else Boolean(multiplayer)
la.toggle if @level?.get('type') in ['ladder', 'hero-ladder'] then false else Boolean(multiplayer)
true
onHidden: ->

View file

@ -325,6 +325,6 @@ campaigns = [
{id: 'old_beginner', name: 'Old Beginner Campaign', description: '... in which you learn the wizardry of programming.', levels: tutorials}
{id: 'multiplayer', name: 'Multiplayer Arenas', description: '... in which you code head-to-head against other players.', levels: arenas}
{id: 'dev', name: 'Random Harder Levels', description: '... in which you learn the interface while doing something a little harder.', levels: experienced}
{id: 'classic' ,name: 'Classic Algorithms', description: '... in which you learn the most popular algorithms in Computer Science.', levels: classicAlgorithms}
{id: 'classic_algorithms' ,name: 'Classic Algorithms', description: '... in which you learn the most popular algorithms in Computer Science.', levels: classicAlgorithms}
{id: 'player_created', name: 'Player-Created', description: '... in which you battle against the creativity of your fellow <a href=\"/contribute#artisan\">Artisan Wizards</a>.', levels: playerCreated}
]

View file

@ -68,7 +68,7 @@ module.exports = class SpectateLevelView extends RootView
@load()
setLevel: (@level, @supermodel) ->
serializedLevel = @level.serialize @supermodel, @session
serializedLevel = @level.serialize @supermodel, @session, @otherSession
@god?.setLevel serializedLevel
if @world
@world.loadFromLevel serializedLevel, false
@ -105,7 +105,7 @@ module.exports = class SpectateLevelView extends RootView
#at this point, all requisite data is loaded, and sessions are not denormalized
team = @world.teamForPlayer(0)
@loadOpponentTeam(team)
@god.setLevel @level.serialize @supermodel, @session
@god.setLevel @level.serialize @supermodel, @session, @otherSession
@god.setLevelSessionIDs if @otherSession then [@session.id, @otherSession.id] else [@session.id]
@god.setWorldClassMap @world.classMap
@setTeam team
@ -119,7 +119,7 @@ module.exports = class SpectateLevelView extends RootView
@register()
@controlBar.setBus(@bus)
@surface.showLevel()
if @level.get('type', true) isnt 'hero'
if not (@level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop'])
if me.id isnt @session.get 'creator'
@surface.createOpponentWizard
id: @session.get('creator')
@ -205,8 +205,9 @@ module.exports = class SpectateLevelView extends RootView
# initialization
initSurface: ->
surfaceCanvas = $('canvas#surface', @$el)
@surface = new Surface(@world, surfaceCanvas, thangTypes: @supermodel.getModels(ThangType), playJingle: not @isEditorPreview, spectateGame: true, wizards: @level.get('type', true) isnt 'hero')
webGLSurface = $('canvas#webgl-surface', @$el)
normalSurface = $('canvas#normal-surface', @$el)
@surface = new Surface(@world, normalSurface, webGLSurface, thangTypes: @supermodel.getModels(ThangType), playJingle: not @isEditorPreview, spectateGame: true, wizards: @level.get('type', true) isnt 'hero')
worldBounds = @world.getBounds()
bounds = [{x:worldBounds.left, y:worldBounds.top}, {x:worldBounds.right, y:worldBounds.bottom}]
@surface.camera.setBounds(bounds)

View file

@ -97,7 +97,7 @@ module.exports = class WorldMapView extends RootView
@$el.find('.level').tooltip()
@$el.addClass _.string.slugify @terrain
@updateVolume()
@highlightElement '.level.next', delay: 8000, duration: 20000, rotation: 0, sides: ['top']
@highlightElement '.level.next', delay: 2000, duration: 60000, rotation: 0, sides: ['top']
onSessionsLoaded: (e) ->
for session in @sessions.models
@ -718,6 +718,17 @@ hero = [
x: 95.31
y: 88.26
}
{
name: 'Dueling Grounds'
type: 'hero-ladder'
difficulty: 1
id: 'dueling-grounds'
original: '5442ba0e1e835500007eb1c7'
description: 'Battle head-to-head against another hero in this basic beginner combat arena.'
disabled: not me.isAdmin()
x: 17.54
y: 78.39
}
#{
# name: ''
# type: 'hero'
@ -770,7 +781,7 @@ campaigns = [
#{id: 'beginner', name: 'Beginner Campaign', description: '... in which you learn the wizardry of programming.', levels: tutorials, color: "rgb(255, 80, 60)"}
#{id: 'multiplayer', name: 'Multiplayer Arenas', description: '... in which you code head-to-head against other players.', levels: arenas, color: "rgb(80, 5, 60)"}
#{id: 'dev', name: 'Random Harder Levels', description: '... in which you learn the interface while doing something a little harder.', levels: experienced, color: "rgb(80, 60, 255)"}
#{id: 'classic' ,name: 'Classic Algorithms', description: '... in which you learn the most popular algorithms in Computer Science.', levels: classicAlgorithms, color: "rgb(110, 80, 120)"}
#{id: 'classic_algorithms' ,name: 'Classic Algorithms', description: '... in which you learn the most popular algorithms in Computer Science.', levels: classicAlgorithms, color: "rgb(110, 80, 120)"}
#{id: 'player_created', name: 'Player-Created', description: '... in which you battle against the creativity of your fellow <a href=\"/contribute#artisan\">Artisan Wizards</a>.', levels: playerCreated, color: "rgb(160, 160, 180)"}
{id: 'beginner', name: 'Beginner Campaign', levels: hero, color: 'rgb(255, 80, 60)'}
]

View file

@ -49,6 +49,7 @@ module.exports = class SimulateTabView extends CocoView
fetchAndSimulateTaskOriginal = @simulator.fetchAndSimulateTask
@simulator.fetchAndSimulateTask = =>
if @simulator.simulatedByYou >= 5
console.log '------------------- Destroying Simulator and making a new one -----------------'
@simulator.destroy()
@simulator = null
@simulateNextGame()

View file

@ -1,7 +1,7 @@
{hslToHex} = require 'lib/utils'
module.exports.teamDataFromLevel = (level) ->
alliedSystem = _.find level.get('systems'), (value) -> value.config?.teams?
alliedSystem = _.find level.get('systems', true), (value) -> value.config?.teams?
teamNames = (teamName for teamName, teamConfig of alliedSystem.config.teams when teamConfig.playable)
teamConfigs = alliedSystem.config.teams

View file

@ -51,15 +51,15 @@ module.exports = class ControlBarView extends CocoView
super c
c.worldName = @worldName
c.multiplayerEnabled = @session.get('multiplayer')
c.ladderGame = @level.get('type') is 'ladder'
c.ladderGame = @level.get('type') in ['ladder', 'hero-ladder']
c.spectateGame = @spectateGame
@homeViewArgs = [{supermodel: @supermodel}]
if @level.get('type', true) in ['ladder', 'ladder-tutorial']
if @level.get('type', true) in ['ladder', 'ladder-tutorial', 'hero-ladder']
levelID = @level.get('slug').replace /\-tutorial$/, ''
@homeLink = c.homeLink = '/play/ladder/' + levelID
@homeViewClass = require 'views/play/ladder/LadderView'
@homeViewArgs.push levelID
else if @level.get('type', true) is 'hero'
else if @level.get('type', true) in ['hero', 'hero-coop']
@homeLink = c.homeLink = '/play'
@homeViewClass = require 'views/play/WorldMapView'
else

View file

@ -85,7 +85,7 @@ module.exports = class LevelHUDView extends CocoView
clearTimeout @hintNextSelectionTimeout
@$el.find('.no-selection-message').hide()
if not @thang
unless @options.level.get('type', true) is 'hero'
unless @options.level.get('type', true) in ['hero', 'hero-ladder', 'hero-coop']
@hintNextSelectionTimeout = _.delay((=> @$el.find('.no-selection-message').slideDown('slow')), 10000)
return
@createAvatar thangType, @thang

Some files were not shown because too many files have changed in this diff Show more