This commit is contained in:
𓍼 2025-04-26 13:47:55 -05:00
parent 54abc5bd86
commit bc497bf1bf
513 changed files with 5690 additions and 77390 deletions

View File

@ -39,7 +39,7 @@
border: 1px solid #ffffff21; border: 1px solid #ffffff21;
backdrop-filter: blur(10px); backdrop-filter: blur(10px);
transition: all 0.3s ease; transition: all 0.3s ease;
width: 180px; width: 190px;
height: 250px; height: 250px;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
@ -117,7 +117,7 @@
position: absolute; position: absolute;
top: 50%; top: 50%;
left: 50%; left: 50%;
transform: translate(calc(-50% + 195px), -50%); transform: translate(calc(-50% + 195px), -50%);
font-size: 12px; font-size: 12px;
font-weight: 500; font-weight: 500;
color: #000000; color: #000000;

View File

@ -1017,7 +1017,7 @@
{ {
"name": "Cookie Clicker", "name": "Cookie Clicker",
"directory": "cookieclicker/", "directory": "cookieclicker/",
"image": "img/perfectCookie.png" "image": "perfectCookie.png"
}, },
{ {
"name": "Superhot", "name": "Superhot",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@ -0,0 +1 @@
{"pageWidth":512,"pageHeight":512,"lineHeight":205,"lineBase":174,"pages":{"digits1.png":{"10":{"x":0,"y":0,"w":0,"h":0,"xo":-8,"yo":0,"xa":-4},"32":{"x":0,"y":0,"w":0,"h":0,"xo":-8,"yo":0,"xa":45},"47":{"x":0,"y":0,"w":121,"h":177,"xo":-8,"yo":23,"xa":101,"k":{"48":-12,"54":-12,"56":-12,"57":-12,"120":-4}},"48":{"x":316,"y":177,"w":129,"h":152,"xo":-2,"yo":34,"xa":121,"k":{"47":-19,"51":-5}},"49":{"x":224,"y":331,"w":74,"h":148,"xo":0,"yo":37,"xa":70,"k":{"48":-3,"54":-3,"56":-3,"57":-3}},"50":{"x":216,"y":177,"w":100,"h":152,"xo":-2,"yo":34,"xa":89,"k":{"48":-3,"54":-3,"56":-3,"57":-3}},"51":{"x":0,"y":177,"w":106,"h":154,"xo":-7,"yo":34,"xa":91,"k":{"48":-3,"54":-3,"56":-3,"57":-3}},"52":{"x":104,"y":331,"w":120,"h":149,"xo":0,"yo":37,"xa":116,"k":{"48":-3,"54":-3,"56":-3,"57":-3}},"53":{"x":0,"y":331,"w":104,"h":151,"xo":-2,"yo":34,"xa":94,"k":{"48":-3,"52":-4,"54":-3,"55":-4,"56":-3,"57":-3}},"54":{"x":229,"y":0,"w":109,"h":158,"xo":-3,"yo":30,"xa":99,"k":{"47":-19,"51":-5}},"55":{"x":106,"y":177,"w":110,"h":153,"xo":-4,"yo":35,"xa":98,"k":{"48":-3,"54":-3,"56":-3,"57":-3}},"56":{"x":338,"y":0,"w":109,"h":155,"xo":-4,"yo":34,"xa":97,"k":{"47":-19,"51":-5}},"57":{"x":121,"y":0,"w":108,"h":159,"xo":-3,"yo":31,"xa":97,"k":{"47":-19,"51":-5}},"120":{"x":298,"y":331,"w":108,"h":123,"xo":-7,"yo":63,"xa":91,"k":{"48":-3,"54":-3,"56":-3,"57":-3}}}}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
{"music.wav":{"base.wav":{"s":0,"e":32},"menu.wav":{"s":32.099,"e":64.1}}}

Binary file not shown.

View File

@ -0,0 +1 @@
{"opacity.png":{"w":512,"h":512,"rs":{"Coin01.png":{"x":202,"y":15,"w":100,"h":100},"CoinDuble01.png":{"x":332,"y":102,"w":100,"h":91},"Kanistra02.png":{"x":332,"y":195,"w":100,"h":100},"Magnit.png":{"x":454,"y":397,"w":54,"h":100},"Nitro01.png":{"x":304,"y":0,"w":100,"h":100},"PoliceCar002.png":{"x":0,"y":45,"w":200,"h":200},"Policeman02.png":{"x":252,"y":297,"w":200,"h":200},"Star01.png":{"x":0,"y":247,"w":250,"h":250},"vopros.png":{"x":202,"y":117,"w":128,"h":128}}}}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
{"sounds.wav":{"accel.wav":{"s":0,"e":2.315},"asphalt.wav":{"s":2.415,"e":4.946},"bitumen.wav":{"s":5.046,"e":7.029},"bonus.wav":{"s":7.129,"e":8.599},"brakes.wav":{"s":8.699,"e":9.63},"buy.wav":{"s":9.73,"e":10.294},"change.wav":{"s":10.394,"e":10.744},"click.wav":{"s":10.844,"e":10.901},"coin1.wav":{"s":11.001,"e":11.111},"coin10.wav":{"s":11.211,"e":11.321},"coin11.wav":{"s":11.421,"e":11.532},"coin12.wav":{"s":11.632,"e":11.742},"coin13.wav":{"s":11.842,"e":11.952},"coin2.wav":{"s":12.052,"e":12.162},"coin3.wav":{"s":12.262,"e":12.372},"coin4.wav":{"s":12.472,"e":12.581},"coin5.wav":{"s":12.681,"e":12.79},"coin6.wav":{"s":12.89,"e":13},"coin7.wav":{"s":13.1,"e":13.209},"coin8.wav":{"s":13.309,"e":13.419},"coin9.wav":{"s":13.519,"e":13.629},"coins.wav":{"s":13.729,"e":14.292},"congrats.wav":{"s":14.392,"e":16.452},"cop_end.wav":{"s":16.552,"e":18.684},"cop_idle1.wav":{"s":18.784,"e":20.727},"cop_idle2.wav":{"s":20.827,"e":22.589},"cop_idle3.wav":{"s":22.689,"e":24.486},"cop_start.wav":{"s":24.586,"e":26.41},"cop_turn1.wav":{"s":26.51,"e":27.688},"cop_turn2.wav":{"s":27.788,"e":28.98},"cop_turn3.wav":{"s":29.08,"e":30.359},"counter.wav":{"s":30.459,"e":30.508},"earth.wav":{"s":30.608,"e":31.403},"gates.wav":{"s":31.503,"e":32.949},"go.wav":{"s":33.049,"e":34.417},"hide_panel.wav":{"s":34.517,"e":34.643},"hit_metal.wav":{"s":34.743,"e":35.394},"hit_plast.wav":{"s":35.494,"e":35.686},"hit_stone.wav":{"s":35.786,"e":36.132},"hit_wood.wav":{"s":36.232,"e":36.566},"magnet.wav":{"s":36.666,"e":41.646},"ready.wav":{"s":41.746,"e":43.079},"sand.wav":{"s":43.179,"e":55.021},"show_panel.wav":{"s":55.121,"e":55.56},"to_kart.wav":{"s":55.66,"e":56.087},"tramplin.wav":{"s":56.187,"e":56.762}}}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
{"transparent.png":{"w":512,"h":512,"rs":{"bitum.png":{"x":0,"y":182,"w":128,"h":128},"deck.png":{"x":382,"y":196,"w":64,"h":64},"drops.png":{"x":202,"y":384,"w":128,"h":128},"dust.png":{"x":0,"y":52,"w":128,"h":128},"fire.png":{"x":130,"y":60,"w":120,"h":120},"grain.png":{"x":202,"y":360,"w":22,"h":22},"heart.png":{"x":448,"y":196,"w":64,"h":64},"lin.png":{"x":332,"y":384,"w":128,"h":128},"paper.png":{"x":130,"y":182,"w":128,"h":128},"part.png":{"x":252,"y":74,"w":64,"h":64},"point.png":{"x":318,"y":12,"w":60,"h":60},"point2.png":{"x":384,"y":134,"w":60,"h":60},"ring.png":{"x":260,"y":262,"w":120,"h":120},"smoke.png":{"x":0,"y":312,"w":200,"h":200},"smoke_w.png":{"x":260,"y":140,"w":120,"h":120},"spark.png":{"x":318,"y":74,"w":64,"h":64},"star.png":{"x":382,"y":262,"w":120,"h":120},"star1.png":{"x":0,"y":0,"w":50,"h":50},"trilist.png":{"x":252,"y":8,"w":64,"h":64}}}}

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"sounds.wav":{"end.wav":{"s":0,"e":1.923},"enjoy1.wav":{"s":2.023,"e":3.149},"enjoy2.wav":{"s":3.249,"e":4.028},"hi.wav":{"s":4.128,"e":4.624},"joy1.wav":{"s":4.724,"e":5.337},"joy2.wav":{"s":5.437,"e":6.496},"jump.wav":{"s":6.596,"e":6.833},"start.wav":{"s":6.933,"e":9.226}}}

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"music.wav":{"amb.wav":{"s":0,"e":3.06},"gameplay.wav":{"s":3.159,"e":45.826},"tonnel.wav":{"s":45.926,"e":56.437}}}

Binary file not shown.

View File

@ -0,0 +1 @@
{"opacity.png":{"w":2048,"h":2048,"rs":{"Bachok01.png":{"x":1764,"y":2,"w":128,"h":128},"BackHouses.png":{"x":1412,"y":458,"w":128,"h":128},"Ballonchik01.png":{"x":1234,"y":106,"w":128,"h":128},"Bochka01.png":{"x":1894,"y":11,"w":140,"h":140},"Doski01.png":{"x":1002,"y":4,"w":230,"h":230},"Fonar02.png":{"x":1764,"y":132,"w":59,"h":256},"Gazon01.png":{"x":802,"y":486,"w":256,"h":100},"House01.png":{"x":514,"y":44,"w":400,"h":400},"Konstruction01.png":{"x":1060,"y":236,"w":350,"h":350},"Konus01.png":{"x":0,"y":0,"w":64,"h":55},"Meshok01.png":{"x":1955,"y":230,"w":64,"h":94},"Meshok02.png":{"x":1542,"y":492,"w":64,"h":94},"Meshok03.png":{"x":1542,"y":396,"w":64,"h":94},"OgrDvij01.png":{"x":0,"y":57,"w":512,"h":387},"Ostanovka.png":{"x":1862,"y":1190,"w":181,"h":256},"Pandus01.png":{"x":1604,"y":1448,"w":422,"h":600},"RoadPark02.png":{"x":0,"y":1248,"w":800,"h":800},"Stol01.png":{"x":1644,"y":794,"w":200,"h":200},"Stolb01.png":{"x":916,"y":284,"w":109,"h":200},"Svetofor02.png":{"x":1644,"y":996,"w":210,"h":256},"Tunnel01.png":{"x":0,"y":446,"w":800,"h":800},"Vorota001.png":{"x":916,"y":26,"w":84,"h":256},"avtomat01.png":{"x":1825,"y":153,"w":128,"h":171},"chemodan.png":{"x":1846,"y":730,"w":200,"h":200},"chemodan02.png":{"x":1644,"y":592,"w":200,"h":200},"chemodan03.png":{"x":1846,"y":528,"w":200,"h":200},"parkzabor.png":{"x":1644,"y":390,"w":200,"h":200},"perehod02.png":{"x":802,"y":588,"w":840,"h":658},"reklRoad.png":{"x":1856,"y":932,"w":145,"h":256},"reklama02.png":{"x":1846,"y":326,"w":200,"h":200},"road00.png":{"x":802,"y":1248,"w":800,"h":800},"shlznak.png":{"x":1412,"y":38,"w":350,"h":350},"svetofor.png":{"x":1604,"y":1254,"w":256,"h":192}}},"opacity2.png":{"w":2048,"h":2048,"rs":{"Ballonchik02.png":{"x":0,"y":0,"w":128,"h":128},"Blok01.png":{"x":702,"y":1778,"w":256,"h":256},"Car0002.png":{"x":960,"y":1778,"w":256,"h":256},"Car0002_02.png":{"x":960,"y":1520,"w":256,"h":256},"Car001.png":{"x":702,"y":1520,"w":256,"h":256},"Car001_02.png":{"x":602,"y":774,"w":256,"h":256},"Elka01.png":{"x":130,"y":0,"w":128,"h":128},"Gidrant01.png":{"x":260,"y":0,"w":128,"h":128},"Hiway01.png":{"x":602,"y":516,"w":256,"h":256},"House010.png":{"x":860,"y":516,"w":256,"h":256},"House02_02.png":{"x":860,"y":258,"w":256,"h":256},"House03_02.png":{"x":908,"y":0,"w":256,"h":256},"House04.png":{"x":602,"y":258,"w":256,"h":256},"House05.png":{"x":650,"y":0,"w":256,"h":256},"House05_02.png":{"x":1118,"y":874,"w":256,"h":256},"House06.png":{"x":860,"y":774,"w":256,"h":256},"House07.png":{"x":904,"y":1132,"w":256,"h":256},"House08.png":{"x":1218,"y":1778,"w":256,"h":256},"House09.png":{"x":1218,"y":1520,"w":256,"h":256},"HouseLittle.png":{"x":1162,"y":1132,"w":256,"h":256},"Ink01.png":{"x":1476,"y":1778,"w":256,"h":256},"Klumba01.png":{"x":1476,"y":1520,"w":256,"h":256},"MagIn01.png":{"x":0,"y":732,"w":600,"h":600},"MagTile01.png":{"x":0,"y":130,"w":600,"h":600},"Meshok000.png":{"x":390,"y":0,"w":128,"h":128},"Musorka01.png":{"x":1118,"y":616,"w":256,"h":256},"Ogr01.png":{"x":1118,"y":358,"w":256,"h":256},"Poloska01.png":{"x":520,"y":0,"w":128,"h":128},"Pregrada01.png":{"x":1166,"y":100,"w":256,"h":256},"Proj01.png":{"x":702,"y":1390,"w":128,"h":128},"Pyatno01.png":{"x":832,"y":1390,"w":128,"h":128},"Reklschit01.png":{"x":1376,"y":874,"w":256,"h":256},"Rock01.png":{"x":602,"y":1032,"w":300,"h":300},"Statuya01.png":{"x":1420,"y":1132,"w":256,"h":256},"Telejka01.png":{"x":962,"y":1390,"w":128,"h":128},"Tramplin01.png":{"x":1734,"y":1778,"w":256,"h":256},"Tramplin02.png":{"x":0,"y":1334,"w":700,"h":700},"Tree02.png":{"x":1734,"y":1520,"w":256,"h":256},"Vorota002.png":{"x":1936,"y":1132,"w":84,"h":256},"Vorota003.png":{"x":1892,"y":874,"w":84,"h":256},"Zaborrr01.png":{"x":1092,"y":1390,"w":128,"h":128},"Znak01.png":{"x":1222,"y":1390,"w":128,"h":128},"Znak02.png":{"x":1352,"y":1390,"w":128,"h":128},"Znak03.png":{"x":1482,"y":1390,"w":128,"h":128},"bank.png":{"x":1612,"y":1390,"w":128,"h":128},"fonarMetro.png":{"x":1742,"y":1390,"w":128,"h":128},"garaj.png":{"x":1872,"y":1390,"w":128,"h":128},"house011.png":{"x":1376,"y":358,"w":256,"h":256},"house012.png":{"x":1424,"y":100,"w":256,"h":256},"house03.png":{"x":1376,"y":616,"w":256,"h":256},"klumbaroad.png":{"x":1892,"y":744,"w":128,"h":128},"ogr02.png":{"x":1884,"y":284,"w":128,"h":128},"parkTree.png":{"x":1634,"y":874,"w":256,"h":256},"parkkust.png":{"x":1884,"y":154,"w":128,"h":128},"parkskam.png":{"x":1682,"y":82,"w":128,"h":128},"roof_exit01.png":{"x":1678,"y":1132,"w":256,"h":256},"smoke_tube03.png":{"x":1634,"y":414,"w":200,"h":200},"tree03.png":{"x":1836,"y":414,"w":200,"h":200},"vagMetroYasch.png":{"x":1634,"y":616,"w":256,"h":256},"vent_tube02.png":{"x":1682,"y":212,"w":200,"h":200},"water_tower01.png":{"x":1812,"y":24,"w":128,"h":128}}}}

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1 @@
{"sounds.wav":{"car_horn1.wav":{"s":0,"e":0.541},"car_horn2.wav":{"s":0.641,"e":1.727},"car_loop.wav":{"s":1.827,"e":3.419},"crate.wav":{"s":3.519,"e":4.353},"hit_barrel.wav":{"s":4.453,"e":5.088},"hit_cart.wav":{"s":5.188,"e":6.498},"hit_suitcase.wav":{"s":6.598,"e":6.898},"hit_trash.wav":{"s":6.998,"e":7.833},"ink_loop.wav":{"s":7.933,"e":11.202},"tree.wav":{"s":11.302,"e":11.969},"truck_horn1.wav":{"s":12.069,"e":13.444},"truck_horn2.wav":{"s":13.544,"e":14.962},"truck_loop.wav":{"s":15.062,"e":17.369}}}

Binary file not shown.

View File

@ -0,0 +1 @@
{"atlas.png":{"w":1024,"h":1024,"rs":{"back.png":{"x":0,"y":473,"w":1024,"h":512},"image.png":{"x":0,"y":49,"w":567,"h":422},"logo.png":{"x":569,"y":204,"w":207,"h":152},"progress_back.png":{"x":569,"y":358,"w":455,"h":113},"progress_bar.png":{"x":0,"y":0,"w":402,"h":47}}}}

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"geometry":{"attributes":{"position":[-0.522,-0.485,1.389,-0.991,-0.829,-0.477,-0.572,-1.232,-0.508,-0.103,-0.888,1.358,-1.347,-0.37,-0.495,-0.932,0.38,-0.738,0.205,-0.855,-0.796,-1.168,0.483,1.372,-0.48,0.758,1.149,-0.949,0.413,-0.717,-1.637,0.138,-0.493,-0.867,-0.018,1.412,-0.501,-0.466,1.403,-0.084,-0.867,1.372,0.361,-1.174,1.317,0.685,-0.502,1.111,-0.452,0.732,1.169,-1.137,0.453,1.394,-0.082,-1.55,-0.572,0.238,-0.876,-0.777,0.707,-0.531,1.088,0.387,-1.205,1.293,1.07,1.195,-1.393,1.153,1.19,-1.412,1.152,1.106,-1.397,1.651,1.56,0.464,1.181,1.216,-1.401,1.061,1.216,-1.371,1.53,1.56,0.494,1.632,1.458,0.511,1.633,1.542,0.495,1.55,1.548,0.515,1.181,1.216,-1.401,1.651,1.56,0.464,1.642,1.438,0.489,1.173,1.094,-1.376,-1.181,0.437,1.384,-1.651,0.093,-0.481,-1.359,-0.378,-0.467,-0.889,-0.034,1.398,-0.128,-1.56,-0.559,0.342,-1.216,1.306,0.361,-1.174,1.317,-0.084,-0.867,1.372,-1.137,0.453,1.394,-0.452,0.732,1.169,1.55,1.548,0.515,1.633,1.542,0.495,-0.501,-0.466,1.403,-0.867,-0.018,1.412,-1.137,0.453,1.394,-1.618,0.101,-0.514,-1.347,-0.37,-0.495,-1.618,0.101,-0.514,-0.932,0.38,-0.738,1.153,1.19,-1.412,1.152,1.106,-1.397,1.07,1.195,-1.393,1.153,1.19,-1.412,0.205,-0.855,-0.796,-0.981,-0.819,-0.504,-0.564,-1.219,-0.535,-0.119,-1.526,-0.591,-0.082,-1.55,-0.572,0.387,-1.205,1.293,-1.168,0.483,1.372,-1.637,0.138,-0.493,-0.119,-1.526,-0.591,-1.618,0.101,-0.514,-0.564,-1.219,-0.535,-0.981,-0.819,-0.504,-0.119,-1.526,-0.591],"uv":[0.7591,0.803505,0.7591,0.993336,0.848993,0.993352,0.848993,0.803491,0.946255,0.0910295,0.975557,0.187236,0.757877,0.050135,0.56311,0.752332,0.430959,0.751805,0.432483,0.988072,0.564809,0.988209,0.51828,0.0166324,0.347274,0.0399002,0.147604,0.104392,0.00848454,0.176624,0.190099,0.199337,0.740773,0.0594423,0.692858,0.00461304,0.018375,0.620233,0.211323,0.660779,0.187016,0.209003,0.00652452,0.18984,0.995101,0.287996,0.995829,0.315237,0.975595,0.294892,0.00611788,0.749456,0.00546479,0.989165,0.0247208,0.98853,0.0258328,0.749685,0.936165,0.335017,0.986856,0.340861,0.964988,0.311699,0.989667,0.779146,0.992773,0.358012,0.932477,0.351492,0.928252,0.77536,0.583872,0.803773,0.583872,0.993063,0.669207,0.99335,0.669207,0.803488,0.934328,0.993067,0.934328,0.803778,0.934264,0.799539,0.849098,0.800456,0.561611,0.744045,0.429864,0.743415,0.0259178,0.743314,0.00613368,0.743065,0.7591,0.800461,0.669102,0.800452,0.583936,0.799534,0.583936,0.997302,0.669102,0.996385,0.563271,0.994748,0.431328,0.994569,0.965691,0.79035,0.923146,0.787134,0.0246825,0.99576,0.00578511,0.99614,0.213296,0.669894,0.7591,0.99638,0.849097,0.996388,0.934263,0.997306,0.941208,0.993838,0.941209,0.803008,0.576991,0.803002,0.57699,0.993833,0.0208268,0.63551,0.988565,0.121744,0.782733,0.0131367,0.871303,0.0456923,0.717193,0.00408894]},"indices":[0,1,2,2,3,0,4,5,6,7,8,9,9,10,7,11,12,13,13,14,15,13,15,16,11,13,16,17,11,16,18,19,20,20,21,18,22,23,24,25,26,27,27,28,25,29,30,31,32,33,34,34,35,32,36,37,38,38,39,36,39,38,1,1,0,39,40,41,3,3,2,40,41,42,43,43,3,41,44,45,8,8,7,44,14,21,20,20,15,14,28,46,47,47,25,28,29,34,33,33,30,29,3,43,48,48,0,3,0,48,49,49,39,0,39,49,50,50,36,39,37,51,52,52,38,37,53,10,9,9,54,53,55,32,35,35,56,55,57,27,26,26,58,57,35,19,59,59,56,35,38,52,60,60,1,38,1,60,61,61,2,1,2,61,62,62,40,2,40,63,64,64,41,40,36,65,66,66,37,36,42,41,64,50,65,36,62,63,40,51,37,66,22,24,6,6,5,22,28,27,9,9,8,28,29,31,16,16,15,29,35,34,20,20,19,35,45,46,28,28,8,45,34,29,15,15,20,34,27,57,54,54,9,27,19,18,67,67,59,19,4,68,5,69,70,4,4,6,69,6,71,69],"bs":[0,0,0,2.318]},"diffuseMap":"cheese01.png"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

View File

@ -0,0 +1,193 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Blackjack</title>
<style>
body {
background: #0b3d91;
color: white;
font-family: Arial, sans-serif;
text-align: center;
padding: 20px;
}
button {
margin: 10px;
padding: 10px 20px;
font-size: 16px;
border: none;
border-radius: 5px;
background: #4CAF50;
color: white;
cursor: pointer;
}
button:hover {
background: #45a049;
}
#game {
margin-top: 20px;
}
canvas {
position: fixed;
pointer-events: none;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 9999;
}
</style>
</head>
<body>
<h1>Blackjack</h1>
<div id="game">
<div id="player"></div>
<div id="dealer"></div>
<div id="result"></div>
<button onclick="hit()">Hit</button>
<button onclick="stand()">Stand</button>
<button onclick="startGame()">Restart</button>
</div>
<canvas id="confetti-canvas"></canvas>
<script>
let playerCards = [];
let dealerCards = [];
let isGameOver = false;
const confettiCanvas = document.getElementById('confetti-canvas');
const ctx = confettiCanvas.getContext('2d');
let confetti = [];
function dealCard() {
const cards = [2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10, 11];
return cards[Math.floor(Math.random() * cards.length)];
}
function calculateScore(cards) {
let score = cards.reduce((a, b) => a + b, 0);
if (score > 21 && cards.includes(11)) {
cards[cards.indexOf(11)] = 1;
score = cards.reduce((a, b) => a + b, 0);
}
return score;
}
function startGame() {
playerCards = [dealCard(), dealCard()];
dealerCards = [dealCard(), dealCard()];
isGameOver = false;
document.getElementById('result').innerText = "";
confetti = [];
updateUI();
}
function hit() {
if (!isGameOver) {
playerCards.push(dealCard());
updateUI();
checkGameOver();
}
}
function stand() {
if (!isGameOver) {
while (calculateScore(dealerCards) < 17) {
dealerCards.push(dealCard());
}
isGameOver = true;
updateUI();
determineWinner();
}
}
function updateUI() {
document.getElementById('player').innerText = `Your cards: ${playerCards.join(', ')} (Score: ${calculateScore(playerCards)})`;
if (isGameOver) {
document.getElementById('dealer').innerText = `Dealer's cards: ${dealerCards.join(', ')} (Score: ${calculateScore(dealerCards)})`;
} else {
document.getElementById('dealer').innerText = `Dealer's first card: ${dealerCards[0]}`;
}
}
function checkGameOver() {
if (calculateScore(playerCards) > 21) {
isGameOver = true;
determineWinner();
}
}
function determineWinner() {
const playerScore = calculateScore(playerCards);
const dealerScore = calculateScore(dealerCards);
if (playerScore > 21) {
document.getElementById('result').innerText = "You busted! Dealer wins.";
} else if (dealerScore > 21) {
document.getElementById('result').innerText = "Dealer busted! You win!";
launchConfetti();
} else if (playerScore === dealerScore) {
document.getElementById('result').innerText = "It's a draw!";
} else if (playerScore > dealerScore) {
document.getElementById('result').innerText = "You win!";
launchConfetti();
} else {
document.getElementById('result').innerText = "Dealer wins.";
}
}
function launchConfetti() {
for (let i = 0; i < 100; i++) {
confetti.push({
x: Math.random() * window.innerWidth,
y: Math.random() * window.innerHeight - window.innerHeight,
r: Math.random() * 6 + 4,
d: Math.random() * 10 + 10,
color: `hsl(${Math.random() * 360}, 100%, 50%)`,
tilt: Math.random() * 10 - 10
});
}
}
function drawConfetti() {
ctx.clearRect(0, 0, confettiCanvas.width, confettiCanvas.height);
confetti.forEach((c, i) => {
ctx.beginPath();
ctx.lineWidth = c.r;
ctx.strokeStyle = c.color;
ctx.moveTo(c.x + c.tilt + c.r / 2, c.y);
ctx.lineTo(c.x + c.tilt, c.y + c.tilt + c.d / 2);
ctx.stroke();
c.y += Math.cos(c.d) + 1 + c.r / 2;
c.x += Math.sin(c.d);
if (c.y > window.innerHeight) {
confetti[i] = {
x: Math.random() * window.innerWidth,
y: -10,
r: c.r,
d: c.d,
color: c.color,
tilt: c.tilt
};
}
});
}
function resizeCanvas() {
confettiCanvas.width = window.innerWidth;
confettiCanvas.height = window.innerHeight;
}
resizeCanvas();
window.addEventListener('resize', resizeCanvas);
setInterval(drawConfetti, 30);
startGame();
</script>
</body>
</html>

