module.exports = {
    "messageGenerated": 1396792689279,
    "sessions": [
    {
        "sessionID": "533a2c4893b95d9319a58049",
        "submitDate": "2014-04-06T06:31:11.806Z",
        "team": "humans",
        "code": {
            "ogre-base": {
                "chooseAction": "// This is the code for your base. Decide which unit to build each frame.\n// Units you build will go into the this.built array.\n// Destroy the enemy base within 60 seconds!\n// Check out the Guide at the top for more info.\n\n// Choose your hero! You can only build one hero.\nvar hero;\n//hero = 'ironjaw';  // A leaping juggernaut hero, type 'brawler'.\nhero = 'yugargen';  // A devious spellcaster hero, type 'shaman'.\nif(hero && !this.builtHero) {\n    this.builtHero = this.build(hero);\n    return;\n}\n\n// Munchkins are weak melee units with 1.25s build cooldown.\n// Throwers are fragile, deadly ranged units with 2.5s build cooldown.\nvar buildOrder = ['munchkin', 'thrower', 'munchkin', 'thrower', 'munchkin', 'thrower'];\nvar type = buildOrder[this.built.length % buildOrder.length];\n//this.say('Unit #' + this.built.length + ' will be a ' + type);\nthis.build(type);\n//this.say(\"Move\", {to:{x:20, y:30}});{x: 68, y: 29}{x: 70, y: 30}"
            },
            "programmable-shaman": {
                "chooseAction": "if (this.hero !== undefined) {\n    this.hero = this.getNearest(enemy);\n}\n// Shamans are spellcasters with a weak magic attack\n// and three spells: 'shrink', 'grow', and 'poison-cloud'.\n// Shrink: target has 2/3 health, 1.5x speed for 5s.\n// Grow: target has double health, half speed for 5s.\n// Once per match, she can cast poison cloud, which does\n// 5 poison dps for 10s to enemies in a 10m radius.\nvar right = 0;\nif(right === 0){this.move({x: 70, y: 40});\n}\nvar friends = this.getFriends();\nvar enemies = this.getEnemies();\nif (enemies.length === 0) return;  // Chill if all enemies are dead.\nvar enemy = this.getNearest(enemies);\nvar friend = this.getNearest(friends);\n\nif(this.canCast('shrink', enemy)) \n{\n    this.castShrink(enemy);\n}\nelse\n{\n    this.castGrow(friend);\n}\n\nvar enemiesinpoisonrange = 0;\nfor (var i = 0; i < enemies.lenght; ++i) {\n    var enemi = enemies[i];\n    if (this.distance(enemi) <= 10) {\n        enemiesinpoisonrange++;\n    }\n}\nif (enemiesinpoisonrange >= 7) {\n    this.castPoisonCloud(enemy);\n}\n//if (this.distance(ogrebase) > 10) {\n//    this.move({x: 70, y: 30});\n//}\n//this.say(\"Defend!\", {targetPos: {x: 45, y: 30}});\n\n//this.say(\"Defend!\", {targetPos: {x: 35, y: 30}});\n\n//this.say(\"Defend!\", {targetPos: {x: 25, y: 30}});\n\n//this.say(\"Attack!\", {to:{x:20, y:30}});\n\n\n// Which one do you do at any given time? Only the last called action happens.\n//if(this.canCast('shrink', enemy)) this.castShrink(enemy);\n//if(this.canCast('grow', friend)) this.castGrow(friend);\n//if(this.canCast('poison-cloud', enemy)) this.castPoisonCloud(enemy);\n//this.attack(enemy);\n\n// You can also command your troops with this.say():\n//this.say(\"Defend!\", {targetPos: {x: 45, y: 30}});\n//this.say(\"Attack!\", {target: enemy});\n//this.say(\"Move!\", {targetPos: {x: 50, y: 40});"
            },
            "programmable-brawler": {
                "chooseAction": "// The Brawler is a huge melee hero with mighty mass.\n// this.throw() hurls an enemy behind him.\n// this.jumpTo() leaps to a target within 20m every 10s.\n// this.stomp() knocks everyone away, once per match.\n\nvar friends = this.getFriends();\nvar enemies = this.getEnemies();\nif (enemies.length === 0) return;  // Chill if all enemies are dead.\nvar enemy = this.getNearest(enemies);\nvar friend = this.getNearest(friends);\n\n// Which one do you do at any given time? Only the last called action happens.\n//if(!this.getCooldown('jump')) this.jumpTo(enemy.pos);\n//if(!this.getCooldown('stomp') && this.distance(enemy) < 10) this.stomp();\n//if(!this.getCooldown('throw')) this.throw(enemy);\n//this.attack(enemy);\n\n// You can also command your troops with this.say():\n//this.say(\"Defend!\", {targetPos: {x: 60, y: 30}}));\n//this.say(\"Attack!\", {target: enemy});\n//this.say(\"Move!\", {targetPos: {x: 50, y: 40});\n\n// You can store state on this across frames:\n//this.lastHealth = this.health;{x: 68, y: 29}{x: 70, y: 30}"
            },
            "programmable-librarian": {
                "chooseAction": "var enemies = this.getEnemies();\nif (enemies.length === 0)\n    return;\nvar enemy = this.getNearest(enemies);\nvar friends = this.getFriends();\nvar friend = this.getNearest(friends);\nvar archer = this.getFriends(type, \"archer\");\nvar soldier = this.getFriends(type, \"soldier\");\nvar hero = this.getFriends(type, \"hushbaum\");\nvar rand = Math.random();\nvar xmove;\nvar ymove;\nfor (var i = 0; i < enemies.length / 3; i += 1) {\n    var e = enemies[i];\n    var ehealth = Math.floor(e.health);\n    if (this.canCast(\"haste\", friend)) {\n        this.say(\"Godspeed \" + friend.id + \"!\");\n        this.castHaste(friend);\n    }\n    if (this.canCast(\"haste\", this)) {\n        this.say(\"I am Godspeed!\");\n        this.castHaste(this);\n    }\n    if (this.canCast(\"slow\", e)) {\n        this.say(\"Chill Out \" + e.id + \"!\");\n        this.castSlow(e);\n    }\n    if (this.distance(e) < 45) {\n        this.attack(e);\n        this.say(\"Attacking \" + e.id + \" life is \" + ehealth + \".\");\n    }\n    if (this.health < this.maxHealth * 0.75) {\n        if (this.pos.x > 20) {\n            this.move({\n                x: this.pos.x - 20,\n                y: this.pos.y\n            });\n        } else {\n            this.move({\n                x: this.pos.x + 20,\n                y: this.pos.y\n            });\n        }\n    }\n    if (this.canCast(\"regen\", this)) {\n        this.castRegen(this);\n        this.say(\"I won't die today bitch!\");\n    }\n    if (friend.health < friend.maxHealth * 0.5) {\n        if (this.canCast(\"regen\", friend)) {\n            this.say(\"You won't die today \" + friend.id + \".\");\n            this.castRegen(friend);\n        }\n    }\n}\n;"
            },
            "programmable-tharin": {
                "chooseAction": "// Tharin is a melee fighter with shield, warcry, and terrify skills.\n// this.shield() lets him take one-third damage while defending.\n// this.warcry() gives allies within 10m 30% haste for 5s, every 10s.\n// this.terrify() sends foes within 30m fleeing for 5s, once per match.\n\nvar friends = this.getFriends();\nvar enemies = this.getEnemies();\nif (enemies.length === 0) return;  // Chill if all enemies are dead.\nvar enemy = this.getNearest(enemies);\nvar friend = this.getNearest(friends);\n\n// Which one do you do at any given time? Only the last called action happens.\n//if(!this.getCooldown('warcry')) this.warcry();\n//if(!this.getCooldown('terrify')) this.terrify();\n//this.shield();\n//this.attack(enemy);\n\n// You can also command your troops with this.say():\n//this.say(\"Defend!\", {targetPos: {x: 30, y: 30}}));\n//this.say(\"Attack!\", {target: enemy});\n//this.say(\"Move!\", {targetPos: {x: 40, y: 40});\n\n// You can store state on this across frames:\n//this.lastHealth = this.health;"
            },
            "human-base": {
                "chooseAction": "// This is the code for your base. Decide which unit to build each frame.\n// Units you build will go into the this.built array.\n// Destroy the enemy base within 60 seconds!\n// Check out the Guide at the top for more info.\n\n// CHOOSE YOUR HERO! You can only build one hero.\nvar hero;\n//hero = 'tharin';  // A fierce knight with battlecry abilities.\nhero = 'hushbaum';  // A fiery spellcaster hero.\n\nif(hero && !this.builtHero) {\n    this.builtHero = this.build(hero);\n    return;\n}\n\n// Soldiers are hard-to-kill, low damage melee units with 2s build cooldown.\n// Archers are fragile but deadly ranged units with 2.5s build cooldown.\nvar buildOrder = ['soldier', 'soldier', 'archer', 'archer', 'soldier', 'soldier'];\nvar type = buildOrder[this.built.length % buildOrder.length];\nthis.say('Unit #' + this.built.length + ' will be a ' + type);\nthis.build(type);\n\n "
            }
        },
        "teamSpells": {
            "ogres": [
                "programmable-brawler/chooseAction",
                "programmable-shaman/chooseAction",
                "ogre-base/chooseAction"
            ],
            "humans": [
                "programmable-librarian/chooseAction",
                "programmable-tharin/chooseAction",
                "human-base/chooseAction"
            ]
        },
        "levelID": "dungeon-arena",
        "creator": "5338c38c4811eff221de2347",
        "creatorName": "iC0DE"
    },
    {
        "sessionID": "532a777c2042708b711a6c29",
        "submitDate": "2014-03-20T05:45:54.691Z",
        "team": "ogres",
        "code": {
            "ogre-base": {
                "chooseAction": "// This is the code for your base. Decide which unit to build each frame.\n// Units you build will go into the this.built array.\n// Destroy the enemy base within 60 seconds!\n// Check out the Guide at the top for more info.\n\n// Choose your hero! You can only build one hero.\nvar hero;\n//hero = 'ironjaw';  // A leaping juggernaut hero, type 'brawler'.\nhero = 'yugargen';  // A devious spellcaster hero, type 'shaman'.\nif(hero && !this.builtHero) {\n    this.builtHero = this.build(hero);\n    return;\n}\n\n// Munchkins are weak melee units with 1.25s build cooldown.\n// Throwers are fragile, deadly ranged units with 2.5s build cooldown.\nvar buildOrder = ['munchkin', 'munchkin', 'munchkin', 'thrower'];\nvar type = buildOrder[this.built.length % buildOrder.length];\n//this.say('Unit #' + this.built.length + ' will be a ' + type);\nthis.build(type);"
            },
            "programmable-shaman": {
                "chooseAction": "// Shamans are spellcasters with a weak magic attack\n// and three spells: 'shrink', 'grow', and 'poison-cloud'.\n// Shrink: target has 2/3 health, 1.5x speed for 5s.\n// Grow: target has double health, half speed for 5s.\n// Once per match, she can cast poison cloud, which does\n// 5 poison dps for 10s to enemies in a 10m radius.\n\nvar friends = this.getFriends();\nvar enemies = this.getEnemies();\nif (enemies.length === 0) {\n    return;  // Chill if all enemies are dead.\n}\nvar enemy = this.getNearest(enemies);\nvar friend = this.getNearest(friends);\nif (enemies.length > 5) {\n    if(this.canCast('poison-cloud', enemy)) {\n        this.castPoisonCloud(enemy);\n        return;\n    }\n}\n\nif (friends.length > 4) {\n    this.attack(enemy); \n}\nfor (var i = 0; i < friends.length; ++i) {\n    if (friends[i].health < 0) {\n        continue;\n    }\n    if(friends[i].type == \"thrower\" && this.canCast('shrink', friends[i])) {\n        this.castShrink(friends[i]);\n        return;\n    } \n    if(friends[i].type == \"munchkin\" && this.canCast('grow', friends[i])) {\n        this.castGrow(friends[i]);\n        return;\n    } \n}\n\n// Which one do you do at any given time? Only the last called action happens.\n//if(this.canCast('shrink', enemy)) this.castShrink(enemy);\n//if(this.canCast('grow', friend)) this.castGrow(friend);\n//if(this.canCast('poison-cloud', enemy)) this.castPoisonCloud(enemy);\n//this.attack(enemy);\n\n// You can also command your troops with this.say():\n//this.say(\"Defend!\", {targetPos: {x: 60, y: 30}}));\n//this.say(\"Attack!\", {target: enemy});\n//this.say(\"Move!\", {targetPos: {x: 50, y: 40});"
            },
            "programmable-brawler": {
                "chooseAction": "// The Brawler is a huge melee hero with mighty mass.\n// this.throw() hurls an enemy behind him.\n// this.jumpTo() leaps to a target within 20m every 10s.\n// this.stomp() knocks everyone away, once per match.\n\nvar friends = this.getFriends();\nvar enemies = this.getEnemies();\nif (enemies.length === 0) return;  // Chill if all enemies are dead.\nvar enemy = this.getNearest(enemies);\nvar friend = this.getNearest(friends);\n\n// Which one do you do at any given time? Only the last called action happens.\n//if(!this.getCooldown('jump')) this.jumpTo(enemy.pos);\n//if(!this.getCooldown('stomp') && this.distance(enemy) < 10) this.stomp();\n//if(!this.getCooldown('throw')) this.throw(enemy);\n//this.attack(enemy);\n\n// You can also command your troops with this.say():\n//this.say(\"Defend!\", {targetPos: {x: 60, y: 30}}));\n//this.say(\"Attack!\", {target: enemy});\n//this.say(\"Move!\", {targetPos: {x: 50, y: 40});\n\n// You can store state on this across frames:\n//this.lastHealth = this.health;"
            },
            "human-base": {
                "chooseAction": "// This is the code for your base. Decide which unit to build each frame.\n// Units you build will go into the this.built array.\n// Destroy the enemy base within 60 seconds!\n// Check out the Guide at the top for more info.\n\n// CHOOSE YOUR HERO! You can only build one hero.\nvar hero;\nhero = 'tharin';  // A fierce knight with battlecry abilities.\n//hero = 'hushbaum';  // A fiery spellcaster hero.\n\nif(hero && !this.builtHero) {\n    this.builtHero = this.build(hero);\n    return;\n}\n\n// Soldiers are hard-to-kill, low damage melee units with 2s build cooldown.\n// Archers are fragile but deadly ranged units with 2.5s build cooldown.\nvar buildOrder = ['archer', 'archer', 'soldier', 'archer', 'soldier'];\nvar type = buildOrder[this.built.length % buildOrder.length];\n//this.say('Unit #' + this.built.length + ' will be a ' + type);\nthis.build(type);"
            },
            "programmable-tharin": {
                "chooseAction": "this.findTypeInRange = function(units, type) {\n    for (var i = 0; i < units.length; ++i) {\n        var unit = units[i];\n        if (unit.type === type && this.distance(unit) < 20)\n            return unit;\n    }\n    return null;\n};\n\nthis.findType = function(units, type) {\n    for (var i = 0; i < units.length; ++i) {\n        var unit = units[i];\n        if (unit.type === type)\n            return unit;\n    }\n    return null;\n};\n\nthis.findHeroInRange = function(units, range) {\n    for (var i = 0; i < units.length; ++i) {\n        var unit = units[i];\n        if ((unit.type === 'shaman' || unit.type === 'brawler') && this.distance(unit) < range)\n            return unit;\n    }\n    return null;\n};\n\n// Tharin is a melee fighter with shield, warcry, and terrify skills.\n// this.shield() lets him take one-third damage while defending.\n// this.warcry() gives allies within 10m 30% haste for 5s, every 10s.\n// this.terrify() sends foes within 30m fleeing for 5s, once per match.\n\nvar friends = this.getFriends();\nvar enemies = this.getEnemies();\n\n//Enemies\nvar enemyBase = this.findType(enemies, 'base');\nvar brawler = this.findTypeInRange(enemies, 'brawler');\nvar shaman = this.findTypeInRange(enemies, 'shaman');\n\nif (enemies.length === 0) return;  // Chill if all enemies are dead.\nvar enemy = this.getNearest(enemies);\nvar friend = this.getNearest(friends);\n\n// Which one do you do at any given time? Only the last called action happens.\n//if(!this.getCooldown('warcry')) this.warcry();\n//if(!this.getCooldown('terrify')) this.terrify();\n//this.shield();\n\nif((brawler || shaman) && !this.attackTime)\n{\n    this.attackTime = true;\n    if(brawler)\n        this.say(\"Attack!\", {target: brawler});\n    else if(shaman)\n        this.say(\"Attack!\", {target: shaman});\n}\nelse if(this.health < 15 && this.getCooldown('terrify'))\n{\n    this.terrify();\n}\nelse if(this.findHeroInRange(enemies, 30) && this.getCooldown('terrify'))\n{\n    this.terrify();\n}\nelse if(this.health < 25)\n{\n    this.shield();\n}\nelse if(brawler && this.distance(brawler) <=10)\n{\n    this.attack(brawler);\n}\nelse\n{\n    this.attack(enemy);\n}\n\n// You can also command your troops with this.say():\n//this.say(\"Defend!\", {targetPos: {x: 30, y: 30}}));\n//this.say(\"Attack!\", {target: enemy});\n//this.say(\"Move!\", {targetPos: {x: 40, y: 40});\n\n// You can store state on this across frames:\n//this.lastHealth = this.health;"
            },
            "programmable-librarian": {
                "chooseAction": "// The Librarian is a spellcaster with a fireball attack\n// plus three useful spells: 'slow', 'regen', and 'haste'.\n// Slow makes a target move and attack at half speed for 5s.\n// Regen makes a target heal 10 hp/s for 10s.\n// Haste speeds up a target by 4x for 5s, once per match.\n\nvar friends = this.getFriends();\nvar enemies = this.getEnemies();\nif (enemies.length === 0) return;  // Chill if all enemies are dead.\nvar enemy = this.getNearest(enemies);\nvar friend = this.getNearest(friends);\n\n// Which one do you do at any given time? Only the last called action happens.\n//if(this.canCast('slow', enemy)) this.castSlow(enemy);\n//if(this.canCast('regen', friend)) this.castRegen(friend);\n//if(this.canCast('haste', friend)) this.castHaste(friend);\n//this.attack(enemy);\n\n// You can also command your troops with this.say():\n//this.say(\"Defend!\", {targetPos: {x: 30, y: 30}}));\n//this.say(\"Attack!\", {target: enemy});\n//this.say(\"Move!\", {targetPos: {x: 50, y: 40});"
            }
        },
        "teamSpells": {
            "ogres": [
                "programmable-brawler/chooseAction",
                "programmable-shaman/chooseAction",
                "ogre-base/chooseAction"
            ],
            "humans": [
                "programmable-librarian/chooseAction",
                "programmable-tharin/chooseAction",
                "human-base/chooseAction"
            ]
        },
        "levelID": "dungeon-arena",
        "creator": "53291a80b112e7240f324667",
        "creatorName": "Imbal Oceanrage"
    }
],
    "taskID": "53415d71942d00aa43dbf3e9",
    "receiptHandle": "cd50e44db7dbd4cc0bcce047aa822ba2fe3556cf"
}