by
391 13
17
8
16k
1,412
Top 1% !
Popular
Famous
Pearl of Wisdom
Tagged
Specified
Debate
OpenSource
Popularity: 13rd place
Created
Modified Dec 18, 2013

Published on:

BrowserChrome
LanguageJavascript
LicenseMIT_X11

javascript cheat for A Dark Room v1.3

(can be used on chrome using the javascript console)
After you get a hut and someone joins your village (not the builder) this code will provide you with a lot of wood, allowing you to build more huts, traps and other buildings once you have the resources. (does not purchase the buildings and for the mines you still have to find them on the map)
Copy Embed Code
<iframe id="embedFrame" style="width:600px; height:300px;"
src="https://www.snip2code.com/Embed/12458/javascript-cheat-for-A-Dark-Room-v1-3?startLine=0"></iframe>
Click on the embed code to copy it into your clipboard Width Height
Leave empty to retrieve all the content Start End
/** * Module that registers the outdoors functionality */ var Outside = { name: "Outside", _GATHER_DELAY: 60, _TRAPS_DELAY: 90, _POP_DELAY: [0.5, 3], _INCOME: { 'gatherer': { delay: 1, stores: { 'wood': 10000 } }, 'hunter': { delay: 1, stores: { 'fur': 10000, 'meat': 10000, 'alien alloy': 10000, 'medicine': 10000 } }, 'trapper': { delay: 1, stores: { 'meat': 10000, 'bait': 10000, 'teeth': 10000, 'scales': 10000 } }, 'tanner': { delay: 1, stores: { 'fur': 100000, 'leather': 100000 } }, 'charcutier': { delay: 1, stores: { 'meat': 100000, 'wood': 100000, 'cured meat': 100000 } }, 'iron miner': { delay: 1, stores: { 'cured meat': 100000, 'iron': 100000 } }, 'coal miner': { delay: 1, stores: { 'cured meat': 100000, 'coal': 100000 } }, 'sulphur miner': { delay: 1, stores: { 'cured meat': 100000, 'sulphur': 100000 } }, 'steelworker': { delay: 1, stores: { 'iron': 100000, 'coal': 100000, 'steel': 100000 } }, 'armourer': { delay: 1, stores: { 'steel': 100000, 'sulphur': 10000, 'bullets': 100000 } } }, TrapDrops: [ { rollUnder: 0.5, name: 'fur', message: 'scraps of fur' }, { rollUnder: 0.75, name: 'meat', message: 'bits of meat' }, { rollUnder: 0.85, name: 'scales', message: 'strange scales' }, { rollUnder: 0.93, name: 'teeth', message: 'scattered teeth' }, { rollUnder: 0.995, name: 'cloth', message: 'tattered cloth' }, { rollUnder: 1.0, name: 'charm', message: 'a crudely made charm' } ], init: function(options) { this.options = $.extend( this.options, options ); if(Engine._debug) { this._GATHER_DELAY = 0; this._TRAPS_DELAY = 0; } // Create the outside tab this.tab = Header.addLocation("A Silent Forest", "outside", Outside); // Create the Outside panel this.panel = $('<div>').attr('id', "outsidePanel") .addClass('location') .appendTo('div#locationSlider'); //subscribe to stateUpdates $.Dispatch('stateUpdate').subscribe(Outside.handleStateUpdates); if(typeof $SM.get('features.location.outside') == 'undefined') { $SM.set('features.location.outside', true); if(!$SM.get('game.buildings')) $SM.set('game.buildings', {}); if(!$SM.get('game.population')) $SM.set('game.population', 0); if(!$SM.get('game.workers')) $SM.set('game.workers', {}); } this.updateVillage(); Outside.updateWorkersView(); Engine.updateSlider(); // Create the gather button new Button.Button({ id: 'gatherButton', text: "gather wood", click: Outside.gatherWood, cooldown: Outside._GATHER_DELAY, width: '80px' }).appendTo('div#outsidePanel'); }, getMaxPopulation: function() { return $SM.get('game.buildings["hut"]', true) * 4; }, increasePopulation: function() { var space = Outside.getMaxPopulation() - $SM.get('game.population'); if(space > 0) { var num = Math.floor(Math.random()*(space/2) + space/2); if(num == 0) num = 1; if(num == 1) { Notifications.notify(null, 'a stranger arrives in the night'); } else if(num < 5) { Notifications.notify(null, 'a weathered family takes up in one of the huts.'); } else if(num < 10) { Notifications.notify(null, 'a small group arrives, all dust and bones.'); } else if(num < 30) { Notifications.notify(null, 'a convoy lurches in, equal parts worry and hope.'); } else { Notifications.notify(null, "the town's booming. word does get around."); } Engine.log('population increased by ' + num); $SM.add('game.population', num); } Outside.schedulePopIncrease(); }, killVillagers: function(num) { $SM.add('game.population', num * -1); if($SM.get('game.population') < 0) { $SM.set('game.population', 0); } var remaining = Outside.getNumGatherers(); if(remaining < 0) { var gap = -remaining; for(var k in $SM.get('game.workers')) { var num = $SM.get('game.workers["'+k+'"]'); if(num < gap) { gap -= num; $SM.set('game.workers["'+k+'"]', 0); } else { $SM.add('game.workers["'+k+'"]', gap * -1); break; } } } }, schedulePopIncrease: function() { var nextIncrease = Math.floor(Math.random()*(Outside._POP_DELAY[1] - Outside._POP_DELAY[0])) + Outside._POP_DELAY[0]; Engine.log('next population increase scheduled in ' + nextIncrease + ' minutes'); Outside._popTimeout = setTimeout(Outside.increasePopulation, nextIncrease * 60 * 1000); }, updateWorkersView: function() { var workers = $('div#workers'); // If our population is 0 and we don't already have a workers view, // there's nothing to do here. if(!workers.length && $SM.get('game.population') == 0) return; var needsAppend = false; if(workers.length == 0) { needsAppend = true; workers = $('<div>').attr('id', 'workers').css('opacity', 0); } var numGatherers = $SM.get('game.population'); var gatherer = $('div#workers_row_gatherer', workers); for(var k in $SM.get('game.workers')) { var workerCount = $SM.get('game.workers["'+k+'"]'); var row = $('div#workers_row_' + k.replace(' ', '-'), workers); if(row.length == 0) { row = Outside.makeWorkerRow(k, workerCount); var curPrev = null; workers.children().each(function(i) { var child = $(this); var cName = child.attr('id').substring(12).replace('-', ' '); if(cName != 'gatherer') { if(cName < k && (curPrev == null || cName > curPrev)) { curPrev = cName; } } }); if(curPrev == null && gatherer.length == 0) { row.prependTo(workers); } else if(curPrev == null) { row.insertAfter(gatherer); } else { row.insertAfter(workers.find('#workers_row_' + curPrev.replace(' ', '-'))); } } else { $('div#' + row.attr('id') + ' > div.row_val > span', workers).text(workerCount); } numGatherers -= workerCount; if(workerCount == 0) { $('.dnBtn', row).addClass('disabled'); $('.dnManyBtn', row).addClass('disabled'); } else { $('.dnBtn', row).removeClass('disabled'); $('.dnManyBtn', row).removeClass('disabled'); } } if(gatherer.length == 0) { gatherer = Outside.makeWorkerRow('gatherer', numGatherers); gatherer.prependTo(workers); } else { $('div#workers_row_gatherer > div.row_val > span', workers).text(numGatherers); } if(numGatherers == 0) { $('.upBtn', '#workers').addClass('disabled'); $('.upManyBtn', '#workers').addClass('disabled'); } else { $('.upBtn', '#workers').removeClass('disabled'); $('.upManyBtn', '#workers').removeClass('disabled'); } if(needsAppend && workers.children().length > 0) { workers.appendTo('#outsidePanel').animate({opacity:1}, 300, 'linear'); } }, getNumGatherers: function() { var num = $SM.get('game.population'); for(var k in $SM.get('game.workers')) { num -= $SM.get('game.workers["'+k+'"]'); } return num; }, makeWorkerRow: function(name, num) { var row = $('<div>') .attr('id', 'workers_row_' + name.replace(' ','-')) .addClass('workerRow'); $('<div>').addClass('row_key').text(name).appendTo(row); var val = $('<div>').addClass('row_val').appendTo(row); $('<span>').text(num).appendTo(val); if(name != 'gatherer') { $('<div>').addClass('upManyBtn').appendTo(val).click([10], Outside.increaseWorker); $('<div>').addClass('upBtn').appendTo(val).click([1], Outside.increaseWorker); $('<div>').addClass('dnBtn').appendTo(val).click([1], Outside.decreaseWorker); $('<div>').addClass('dnManyBtn').appendTo(val).click([10], Outside.decreaseWorker); } $('<div>').addClass('clear').appendTo(row); var tooltip = $('<div>').addClass('tooltip bottom right').appendTo(row); var income = Outside._INCOME[name]; for(var s in income.stores) { var r = $('<div>').addClass('storeRow'); $('<div>').addClass('row_key').text(s).appendTo(r); $('<div>').addClass('row_val').text(Engine.getIncomeMsg(income.stores[s], income.delay)).appendTo(r); r.appendTo(tooltip); } return row; }, increaseWorker: function(btn) { var worker = $(this).closest('.workerRow').children('.row_key').text(); if(Outside.getNumGatherers() > 0) { var increaseAmt = Math.min(Outside.getNumGatherers(), btn.data); Engine.log('increasing ' + worker + ' by ' + increaseAmt); $SM.add('game.workers["'+worker+'"]', increaseAmt); } }, decreaseWorker: function(btn) { var worker = $(this).closest('.workerRow').children('.row_key').text(); if($SM.get('game.workers["'+worker+'"]') > 0) { var decreaseAmt = Math.min($SM.get('game.workers["'+worker+'"]') || 0, btn.data); Engine.log('decreasing ' + worker + ' by ' + decreaseAmt); $SM.add('game.workers["'+worker+'"]', decreaseAmt * -1); } }, updateVillageRow: function(name, num, village) { var id = 'building_row_' + name.replace(' ', '-'); var row = $('div#' + id, village); if(row.length == 0 && num > 0) { row = $('<div>').attr('id', id).addClass('storeRow'); $('<div>').addClass('row_key').text(name).appendTo(row); $('<div>').addClass('row_val').text(num).appendTo(row); $('<div>').addClass('clear').appendTo(row); var curPrev = null; village.children().each(function(i) { var child = $(this); if(child.attr('id') != 'population') { var cName = child.attr('id').substring(13).replace('-', ' '); if(cName < name && (curPrev == null || cName > curPrev)) { curPrev = cName; } } }); if(curPrev == null) { row.prependTo(village); } else { row.insertAfter('#building_row_' + curPrev.replace(' ', '-')); } } else if(num > 0) { $('div#' + row.attr('id') + ' > div.row_val', village).text(num); } else if(num == 0) { row.remove(); } }, updateVillage: function(ignoreStores) { var village = $('div#village'); var population = $('div#population'); var needsAppend = false; if(village.length == 0) { needsAppend = true; village = $('<div>').attr('id', 'village').css('opacity', 0); population = $('<div>').attr('id', 'population').appendTo(village); } for(var k in $SM.get('game.buildings')) { if(k == 'trap') { var numTraps = $SM.get('game.buildings["'+k+'"]'); var numBait = $SM.get('stores.bait', true); var traps = numTraps - numBait; traps = traps < 0 ? 0 : traps; Outside.updateVillageRow(k, traps, village); Outside.updateVillageRow('baited trap', numBait > numTraps ? numTraps : numBait, village); } else { if(Outside.checkWorker(k)) { Outside.updateWorkersView(); } Outside.updateVillageRow(k, $SM.get('game.buildings["'+k+'"]'), village); } } population.text('pop ' + $SM.get('game.population') + '/' + this.getMaxPopulation()); var hasPeeps; if($SM.get('game.buildings["hut"]', true) == 0) { hasPeeps = false; village.addClass('noHuts'); } else { hasPeeps = true; village.removeClass('noHuts'); } if(needsAppend && village.children().length > 1) { village.appendTo('#outsidePanel'); village.animate({opacity:1}, 300, 'linear'); } if(hasPeeps && typeof Outside._popTimeout == 'undefined') { Outside.schedulePopIncrease(); } this.setTitle(); if(!ignoreStores && Engine.activeModule === Outside && village.children().length > 1) { $('#storesContainer').css({top: village.height() + 26 + 'px'}); } }, checkWorker: function(name) { var jobMap = { 'lodge': ['hunter', 'trapper'], 'tannery': ['tanner'], 'smokehouse': ['charcutier'], 'iron mine': ['iron miner'], 'coal mine': ['coal miner'], 'sulphur mine': ['sulphur miner'], 'steelworks': ['steelworker'], 'armoury' : ['armourer'] }; var jobs = jobMap[name]; var added = false; if(typeof jobs == 'object') { for(var i = 0, len = jobs.length; i < len; i++) { var job = jobs[i]; if(typeof $SM.get('game.buildings["'+name+'"]') == 'number' && typeof $SM.get('game.workers["'+job+'"]') != 'number') { Engine.log('adding ' + job + ' to the workers list'); $SM.set('game.workers["'+job+'"]', 0); added = true; } } } return added; }, updateVillageIncome: function() { for(var worker in Outside._INCOME) { var income = Outside._INCOME[worker]; var num = worker == 'gatherer' ? Outside.getNumGatherers() : $SM.get('game.workers["'+worker+'"]'); if(typeof num == 'number') { var stores = {}; if(num < 0) num = 0; var tooltip = $('.tooltip', 'div#workers_row_' + worker.replace(' ', '-')); tooltip.empty(); var needsUpdate = false; var curIncome = $SM.getIncome(worker); for(var store in income.stores) { stores[store] = income.stores[store] * num; if(curIncome[store] != stores[store]) needsUpdate = true; var row = $('<div>').addClass('storeRow'); $('<div>').addClass('row_key').text(store).appendTo(row); $('<div>').addClass('row_val').text(Engine.getIncomeMsg(stores[store], income.delay)).appendTo(row); row.appendTo(tooltip); } if(needsUpdate) { $SM.setIncome(worker, { delay: income.delay, stores: stores }); } } } Room.updateIncomeView(); }, updateTrapButton: function() { var btn = $('div#trapsButton'); if($SM.get('game.buildings["trap"]', true) > 0) { if(btn.length == 0) { new Button.Button({ id: 'trapsButton', text: "check traps", click: Outside.checkTraps, cooldown: Outside._TRAPS_DELAY, width: '80px' }).appendTo('div#outsidePanel'); } else { Button.setDisabled(btn, false); } } else { if(btn.length > 0) { Button.setDisabled(btn, true); } } }, setTitle: function() { var numHuts = $SM.get('game.buildings["hut"]', true); var title; if(numHuts == 0) { title = "A Silent Forest"; } else if(numHuts == 1) { title = "A Lonely Hut"; } else if(numHuts <= 4) { title = "A Tiny Village"; } else if(numHuts <= 8) { title = "A Modest Village"; } else if(numHuts <= 14) { title = "A Large Village"; } else { title = "A Raucous Village"; } if(Engine.activeModule == this) { document.title = title; } $('#location_outside').text(title); }, onArrival: function(transition_diff) { Outside.setTitle(); if(!$SM.get('game.outside.seenForest')) { Notifications.notify(Outside, "the sky is grey and the wind blows relentlessly"); $SM.set('game.outside.seenForest', true); } Outside.updateTrapButton(); Outside.updateVillage(true); Engine.moveStoresView($('#village'), transition_diff); }, gatherWood: function() { Notifications.notify(Outside, "dry brush and dead branches litter the forest floor"); var gatherAmt = $SM.get('game.buildings["cart"]', true) > 0 ? 50 : 10; $SM.add('stores.wood', gatherAmt); }, checkTraps: function() { var drops = {}; var msg = []; var numTraps = $SM.get('game.buildings["trap"]', true); var numBait = $SM.get('stores.bait', true); var numDrops = numTraps + (numBait < numTraps ? numBait : numTraps); for(var i = 0; i < numDrops; i++) { var roll = Math.random(); for(var j in Outside.TrapDrops) { var drop = Outside.TrapDrops[j]; if(roll < drop.rollUnder) { var num = drops[drop.name]; if(typeof num == 'undefined') { num = 0; msg.push(drop.message); } drops[drop.name] = num + 1; break; } } } var s = 'the traps contain '; for(var i = 0, len = msg.length; i < len; i++) { if(len > 1 && i > 0 && i < len - 1) { s += ", "; } else if(len > 1 && i == len - 1) { s += " and "; } s += msg[i]; } var baitUsed = numBait < numTraps ? numBait : numTraps; drops['bait'] = -baitUsed; Notifications.notify(Outside, s); $SM.addM('stores', drops); }, handleStateUpdates: function(e){ if(e.category == 'stores'){ Outside.updateVillage(); } else if(e.stateName.indexOf('game.workers') == 0 || e.stateName.indexOf('game.population') == 0){ Outside.updateVillage(); Outside.updateWorkersView(); Outside.updateVillageIncome(); }; } };
If you want to be updated about similar snippets, Sign in and follow our Channels

blog comments powered by Disqus