View File

@ -1,871 +0,0 @@
/*
Orteil's crappy dungeon generation library, 2013
Unfinished and buggy, use at your own risk (please credit)
http://orteil.dashnet.org
Rough process (might or might not be what actually happens) :
1 make a room in the middle
2 pick one of its walls (not corners)
3 select a free tile on the other side of that wall
4 iteratively expand the selection in one (corridors) or two (rooms) directions, stopping when we meet a wall or when we're above the size threshold
5 compute that selection into a room
6 add decorations to the room (pillars, water) but only on the center tiles, as to leave free passages (sprinkle destructible decorations anywhere)
7 take a random floor tile in the room and repeat step 4, but don't stop at the walls of this room (this creates branching) - repeat about 5 times for interesting shapes
8 add those branches to the room
9 carve the room into the map, and set the initially selected wall as a door - set the new room's parent to the previous room, and add it to its parent's children
10 repeat step 2 with any free wall on the map until the amount of tiles dug is above the desired fill ratio
Note : I should probably switch the rendering to canvas to allow stuff like occlusion shadows and lights
*/
if (1==1 || undefined==Math.seedrandom)
{
//seeded random function, courtesy of http://davidbau.com/archives/2010/01/30/random_seeds_coded_hints_and_quintillions.html
(function(a,b,c,d,e,f){function k(a){var b,c=a.length,e=this,f=0,g=e.i=e.j=0,h=e.S=[];for(c||(a=[c++]);d>f;)h[f]=f++;for(f=0;d>f;f++)h[f]=h[g=j&g+a[f%c]+(b=h[f])],h[g]=b;(e.g=function(a){for(var b,c=0,f=e.i,g=e.j,h=e.S;a--;)b=h[f=j&f+1],c=c*d+h[j&(h[f]=h[g=j&g+b])+(h[g]=b)];return e.i=f,e.j=g,c})(d)}function l(a,b){var e,c=[],d=(typeof a)[0];if(b&&"o"==d)for(e in a)try{c.push(l(a[e],b-1))}catch(f){}return c.length?c:"s"==d?a:a+"\0"}function m(a,b){for(var d,c=a+"",e=0;c.length>e;)b[j&e]=j&(d^=19*b[j&e])+c.charCodeAt(e++);return o(b)}function n(c){try{return a.crypto.getRandomValues(c=new Uint8Array(d)),o(c)}catch(e){return[+new Date,a,a.navigator.plugins,a.screen,o(b)]}}function o(a){return String.fromCharCode.apply(0,a)}var g=c.pow(d,e),h=c.pow(2,f),i=2*h,j=d-1;c.seedrandom=function(a,f){var j=[],p=m(l(f?[a,o(b)]:0 in arguments?a:n(),3),j),q=new k(j);return m(o(q.S),b),c.random=function(){for(var a=q.g(e),b=g,c=0;h>a;)a=(a+c)*d,b*=d,c=q.g(1);for(;a>=i;)a/=2,b/=2,c>>>=1;return(a+c)/b},p},m(c.random(),b)})(this,[],Math,256,6,52);
}
if (1==1 || undefined==choose) {function choose(arr) {if (arr.length==0) return 0; else return arr[Math.floor(Math.random()*arr.length)];}}
var DungeonGen=function()
{
var TILE_EMPTY=0;//solid
var TILE_LIMIT=-100;//can't build anything here; edges of map
var TILE_FLOOR_EDGE=100;
var TILE_FLOOR_CENTER=110;
var TILE_DOOR=200;
var TILE_PILLAR=300;//not just pillars, could be any type of repetitive decoration
var TILE_WATER=400;
var TILE_WALL=500;
var TILE_WALL_CORNER=510;
var TILE_ENTRANCE=250;
var TILE_EXIT=260;
var colors=[];
colors[TILE_EMPTY]='000';
colors[TILE_LIMIT]='900';
colors[TILE_FLOOR_EDGE]='ffc';
colors[TILE_FLOOR_CENTER]='ff9';
colors[TILE_DOOR]='f9f';
colors[TILE_PILLAR]='990';
colors[TILE_WATER]='99f';
colors[TILE_WALL]='960';
colors[TILE_WALL_CORNER]='630';
colors[TILE_ENTRANCE]='f9f';
colors[TILE_EXIT]='f9f';
var rand=function(a,b){return Math.floor(Math.random()*(b-a+1)+a);}//return random value between a and b
var Patterns=[];
this.Pattern=function(name,func)
{
this.name=name;
this.func=func;
Patterns.push(this);
}
new this.Pattern('Pillars',function(x,y,room)
{
if ((x+room.x)%2==0 && (y+room.y)%2==0 && Math.random()<0.8) return TILE_PILLAR;
return 0;
});
new this.Pattern('Large pillars',function(x,y,room)
{
if ((x+room.x)%3<2 && (y+room.y)%3<2 && Math.random()<0.8) return TILE_PILLAR;
return 0;
});
new this.Pattern('Sparse pillars',function(x,y,room)
{
if ((x+room.x)%3==0 && (y+room.y)%3==0 && Math.random()<0.8) return TILE_PILLAR;
return 0;
});
new this.Pattern('Lines',function(x,y,room)
{
if (room.x%2==0) if ((x+room.x)%2==0 && Math.random()<0.98) return TILE_PILLAR;
if (room.x%2==1) if ((y+room.y)%2==0 && Math.random()<0.98) return TILE_PILLAR;
return 0;
});
var getRandomPattern=function()
{return choose(Patterns);}
var defaultGenerator=function(me)
{
me.roomSize=10;
me.corridorSize=5;
me.fillRatio=1/3;
me.corridorRatio=0.2;
me.pillarRatio=0.2;
me.waterRatio=0;
me.branching=4;
me.sizeVariance=0.2;
me.fillRatio=0.1+Math.random()*0.4;
me.roomSize=Math.ceil(rand(5,15)*me.fillRatio*2);
me.corridorSize=Math.ceil(rand(1,7)*me.fillRatio*2);
me.corridorRatio=Math.random()*0.8+0.1;
me.pillarRatio=Math.random()*0.5+0.5;
me.waterRatio=Math.pow(Math.random(),2);
me.branching=Math.floor(Math.random()*6);
me.sizeVariance=Math.random();
}
this.Map=function(w,h,seed,params)
{
//create a new map
//leave the seed out for a random seed
//params is an object that contains custom parameters as defined in defaultGenerator
//example : MyMap=new DungeonGen.Map(30,30,MySeed,{waterRatio:0.8}); (80 percent of the rooms will contain water)
if (undefined!=seed) this.seed=seed; else {Math.seedrandom();this.seed=Math.random();}
Math.seedrandom(this.seed);
this.seedState=Math.random;
this.w=w||20;
this.h=h||20;
this.roomsAreHidden=0;
this.rooms=[];
this.freeWalls=[];//all walls that would be a good spot for a door
this.freeTiles=[];//all passable floor tiles
this.doors=[];
this.tiles=this.w*this.h;
this.tilesDug=0;
this.digs=0;//amount of digging steps
this.stuck=0;//how many times we ran into a problem; stop digging if we get too many of these
this.data=[];//fill the map with 0
for (var x=0;x<this.w;x++)
{
this.data[x]=[];
for (var y=0;y<this.h;y++)
{
this.data[x][y]=[TILE_EMPTY,-1,0];//data is stored as [tile system type,room id,tile displayed type] (-1 is no room)
if (x==0 || y==0 || x==this.w-1 || y==this.h-1) this.data[x][y]=[TILE_LIMIT,-1,0];
}
}
defaultGenerator(this);
if (params)
{
for (var i in params)
{
this[i]=params[i];
}
}
Math.seedrandom();
}
this.Map.prototype.getType=function(x,y){return this.data[x][y][0];}
this.Map.prototype.getRoom=function(x,y){if (this.data[x][y][1]!=-1) return this.rooms[this.data[x][y][1]]; else return -1;}
this.Map.prototype.getTile=function(x,y){return this.rooms[this.data[x][y][2]];}
this.Map.prototype.isWall=function(x,y)
{
var n=0;
for (var i in this.freeWalls){if (this.freeWalls[i][0]==x && this.freeWalls[i][1]==y) return n; else n++;}
return -1;
}
this.Map.prototype.isFloor=function(x,y)
{
var n=0;
for (var i in this.freeTiles){if (this.freeTiles[i][0]==x && this.freeTiles[i][1]==y) return n; else n++;}
return -1;
}
this.Map.prototype.removeFreeTile=function(x,y)
{
this.freeTiles.splice(this.isFloor(x,y),1);
}
this.Map.prototype.fill=function(what)
{
//fill with something (either a set value, or a function that takes the map, a position X and a position Y as arguments)
//NOTE : this also resets the rooms!
//example : MyMap.fill(function(m,x,y){return Math.floor((Math.random());});
//...will fill the map with 0s and 1s
var func=0;
if (typeof(what)=='function') func=1;
for (var x=0;x<this.w;x++){for (var y=0;y<this.h;y++){
if (func) this.data[x][y]=[what(this,x,y),-1,0]; else this.data[x][y]=[what,-1,0];
}}
this.rooms=[];
}
this.Map.prototype.fillZone=function(X,Y,W,H,what)
{
//just plain fill a rectangle
for (var x=X;x<X+W;x++){for (var y=Y;y<Y+H;y++){
this.data[x][y][0]=what;
}}
}
this.Map.prototype.getRoomTile=function(room,x,y)
{
var n=0;
for (var i in room.tiles) {if (room.tiles[i].x==x && room.tiles[i].y==y) return n; else n++;}
return -1;
}
this.Map.prototype.getFloorTileInRoom=function(room)
{
var tiles=[];
for (var i in room.tiles) {if (room.tiles[i].type==TILE_FLOOR_EDGE || room.tiles[i].type==TILE_FLOOR_CENTER) tiles.push(room.tiles[i]);}
return choose(tiles);
}
this.Map.prototype.canPlaceRoom=function(rx,ry,rw,rh)
{
if (rx<2 || ry<2 || rx+rw>=this.w-1 || ry+rh>=this.h-1) return false;
for (var x=rx;x<rx+rw;x++)
{
for (var y=ry;y<ry+rh;y++)
{
var tile=this.getType(x,y);
var room=this.getRoom(x,y);
if (tile==TILE_LIMIT) return false;
if (room!=-1) return false;
}
}
return true;
}
this.Map.prototype.setRoomTile=function(room,x,y,tile)
{
//var mapTile=this.getType(x,y);
var oldTile=this.getRoomTile(room,x,y);
var oldTileType=oldTile!=-1?room.tiles[oldTile].type:-1;
if (oldTile!=-1 && (
//(tile!=TILE_FLOOR_EDGE && tile!=TILE_FLOOR_CENTER) ||// && (oldTileType!=TILE_FLOOR_EDGE && oldTileType!=TILE_FLOOR_CENTER)) ||
//(tile!=TILE_FLOOR_EDGE && tile!=TILE_FLOOR_CENTER && (oldTileType!=TILE_FLOOR_EDGE && oldTileType!=TILE_FLOOR_CENTER)) ||
(tile==TILE_WALL || tile==TILE_WALL_CORNER) ||//don't place a wall over an existing room
(tile==TILE_FLOOR_EDGE && oldTileType==TILE_FLOOR_CENTER)//don't place an edge floor over a center floor
)) {return false;}
else
{
if (oldTile!=-1) room.tiles.splice(oldTile,1);
room.tiles.push({x:x,y:y,type:tile,score:0});
if ((tile==TILE_FLOOR_EDGE || tile==TILE_FLOOR_CENTER) && (oldTileType!=TILE_FLOOR_EDGE && oldTileType!=TILE_FLOOR_CENTER)) room.freeTiles++;
else if (tile!=TILE_FLOOR_EDGE && tile!=TILE_FLOOR_CENTER && (oldTileType==TILE_FLOOR_EDGE || oldTileType==TILE_FLOOR_CENTER)) room.freeTiles--;
return true;
}
}
this.Map.prototype.expandRoom=function(room,rx,ry,rw,rh)
{
var x=0;var y=0;
//floor
for (var x=rx;x<rx+rw;x++){for (var y=ry;y<ry+rh;y++){
this.setRoomTile(room,x,y,TILE_FLOOR_EDGE);
}}
for (var x=rx+1;x<rx+rw-1;x++){for (var y=ry+1;y<ry+rh-1;y++){
this.setRoomTile(room,x,y,TILE_FLOOR_CENTER);
}}
//walls
y=ry-1;
for (var x=rx;x<rx+rw;x++){
this.setRoomTile(room,x,y,TILE_WALL);
}
y=ry+rh;
for (var x=rx;x<rx+rw;x++){
this.setRoomTile(room,x,y,TILE_WALL);
}
x=rx-1;
for (var y=ry;y<ry+rh;y++){
this.setRoomTile(room,x,y,TILE_WALL);
}
x=rx+rw;
for (var y=ry;y<ry+rh;y++){
this.setRoomTile(room,x,y,TILE_WALL);
}
//corners
x=rx-1;y=ry-1;
this.setRoomTile(room,x,y,TILE_WALL_CORNER);
x=rx+rw;y=ry-1;
this.setRoomTile(room,x,y,TILE_WALL_CORNER);
x=rx-1;y=ry+rh;
this.setRoomTile(room,x,y,TILE_WALL_CORNER);
x=rx+rw;y=ry+rh;
this.setRoomTile(room,x,y,TILE_WALL_CORNER);
//decoration
var water=Math.random()<this.waterRatio?1:0;
var pattern=Math.random()<this.pillarRatio?getRandomPattern():0;
for (var x=rx;x<rx+rw;x++){for (var y=ry;y<ry+rh;y++){
if (room.tiles[this.getRoomTile(room,x,y)].type==TILE_FLOOR_CENTER)
{
var tile=0;
if (water!=0) tile=TILE_WATER;
if (pattern!=0)
{
tile=pattern.func(x,y,room)||tile;
}
if (tile!=0) this.setRoomTile(room,x,y,tile);
}
}}
}
this.Map.prototype.newRoom=function(x,y,w,h,parent)
{
//create a new abstract room, ready to be carved
var room={};
room.id=this.rooms.length;
room.w=w;//||rand(2,this.roomSize);
room.h=h;//||rand(2,this.roomSize);
room.x=x||rand(1,this.w-room.w-1);
room.y=y||rand(1,this.h-room.h-1);
room.tiles=[];
room.freeTiles=0;
room.parent=parent?parent:-1;
room.children=[];
room.gen=0;
room.door=0;
room.corridor=Math.random()<this.corridorRatio?1:0;
room.hidden=this.roomsAreHidden;//if 1, don't draw
//if (room.parent!=-1) room.corridor=!room.parent.corridor;//alternate rooms and corridors
return room;
}
this.Map.prototype.planRoom=function(room)
{
var branches=this.branching+1;
var forcedExpansions=[];
var w=room.w;
var h=room.h;
while (w>0 && h>0)
{
if (w>0) {forcedExpansions.push(1,3);w--;}
if (h>0) {forcedExpansions.push(2,4);h--;}
}
for (var i=0;i<branches;i++)
{
var steps=0;
var expansions=[];
if (!room.corridor)
{
expansions=[1,2,3,4];
steps=this.roomSize;
}
else
{
expansions=choose([[1,3],[2,4]]);
steps=this.corridorSize;
}
steps=Math.max(room.w+room.h,Math.ceil(steps*(1-Math.random()*this.sizeVariance)));
if (room.tiles.length==0) {var rx=room.x;var ry=room.y;var rw=1;var rh=1;}
else {var randomTile=this.getFloorTileInRoom(room);var rx=randomTile.x;var ry=randomTile.y;var rw=1;var rh=1;}
for (var ii=0;ii<steps;ii++)
{
if (expansions.length==0) break;
var xd=0;var yd=0;var wd=0;var hd=0;
var side=choose(expansions);
if (forcedExpansions.length>0) side=forcedExpansions[0];
if (side==1) {xd=-1;wd=1;}
else if (side==2) {yd=-1;hd=1;}
else if (side==3) {wd=1;}
else if (side==4) {hd=1;}
if (this.canPlaceRoom(rx+xd,ry+yd,rw+wd,rh+hd)) {rx+=xd;ry+=yd;rw+=wd;rh+=hd;} else expansions.splice(expansions.indexOf(side),1);
if (forcedExpansions.length>0) forcedExpansions.splice(0,1);
}
if (rw>1 || rh>1)
{
this.expandRoom(room,rx,ry,rw,rh);
}
}
}
this.Map.prototype.carve=function(room)
{
//carve a room into the map
for (var i in room.tiles)
{
var thisTile=room.tiles[i];
var x=thisTile.x;var y=thisTile.y;
var myType=this.data[x][y][0];
var type=thisTile.type;
if ((type==TILE_WALL || type==TILE_WALL_CORNER) && this.isWall(x,y)!=-1) {this.freeWalls.splice(this.isWall(x,y),1);}
if (this.data[x][y][1]!=-1 && (type==TILE_WALL || type==TILE_WALL_CORNER)) {}
else
{
if (this.data[x][y][1]==-1) this.tilesDug++;
this.data[x][y]=[thisTile.type,room.id,0];
if (x>1 && y>1 && x<this.w-2 && y<this.h-2 && type==TILE_WALL) this.freeWalls.push([x,y]);
if (type==TILE_FLOOR_EDGE || type==TILE_FLOOR_CENTER) this.freeTiles.push([x,y]);
}
var pos=[x,y];
}
this.rooms[room.id]=room;
}
this.Map.prototype.newRandomRoom=function(params)
{
var success=1;
params=params||{};//params is an object such as {corridor:1}
var door=choose(this.freeWalls);//select a free wall to use as a door
if (!door) {success=0;}
else
{
//this.data[door[0]][door[1]][0]=TILE_LIMIT;//not door
var parentRoom=this.getRoom(door[0],door[1]);
var sides=[];//select a free side of that door
if (this.getType(door[0]-1,door[1])==TILE_EMPTY) sides.push([-1,0]);
if (this.getType(door[0]+1,door[1])==TILE_EMPTY) sides.push([1,0]);
if (this.getType(door[0],door[1]-1)==TILE_EMPTY) sides.push([0,-1]);
if (this.getType(door[0],door[1]+1)==TILE_EMPTY) sides.push([0,1]);
var side=choose(sides);
if (!side) {success=0;this.freeWalls.splice(this.isWall(door[0],door[1]),1);}
else
{
var room=this.newRoom(door[0]+side[0],door[1]+side[1],0,0,parentRoom);//try a new room from this spot
for (var i in params)
{
room[i]=params[i];
}
this.planRoom(room);
if (room.tiles.length>0 && room.freeTiles>0)//we got a decent room
{
this.carve(room);
this.data[door[0]][door[1]][0]=TILE_DOOR;//place door
room.door=[door[0],door[1]];
this.data[door[0]][door[1]][1]=room.id;//set ID
this.freeWalls.splice(this.isWall(door[0],door[1]),1);//the door isn't a wall anymore
this.doors.push([door[0],door[1],room]);
//remove free tiles on either side of the door
if (this.isFloor(door[0]+side[0],door[1]+side[1])!=-1) this.removeFreeTile(door[0]+side[0],door[1]+side[1]);
if (this.isFloor(door[0]-side[0],door[1]-side[1])!=-1) this.removeFreeTile(door[0]-side[0],door[1]-side[1]);
room.parent=parentRoom;
parentRoom.children.push(room);
room.gen=parentRoom.gen+1;
}
else//not a good spot; remove this tile from the list of walls
{
this.freeWalls.splice(this.isWall(door[0],door[1]),1);
success=0;
}
}
}
if (success) return room;
else return 0;
}
this.Map.prototype.getRandomSpotInRoom=function(room)
{
var listOfTiles=[];
for (var i in room.tiles)
{
if ((room.tiles[i].type==TILE_FLOOR_EDGE || room.tiles[i].type==TILE_FLOOR_CENTER) && this.isFloor(room.tiles[i].x,room.tiles[i].y)!=-1)
{
listOfTiles.push(room.tiles[i]);
}
}
if (listOfTiles.length==0) return -1;
return choose(listOfTiles);
}
this.Map.prototype.getBestSpotInRoom=function(room)
{
var highest=-1;
var listOfHighest=[];
for (var i in room.tiles)
{
if ((room.tiles[i].type==TILE_FLOOR_EDGE || room.tiles[i].type==TILE_FLOOR_CENTER) && this.isFloor(room.tiles[i].x,room.tiles[i].y)!=-1)
{
if (room.tiles[i].score>highest)
{
listOfHighest=[];
highest=room.tiles[i].score;
listOfHighest.push(room.tiles[i]);
}
else if (room.tiles[i].score==highest)
{
listOfHighest.push(room.tiles[i]);
}
}
}
if (listOfHighest.length==0) return -1;
return choose(listOfHighest);
}
this.Map.prototype.getEarliestRoom=function()
{
return this.rooms[0];
}
this.Map.prototype.getDeepestRoom=function()
{
var deepest=0;
var deepestRoom=this.rooms[0];
for (var i in this.rooms)
{
if ((this.rooms[i].gen+Math.sqrt(this.rooms[i].freeTiles)*0.05)>=deepest && this.rooms[i].corridor==0 && this.rooms[i].freeTiles>4) {deepest=(this.rooms[i].gen+Math.sqrt(this.rooms[i].freeTiles)*0.05);deepestRoom=this.rooms[i];}
}
return deepestRoom;
}
this.Map.prototype.dig=function()
{
//one step in which we try to carve new stuff
//returns 0 when we couldn't dig this step, 1 when we could, and 2 when the digging is complete
Math.random=this.seedState;
var badDig=0;
if (this.digs==0)//first dig : build a starting room in the middle of the map
{
var w=rand(3,7);
var h=rand(3,7);
var room=this.newRoom(Math.floor(this.w/2-w/2),Math.floor(this.h/2-h/2),w,h);
room.corridor=0;
this.planRoom(room);
this.carve(room);
}
else
{
if (this.newRandomRoom()==0) badDig++;
}
if (badDig>0) this.stuck++;
this.digs++;
var finished=0;
if (this.tilesDug>=this.tiles*this.fillRatio) finished=1;
if (this.stuck>100) finished=1;
if (finished==1)//last touch : try to add a whole room at the end
{
for (var i=0;i<10;i++)
{
var newRoom=this.newRandomRoom({corridor:0,w:rand(3,7),h:rand(3,7)});
if (newRoom!=0 && newRoom.freeTiles>15) break;
}
}
Math.seedrandom();
if (finished==1) return 1; else if (badDig>0) return -1; else return 0;
}
this.Map.prototype.finish=function()
{
//touch up the map : add pillars in corners etc
/*
//set paths
for (var i in this.rooms)
{
var me=this.rooms[i];
if (me.door!=0)
{
var doors=[];
doors.push(me.door);
for (var ii in me.children)
{
if (me.children[ii].door!=0) doors.push(me.children[ii].door);
}
for (var ii in doors)
{
this.data[doors[ii][0]][doors[ii][1]][0]=TILE_LIMIT;
//ideally we should run agents that step from each door to the next
}
}
}
*/
for (var i in this.rooms)
{
var pillars=Math.random()<this.pillarRatio;
for (var ii in this.rooms[i].tiles)
{
var x=this.rooms[i].tiles[ii].x;
var y=this.rooms[i].tiles[ii].y;
var me=this.data[x][y][0];
var x1=this.data[x-1][y][0];
var x2=this.data[x+1][y][0];
var y1=this.data[x][y-1][0];
var y2=this.data[x][y+1][0];
var xy1=this.data[x-1][y-1][0];
var xy2=this.data[x+1][y-1][0];
var xy3=this.data[x-1][y+1][0];
var xy4=this.data[x+1][y+1][0];
var walls=0;
if ((x1==TILE_WALL||x1==TILE_WALL_CORNER)) walls++;
if ((y1==TILE_WALL||y1==TILE_WALL_CORNER)) walls++;
if ((x2==TILE_WALL||x2==TILE_WALL_CORNER)) walls++;
if ((y2==TILE_WALL||y2==TILE_WALL_CORNER)) walls++;
if ((xy1==TILE_WALL||xy1==TILE_WALL_CORNER)) walls++;
if ((xy2==TILE_WALL||xy2==TILE_WALL_CORNER)) walls++;
if ((xy3==TILE_WALL||xy3==TILE_WALL_CORNER)) walls++;
if ((xy4==TILE_WALL||xy4==TILE_WALL_CORNER)) walls++;
var floors=0;
if ((x1==TILE_FLOOR_CENTER||x1==TILE_FLOOR_EDGE)) floors++;
if ((y1==TILE_FLOOR_CENTER||y1==TILE_FLOOR_EDGE)) floors++;
if ((x2==TILE_FLOOR_CENTER||x2==TILE_FLOOR_EDGE)) floors++;
if ((y2==TILE_FLOOR_CENTER||y2==TILE_FLOOR_EDGE)) floors++;
if ((xy1==TILE_FLOOR_CENTER||xy1==TILE_FLOOR_EDGE)) floors++;
if ((xy2==TILE_FLOOR_CENTER||xy2==TILE_FLOOR_EDGE)) floors++;
if ((xy3==TILE_FLOOR_CENTER||xy3==TILE_FLOOR_EDGE)) floors++;
if ((xy4==TILE_FLOOR_CENTER||xy4==TILE_FLOOR_EDGE)) floors++;
var complete=0;
if (walls+floors==8) complete=1;
var angle=0;
if (complete)
{
var top=0;
var left=0;
var right=0;
var bottom=0;
if ((xy1==TILE_WALL||xy1==TILE_WALL_CORNER) && (y1==TILE_WALL||y1==TILE_WALL_CORNER) && (xy2==TILE_WALL||xy2==TILE_WALL_CORNER)) top=1;
else if ((xy1==TILE_FLOOR_CENTER||xy1==TILE_FLOOR_EDGE) && (y1==TILE_FLOOR_CENTER||y1==TILE_FLOOR_EDGE) && (xy2==TILE_FLOOR_CENTER||xy2==TILE_FLOOR_EDGE)) top=-1;
if ((xy2==TILE_WALL||xy2==TILE_WALL_CORNER) && (x2==TILE_WALL||x2==TILE_WALL_CORNER) && (xy4==TILE_WALL||xy4==TILE_WALL_CORNER)) right=1;
else if ((xy2==TILE_FLOOR_CENTER||xy2==TILE_FLOOR_EDGE) && (x2==TILE_FLOOR_CENTER||x2==TILE_FLOOR_EDGE) && (xy4==TILE_FLOOR_CENTER||xy4==TILE_FLOOR_EDGE)) right=-1;
if ((xy1==TILE_WALL||xy1==TILE_WALL_CORNER) && (x1==TILE_WALL||x1==TILE_WALL_CORNER) && (xy3==TILE_WALL||xy3==TILE_WALL_CORNER)) left=1;
else if ((xy1==TILE_FLOOR_CENTER||xy1==TILE_FLOOR_EDGE) && (x1==TILE_FLOOR_CENTER||x1==TILE_FLOOR_EDGE) && (xy3==TILE_FLOOR_CENTER||xy3==TILE_FLOOR_EDGE)) left=-1;
if ((xy3==TILE_WALL||xy3==TILE_WALL_CORNER) && (y2==TILE_WALL||y2==TILE_WALL_CORNER) && (xy4==TILE_WALL||xy4==TILE_WALL_CORNER)) bottom=1;
else if ((xy3==TILE_FLOOR_CENTER||xy3==TILE_FLOOR_EDGE) && (y2==TILE_FLOOR_CENTER||y2==TILE_FLOOR_EDGE) && (xy4==TILE_FLOOR_CENTER||xy4==TILE_FLOOR_EDGE)) bottom=-1;
if ((top==1 && bottom==-1) || (top==-1 && bottom==1) || (left==1 && right==-1) || (left==-1 && right==1)) angle=1;
}
if (pillars && Math.random()<0.8 && this.rooms[i].freeTiles>4)
{
if ((angle==1 || (complete && walls==7)) && me==TILE_FLOOR_EDGE && x1!=TILE_DOOR && x2!=TILE_DOOR && y1!=TILE_DOOR && y2!=TILE_DOOR)
{
this.data[x][y][0]=TILE_PILLAR;
me=TILE_PILLAR;
this.removeFreeTile(x,y);
this.rooms[i].freeTiles--;
}
}
//calculate score (for placing items and exits)
if (top==1 || bottom==1 || left==1 || right==1)
{
this.rooms[i].tiles[ii].score+=2;
}
if (walls>5 || floors>5)
{
this.rooms[i].tiles[ii].score+=1;
}
if (walls==7 || floors==8)
{
this.rooms[i].tiles[ii].score+=5;
}
if ((me!=TILE_FLOOR_CENTER && me!=TILE_FLOOR_EDGE) || x1==TILE_DOOR || x2==TILE_DOOR || y1==TILE_DOOR || y2==TILE_DOOR) this.rooms[i].tiles[ii].score=-1;
}
}
//carve entrance and exit
var entrance=this.getBestSpotInRoom(this.getEarliestRoom());
this.data[entrance.x][entrance.y][0]=TILE_ENTRANCE;
this.entrance=[entrance.x,entrance.y];
entrance.score=0;
this.removeFreeTile(entrance.x,entrance.y);
var exit=this.getBestSpotInRoom(this.getDeepestRoom());
this.data[exit.x][exit.y][0]=TILE_EXIT;
this.exit=[exit.x,exit.y];
this.removeFreeTile(exit.x,exit.y);
exit.score=0;
/*
for (var i in this.doors)//remove door tiles (to add later; replace the tiles by entities that delete themselves when opened)
{
this.data[this.doors[i][0]][this.doors[i][1]][0]=TILE_FLOOR_EDGE;
}
*/
}
this.Map.prototype.isObstacle=function(x,y)
{
var free=[TILE_FLOOR_EDGE,TILE_FLOOR_CENTER,TILE_DOOR,TILE_ENTRANCE,TILE_EXIT];
for (var i in free)
{
if (this.data[x][y][0]==free[i]) return 0;
}
return 1;
}
var joinTile=function(map,x,y,joinWith)
{
//for the tile at x,y, return 2 if it joins with its horizontal neighbors, 3 if it joins with its vertical neighbors, 1 if it joins with either both or neither.
//joinWith contains the tile types that count as joinable, in addition to this tile. (don't add the tested tile to joinWith!)
var p=1;
var me=map.data[x][y][0];
var x1=map.data[x-1][y][0];
var x2=map.data[x+1][y][0];
var y1=map.data[x][y-1][0];
var y2=map.data[x][y+1][0];
joinWith.push(me);
var joinsX=0;
for (var i in joinWith)
{
if (x1==joinWith[i]) joinsX++;
if (x2==joinWith[i]) joinsX++;
}
var joinsY=0;
for (var i in joinWith)
{
if (y1==joinWith[i]) joinsY++;
if (y2==joinWith[i]) joinsY++;
}
if (joinsX==2 && joinsY==2) p=1;
else if (joinsX==2) p=2;
else if (joinsY==2) p=3;
return p;
}
this.Map.prototype.getPic=function(x,y)
{
//return a position [x,y] in the tiles (as 0, 1, 2...) for the tile on the map at position x,y
if (Tiles[this.data[x][y][2]])
{
if (Tiles[this.data[x][y][2]].joinType=='join')
{
var thisPic=Tiles[this.data[x][y][2]].pic;
thisPic=[thisPic[0],thisPic[1]];//why is this even necessary?
var joinWith=[];
if (this.data[x][y][0]==TILE_WALL) joinWith.push(TILE_WALL_CORNER);
else if (this.data[x][y][0]==TILE_DOOR) joinWith.push(TILE_WALL,TILE_WALL_CORNER);
thisPic[0]+=joinTile(this,x,y,joinWith)-1;
return thisPic;
}
else if (Tiles[this.data[x][y][2]].joinType=='random3')
{
var thisPic=Tiles[this.data[x][y][2]].pic;
thisPic=[thisPic[0],thisPic[1]];
thisPic[0]+=Math.floor(Math.random()*3);
return thisPic;
}
return Tiles[this.data[x][y][2]].pic;
}
return [0,0];
}
var Tiles=[];
var TilesByName=[];
this.Tile=function(name,pic,joinType)
{
this.name=name;
this.pic=pic;
this.joinType=joinType||'none';
this.id=Tiles.length;
Tiles[this.id]=this;
TilesByName[this.name]=this;
}
new this.Tile('void',[0,0]);
this.loadTiles=function(tiles)
{
for (var i in tiles)
{
var name=tiles[i][0];
var pic=tiles[i][1];
var joinType=tiles[i][2];
new this.Tile(name,pic,joinType);
}
}
var computeTile=function(tile,tiles,value,name)
{
if (tile==value && tiles[name]) return TilesByName[tiles[name]];
return 0;
}
this.Map.prototype.assignTiles=function(room,tiles)
{
//set the displayed tiles for this room
for (var i in room.tiles)
{
var type=Tiles[0];
var me=room.tiles[i];
var tile=this.data[me.x][me.y][0];
type=computeTile(tile,tiles,TILE_WALL_CORNER,'wall corner')||type;
type=computeTile(tile,tiles,TILE_WALL,'wall')||type;
type=computeTile(tile,tiles,TILE_FLOOR_EDGE,'floor edges')||type;
type=computeTile(tile,tiles,TILE_FLOOR_CENTER,'floor')||type;
type=computeTile(tile,tiles,TILE_PILLAR,'pillar')||type;
type=computeTile(tile,tiles,TILE_DOOR,'door')||type;
type=computeTile(tile,tiles,TILE_WATER,'water')||type;
type=computeTile(tile,tiles,TILE_ENTRANCE,'entrance')||type;
type=computeTile(tile,tiles,TILE_EXIT,'exit')||type;
this.data[me.x][me.y][2]=type.id;
}
}
this.Map.prototype.draw=function(size)
{
//return a string containing a rough visual representation of the map
var str='';
var size=size||10;
for (var y=0;y<this.h;y++){for (var x=0;x<this.w;x++){
var text='';
if (this.isFloor(x,y)!=-1) text='o';
if (this.isWall(x,y)!=-1) text+='x';
var room=this.getRoom(x,y);
var opacity=Math.max(0.1,1-(this.getRoom(x,y).gen/10));
var title=room.freeTiles;//this.data[x][y][0].toString();
text='';
str+='<div style="opacity:'+opacity+';width:'+size+'px;height:'+size+'px;position:absolute;left:'+(x*size)+'px;top:'+(y*size)+'px;display:block;padding:0px;margin:0px;background:#'+colors[this.data[x][y][0]]+';color:#999;" title="'+title+'">'+text+'</div>';
}
str+='<br>';
}
str='<div style="position:relative;width:'+(this.w*size)+'px;height:'+(this.h*size)+'px;background:#000;font-family:Courier;font-size:'+size+'px;float:left;margin:10px;">'+str+'</div>';
return str;
}
this.Map.prototype.drawDetailed=function()
{
//return a string containing a rough visual representation of the map (with graphics)
var str='';
var size=16;
for (var y=0;y<this.h;y++){for (var x=0;x<this.w;x++){
var room=this.getRoom(x,y);
//var opacity=Math.max(0.1,room.tiles[this.getRoomTile(room,x,y)].score);
var opacity=1;
var title='void';
if (room!=-1)
{
opacity=Math.max(0.1,1-room.gen/5);
if (this.data[x][y][0]==TILE_ENTRANCE || this.data[x][y][0]==TILE_EXIT) opacity=1;
title=(room.corridor?'corridor':'room')+' '+room.id+' | depth : '+room.gen+' | children : '+room.children.length;
}
var pic=this.getPic(x,y);
str+='<div style="opacity:'+opacity+';width:'+size+'px;height:'+size+'px;position:absolute;left:'+(x*size)+'px;top:'+(y*size)+'px;display:block;padding:0px;margin:0px;background:#'+colors[this.data[x][y][0]]+' url(img/dungeonTiles.png) '+(-pic[0]*16)+'px '+(-pic[1]*16)+'px;color:#999;" title="'+title+'"></div>';
}
str+='<br>';
}
str='<div style="box-shadow:0px 0px 12px 6px #00061b;position:relative;width:'+(this.w*size)+'px;height:'+(this.h*size)+'px;background:#00061b;font-family:Courier;font-size:'+size+'px;float:left;margin:10px;">'+str+'</div>';
return str;
}
this.Map.prototype.getStr=function()
{
//return a string containing the map with tile graphics, ready to be pasted in a wrapper
var str='';
var size=16;
for (var y=0;y<this.h;y++){for (var x=0;x<this.w;x++){
var room=this.getRoom(x,y);
//var opacity=Math.max(0.1,room.tiles[this.getRoomTile(room,x,y)].score);
var opacity=1;
var title='void';
var pic=this.getPic(x,y);
if (room!=-1)
{
/*
opacity=Math.max(0.1,1-room.gen/5);
if (room.hidden) opacity=0;
if (this.data[x][y][0]==TILE_ENTRANCE || this.data[x][y][0]==TILE_EXIT) opacity=1;
*/
if (room.hidden) pic=[0,0];
title=(room.corridor?'corridor':'room')+' '+room.id+' | depth : '+room.gen+' | children : '+room.children.length;
}
str+='<div style="opacity:'+opacity+';width:'+size+'px;height:'+size+'px;position:absolute;left:'+(x*size)+'px;top:'+(y*size)+'px;display:block;padding:0px;margin:0px;background:#'+colors[this.data[x][y][0]]+' url(img/dungeonTiles.png) '+(-pic[0]*16)+'px '+(-pic[1]*16)+'px;color:#999;" title="'+title+'"></div>';
}
str+='<br>';
}
return str;
}
}

