cookie clicker but bigger
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

827 lines
16 KiB

  1. "use strict";
  2. const resourceTypes = {
  3. "food": {
  4. name: "Food"
  5. }
  6. }
  7. const buildings = {
  8. "micro": {
  9. "name": "Micro",
  10. "plural": "Micros",
  11. "desc": "A tasty, squirmy treat.",
  12. "cost": 1e1,
  13. "prod": 1e-1/1
  14. },
  15. "anthro": {
  16. "name": "Anthro",
  17. "plural": "Anthros",
  18. "desc": "Something more substantial to sate your hunger.",
  19. "cost": 1e2,
  20. "prod": 1e0/1.1
  21. },
  22. "car": {
  23. "name": "Car",
  24. "plural": "Cars",
  25. "desc": "Crunchy shell, tasty center.",
  26. "cost": 1.2e3,
  27. "prod": 1e1/1.2
  28. },
  29. "bus": {
  30. "name": "Bus",
  31. "plural": "Buses",
  32. "desc": "Probably the worst place to be when a macro is aroud.",
  33. "cost": 1.4e4,
  34. "prod": 1e2/1.3
  35. },
  36. "house": {
  37. "name": "House",
  38. "plural": "Houses",
  39. "desc": "Home sweet home - but it doesn't taste sweet?",
  40. "cost": 1.6e5,
  41. "prod": 1e3/1.4
  42. },
  43. "apartment": {
  44. "name": "Apartment",
  45. "plural": "Apartments",
  46. "desc": "More snacks, less packaging.",
  47. "cost": 1.8e6,
  48. "prod": 1e4/1.5
  49. },
  50. "block": {
  51. "name": "Block",
  52. "plural": "Blocks",
  53. "desc": "A whole pile of buildings.",
  54. "cost": 2e7,
  55. "prod": 1e5/1.6
  56. },
  57. "town": {
  58. "name": "Town",
  59. "plural": "Towns",
  60. "desc": "'Tourist trap' has never been this literal.",
  61. "cost": 2.2e8,
  62. "prod": 1e6/1.7
  63. },
  64. "city": {
  65. "name": "City",
  66. "plural": "Cities",
  67. "desc": "Please no sitty on our city.",
  68. "cost": 2.4e9,
  69. "prod": 1e7/1.8
  70. },
  71. "metro": {
  72. "name": "Metropolis",
  73. "plural": "Metropolises",
  74. "desc": "A big ol' city. Tasty, too.",
  75. "cost": 2.6e10,
  76. "prod": 1e8/1.9
  77. },
  78. "county": {
  79. "name": "County",
  80. "plural": "Counties",
  81. "desc": "Why salt the land when you can slurp it?",
  82. "cost": 2.8e11,
  83. "prod": 1e9/2
  84. },
  85. "state": {
  86. "name": "State",
  87. "plural": "States",
  88. "desc": "The United States is made up of...43 states - no, 42...",
  89. "cost": 3e12,
  90. "prod": 1e10/2.1
  91. },
  92. "country": {
  93. "name": "Country",
  94. "plural": "Countries",
  95. "desc": "One nation, under paw.",
  96. "cost": 3.2e13,
  97. "prod": 1e11/2.2
  98. },
  99. "continent": {
  100. "name": "Continent",
  101. "plural": "Continents",
  102. "desc": "Earth-shattering appetite!",
  103. "cost": 3.4e14,
  104. "prod": 1e12/2.3
  105. },
  106. "planet": {
  107. "name": "Planet",
  108. "plural": "Planets",
  109. "desc": "Earth appetite!",
  110. "cost": 3.6e15,
  111. "prod": 1e13/2.4
  112. },
  113. "solar-system": {
  114. "name": "Solar System",
  115. "plural": "Solar Systems",
  116. "desc": "Earths appetite!",
  117. "cost": 3.8e16,
  118. "prod": 1e14/2.5
  119. },
  120. "galaxy": {
  121. "name": "Galaxy",
  122. "plural": "Galaxy",
  123. "desc": "In a galaxy far, far down your gullet...",
  124. "cost": 4.0e17,
  125. "prod": 1e15/2.6
  126. },
  127. "universe": {
  128. "name": "Universe",
  129. "plural": "Universes",
  130. "desc": "Into the you-verse.",
  131. "cost": 4.2e18,
  132. "prod": 1e16/2.7
  133. },
  134. "multiverse": {
  135. "name": "Multiverse",
  136. "plural": "Multiverses",
  137. "desc": "This is getting very silly.",
  138. "cost": 4.4e19,
  139. "prod": 1e17/2.8
  140. }
  141. }
  142. const effect_types = {
  143. "prod": {
  144. "apply": function(effect, productivity) {
  145. return productivity * effect.amount;
  146. },
  147. "desc": function(effect) {
  148. return round(effect.amount, 2) + "x food production from " + buildings[effect.target].plural;
  149. }
  150. },
  151. "prod-all": {
  152. "apply": function(effect, productivity) {
  153. return productivity * effect.amount;
  154. },
  155. "desc": function(effect) {
  156. return round((effect.amount - 1) * 100) + "% increase to food production";
  157. }
  158. },
  159. "helper": {
  160. "apply": function(effect, productivity, helperCount) {
  161. return productivity * (1 + effect.amount * helperCount);
  162. },
  163. "desc": function(effect) {
  164. return "+" + round(effect.amount * 100) + "% food/sec from " + buildings[effect.helped].name + " for every " + buildings[effect.helper].name + " owned.";
  165. }
  166. },
  167. "click": {
  168. "apply": function(effect, bonus, productivity) {
  169. return bonus + productivity * effect.amount;
  170. },
  171. "desc": function(effect) {
  172. return round(effect.amount * 100) + "% of food/sec gained per click";
  173. }
  174. }
  175. }
  176. let upgrades = {
  177. "anthro-help-micro-1": {
  178. "name": "Servants",
  179. "desc": "Why bother walking anywhere, really?",
  180. "cost": {
  181. "food": buildings.anthro.cost * 25 + buildings.micro.cost * 50
  182. },
  183. "effects": [
  184. {
  185. "type": "helper",
  186. "helper": "anthro",
  187. "helped": "micro",
  188. "amount": 0.01
  189. }
  190. ],
  191. "prereqs": {
  192. "buildings": {
  193. "anthro": 10
  194. },
  195. "upgrades": [
  196. "anthro-prod-1"
  197. ]
  198. }
  199. }
  200. }
  201. function createTemplateUpgrades() {
  202. console.log("qwewq");
  203. createProdUpgrades();
  204. createProdAllUpgrades();
  205. createClickUpgrades();
  206. }
  207. const prodUpgradeCounts = [1, 5, 10, 25, 50, 75, 100];
  208. function createProdUpgrades() {
  209. for (const [key, value] of Object.entries(prodUpgradeText)) {
  210. let counter = 1;
  211. let prefix = key + "-prod-";
  212. for (let contents of value) {
  213. upgrades[prefix + counter] = {
  214. "name": contents.name,
  215. "desc": contents.desc,
  216. "icon": "buildings/" + key,
  217. "cost": {
  218. "food": buildings[key].cost * 5 * Math.pow(10,counter - 1)
  219. },
  220. "effects": [
  221. {
  222. "type": "prod",
  223. "amount": 2 + (counter - 1) * 0.25,
  224. "target": key
  225. }
  226. ]
  227. };
  228. upgrades[prefix + counter]["prereqs"] = {};
  229. upgrades[prefix + counter]["prereqs"]["buildings"] = {};
  230. upgrades[prefix + counter]["prereqs"]["buildings"][key] = prodUpgradeCounts[counter - 1];
  231. if (counter > 1) {
  232. upgrades[prefix + counter]["prereqs"]["upgrades"] = [
  233. prefix + (counter - 1)
  234. ];
  235. }
  236. counter += 1;
  237. }
  238. }
  239. }
  240. function createProdAllUpgrades() {
  241. let prefix = "prod-all-"
  242. let counter = 1;
  243. for (let contents of prodAllUpgradeText) {
  244. upgrades[prefix + counter] = {
  245. "name": contents.name,
  246. "desc": contents.desc,
  247. "cost": {
  248. "food": 5 * Math.pow(10, counter+1)
  249. },
  250. "effects": [
  251. {
  252. "type": "prod-all",
  253. "amount": 1.05
  254. }
  255. ],
  256. "prereqs": {
  257. "productivity": {
  258. "food": Math.pow(10, counter)
  259. }
  260. }
  261. };
  262. if (counter > 1) {
  263. upgrades[prefix + counter]["prereqs"].upgrades = [
  264. prefix + (counter - 1)
  265. ];
  266. }
  267. counter += 1;
  268. }
  269. }
  270. function createClickUpgrades() {
  271. let prefix = "prod-click-";
  272. let counter = 1 ;
  273. for (let contents of clickUpgradeText) {
  274. upgrades[prefix + counter] = {
  275. name: contents.name,
  276. desc: contents.desc,
  277. cost: {
  278. food: Math.pow(10, (counter*2)+1)
  279. },
  280. effects: [
  281. {
  282. type: "click",
  283. amount: 0.01
  284. }
  285. ],
  286. prereqs: {
  287. productivity: {
  288. food: Math.pow(10, counter)
  289. }
  290. }
  291. };
  292. if (counter > 1) {
  293. upgrades[prefix + counter]["prereqs"].upgrades = [
  294. prefix + (counter - 1)
  295. ];
  296. }
  297. counter += 1;
  298. }
  299. }
  300. let prodUpgradeText = {
  301. "micro": [
  302. {
  303. "name": "Bigger Micros",
  304. "desc": "A macro micro? It's more filling, for sure.",
  305. },
  306. {
  307. "name": "Beefy Micros",
  308. "desc": "25% more protein, 10% fewer carbs."
  309. },
  310. {
  311. "name": "Delicious Micros",
  312. "desc": "Betcha' can't eat just one."
  313. },
  314. {
  315. "name": "Irresistable Micros",
  316. "desc": "Genetically engineered to be delectable."
  317. },
  318. {
  319. "name": "Exquisite Micros",
  320. "desc": "Dangerously delicious."
  321. }
  322. ],
  323. "anthro": [
  324. {
  325. "name": "Willing Prey",
  326. "desc": "Why bother chasing down your meal?"
  327. },
  328. {
  329. "name": "Fattened Prey",
  330. "desc": "9 calories per gram!"
  331. },
  332. {
  333. "name": "Mesmerized Prey",
  334. "desc": "Why bother walking to your meal?"
  335. },
  336. {
  337. "name": "Food-Safe Lubricant",
  338. "desc": "Ease them down your gullet with ease. Thanks, chemistry!"
  339. },
  340. {
  341. "name": "Mandatory Meal Training",
  342. "desc": "Educating prey on basic food etiquette helps reduce maw congestion and speeds digestion by 27%."
  343. }
  344. ],
  345. "car": [
  346. {
  347. "name": "HOV Lane",
  348. "desc": "Think of the environment! And of your impending digestion, I guess."
  349. },
  350. {
  351. "name": "Lightweight Frames",
  352. "desc": "Although crunchy, the shell around the snacks isn't very appetizing."
  353. },
  354. {
  355. "name": "Traffic Engineering",
  356. "desc": "Maximizing throughput into your gullet."
  357. },
  358. {
  359. "name": "Super Highways",
  360. "desc": "Six lanes! Fresh pavement! A ravenous maw!"
  361. },
  362. {
  363. "name": "Stacked Cars",
  364. "desc": "When we couldn't make the roads any wider, we tried stacking the cars higher."
  365. }
  366. ],
  367. "bus": [
  368. {
  369. "name": "Bus Passes",
  370. "desc": "Save on greenhouse emissions. Save your predator's effort. Everyone wins!"
  371. },
  372. {
  373. "name": "Double Deckers",
  374. "desc": "Stack 'em up! Slurp 'em down!"
  375. },
  376. {
  377. "name": "Articulated Buses",
  378. "desc": "The bend really helps them slip down your throat."
  379. },
  380. {
  381. "name": "Tour Buses",
  382. "desc": "People come from around the world to see your intestinal tract.",
  383. },
  384. {
  385. "name": "Double Double Deckers",
  386. "desc": "Hard to swallow, true, but filling nonetheless."
  387. }
  388. ],
  389. "house": [
  390. {
  391. "name": "Second Story",
  392. "desc": "Twice as many snacks, half as much chewing."
  393. },
  394. {
  395. "name": "Remodeling",
  396. "desc": "Strip out that icky asbestos."
  397. },
  398. {
  399. "name": "Smaller Yards",
  400. "desc": "Less wasted space. More wasted homes."
  401. },
  402. {
  403. "name": "House Parties",
  404. "desc": "More people! More party! More prey!"
  405. },
  406. {
  407. "name": "Suburbia",
  408. "desc": "It's like a buffet line!"
  409. }
  410. ],
  411. "apartment": [
  412. {
  413. "name": "Rent Subsidies",
  414. "desc": "Encourage high-density living. Enjoy the result."
  415. },
  416. {
  417. "name": "High-Rises",
  418. "desc": "These sure are some Tilted Towers..."
  419. },
  420. {
  421. "name": "Reverse Eviction",
  422. "desc": "Forcibly putting people IN your lunch!"
  423. },
  424. {
  425. "name": "Higher High-Rises",
  426. "desc": "Almost as tall as you! Almost."
  427. },
  428. {
  429. "name": "Vertical Beds",
  430. "desc": "You can fit way more people in a studio apartment with this one weird tip..."
  431. }
  432. ],
  433. "block": [
  434. {
  435. "name": "Street Sweepers",
  436. "desc": "Keeps the gunk off the sidewalk, and thus, off your tongue."
  437. },
  438. {
  439. "name": "Zoning Laws",
  440. "desc": "Mandatory prey-per-square-meter requirements."
  441. },
  442. {
  443. "name": "Alleyway Appetizers",
  444. "desc": "You can fit people *between* the buildings."
  445. },
  446. {
  447. "name": "Block Party",
  448. "desc": "Everyone's invited!"
  449. },
  450. {
  451. "name": "Vertical Blocks",
  452. "desc": "There's no reason you can't stack them on top of each other, right?"
  453. }
  454. ],
  455. "town": [
  456. {
  457. "name": "Going to Town",
  458. "desc": "That's where the food is."
  459. },
  460. {
  461. "name": "Going to Town, II: Revelations",
  462. "desc": "That's where the food is, again."
  463. },
  464. {
  465. "name": "Going to Town 0: Origins",
  466. "desc": "That's where the food was."
  467. },
  468. {
  469. "name": "Going to Town III: Revengeance",
  470. "desc": "Look, it's just how nature works. Food gets ate."
  471. },
  472. {
  473. "name": "Going to Town IV: Endgame",
  474. "desc": "Food IS something one considers when eating the universe."
  475. }
  476. ],
  477. "city": [
  478. {
  479. "name": "Gridlock",
  480. "desc": "Keeps people within arm's reach."
  481. },
  482. {
  483. "name": "Skyscrapers",
  484. "desc": "Corn on the cob? Corn on the cob."
  485. },
  486. {
  487. "name": "Protest March",
  488. "desc": "\"We have rights!\" chants the crowd. Unfortunately, they also have calories."
  489. },
  490. {
  491. "name": "Urban Sprawl",
  492. "desc": "What a lovely spread of Hors d'oeuvres!"
  493. },
  494. {
  495. "name": "Sim City",
  496. "desc": "You wouldn't download a city."
  497. }
  498. ],
  499. "metro": [
  500. {
  501. "name": "metro-1",
  502. "desc": ""
  503. },
  504. {
  505. "name": "metro-2",
  506. "desc": ""
  507. },
  508. {
  509. "name": "metro-3",
  510. "desc": ""
  511. },
  512. {
  513. "name": "metro-4",
  514. "desc": ""
  515. },
  516. {
  517. "name": "metro-5",
  518. "desc": ""
  519. }
  520. ],
  521. "county": [
  522. {
  523. "name": "County Roads",
  524. "desc": "Eh, close enough."
  525. },
  526. {
  527. "name": "county-2",
  528. "desc": ""
  529. },
  530. {
  531. "name": "county-3",
  532. "desc": ""
  533. },
  534. {
  535. "name": "county-4",
  536. "desc": ""
  537. },
  538. {
  539. "name": "county-5",
  540. "desc": ""
  541. }
  542. ],
  543. "state": [
  544. {
  545. "name": "state-1",
  546. "desc": ""
  547. },
  548. {
  549. "name": "state-2",
  550. "desc": ""
  551. },
  552. {
  553. "name": "state-3",
  554. "desc": ""
  555. },
  556. {
  557. "name": "state-4",
  558. "desc": ""
  559. },
  560. {
  561. "name": "state-5",
  562. "desc": ""
  563. }
  564. ],
  565. "country": [
  566. {
  567. "name": "Country Roads",
  568. "desc": "Take me hooooooome / to the plaaaaaace / where GULP"
  569. },
  570. {
  571. "name": "country-2",
  572. "desc": ""
  573. },
  574. {
  575. "name": "country-3",
  576. "desc": ""
  577. },
  578. {
  579. "name": "country-4",
  580. "desc": ""
  581. },
  582. {
  583. "name": "country-5",
  584. "desc": ""
  585. }
  586. ],
  587. "continent": [
  588. {
  589. "name": "continent-1",
  590. "desc": ""
  591. },
  592. {
  593. "name": "continent-2",
  594. "desc": ""
  595. },
  596. {
  597. "name": "continent-3",
  598. "desc": ""
  599. },
  600. {
  601. "name": "continent-4",
  602. "desc": ""
  603. },
  604. {
  605. "name": "continent-5",
  606. "desc": ""
  607. }
  608. ],
  609. "planet": [
  610. {
  611. "name": "planet-1",
  612. "desc": ""
  613. },
  614. {
  615. "name": "planet-2",
  616. "desc": ""
  617. },
  618. {
  619. "name": "planet-3",
  620. "desc": ""
  621. },
  622. {
  623. "name": "planet-4",
  624. "desc": ""
  625. },
  626. {
  627. "name": "planet-5",
  628. "desc": ""
  629. }
  630. ],
  631. "solar-system": [
  632. {
  633. "name": "solar-system-1",
  634. "desc": ""
  635. },
  636. {
  637. "name": "solar-system-2",
  638. "desc": ""
  639. },
  640. {
  641. "name": "solar-system-3",
  642. "desc": ""
  643. },
  644. {
  645. "name": "solar-system-4",
  646. "desc": ""
  647. },
  648. {
  649. "name": "solar-system-5",
  650. "desc": ""
  651. }
  652. ],
  653. "galaxy": [
  654. {
  655. "name": "galaxy-1",
  656. "desc": ""
  657. },
  658. {
  659. "name": "galaxy-2",
  660. "desc": ""
  661. },
  662. {
  663. "name": "galaxy-3",
  664. "desc": ""
  665. },
  666. {
  667. "name": "galaxy-4",
  668. "desc": ""
  669. },
  670. {
  671. "name": "galaxy-5",
  672. "desc": ""
  673. }
  674. ],
  675. "universe": [
  676. {
  677. "name": "universe-1",
  678. "desc": ""
  679. },
  680. {
  681. "name": "universe-2",
  682. "desc": ""
  683. },
  684. {
  685. "name": "universe-3",
  686. "desc": ""
  687. },
  688. {
  689. "name": "universe-4",
  690. "desc": ""
  691. },
  692. {
  693. "name": "universe-5",
  694. "desc": ""
  695. }
  696. ],
  697. "multiverse": [
  698. {
  699. "name": "multiverse-1",
  700. "desc": ""
  701. },
  702. {
  703. "name": "multiverse-2",
  704. "desc": ""
  705. },
  706. {
  707. "name": "multiverse-3",
  708. "desc": ""
  709. },
  710. {
  711. "name": "multiverse-4",
  712. "desc": ""
  713. },
  714. {
  715. "name": "multiverse-5",
  716. "desc": ""
  717. }
  718. ],
  719. }
  720. let prodAllUpgradeText = [
  721. {
  722. "name": "Sloth Metabolism",
  723. "desc": "Burn those calories. Eventually."
  724. },
  725. {
  726. "name": "Decent Metabolism",
  727. "desc": "Picking up the pace."
  728. },
  729. {
  730. "name": "Perky Metabolism",
  731. "desc": "Sweat a little."
  732. },
  733. {
  734. "name": "Quick Metabolism",
  735. "desc": "Burn those calories."
  736. },
  737. {
  738. "name": "Speedy Metabolism",
  739. "desc": "More prey, more power."
  740. },
  741. {
  742. "name": "Fast Metabolism",
  743. "desc": "You're a furnace. Fueled by people."
  744. },
  745. {
  746. "name": "Powerful Metabolism",
  747. "desc": "Digest them all."
  748. },
  749. {
  750. "name": "Unbelievable Metabolism",
  751. "desc": "Digest them all and more."
  752. },
  753. {
  754. "name": "Supernatural Metabolism",
  755. "desc": "Digest everything."
  756. },
  757. {
  758. "name": "Godly Metabolism",
  759. "desc": "Digest."
  760. }
  761. ]
  762. const clickUpgradeText = [
  763. {
  764. "name": "Grabby Hands",
  765. "desc": "Gathers prey, opens rooftops"
  766. },
  767. {
  768. "name": "Long Tongue",
  769. "desc": "Catches stragglers, tastes architecture"
  770. },
  771. {
  772. "name": "Sharp Eyes",
  773. "desc": "Spots snacks, probably unblinking"
  774. },
  775. {
  776. "name": "Sensitive Nose",
  777. "desc": "Sniffs meals, savors scents"
  778. },
  779. {
  780. "name": "Sensitive Ears",
  781. "desc": "Hears screams, finds leftovers"
  782. },
  783. {
  784. "name": "Greedy Hands",
  785. "desc": "Hoards prey, no leftovers"
  786. },
  787. {
  788. "name": "Nimble Tongue",
  789. "desc": "Snares snacks, without escape"
  790. },
  791. {
  792. "name": "Eagle Eyes",
  793. "desc": "Scans streets, always keen"
  794. },
  795. {
  796. "name": "Keen Nose",
  797. "desc": "Finds prey, never fooled"
  798. },
  799. {
  800. "name": "Perfect Ears",
  801. "desc": "Senses scuttles, won't relent"
  802. },
  803. ]