Wanted to finish Little Alchemy, but got made fun of for playing it - so I found a loophole. Thanks to @meatbody for trolling me into doing this.
- Go to and Play Little Alchemy.
- Open your JavaScript console (
Command + j
orView >> Developer >> JavaScript Console
) - Copy paste the JavaScript below into the JavaScript console then hit
ENTER
- Refresh the page to see all the unlocked combinations in the side panel
- If you run this script and already have a lot of combinations figured out it may run pretty slowly (not sure why, probably the
$
name-attribute lookup)...
(function cheat(combinations){var results=[],matches=[],total=5;buildMatchList();saveMatchList();console.log("--------------------------------");console.log("::work complete:: now refresh.");console.log("--------------------------------");function saveMatchList(){alchemy.history.parents=[];matches.map(function(r){alchemy.history.parents.push(r)});alchemy.saveProgress(true)}function buildMatchList(){var match,i,ii,iii,pos;for(i=0;i<combinations;i++){results[i]=alchemy.potentialOffspring(i)}for(i=0;i<results.length;i++){for(ii=0;ii<results[i].length;ii++){match=results[i][ii];if(!matches[match]){for(iii=0;iii<results.length;iii++){pos=results[iii].indexOf(match);if(pos>-1){if(isMatch([i,iii],match)){break}else if(isMatch([iii,iii],match)){break}}}if(!matches[match]){if(!isMatch([i,i],match)){console.log("!!!!!",match,getAlchemyName(match),i,getAlchemyName(i))}}}}}}function isMatch(m,match){var combo=alchemy.sex(m),pos=combo.indexOf(match)>-1,len=combo.length;if(len&&pos){matches[match]=m;console.log(total+":"+getAlchemyName(match)+" = "+getAlchemyName(m[0])+" + "+getAlchemyName(m[1]));total++;return true}return false}function getAlchemyName(id){return $(alchemy.originStr(id)).filter("h2").find("img").attr("alt")}})(450);
The unminified script is included below for your review.