View File

@ -1,54 +0,0 @@
# cookieclicker
<img src="img/perfectCookie.png" width="128">
The original game can be found at http://orteil.dashnet.org/cookieclicker/
This mirror for, errrr, like, educational purpose, either to download for your own offline education or to be played online from http://ozh.github.io/cookieclicker/ if you cannot "educate" yourself on the original URL
### How to update
If the original game updates, here is how you can update the mirror:
#### 1. Fetch all new images :
From the root,
* `cd img/`
* `wget --convert-links -O index.html http://orteil.dashnet.org/cookieclicker/img/`
* `grep -v PARENTDIR index.html | grep '\[IMG' | grep -Po 'a href="\K.*?(?=")' | sed 's/\?.*//' > _imglist.txt`
* `wget -N -i _imglist.txt -B http://orteil.dashnet.org/cookieclicker/img/`
#### 2. Fetch all new sounds :
Similarly, from the root :
* `cd snd/`
* `wget --convert-links -O index.html http://orteil.dashnet.org/cookieclicker/snd/`
* `grep -v PARENTDIR index.html | grep '\[SND' | grep -Po 'a href="\K.*?(?=")' | sed 's/\?.*//' > _sndlist.txt`
* `wget -N -i _sndlist.txt -B http://orteil.dashnet.org/cookieclicker/snd/`
#### 3. Fetch all new translations :
Similarly, from the root :
* `cd loc/`
* `wget --convert-links -O index.html http://orteil.dashnet.org/cookieclicker/loc/`
* `grep -v PARENTDIR index.html | grep '\[ ' | grep -Po 'a href="\K.*?(?=")' | sed 's/\?.*//' > _loclist.txt`
* `wget -N -i _loclist.txt -B http://orteil.dashnet.org/cookieclicker/loc/`
#### 4. Update `js` and `html` files :
From the root directory :
* Fetch the updated `index.html` file: `wget -O index.html http://orteil.dashnet.org/cookieclicker/`
* Fetch the updated `style.css` file: `wget -O style.css http://orteil.dashnet.org/cookieclicker/style.css`
* Fetch updated `js` files : `wget -N -i _jslist.txt -B http://orteil.dashnet.org/cookieclicker/`
* Scan `index.html` for any new `<script src` and also `main.js` for any new local javascript (eg `Game.last.minigameUrl`). If there are new scripts, update the `_jslist.txt` accordingly.
* In `main.js` there is a call to a remote script we need to modify:
* Look for `ajax('/patreon/grab.php'` and replace it with `ajax('grab.txt'`
* In the root: `wget -O grab.txt http://orteil.dashnet.org/patreon/grab.php`
#### 5. Report update here :)
If you happen to update, please make a pull request for others to benefit, thanks!

