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.
 
 
 
 

826 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. "cost": {
  217. "food": buildings[key].cost * 5 * Math.pow(10,counter - 1)
  218. },
  219. "effects": [
  220. {
  221. "type": "prod",
  222. "amount": 2 + (counter - 1) * 0.25,
  223. "target": key
  224. }
  225. ]
  226. };
  227. upgrades[prefix + counter]["prereqs"] = {};
  228. upgrades[prefix + counter]["prereqs"]["buildings"] = {};
  229. upgrades[prefix + counter]["prereqs"]["buildings"][key] = prodUpgradeCounts[counter - 1];
  230. if (counter > 1) {
  231. upgrades[prefix + counter]["prereqs"]["upgrades"] = [
  232. prefix + (counter - 1)
  233. ];
  234. }
  235. counter += 1;
  236. }
  237. }
  238. }
  239. function createProdAllUpgrades() {
  240. let prefix = "prod-all-"
  241. let counter = 1;
  242. for (let contents of prodAllUpgradeText) {
  243. upgrades[prefix + counter] = {
  244. "name": contents.name,
  245. "desc": contents.desc,
  246. "cost": {
  247. "food": 5 * Math.pow(10, counter+1)
  248. },
  249. "effects": [
  250. {
  251. "type": "prod-all",
  252. "amount": 1.05
  253. }
  254. ],
  255. "prereqs": {
  256. "productivity": {
  257. "food": Math.pow(10, counter)
  258. }
  259. }
  260. };
  261. if (counter > 1) {
  262. upgrades[prefix + counter]["prereqs"].upgrades = [
  263. prefix + (counter - 1)
  264. ];
  265. }
  266. counter += 1;
  267. }
  268. }
  269. function createClickUpgrades() {
  270. let prefix = "prod-click-";
  271. let counter = 1 ;
  272. for (let contents of clickUpgradeText) {
  273. upgrades[prefix + counter] = {
  274. name: contents.name,
  275. desc: contents.desc,
  276. cost: {
  277. food: Math.pow(10, (counter*2)+1)
  278. },
  279. effects: [
  280. {
  281. type: "click",
  282. amount: 0.01
  283. }
  284. ],
  285. prereqs: {
  286. productivity: {
  287. food: Math.pow(10, counter)
  288. }
  289. }
  290. };
  291. if (counter > 1) {
  292. upgrades[prefix + counter]["prereqs"].upgrades = [
  293. prefix + (counter - 1)
  294. ];
  295. }
  296. counter += 1;
  297. }
  298. }
  299. let prodUpgradeText = {
  300. "micro": [
  301. {
  302. "name": "Bigger Micros",
  303. "desc": "A macro micro? It's more filling, for sure.",
  304. },
  305. {
  306. "name": "Beefy Micros",
  307. "desc": "25% more protein, 10% fewer carbs."
  308. },
  309. {
  310. "name": "Delicious Micros",
  311. "desc": "Betcha' can't eat just one."
  312. },
  313. {
  314. "name": "Irresistable Micros",
  315. "desc": "Genetically engineered to be delectable."
  316. },
  317. {
  318. "name": "Exquisite Micros",
  319. "desc": "Dangerously delicious."
  320. }
  321. ],
  322. "anthro": [
  323. {
  324. "name": "Willing Prey",
  325. "desc": "Why bother chasing down your meal?"
  326. },
  327. {
  328. "name": "Fattened Prey",
  329. "desc": "9 calories per gram!"
  330. },
  331. {
  332. "name": "Mesmerized Prey",
  333. "desc": "Why bother walking to your meal?"
  334. },
  335. {
  336. "name": "Food-Safe Lubricant",
  337. "desc": "Ease them down your gullet with ease. Thanks, chemistry!"
  338. },
  339. {
  340. "name": "Mandatory Meal Training",
  341. "desc": "Educating prey on basic food etiquette helps reduce maw congestion and speeds digestion by 27%."
  342. }
  343. ],
  344. "car": [
  345. {
  346. "name": "HOV Lane",
  347. "desc": "Think of the environment! And of your impending digestion, I guess."
  348. },
  349. {
  350. "name": "Lightweight Frames",
  351. "desc": "Although crunchy, the shell around the snacks isn't very appetizing."
  352. },
  353. {
  354. "name": "Traffic Engineering",
  355. "desc": "Maximizing throughput into your gullet."
  356. },
  357. {
  358. "name": "Super Highways",
  359. "desc": "Six lanes! Fresh pavement! A ravenous maw!"
  360. },
  361. {
  362. "name": "Stacked Cars",
  363. "desc": "When we couldn't make the roads any wider, we tried stacking the cars higher."
  364. }
  365. ],
  366. "bus": [
  367. {
  368. "name": "Bus Passes",
  369. "desc": "Save on greenhouse emissions. Save your predator's effort. Everyone wins!"
  370. },
  371. {
  372. "name": "Double Deckers",
  373. "desc": "Stack 'em up! Slurp 'em down!"
  374. },
  375. {
  376. "name": "Articulated Buses",
  377. "desc": "The bend really helps them slip down your throat."
  378. },
  379. {
  380. "name": "Tour Buses",
  381. "desc": "People come from around the world to see your intestinal tract.",
  382. },
  383. {
  384. "name": "Double Double Deckers",
  385. "desc": "Hard to swallow, true, but filling nonetheless."
  386. }
  387. ],
  388. "house": [
  389. {
  390. "name": "Second Story",
  391. "desc": "Twice as many snacks, half as much chewing."
  392. },
  393. {
  394. "name": "Remodeling",
  395. "desc": "Strip out that icky asbestos."
  396. },
  397. {
  398. "name": "Smaller Yards",
  399. "desc": "Less wasted space. More wasted homes."
  400. },
  401. {
  402. "name": "House Parties",
  403. "desc": "More people! More party! More prey!"
  404. },
  405. {
  406. "name": "Suburbia",
  407. "desc": "It's like a buffet line!"
  408. }
  409. ],
  410. "apartment": [
  411. {
  412. "name": "Rent Subsidies",
  413. "desc": "Encourage high-density living. Enjoy the result."
  414. },
  415. {
  416. "name": "High-Rises",
  417. "desc": "These sure are some Tilted Towers..."
  418. },
  419. {
  420. "name": "Reverse Eviction",
  421. "desc": "Forcibly putting people IN your lunch!"
  422. },
  423. {
  424. "name": "Higher High-Rises",
  425. "desc": "Almost as tall as you! Almost."
  426. },
  427. {
  428. "name": "Vertical Beds",
  429. "desc": "You can fit way more people in a studio apartment with this one weird tip..."
  430. }
  431. ],
  432. "block": [
  433. {
  434. "name": "Street Sweepers",
  435. "desc": "Keeps the gunk off the sidewalk, and thus, off your tongue."
  436. },
  437. {
  438. "name": "Zoning Laws",
  439. "desc": "Mandatory prey-per-square-meter requirements."
  440. },
  441. {
  442. "name": "Alleyway Appetizers",
  443. "desc": "You can fit people *between* the buildings."
  444. },
  445. {
  446. "name": "Block Party",
  447. "desc": "Everyone's invited!"
  448. },
  449. {
  450. "name": "Vertical Blocks",
  451. "desc": "There's no reason you can't stack them on top of each other, right?"
  452. }
  453. ],
  454. "town": [
  455. {
  456. "name": "town-1",
  457. "desc": ""
  458. },
  459. {
  460. "name": "town-2",
  461. "desc": ""
  462. },
  463. {
  464. "name": "town-3",
  465. "desc": ""
  466. },
  467. {
  468. "name": "town-4",
  469. "desc": ""
  470. },
  471. {
  472. "name": "town-5",
  473. "desc": ""
  474. }
  475. ],
  476. "city": [
  477. {
  478. "name": "city-1",
  479. "desc": ""
  480. },
  481. {
  482. "name": "city-2",
  483. "desc": ""
  484. },
  485. {
  486. "name": "city-3",
  487. "desc": ""
  488. },
  489. {
  490. "name": "city-4",
  491. "desc": ""
  492. },
  493. {
  494. "name": "city-5",
  495. "desc": ""
  496. }
  497. ],
  498. "metro": [
  499. {
  500. "name": "metro-1",
  501. "desc": ""
  502. },
  503. {
  504. "name": "metro-2",
  505. "desc": ""
  506. },
  507. {
  508. "name": "metro-3",
  509. "desc": ""
  510. },
  511. {
  512. "name": "metro-4",
  513. "desc": ""
  514. },
  515. {
  516. "name": "metro-5",
  517. "desc": ""
  518. }
  519. ],
  520. "county": [
  521. {
  522. "name": "county-1",
  523. "desc": ""
  524. },
  525. {
  526. "name": "county-2",
  527. "desc": ""
  528. },
  529. {
  530. "name": "county-3",
  531. "desc": ""
  532. },
  533. {
  534. "name": "county-4",
  535. "desc": ""
  536. },
  537. {
  538. "name": "county-5",
  539. "desc": ""
  540. }
  541. ],
  542. "state": [
  543. {
  544. "name": "state-1",
  545. "desc": ""
  546. },
  547. {
  548. "name": "state-2",
  549. "desc": ""
  550. },
  551. {
  552. "name": "state-3",
  553. "desc": ""
  554. },
  555. {
  556. "name": "state-4",
  557. "desc": ""
  558. },
  559. {
  560. "name": "state-5",
  561. "desc": ""
  562. }
  563. ],
  564. "country": [
  565. {
  566. "name": "Country Roads",
  567. "desc": "Take me hooooooome / to the plaaaaaace / where GULP"
  568. },
  569. {
  570. "name": "country-2",
  571. "desc": ""
  572. },
  573. {
  574. "name": "country-3",
  575. "desc": ""
  576. },
  577. {
  578. "name": "country-4",
  579. "desc": ""
  580. },
  581. {
  582. "name": "country-5",
  583. "desc": ""
  584. }
  585. ],
  586. "continent": [
  587. {
  588. "name": "continent-1",
  589. "desc": ""
  590. },
  591. {
  592. "name": "continent-2",
  593. "desc": ""
  594. },
  595. {
  596. "name": "continent-3",
  597. "desc": ""
  598. },
  599. {
  600. "name": "continent-4",
  601. "desc": ""
  602. },
  603. {
  604. "name": "continent-5",
  605. "desc": ""
  606. }
  607. ],
  608. "planet": [
  609. {
  610. "name": "planet-1",
  611. "desc": ""
  612. },
  613. {
  614. "name": "planet-2",
  615. "desc": ""
  616. },
  617. {
  618. "name": "planet-3",
  619. "desc": ""
  620. },
  621. {
  622. "name": "planet-4",
  623. "desc": ""
  624. },
  625. {
  626. "name": "planet-5",
  627. "desc": ""
  628. }
  629. ],
  630. "solar-system": [
  631. {
  632. "name": "solar-system-1",
  633. "desc": ""
  634. },
  635. {
  636. "name": "solar-system-2",
  637. "desc": ""
  638. },
  639. {
  640. "name": "solar-system-3",
  641. "desc": ""
  642. },
  643. {
  644. "name": "solar-system-4",
  645. "desc": ""
  646. },
  647. {
  648. "name": "solar-system-5",
  649. "desc": ""
  650. }
  651. ],
  652. "galaxy": [
  653. {
  654. "name": "galaxy-1",
  655. "desc": ""
  656. },
  657. {
  658. "name": "galaxy-2",
  659. "desc": ""
  660. },
  661. {
  662. "name": "galaxy-3",
  663. "desc": ""
  664. },
  665. {
  666. "name": "galaxy-4",
  667. "desc": ""
  668. },
  669. {
  670. "name": "galaxy-5",
  671. "desc": ""
  672. }
  673. ],
  674. "universe": [
  675. {
  676. "name": "universe-1",
  677. "desc": ""
  678. },
  679. {
  680. "name": "universe-2",
  681. "desc": ""
  682. },
  683. {
  684. "name": "universe-3",
  685. "desc": ""
  686. },
  687. {
  688. "name": "universe-4",
  689. "desc": ""
  690. },
  691. {
  692. "name": "universe-5",
  693. "desc": ""
  694. }
  695. ],
  696. "multiverse": [
  697. {
  698. "name": "multiverse-1",
  699. "desc": ""
  700. },
  701. {
  702. "name": "multiverse-2",
  703. "desc": ""
  704. },
  705. {
  706. "name": "multiverse-3",
  707. "desc": ""
  708. },
  709. {
  710. "name": "multiverse-4",
  711. "desc": ""
  712. },
  713. {
  714. "name": "multiverse-5",
  715. "desc": ""
  716. }
  717. ],
  718. }
  719. let prodAllUpgradeText = [
  720. {
  721. "name": "Sloth Metabolism",
  722. "desc": "Burn those calories. Eventually."
  723. },
  724. {
  725. "name": "Decent Metabolism",
  726. "desc": "Picking up the pace."
  727. },
  728. {
  729. "name": "Perky Metabolism",
  730. "desc": "Sweat a little."
  731. },
  732. {
  733. "name": "Quick Metabolism",
  734. "desc": "Burn those calories."
  735. },
  736. {
  737. "name": "Speedy Metabolism",
  738. "desc": "More prey, more power."
  739. },
  740. {
  741. "name": "Fast Metabolism",
  742. "desc": "You're a furnace. Fueled by people."
  743. },
  744. {
  745. "name": "Powerful Metabolism",
  746. "desc": "Digest them all."
  747. },
  748. {
  749. "name": "Unbelievable Metabolism",
  750. "desc": "Digest them all and more."
  751. },
  752. {
  753. "name": "Supernatural Metabolism",
  754. "desc": "Digest everything."
  755. },
  756. {
  757. "name": "Godly Metabolism",
  758. "desc": "Digest."
  759. }
  760. ]
  761. const clickUpgradeText = [
  762. {
  763. "name": "Grabby Hands",
  764. "desc": "Gathers prey, opens rooftops"
  765. },
  766. {
  767. "name": "Long Tongue",
  768. "desc": "Catches stragglers, tastes architecture"
  769. },
  770. {
  771. "name": "Sharp Eyes",
  772. "desc": "Spots snacks, probably unblinking"
  773. },
  774. {
  775. "name": "Sensitive Nose",
  776. "desc": "Sniffs meals, savors scents"
  777. },
  778. {
  779. "name": "Sensitive Ears",
  780. "desc": "Hears screams, finds leftovers"
  781. },
  782. {
  783. "name": "Greedy Hands",
  784. "desc": "Hoards prey, no leftovers"
  785. },
  786. {
  787. "name": "Nimble Tongue",
  788. "desc": "Snares snacks, without escape"
  789. },
  790. {
  791. "name": "Eagle Eyes",
  792. "desc": "Scans streets, always keen"
  793. },
  794. {
  795. "name": "Keen Nose",
  796. "desc": "Finds prey, never fooled"
  797. },
  798. {
  799. "name": "Perfect Ears",
  800. "desc": "Senses scuttles, won't relent"
  801. },
  802. ]