View File

@ -1,11 +0,0 @@
ajax.js
showads.js
base64.js
DungeonGen.js
dungeons.js
excanvas.compiled.js
main.js
minigameGarden.js
minigameGrimoire.js
minigamePantheon.js
minigameMarket.js

View File

@ -1,6 +0,0 @@
function ajax(url,callback){
var ajaxRequest;
try{ajaxRequest = new XMLHttpRequest();} catch (e){try{ajaxRequest=new ActiveXObject('Msxml2.XMLHTTP');} catch (e) {try{ajaxRequest=new ActiveXObject('Microsoft.XMLHTTP');} catch (e){alert("Something broke!");return false;}}}
if (callback){ajaxRequest.onreadystatechange=function(){if(ajaxRequest.readyState==4){callback(ajaxRequest.responseText);}}}
ajaxRequest.open('GET',url+'&nocache='+(new Date().getTime()),true);ajaxRequest.send(null);
}

View File

@ -1,142 +0,0 @@
/**
*
* Base64 encode / decode
* http://www.webtoolkit.info/
*
**/
var Base64 = {
// private property
_keyStr : "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
// public method for encoding
encode : function (input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = Base64._utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2)) {
enc3 = enc4 = 64;
} else if (isNaN(chr3)) {
enc4 = 64;
}
output = output +
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
}
return output;
},
// public method for decoding
decode : function (input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = Base64._utf8_decode(output);
return output;
},
// private method for UTF-8 encoding
_utf8_encode : function (string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
},
// private method for UTF-8 decoding
_utf8_decode : function (utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while ( i < utftext.length ) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
}
else if((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i+1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}
else {
c2 = utftext.charCodeAt(i+1);
c3 = utftext.charCodeAt(i+2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,35 +0,0 @@
// Copyright 2006 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
document.createElement("canvas").getContext||(function(){var s=Math,j=s.round,F=s.sin,G=s.cos,V=s.abs,W=s.sqrt,k=10,v=k/2;function X(){return this.context_||(this.context_=new H(this))}var L=Array.prototype.slice;function Y(b,a){var c=L.call(arguments,2);return function(){return b.apply(a,c.concat(L.call(arguments)))}}var M={init:function(b){if(/MSIE/.test(navigator.userAgent)&&!window.opera){var a=b||document;a.createElement("canvas");a.attachEvent("onreadystatechange",Y(this.init_,this,a))}},init_:function(b){b.namespaces.g_vml_||
b.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml","#default#VML");b.namespaces.g_o_||b.namespaces.add("g_o_","urn:schemas-microsoft-com:office:office","#default#VML");if(!b.styleSheets.ex_canvas_){var a=b.createStyleSheet();a.owningElement.id="ex_canvas_";a.cssText="canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}g_o_\\:*{behavior:url(#default#VML)}"}var c=b.getElementsByTagName("canvas"),d=0;for(;d<c.length;d++)this.initElement(c[d])},
initElement:function(b){if(!b.getContext){b.getContext=X;b.innerHTML="";b.attachEvent("onpropertychange",Z);b.attachEvent("onresize",$);var a=b.attributes;if(a.width&&a.width.specified)b.style.width=a.width.nodeValue+"px";else b.width=b.clientWidth;if(a.height&&a.height.specified)b.style.height=a.height.nodeValue+"px";else b.height=b.clientHeight}return b}};function Z(b){var a=b.srcElement;switch(b.propertyName){case "width":a.style.width=a.attributes.width.nodeValue+"px";a.getContext().clearRect();
break;case "height":a.style.height=a.attributes.height.nodeValue+"px";a.getContext().clearRect();break}}function $(b){var a=b.srcElement;if(a.firstChild){a.firstChild.style.width=a.clientWidth+"px";a.firstChild.style.height=a.clientHeight+"px"}}M.init();var N=[],B=0;for(;B<16;B++){var C=0;for(;C<16;C++)N[B*16+C]=B.toString(16)+C.toString(16)}function I(){return[[1,0,0],[0,1,0],[0,0,1]]}function y(b,a){var c=I(),d=0;for(;d<3;d++){var f=0;for(;f<3;f++){var h=0,g=0;for(;g<3;g++)h+=b[d][g]*a[g][f];c[d][f]=
h}}return c}function O(b,a){a.fillStyle=b.fillStyle;a.lineCap=b.lineCap;a.lineJoin=b.lineJoin;a.lineWidth=b.lineWidth;a.miterLimit=b.miterLimit;a.shadowBlur=b.shadowBlur;a.shadowColor=b.shadowColor;a.shadowOffsetX=b.shadowOffsetX;a.shadowOffsetY=b.shadowOffsetY;a.strokeStyle=b.strokeStyle;a.globalAlpha=b.globalAlpha;a.arcScaleX_=b.arcScaleX_;a.arcScaleY_=b.arcScaleY_;a.lineScale_=b.lineScale_}function P(b){var a,c=1;b=String(b);if(b.substring(0,3)=="rgb"){var d=b.indexOf("(",3),f=b.indexOf(")",d+
1),h=b.substring(d+1,f).split(",");a="#";var g=0;for(;g<3;g++)a+=N[Number(h[g])];if(h.length==4&&b.substr(3,1)=="a")c=h[3]}else a=b;return{color:a,alpha:c}}function aa(b){switch(b){case "butt":return"flat";case "round":return"round";case "square":default:return"square"}}function H(b){this.m_=I();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.fillStyle=this.strokeStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=k*1;this.globalAlpha=1;this.canvas=b;
var a=b.ownerDocument.createElement("div");a.style.width=b.clientWidth+"px";a.style.height=b.clientHeight+"px";a.style.overflow="hidden";a.style.position="absolute";b.appendChild(a);this.element_=a;this.lineScale_=this.arcScaleY_=this.arcScaleX_=1}var i=H.prototype;i.clearRect=function(){this.element_.innerHTML=""};i.beginPath=function(){this.currentPath_=[]};i.moveTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:"moveTo",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};
i.lineTo=function(b,a){var c=this.getCoords_(b,a);this.currentPath_.push({type:"lineTo",x:c.x,y:c.y});this.currentX_=c.x;this.currentY_=c.y};i.bezierCurveTo=function(b,a,c,d,f,h){var g=this.getCoords_(f,h),l=this.getCoords_(b,a),e=this.getCoords_(c,d);Q(this,l,e,g)};function Q(b,a,c,d){b.currentPath_.push({type:"bezierCurveTo",cp1x:a.x,cp1y:a.y,cp2x:c.x,cp2y:c.y,x:d.x,y:d.y});b.currentX_=d.x;b.currentY_=d.y}i.quadraticCurveTo=function(b,a,c,d){var f=this.getCoords_(b,a),h=this.getCoords_(c,d),g={x:this.currentX_+
0.6666666666666666*(f.x-this.currentX_),y:this.currentY_+0.6666666666666666*(f.y-this.currentY_)};Q(this,g,{x:g.x+(h.x-this.currentX_)/3,y:g.y+(h.y-this.currentY_)/3},h)};i.arc=function(b,a,c,d,f,h){c*=k;var g=h?"at":"wa",l=b+G(d)*c-v,e=a+F(d)*c-v,m=b+G(f)*c-v,r=a+F(f)*c-v;if(l==m&&!h)l+=0.125;var n=this.getCoords_(b,a),o=this.getCoords_(l,e),q=this.getCoords_(m,r);this.currentPath_.push({type:g,x:n.x,y:n.y,radius:c,xStart:o.x,yStart:o.y,xEnd:q.x,yEnd:q.y})};i.rect=function(b,a,c,d){this.moveTo(b,
a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath()};i.strokeRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.stroke();this.currentPath_=f};i.fillRect=function(b,a,c,d){var f=this.currentPath_;this.beginPath();this.moveTo(b,a);this.lineTo(b+c,a);this.lineTo(b+c,a+d);this.lineTo(b,a+d);this.closePath();this.fill();this.currentPath_=f};i.createLinearGradient=function(b,
a,c,d){var f=new D("gradient");f.x0_=b;f.y0_=a;f.x1_=c;f.y1_=d;return f};i.createRadialGradient=function(b,a,c,d,f,h){var g=new D("gradientradial");g.x0_=b;g.y0_=a;g.r0_=c;g.x1_=d;g.y1_=f;g.r1_=h;return g};i.drawImage=function(b){var a,c,d,f,h,g,l,e,m=b.runtimeStyle.width,r=b.runtimeStyle.height;b.runtimeStyle.width="auto";b.runtimeStyle.height="auto";var n=b.width,o=b.height;b.runtimeStyle.width=m;b.runtimeStyle.height=r;if(arguments.length==3){a=arguments[1];c=arguments[2];h=g=0;l=d=n;e=f=o}else if(arguments.length==
5){a=arguments[1];c=arguments[2];d=arguments[3];f=arguments[4];h=g=0;l=n;e=o}else if(arguments.length==9){h=arguments[1];g=arguments[2];l=arguments[3];e=arguments[4];a=arguments[5];c=arguments[6];d=arguments[7];f=arguments[8]}else throw Error("Invalid number of arguments");var q=this.getCoords_(a,c),t=[];t.push(" <g_vml_:group",' coordsize="',k*10,",",k*10,'"',' coordorigin="0,0"',' style="width:',10,"px;height:",10,"px;position:absolute;");if(this.m_[0][0]!=1||this.m_[0][1]){var E=[];E.push("M11=",
this.m_[0][0],",","M12=",this.m_[1][0],",","M21=",this.m_[0][1],",","M22=",this.m_[1][1],",","Dx=",j(q.x/k),",","Dy=",j(q.y/k),"");var p=q,z=this.getCoords_(a+d,c),w=this.getCoords_(a,c+f),x=this.getCoords_(a+d,c+f);p.x=s.max(p.x,z.x,w.x,x.x);p.y=s.max(p.y,z.y,w.y,x.y);t.push("padding:0 ",j(p.x/k),"px ",j(p.y/k),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",E.join(""),", sizingmethod='clip');")}else t.push("top:",j(q.y/k),"px;left:",j(q.x/k),"px;");t.push(' ">','<g_vml_:image src="',b.src,
'"',' style="width:',k*d,"px;"," height:",k*f,'px;"',' cropleft="',h/n,'"',' croptop="',g/o,'"',' cropright="',(n-h-l)/n,'"',' cropbottom="',(o-g-e)/o,'"'," />","</g_vml_:group>");this.element_.insertAdjacentHTML("BeforeEnd",t.join(""))};i.stroke=function(b){var a=[],c=P(b?this.fillStyle:this.strokeStyle),d=c.color,f=c.alpha*this.globalAlpha;a.push("<g_vml_:shape",' filled="',!!b,'"',' style="position:absolute;width:',10,"px;height:",10,'px;"',' coordorigin="0 0" coordsize="',k*10," ",k*10,'"',' stroked="',
!b,'"',' path="');var h={x:null,y:null},g={x:null,y:null},l=0;for(;l<this.currentPath_.length;l++){var e=this.currentPath_[l];switch(e.type){case "moveTo":a.push(" m ",j(e.x),",",j(e.y));break;case "lineTo":a.push(" l ",j(e.x),",",j(e.y));break;case "close":a.push(" x ");e=null;break;case "bezierCurveTo":a.push(" c ",j(e.cp1x),",",j(e.cp1y),",",j(e.cp2x),",",j(e.cp2y),",",j(e.x),",",j(e.y));break;case "at":case "wa":a.push(" ",e.type," ",j(e.x-this.arcScaleX_*e.radius),",",j(e.y-this.arcScaleY_*e.radius),
" ",j(e.x+this.arcScaleX_*e.radius),",",j(e.y+this.arcScaleY_*e.radius)," ",j(e.xStart),",",j(e.yStart)," ",j(e.xEnd),",",j(e.yEnd));break}if(e){if(h.x==null||e.x<h.x)h.x=e.x;if(g.x==null||e.x>g.x)g.x=e.x;if(h.y==null||e.y<h.y)h.y=e.y;if(g.y==null||e.y>g.y)g.y=e.y}}a.push(' ">');if(b)if(typeof this.fillStyle=="object"){var m=this.fillStyle,r=0,n={x:0,y:0},o=0,q=1;if(m.type_=="gradient"){var t=m.x1_/this.arcScaleX_,E=m.y1_/this.arcScaleY_,p=this.getCoords_(m.x0_/this.arcScaleX_,m.y0_/this.arcScaleY_),
z=this.getCoords_(t,E);r=Math.atan2(z.x-p.x,z.y-p.y)*180/Math.PI;if(r<0)r+=360;if(r<1.0E-6)r=0}else{var p=this.getCoords_(m.x0_,m.y0_),w=g.x-h.x,x=g.y-h.y;n={x:(p.x-h.x)/w,y:(p.y-h.y)/x};w/=this.arcScaleX_*k;x/=this.arcScaleY_*k;var R=s.max(w,x);o=2*m.r0_/R;q=2*m.r1_/R-o}var u=m.colors_;u.sort(function(ba,ca){return ba.offset-ca.offset});var J=u.length,da=u[0].color,ea=u[J-1].color,fa=u[0].alpha*this.globalAlpha,ga=u[J-1].alpha*this.globalAlpha,S=[],l=0;for(;l<J;l++){var T=u[l];S.push(T.offset*q+
o+" "+T.color)}a.push('<g_vml_:fill type="',m.type_,'"',' method="none" focus="100%"',' color="',da,'"',' color2="',ea,'"',' colors="',S.join(","),'"',' opacity="',ga,'"',' g_o_:opacity2="',fa,'"',' angle="',r,'"',' focusposition="',n.x,",",n.y,'" />')}else a.push('<g_vml_:fill color="',d,'" opacity="',f,'" />');else{var K=this.lineScale_*this.lineWidth;if(K<1)f*=K;a.push("<g_vml_:stroke",' opacity="',f,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',aa(this.lineCap),
'"',' weight="',K,'px"',' color="',d,'" />')}a.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",a.join(""))};i.fill=function(){this.stroke(true)};i.closePath=function(){this.currentPath_.push({type:"close"})};i.getCoords_=function(b,a){var c=this.m_;return{x:k*(b*c[0][0]+a*c[1][0]+c[2][0])-v,y:k*(b*c[0][1]+a*c[1][1]+c[2][1])-v}};i.save=function(){var b={};O(this,b);this.aStack_.push(b);this.mStack_.push(this.m_);this.m_=y(I(),this.m_)};i.restore=function(){O(this.aStack_.pop(),
this);this.m_=this.mStack_.pop()};function ha(b){var a=0;for(;a<3;a++){var c=0;for(;c<2;c++)if(!isFinite(b[a][c])||isNaN(b[a][c]))return false}return true}function A(b,a,c){if(!!ha(a)){b.m_=a;if(c)b.lineScale_=W(V(a[0][0]*a[1][1]-a[0][1]*a[1][0]))}}i.translate=function(b,a){A(this,y([[1,0,0],[0,1,0],[b,a,1]],this.m_),false)};i.rotate=function(b){var a=G(b),c=F(b);A(this,y([[a,c,0],[-c,a,0],[0,0,1]],this.m_),false)};i.scale=function(b,a){this.arcScaleX_*=b;this.arcScaleY_*=a;A(this,y([[b,0,0],[0,a,
0],[0,0,1]],this.m_),true)};i.transform=function(b,a,c,d,f,h){A(this,y([[b,a,0],[c,d,0],[f,h,1]],this.m_),true)};i.setTransform=function(b,a,c,d,f,h){A(this,[[b,a,0],[c,d,0],[f,h,1]],true)};i.clip=function(){};i.arcTo=function(){};i.createPattern=function(){return new U};function D(b){this.type_=b;this.r1_=this.y1_=this.x1_=this.r0_=this.y0_=this.x0_=0;this.colors_=[]}D.prototype.addColorStop=function(b,a){a=P(a);this.colors_.push({offset:b,color:a.color,alpha:a.alpha})};function U(){}G_vmlCanvasManager=
M;CanvasRenderingContext2D=H;CanvasGradient=D;CanvasPattern=U})();

View File

@ -1 +0,0 @@
{"herald":41,"grandma":"Patreona|Janice|Gabrielle|Grandma McGrandmaface|Charlie|\"egg\" Sr.|Jet-dayo|Natsuki|Ivy|Rose|Babayaga|Grandma #42|SneakySquid|Swad Plan|Meep Moop|Psychedelic Rapper Andrew JD|Telos|Moondoge|Lily Bowen|Mrs PoopyButthole|Mrs Sugai Kirin|Survivor of the Stale|Betty Ann Niemi|Tjien Nio|The First Baker|Mamichette|dQw4w9WgXcQ|Carmelina Calabrese|The GrandNut|La mere Michel|Aune Mummo|Jeff Junior|Her?|Rydh|Euphegenia Doubtfire|Bear|How did you find me, JUNESUK?|Ahtelo|Steve...?|Fanny|DAF Pvnk - Mother of trucks|Koisuru Fortune Grandma|Lieselotte|Izual Rebirth|Cosma-Tanti|Starco|Forgotten Abbey|Granny Rags|Mrs. Fizzwidget|Nakamoto|Zan Tart-izanne|The Roach Queen|Khookiesi, Grandmother of Dragonflights|Hey guys, Dexterfan99 here|Aryll|Ms. Chievous|Don't Stop Me Now|Dauna|Gerry|Erina Pendleton-Joestar|Stacy's Grandma|Benyboy|Rosie Beestinger|Tesco employee #65|Oda|Grandma Jones|Dan|Krieg|Chris|Kamilla|Tandy|Elisabeth|MinionMemer|Eanydo Erdman|Cookieatron4000|TechhX|Turtlenator|Carmelina|Shiny Blue Grandma|Anne|Penka|\"Hey guys, it's Nicole\"|Cora|Freya28|Kiwibajs|EEEEEE|Ms. Denis Gur Arie|Idling Vasha|?????|Tammie|Grandma Kara|Sanda Reiss|Alex|Mirle|Audrey|Ittle Dew|You're Killing Me Smols|Baker? I hardly know her!|A Duplicate Grandma|Betty Margaret Davis|Chlorophyte Grandma|Felpinhazinha|Satan's grandmother|Ruby Rose|Miyori Grandma|Geuser|Anneliese|Pielak|Swamper|Pikachi|Grackitz|Deborah Wright|BUT IT WAS ME, DIO!|Barbara|SERAS FAMO!!!|Audrey Porter|Benny Zhy|Doctergreen|Kage|Jarvis Fishwick|Elder Pledge 666x in a row...|Tell Cersei, it was me.|Kimahri|Henrietta Gertrude|Tyler Liddick|noisypineapples|Linda-Bea Dolvoy|DevilishWarrior|Exterminator|Matthue Loose|Caden|moist butterscotch lips|Alireah|Fey Yoshida|Aviators|Ashlee <3|He Had Boxing Gloves On|Falling Collin|Error 404: Name not Found|Groz|Granny Jonathan|Hanna Highmark|Nonmoving Osmond|The Worm Which Waits|Lurking Tealeaf|Ruby Wrinkle|Her|\"Eggy Grandma\"|Cookie maker 100|Addison Bennett|Nasus|Only 30 characters, huh? Fine.|Matt Was Here|ScartTheWaz|Tanyac Crimson|Ume Ito|VenMissa|Velma Francis|amdnarG|Leota Marie|Nikola|Grandmommy Celestine|Annuziatta|hosh...|E|Joe Grandmomma|Granny Grearest|Vivian|Vovó Dal|Baker of Steak Cookies|Aku daikan|SkeletonJoke|David loves Rachel! <3|Polar|Loremaster Rawlins|lickin my cookie|Fmaily Gyu funy momens #420|Ms. Cppkies|WillStreet|Ian's Mom|Grandma Divah|Betty BeardPuller|Mamie Cobol|200rassberris|ipm1234|Galadion|Olive Gardenia|Megan I. McIntosh|Lady Sweets|Rivne|Autosuffisant|BoShek|Brooke Chumbers|Cthulhu|ɐɯpuɐɹפ|binbinuser|Amma Jóna|the book was empty|Berit|DRIFTER1117|Yackemflam|Help me|YeOl'GrammityGram|Mason W|Peggy Hattenfels|majik|latte|amogus|Samuel Robertson|Anneliese Albina Emma|Barack Obama|Gramma Margaret|Tomato Pie|Tobi Kummerer|Ms Shelley|Harlow Diggs|Jaema|Claudia|Lukexzr's Grandma|Grandma Chara|I love my cookies|Typlo|joxer(ish)|Lisle|Gray Still Plays|Alyssa Cummings|The Wrinkler Spy|Carol|Gerladine|Alpa|Grannynator T-3000|SoeJul|Eleodora Consuelo|Grandma Jo"}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

View File

@ -1,309 +0,0 @@
http://orteil.dashnet.org/cookieclicker/img/AQWorlds_CookieClicker_300x40.png
http://orteil.dashnet.org/cookieclicker/img/BGgarden.jpg
http://orteil.dashnet.org/cookieclicker/img/BGgrimoire.jpg
http://orteil.dashnet.org/cookieclicker/img/BGmarket.jpg
http://orteil.dashnet.org/cookieclicker/img/BGpantheon.jpg
http://orteil.dashnet.org/cookieclicker/img/alchemylab.png
http://orteil.dashnet.org/cookieclicker/img/alchemylabBackground.png
http://orteil.dashnet.org/cookieclicker/img/alteredGrandma.png
http://orteil.dashnet.org/cookieclicker/img/alternateGrandma.png
http://orteil.dashnet.org/cookieclicker/img/antiGrandma.png
http://orteil.dashnet.org/cookieclicker/img/antimattercondenser.png
http://orteil.dashnet.org/cookieclicker/img/antimattercondenserBackground.png
http://orteil.dashnet.org/cookieclicker/img/aqworldsbanner.jpg
http://orteil.dashnet.org/cookieclicker/img/ascendBox.png
http://orteil.dashnet.org/cookieclicker/img/ascendInfo.png
http://orteil.dashnet.org/cookieclicker/img/ascendSlot.png
http://orteil.dashnet.org/cookieclicker/img/ascendWisp.png
http://orteil.dashnet.org/cookieclicker/img/ascendedBakingPod.png
http://orteil.dashnet.org/cookieclicker/img/bank.png
http://orteil.dashnet.org/cookieclicker/img/bankBackground.png
http://orteil.dashnet.org/cookieclicker/img/bankGrandma.png
http://orteil.dashnet.org/cookieclicker/img/bgBW.jpg
http://orteil.dashnet.org/cookieclicker/img/bgBlack.jpg
http://orteil.dashnet.org/cookieclicker/img/bgBlue.jpg
http://orteil.dashnet.org/cookieclicker/img/bgCandy.jpg
http://orteil.dashnet.org/cookieclicker/img/bgChoco.jpg
http://orteil.dashnet.org/cookieclicker/img/bgChocoDark.jpg
http://orteil.dashnet.org/cookieclicker/img/bgCoarse.jpg
http://orteil.dashnet.org/cookieclicker/img/bgFoil.jpg
http://orteil.dashnet.org/cookieclicker/img/bgGold.jpg
http://orteil.dashnet.org/cookieclicker/img/bgMint.jpg
http://orteil.dashnet.org/cookieclicker/img/bgMoney.jpg
http://orteil.dashnet.org/cookieclicker/img/bgMoneyChart.jpg
http://orteil.dashnet.org/cookieclicker/img/bgPaint.jpg
http://orteil.dashnet.org/cookieclicker/img/bgPink.jpg
http://orteil.dashnet.org/cookieclicker/img/bgPurple.jpg
http://orteil.dashnet.org/cookieclicker/img/bgRed.jpg
http://orteil.dashnet.org/cookieclicker/img/bgSilver.jpg
http://orteil.dashnet.org/cookieclicker/img/bgSky.jpg
http://orteil.dashnet.org/cookieclicker/img/bgSnowy.jpg
http://orteil.dashnet.org/cookieclicker/img/bgSpectrum.jpg
http://orteil.dashnet.org/cookieclicker/img/bgStars.jpg
http://orteil.dashnet.org/cookieclicker/img/bgWhite.jpg
http://orteil.dashnet.org/cookieclicker/img/bgYellowBlue.jpg
http://orteil.dashnet.org/cookieclicker/img/blackGradient.png
http://orteil.dashnet.org/cookieclicker/img/blackGradientLeft.png
http://orteil.dashnet.org/cookieclicker/img/blackGradientSmallTop.png
http://orteil.dashnet.org/cookieclicker/img/bracketPanelLeftS.png
http://orteil.dashnet.org/cookieclicker/img/bracketPanelRightS.png
http://orteil.dashnet.org/cookieclicker/img/brainyGrandma.png
http://orteil.dashnet.org/cookieclicker/img/brokenCookie.png
http://orteil.dashnet.org/cookieclicker/img/brokenCookieHalo.png
http://orteil.dashnet.org/cookieclicker/img/brownStripes.png
http://orteil.dashnet.org/cookieclicker/img/brownStripesLeftEdge.png
http://orteil.dashnet.org/cookieclicker/img/buildings.png
http://orteil.dashnet.org/cookieclicker/img/bunnies.png
http://orteil.dashnet.org/cookieclicker/img/bunnyGrandma.png
http://orteil.dashnet.org/cookieclicker/img/buttonTile.jpg
http://orteil.dashnet.org/cookieclicker/img/caramelWave.png
http://orteil.dashnet.org/cookieclicker/img/chancemaker.png
http://orteil.dashnet.org/cookieclicker/img/chancemakerBackground.png
http://orteil.dashnet.org/cookieclicker/img/chocolateMilkWave.png
http://orteil.dashnet.org/cookieclicker/img/clayBG.jpg
http://orteil.dashnet.org/cookieclicker/img/cloneGrandma.png
http://orteil.dashnet.org/cookieclicker/img/contract.png
http://orteil.dashnet.org/cookieclicker/img/control.png
http://orteil.dashnet.org/cookieclicker/img/cookieShadow.png
http://orteil.dashnet.org/cookieclicker/img/cookieShower1.png
http://orteil.dashnet.org/cookieclicker/img/cookieShower2.png
http://orteil.dashnet.org/cookieclicker/img/cookieShower3.png
http://orteil.dashnet.org/cookieclicker/img/cortex.png
http://orteil.dashnet.org/cookieclicker/img/cortexBackground.png
http://orteil.dashnet.org/cookieclicker/img/cosmicGrandma.png
http://orteil.dashnet.org/cookieclicker/img/cursor.png
http://orteil.dashnet.org/cookieclicker/img/darkNoise.jpg
http://orteil.dashnet.org/cookieclicker/img/darkNoise.png
http://orteil.dashnet.org/cookieclicker/img/darkNoiseTopBar.jpg
http://orteil.dashnet.org/cookieclicker/img/dashnetLogo.png
http://orteil.dashnet.org/cookieclicker/img/discord.png
http://orteil.dashnet.org/cookieclicker/img/dragon.png
http://orteil.dashnet.org/cookieclicker/img/dragonBG.png
http://orteil.dashnet.org/cookieclicker/img/dragonFrame.png
http://orteil.dashnet.org/cookieclicker/img/dungeonDot.png
http://orteil.dashnet.org/cookieclicker/img/dungeonFactory.png
http://orteil.dashnet.org/cookieclicker/img/dungeonFoes.png
http://orteil.dashnet.org/cookieclicker/img/dungeonHeroes.png
http://orteil.dashnet.org/cookieclicker/img/dungeonIcons.png
http://orteil.dashnet.org/cookieclicker/img/dungeonItems.png
http://orteil.dashnet.org/cookieclicker/img/dungeonMapFactory.jpg
http://orteil.dashnet.org/cookieclicker/img/dungeonOverlay.png
http://orteil.dashnet.org/cookieclicker/img/dungeonPictos.png
http://orteil.dashnet.org/cookieclicker/img/dungeonTiles.png
http://orteil.dashnet.org/cookieclicker/img/easterEggs.png
http://orteil.dashnet.org/cookieclicker/img/elfGrandma.png
http://orteil.dashnet.org/cookieclicker/img/empty.png
http://orteil.dashnet.org/cookieclicker/img/emptyFrame.png
http://orteil.dashnet.org/cookieclicker/img/factory.png
http://orteil.dashnet.org/cookieclicker/img/factoryBackground.png
http://orteil.dashnet.org/cookieclicker/img/farm.png
http://orteil.dashnet.org/cookieclicker/img/farmBackground.png
http://orteil.dashnet.org/cookieclicker/img/farmerGrandma.png
http://orteil.dashnet.org/cookieclicker/img/favicon.ico
http://orteil.dashnet.org/cookieclicker/img/featherLeft.png
http://orteil.dashnet.org/cookieclicker/img/featherRight.png
http://orteil.dashnet.org/cookieclicker/img/filler.png
http://orteil.dashnet.org/cookieclicker/img/fractalEngine.png
http://orteil.dashnet.org/cookieclicker/img/fractalEngineBackground.png
http://orteil.dashnet.org/cookieclicker/img/frameBorder.png
http://orteil.dashnet.org/cookieclicker/img/frostedReindeer.png
http://orteil.dashnet.org/cookieclicker/img/gardenPlants.png
http://orteil.dashnet.org/cookieclicker/img/gardenPlots.png
http://orteil.dashnet.org/cookieclicker/img/gardenTip.png
http://orteil.dashnet.org/cookieclicker/img/girlscoutChip.png
http://orteil.dashnet.org/cookieclicker/img/girlscoutCrumb.png
http://orteil.dashnet.org/cookieclicker/img/girlscoutDoe.png
http://orteil.dashnet.org/cookieclicker/img/girlscoutLucky.png
http://orteil.dashnet.org/cookieclicker/img/glint.jpg
http://orteil.dashnet.org/cookieclicker/img/glint.png
http://orteil.dashnet.org/cookieclicker/img/goldCookie.png
http://orteil.dashnet.org/cookieclicker/img/grandma.png
http://orteil.dashnet.org/cookieclicker/img/grandmaBackground.png
http://orteil.dashnet.org/cookieclicker/img/grandmas1.jpg
http://orteil.dashnet.org/cookieclicker/img/grandmas2.jpg
http://orteil.dashnet.org/cookieclicker/img/grandmas3.jpg
http://orteil.dashnet.org/cookieclicker/img/grandmasGrandma.png
http://orteil.dashnet.org/cookieclicker/img/grimoireBG.png
http://orteil.dashnet.org/cookieclicker/img/heartStorm.png
http://orteil.dashnet.org/cookieclicker/img/hearts.png
http://orteil.dashnet.org/cookieclicker/img/heavenRing1.jpg
http://orteil.dashnet.org/cookieclicker/img/heavenRing2.jpg
http://orteil.dashnet.org/cookieclicker/img/heavenlyMoney.png
http://orteil.dashnet.org/cookieclicker/img/heraldFlag.png
http://orteil.dashnet.org/cookieclicker/img/icon.ico
http://orteil.dashnet.org/cookieclicker/img/icon.png
http://orteil.dashnet.org/cookieclicker/img/icons.png
http://orteil.dashnet.org/cookieclicker/img/idleverse.png
http://orteil.dashnet.org/cookieclicker/img/idleverseBackground.png
http://orteil.dashnet.org/cookieclicker/img/imperfectCookie.png
http://orteil.dashnet.org/cookieclicker/img/infoBG.png
http://orteil.dashnet.org/cookieclicker/img/infoBGfade.png
http://orteil.dashnet.org/cookieclicker/img/javascriptconsole.png
http://orteil.dashnet.org/cookieclicker/img/javascriptconsoleBackground.png
http://orteil.dashnet.org/cookieclicker/img/levelUp.png
http://orteil.dashnet.org/cookieclicker/img/linkDash.png
http://orteil.dashnet.org/cookieclicker/img/linkPulse.gif
http://orteil.dashnet.org/cookieclicker/img/linkPulse.png
http://orteil.dashnet.org/cookieclicker/img/lockOff.png
http://orteil.dashnet.org/cookieclicker/img/lockOn.png
http://orteil.dashnet.org/cookieclicker/img/luckyGrandma.png
http://orteil.dashnet.org/cookieclicker/img/mapBG.jpg
http://orteil.dashnet.org/cookieclicker/img/mapIcons.png
http://orteil.dashnet.org/cookieclicker/img/marbleBG.jpg
http://orteil.dashnet.org/cookieclicker/img/marshmallows.png
http://orteil.dashnet.org/cookieclicker/img/messageBG.png
http://orteil.dashnet.org/cookieclicker/img/metaGrandma.png
http://orteil.dashnet.org/cookieclicker/img/milk.png
http://orteil.dashnet.org/cookieclicker/img/milkBanana.png
http://orteil.dashnet.org/cookieclicker/img/milkBlack.png
http://orteil.dashnet.org/cookieclicker/img/milkBlackcurrant.png
http://orteil.dashnet.org/cookieclicker/img/milkBlood.png
http://orteil.dashnet.org/cookieclicker/img/milkBlueFire.png
http://orteil.dashnet.org/cookieclicker/img/milkBlueberry.png
http://orteil.dashnet.org/cookieclicker/img/milkCaramel.png
http://orteil.dashnet.org/cookieclicker/img/milkCherry.png
http://orteil.dashnet.org/cookieclicker/img/milkChocolate.png
http://orteil.dashnet.org/cookieclicker/img/milkCoconut.png
http://orteil.dashnet.org/cookieclicker/img/milkCoffee.png
http://orteil.dashnet.org/cookieclicker/img/milkDragonfruit.png
http://orteil.dashnet.org/cookieclicker/img/milkFire.png
http://orteil.dashnet.org/cookieclicker/img/milkGold.png
http://orteil.dashnet.org/cookieclicker/img/milkGreenFire.png
http://orteil.dashnet.org/cookieclicker/img/milkHazelnut.png
http://orteil.dashnet.org/cookieclicker/img/milkHoney.png
http://orteil.dashnet.org/cookieclicker/img/milkLicorice.png
http://orteil.dashnet.org/cookieclicker/img/milkLime.png
http://orteil.dashnet.org/cookieclicker/img/milkMaple.png
http://orteil.dashnet.org/cookieclicker/img/milkMelon.png
http://orteil.dashnet.org/cookieclicker/img/milkMint.png
http://orteil.dashnet.org/cookieclicker/img/milkOrange.png
http://orteil.dashnet.org/cookieclicker/img/milkPeach.png
http://orteil.dashnet.org/cookieclicker/img/milkPlain.png
http://orteil.dashnet.org/cookieclicker/img/milkRaspberry.png
http://orteil.dashnet.org/cookieclicker/img/milkRose.png
http://orteil.dashnet.org/cookieclicker/img/milkSoy.png
http://orteil.dashnet.org/cookieclicker/img/milkSpiced.png
http://orteil.dashnet.org/cookieclicker/img/milkStars.png
http://orteil.dashnet.org/cookieclicker/img/milkStrawberry.png
http://orteil.dashnet.org/cookieclicker/img/milkTea.png
http://orteil.dashnet.org/cookieclicker/img/milkVanilla.png
http://orteil.dashnet.org/cookieclicker/img/milkWave.png
http://orteil.dashnet.org/cookieclicker/img/milkZebra.png
http://orteil.dashnet.org/cookieclicker/img/mine.png
http://orteil.dashnet.org/cookieclicker/img/mineBackground.png
http://orteil.dashnet.org/cookieclicker/img/minerGrandma.png
http://orteil.dashnet.org/cookieclicker/img/money.png
http://orteil.dashnet.org/cookieclicker/img/mysticBG.jpg
http://orteil.dashnet.org/cookieclicker/img/nest.png
http://orteil.dashnet.org/cookieclicker/img/orangeWave.png
http://orteil.dashnet.org/cookieclicker/img/panelBG.png
http://orteil.dashnet.org/cookieclicker/img/panelGradientBottom.png
http://orteil.dashnet.org/cookieclicker/img/panelGradientLeft.png
http://orteil.dashnet.org/cookieclicker/img/panelGradientRight.png
http://orteil.dashnet.org/cookieclicker/img/panelGradientTop.png
http://orteil.dashnet.org/cookieclicker/img/panelHorizontal.png
http://orteil.dashnet.org/cookieclicker/img/panelMenu.png
http://orteil.dashnet.org/cookieclicker/img/panelMenu2.png
http://orteil.dashnet.org/cookieclicker/img/panelMenu3.png
http://orteil.dashnet.org/cookieclicker/img/panelVertical.png
http://orteil.dashnet.org/cookieclicker/img/pantheonBG.png
http://orteil.dashnet.org/cookieclicker/img/parade.png
http://orteil.dashnet.org/cookieclicker/img/patreon.png
http://orteil.dashnet.org/cookieclicker/img/perfectCookie.png
http://orteil.dashnet.org/cookieclicker/img/pieFill.png
http://orteil.dashnet.org/cookieclicker/img/playsaurusLogo.png
http://orteil.dashnet.org/cookieclicker/img/playsaurusbanner1.png
http://orteil.dashnet.org/cookieclicker/img/playsaurusbanner2.png
http://orteil.dashnet.org/cookieclicker/img/playsaurusbanner3.png
http://orteil.dashnet.org/cookieclicker/img/pointGlow.gif
http://orteil.dashnet.org/cookieclicker/img/pointyLad.png
http://orteil.dashnet.org/cookieclicker/img/portal.png
http://orteil.dashnet.org/cookieclicker/img/portalBackground.png
http://orteil.dashnet.org/cookieclicker/img/portraitChip.png
http://orteil.dashnet.org/cookieclicker/img/portraitCrumb.png
http://orteil.dashnet.org/cookieclicker/img/portraitDoe.png
http://orteil.dashnet.org/cookieclicker/img/portraitLucky.png
http://orteil.dashnet.org/cookieclicker/img/prestigeBar.jpg
http://orteil.dashnet.org/cookieclicker/img/prestigeBarCap.png
http://orteil.dashnet.org/cookieclicker/img/prism.png
http://orteil.dashnet.org/cookieclicker/img/prismBackground.png
http://orteil.dashnet.org/cookieclicker/img/rainbowGrandma.png
http://orteil.dashnet.org/cookieclicker/img/raspberryWave.png
http://orteil.dashnet.org/cookieclicker/img/roundFrameBorder.png
http://orteil.dashnet.org/cookieclicker/img/roundedPanelBG.png
http://orteil.dashnet.org/cookieclicker/img/roundedPanelBGS.png
http://orteil.dashnet.org/cookieclicker/img/roundedPanelLeft.png
http://orteil.dashnet.org/cookieclicker/img/roundedPanelLeftS.png
http://orteil.dashnet.org/cookieclicker/img/roundedPanelRight.png
http://orteil.dashnet.org/cookieclicker/img/roundedPanelRightS.png
http://orteil.dashnet.org/cookieclicker/img/santa.png
http://orteil.dashnet.org/cookieclicker/img/scriptGrandma.png
http://orteil.dashnet.org/cookieclicker/img/selectTarget.png
http://orteil.dashnet.org/cookieclicker/img/sentientFurnace.png
http://orteil.dashnet.org/cookieclicker/img/shadedBorders.png
http://orteil.dashnet.org/cookieclicker/img/shadedBordersGold.png
http://orteil.dashnet.org/cookieclicker/img/shadedBordersRed.png
http://orteil.dashnet.org/cookieclicker/img/shadedBordersSoft.png
http://orteil.dashnet.org/cookieclicker/img/shimmeringVeil.png
http://orteil.dashnet.org/cookieclicker/img/shine.png
http://orteil.dashnet.org/cookieclicker/img/shineGold.png
http://orteil.dashnet.org/cookieclicker/img/shineRed.png
http://orteil.dashnet.org/cookieclicker/img/shineSpoke.png
http://orteil.dashnet.org/cookieclicker/img/shinyWinkler.png
http://orteil.dashnet.org/cookieclicker/img/shinyWrinkler.png
http://orteil.dashnet.org/cookieclicker/img/shinyWrinklerBits.png
http://orteil.dashnet.org/cookieclicker/img/shipment.png
http://orteil.dashnet.org/cookieclicker/img/shipmentBackground.png
http://orteil.dashnet.org/cookieclicker/img/smallCookies.png
http://orteil.dashnet.org/cookieclicker/img/smallDollars.png
http://orteil.dashnet.org/cookieclicker/img/snow.jpg
http://orteil.dashnet.org/cookieclicker/img/snow2.jpg
http://orteil.dashnet.org/cookieclicker/img/sparkles.jpg
http://orteil.dashnet.org/cookieclicker/img/spellBG.png
http://orteil.dashnet.org/cookieclicker/img/spinnyBig.png
http://orteil.dashnet.org/cookieclicker/img/spinnySmall.png
http://orteil.dashnet.org/cookieclicker/img/spookyCookie.png
http://orteil.dashnet.org/cookieclicker/img/starbg.jpg
http://orteil.dashnet.org/cookieclicker/img/storeTile.jpg
http://orteil.dashnet.org/cookieclicker/img/sugarLump.png
http://orteil.dashnet.org/cookieclicker/img/temple.png
http://orteil.dashnet.org/cookieclicker/img/templeBackground.png
http://orteil.dashnet.org/cookieclicker/img/templeGrandma.png
http://orteil.dashnet.org/cookieclicker/img/timemachine.png
http://orteil.dashnet.org/cookieclicker/img/timemachineBackground.png
http://orteil.dashnet.org/cookieclicker/img/timerBars.png
http://orteil.dashnet.org/cookieclicker/img/tinyEyeEmpty.png
http://orteil.dashnet.org/cookieclicker/img/tinyEyeOff.png
http://orteil.dashnet.org/cookieclicker/img/tinyEyeOn.png
http://orteil.dashnet.org/cookieclicker/img/tinyglobe.gif
http://orteil.dashnet.org/cookieclicker/img/tinyglobeSheet.gif
http://orteil.dashnet.org/cookieclicker/img/transmutedGrandma.png
http://orteil.dashnet.org/cookieclicker/img/turnInto.png
http://orteil.dashnet.org/cookieclicker/img/upgradeFrame.png
http://orteil.dashnet.org/cookieclicker/img/upgradeFrameHeavenly.png
http://orteil.dashnet.org/cookieclicker/img/upgradeFrameOld.png
http://orteil.dashnet.org/cookieclicker/img/upgradeFrameShadowOld.png
http://orteil.dashnet.org/cookieclicker/img/upgradeHighlight.jpg
http://orteil.dashnet.org/cookieclicker/img/upgradeHighlight.png
http://orteil.dashnet.org/cookieclicker/img/upgradeSelector.png
http://orteil.dashnet.org/cookieclicker/img/weeHoodie.png
http://orteil.dashnet.org/cookieclicker/img/winkler.png
http://orteil.dashnet.org/cookieclicker/img/winterFrame.png
http://orteil.dashnet.org/cookieclicker/img/winterWinkler.png
http://orteil.dashnet.org/cookieclicker/img/winterWrinkler.png
http://orteil.dashnet.org/cookieclicker/img/witchGrandma.png
http://orteil.dashnet.org/cookieclicker/img/wizardtower.png
http://orteil.dashnet.org/cookieclicker/img/wizardtowerBackground.png
http://orteil.dashnet.org/cookieclicker/img/workerGrandma.png
http://orteil.dashnet.org/cookieclicker/img/wrathContract.png
http://orteil.dashnet.org/cookieclicker/img/wrathCookie.png
http://orteil.dashnet.org/cookieclicker/img/wrinkler.png
http://orteil.dashnet.org/cookieclicker/img/wrinklerBits.png
http://orteil.dashnet.org/cookieclicker/img/wrinklerBitsOld.png
http://orteil.dashnet.org/cookieclicker/img/wrinklerBlink.png
http://orteil.dashnet.org/cookieclicker/img/wrinklerGooglies.png
http://orteil.dashnet.org/cookieclicker/img/wrinklerShadow.png
http://orteil.dashnet.org/cookieclicker/img/you.png
http://orteil.dashnet.org/cookieclicker/img/youAddons.png
http://orteil.dashnet.org/cookieclicker/img/youBackground.png
http://orteil.dashnet.org/cookieclicker/img/youLight.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 472 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 966 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

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