big steppy
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.
 
 
 

800 line
20 KiB

  1. var strolling = false;
  2. var maxStomachDigest = 10;
  3. var maxBowelsDigest = 10;
  4. var unit = "metric";
  5. var verbose = true;
  6. var biome = "suburb";
  7. var newline = " ";
  8. victims = {};
  9. var macro =
  10. {
  11. "scaling": function(value, scale, factor) { return value * Math.pow(scale,factor); },
  12. "species": "crux",
  13. "color" : "blue",
  14. "baseHeight": 2.26,
  15. get height() { return this.scaling(this.baseHeight, this.scale, 1); },
  16. "baseMass": 135,
  17. get mass () { return this.scaling(this.baseMass, this.scale, 3); },
  18. "basePawArea": 0.1,
  19. get pawArea() { return this.scaling(this.basePawArea, this.scale, 2); },
  20. "baseAnalVoreArea": 0.1,
  21. get analVoreArea() { return this.scaling(this.baseAnalVoreArea, this.scale, 2); },
  22. "baseAssArea": 0.4,
  23. get assArea() { return this.scaling(this.baseAssArea, this.scale, 2); },
  24. "baseHandArea": 0.3,
  25. get handArea() { return this.scaling(this.baseHandArea, this.scale, 2); },
  26. "baseDickLength": 0.3048,
  27. "baseDickDiameter": 0.08,
  28. "dickDensity": 1000,
  29. "dickScale": 1,
  30. get dickLength() { return this.scaling(this.baseDickLength * this.dickScale, this.scale, 1); },
  31. get dickDiameter() { return this.scaling(this.baseDickDiameter * this.dickScale, this.scale, 1); },
  32. get dickGirth() {
  33. return Math.pow((this.dickDiameter / 2),2) * Math.PI;
  34. },
  35. get dickArea() {
  36. return this.dickLength * this.dickDiameter * Math.PI / 2;
  37. },
  38. get dickVolume() {
  39. return this.dickLength * Math.pow(this.dickDiameter/2,2) * Math.PI;
  40. },
  41. get dickMass() {
  42. return this.dickVolume * this.dickDensity;
  43. },
  44. "baseBallDiameter": 0.05,
  45. "ballDensity": 1000,
  46. "ballScale": 1,
  47. get ballDiameter() { return this.scaling(this.baseBallDiameter * this.ballScale, this.scale, 1); },
  48. get ballArea() { return 2 * Math.PI * Math.pow(this.ballDiameter/2, 2) },
  49. get ballVolume() {
  50. var radius = this.ballDiameter / 2;
  51. return 4/3 * Math.PI * Math.pow(radius,3);
  52. },
  53. get ballMass() {
  54. var volume = this.ballVolume;
  55. return volume * this.ballDensity;
  56. },
  57. "baseVaginaLength": 0.1,
  58. "baseVaginaWidth": 0.05,
  59. "vaginaScale": 1,
  60. get vaginaLength() { return this.scaling(this.baseVaginaLength * this.vaginaScale, this.scale, 1); },
  61. get vaginaWidth() { return this.scaling(this.baseVaginaWidth * this.vaginaScale, this.scale, 1); },
  62. get vaginaArea() { return this.vaginaLength * this.vaginaWidth },
  63. "baseBreastDiameter": 0.1,
  64. "breastScale": 1,
  65. "breastDensity": 1000,
  66. get breastDiameter() { return this.scaling(this.baseDickLength * this.breastScale, this.scale, 1); },
  67. get breastArea() {
  68. return 2 * Math.PI * Math.pow(this.breastDiameter/2,2);
  69. },
  70. get breastVolume() {
  71. var radius = this.breastDiameter / 2;
  72. return 4/3 * Math.PI * Math.pow(radius,3);
  73. },
  74. get breastMass() {
  75. var volume = this.breastVolume;
  76. return volume * this.breastDensity;
  77. },
  78. "digest": function(organ) {
  79. var count = Math.min(organ.contents.length, organ.maxDigest);
  80. var container = new Container();
  81. while (count > 0) {
  82. var victim = organ.contents.shift();
  83. if (victim.name != "Container")
  84. victim = new Container([victim]);
  85. container = container.merge(victim);
  86. --count;
  87. }
  88. var digested = container.sum();
  89. for (var key in victims[organ.name]) {
  90. if (victims[organ.name].hasOwnProperty(key) && digested.hasOwnProperty(key) ) {
  91. victims["digested"][key] += digested[key];
  92. victims[organ.name][key] -= digested[key];
  93. }
  94. }
  95. var line = organ.describeDigestion(container);
  96. var summary = summarize(container.sum());
  97. update([line,summary,newline]);
  98. },
  99. "stomach": {
  100. "name": "stomach",
  101. "feed": function(prey) {
  102. this.feedFunc(prey,this,this.owner);
  103. },
  104. "feedFunc": function(prey,self,owner) {
  105. if (self.contents.length == 0)
  106. setTimeout(function() { owner.digest(self) }, 15000);
  107. this.contents.push(prey);
  108. },
  109. "describeDigestion": function(container) {
  110. return "Your stomach gurgles as it digests " + container.describe(false);
  111. },
  112. "contents": [],
  113. "maxDigest": 5
  114. },
  115. "bowels": {
  116. "name" : "bowels",
  117. "feed": function(prey) {
  118. this.feedFunc(prey,this,this.owner);
  119. },
  120. "feedFunc": function(prey,self,owner) {
  121. if (self.contents.length == 0)
  122. setTimeout(function() { owner.digest(self) }, 15000);
  123. this.contents.push(prey);
  124. },
  125. "describeDigestion" : function(container) {
  126. return "Your bowels churn as they absorb " + container.describe(false);
  127. },
  128. "contents" : [],
  129. "maxDigest" : 3
  130. },
  131. "womb": {
  132. "name" : "womb",
  133. "feed": function(prey) {
  134. this.feedFunc(prey,this,this.owner);
  135. },
  136. "feedFunc": function(prey,self,owner) {
  137. if (self.contents.length == 0)
  138. setTimeout(function() { owner.digest(self) }, 15000);
  139. this.contents.push(prey);
  140. },
  141. "describeDigestion" : function(container) {
  142. return "Your womb squeezes as it dissolves " + container.describe(false);
  143. },
  144. "contents" : [],
  145. "maxDigest" : 1
  146. },
  147. "balls": {
  148. "name" : "balls",
  149. "feed": function(prey) {
  150. this.feedFunc(prey,this,this.owner);
  151. },
  152. "feedFunc": function(prey,self,owner) {
  153. if (self.contents.length == 0)
  154. setTimeout(function() { owner.digest(self) }, 15000);
  155. this.contents.push(prey);
  156. },
  157. "describeDigestion" : function(container) {
  158. return "Your balls slosh as they transform " + container.describe(false) + " into cum";
  159. },
  160. "contents" : [],
  161. "maxDigest" : 1
  162. },
  163. "init": function() {
  164. this.stomach.owner = this;
  165. this.bowels.owner = this;
  166. this.womb.owner = this;
  167. this.balls.owner = this;
  168. },
  169. "maleParts": true,
  170. "femaleParts": true,
  171. get description() {
  172. result = [];
  173. line = "You are a " + length(macro.height, unit, true) + " tall " + macro.species + ". You weigh " + mass(macro.mass, unit) + ".";
  174. result.push(line);
  175. if (this.maleParts) {
  176. line = "Your " + length(macro.dickLength, unit, true) + " long dick hangs from your hips, with two " + mass(macro.ballMass, unit, true) + ", " + length(macro.ballDiameter, unit, true) + "-wide balls hanging beneath.";
  177. result.push(line);
  178. }
  179. if (this.femaleParts) {
  180. line = "Your glistening " + length(macro.vaginaLength, unit, true) + " long slit is oozing between your legs."
  181. result.push(line);
  182. line = "You have two " + length(macro.breastDiameter, unit, true) + "-wide breasts that weigh " + mass(macro.breastMass, unit) + " apiece.";
  183. result.push(line);
  184. }
  185. return result;
  186. },
  187. "scale": 3,
  188. "scaleWithMass": function(mass) {
  189. var startMass = this.mass;
  190. var newMass = startMass + mass;
  191. this.scale = Math.pow(newMass / this.baseMass, 1/3);
  192. }
  193. }
  194. function look()
  195. {
  196. var desc = macro.description;
  197. var line2 = ""
  198. switch(biome) {
  199. case "rural": line2 = "You're standing amongst rural farmhouses and expansive ranches. Cattle are milling about at your feet."; break;
  200. case "suburb": line2 = "You're striding through the winding roads of a suburb."; break;
  201. case "city": line2 = "You're terrorizing the streets of a city. Heavy traffic, worsened by your rampage, is everywhere."; break;
  202. case "downtown": line2 = "You're lurking amongst the skyscrapers of downtown. The streets are packed, and the buildings are practically begging you to knock them over.";
  203. }
  204. desc = desc.concat([newline,line2,newline]);
  205. update(desc);
  206. }
  207. function get_living_prey(sum) {
  208. var total = 0;
  209. for (var key in sum) {
  210. if (sum.hasOwnProperty(key)) {
  211. if (key == "Person" || key == "Cow")
  212. total += sum[key];
  213. }
  214. }
  215. return total;
  216. }
  217. function toggle_auto()
  218. {
  219. strolling = !strolling;
  220. document.getElementById("button-stroll").innerHTML = "Status: " + (strolling ? "Strolling" : "Standing");
  221. if (strolling)
  222. update(["You start walking.",newline]);
  223. else
  224. update(["You stop walking.",newline]);
  225. }
  226. function change_location()
  227. {
  228. switch(biome) {
  229. case "suburb": biome = "city"; break;
  230. case "city": biome = "downtown"; break;
  231. case "downtown": biome = "rural"; break;
  232. case "rural": biome = "suburb"; break;
  233. }
  234. document.getElementById("button-location").innerHTML = "Location: " + biome.charAt(0).toUpperCase() + biome.slice(1);
  235. }
  236. function toggle_units()
  237. {
  238. switch(unit) {
  239. case "metric": unit = "customary"; break;
  240. case "customary": unit = "approx"; break;
  241. case "approx": unit = "metric"; break;
  242. }
  243. document.getElementById("button-units").innerHTML = "Units: " + unit.charAt(0).toUpperCase() + unit.slice(1);
  244. update();
  245. }
  246. function toggle_verbose()
  247. {
  248. verbose = !verbose;
  249. document.getElementById("button-verbose").innerHTML = "Descriptions: " + (verbose ? "Verbose" : "Simple");
  250. }
  251. function initVictims()
  252. {
  253. return {
  254. "Person": 0,
  255. "Cow": 0,
  256. "Car": 0,
  257. "Bus": 0,
  258. "Tram": 0,
  259. "Motorcycle": 0,
  260. "House": 0,
  261. "Barn": 0,
  262. "Small Skyscraper": 0,
  263. "Train": 0,
  264. "Train Car": 0,
  265. "Parking Garage": 0,
  266. "Overpass": 0,
  267. };
  268. };
  269. // lists out total people
  270. function summarize(sum, fatal = true)
  271. {
  272. var count = get_living_prey(sum);
  273. return "<b>(" + count + " " + (fatal ? (count > 1 ? "kills" : "kill") : (count > 1 ? "prey" : "prey")) + ")</b>";
  274. }
  275. function getOnePrey(biome,area)
  276. {
  277. var potential = ["Person"];
  278. switch(biome) {
  279. case "suburb": potential = ["Person", "Car", "Bus", "Train", "House"]; break;
  280. case "city": potential = ["Person", "Car", "Bus", "Train", "Tram", "House", "Parking Garage"]; break;
  281. case "downtown": potential = ["Person", "Car", "Bus", "Tram", "Small Skyscraper", "Parking Garage"]; break;
  282. case "rural": potential = ["Person", "Barn", "House", "Cow"]; break;
  283. }
  284. var potAreas = []
  285. potential.forEach(function (x) {
  286. potAreas.push([x,areas[x]]);
  287. });
  288. potAreas = potAreas.sort(function (x,y) {
  289. return y[1] - x[1];
  290. });
  291. for (var i=0; i<potAreas.length; i++) {
  292. x = potAreas[i];
  293. if (x[1] < area) {
  294. return new things[x[0]](1);
  295. }
  296. };
  297. return new Person(1);
  298. }
  299. function getPrey(region, area)
  300. {
  301. var weights = {"Person": 1};
  302. switch(region)
  303. {
  304. case "rural": weights = {
  305. "Person": 0.05,
  306. "House": 0.01,
  307. "Barn": 0.01,
  308. "Cow": 0.2
  309. }; break;
  310. case "suburb": weights = {
  311. "Person": 0.5,
  312. "House": 0.5,
  313. "Car": 0.2,
  314. "Train": 0.1,
  315. "Bus": 0.1
  316. }; break;
  317. case "city": weights = {
  318. "Person": 0.5,
  319. "House": 0.2,
  320. "Car": 0.2,
  321. "Train": 0.1,
  322. "Bus": 0.1,
  323. "Tram": 0.1,
  324. "Parking Garage": 0.02
  325. }; break;
  326. case "downtown": weights = {
  327. "Person": 0.5,
  328. "Car": 0.3,
  329. "Bus": 0.15,
  330. "Tram": 0.1,
  331. "Parking Garage": 0.02,
  332. "Small Skyscraper": 0.4
  333. }; break;
  334. }
  335. return fill_area2(area,weights);
  336. }
  337. function updateVictims(type,prey)
  338. {
  339. var sums = prey.sum();
  340. for (var key in sums) {
  341. if (sums.hasOwnProperty(key)) {
  342. victims[type][key] += sums[key];
  343. }
  344. }
  345. }
  346. function feed()
  347. {
  348. var area = macro.handArea;
  349. var prey = getPrey(biome, area);
  350. var line = prey.eat(verbose)
  351. var linesummary = summarize(prey.sum(), false);
  352. var people = get_living_prey(prey.sum());
  353. var sound = "Ulp";
  354. if (people < 3) {
  355. sound = "Ulp.";
  356. } else if (people < 10) {
  357. sound = "Gulp.";
  358. } else if (people < 50) {
  359. sound = "Glrrp.";
  360. } else if (people < 500) {
  361. sound = "Glrrrpkh!";
  362. } else if (people < 5000) {
  363. sound = "GLRRKPKH!";
  364. } else {
  365. sound = "Oh the humanity!";
  366. }
  367. var preyMass = prey.sum_property("mass");
  368. macro.scaleWithMass(preyMass);
  369. macro.stomach.feed(prey);
  370. updateVictims("stomach",prey);
  371. update([sound,line,linesummary,newline]);
  372. }
  373. function stomp()
  374. {
  375. var area = macro.pawArea;
  376. var prey = getPrey(biome, area);
  377. var line = prey.stomp(verbose)
  378. var linesummary = summarize(prey.sum(), true);
  379. var people = get_living_prey(prey.sum());
  380. var sound = "Thump";
  381. if (people < 3) {
  382. sound = "Thump!";
  383. } else if (people < 10) {
  384. sound = "Squish!";
  385. } else if (people < 50) {
  386. sound = "Crunch!";
  387. } else if (people < 500) {
  388. sound = "CRUNCH!";
  389. } else if (people < 5000) {
  390. sound = "CRRUUUNCH!!";
  391. } else {
  392. sound = "Oh the humanity!";
  393. }
  394. var preyMass = prey.sum_property("mass");
  395. macro.scaleWithMass(preyMass);
  396. updateVictims("stomped",prey);
  397. update([sound,line,linesummary,newline]);
  398. }
  399. function anal_vore()
  400. {
  401. var area = macro.analVoreArea;
  402. var prey = getOnePrey(biome,area);
  403. area = macro.assArea;
  404. var crushed = getPrey(biome,area);
  405. var line1 = prey.anal_vore(verbose, macro.height);
  406. var line1summary = summarize(prey.sum(), false);
  407. var line2 = crushed.buttcrush(verbose);
  408. var line2summary = summarize(crushed.sum(), true);
  409. var people = get_living_prey(prey.sum());
  410. var sound = "Shlp";
  411. if (people < 3) {
  412. sound = "Shlp.";
  413. } else if (people < 10) {
  414. sound = "Squelch.";
  415. } else if (people < 50) {
  416. sound = "Shlurrp.";
  417. } else if (people < 500) {
  418. sound = "SHLRP!";
  419. } else if (people < 5000) {
  420. sound = "SQLCH!!";
  421. } else {
  422. sound = "Oh the humanity!";
  423. }
  424. var people = get_living_prey(crushed.sum());
  425. var sound2 = "Thump";
  426. if (people < 3) {
  427. sound2 = "Thump!";
  428. } else if (people < 10) {
  429. sound2 = "Squish!";
  430. } else if (people < 50) {
  431. sound2 = "Crunch!";
  432. } else if (people < 500) {
  433. sound2 = "CRUNCH!";
  434. } else if (people < 5000) {
  435. sound2 = "CRRUUUNCH!!";
  436. } else {
  437. sound2 = "Oh the humanity!";
  438. }
  439. var preyMass = prey.sum_property("mass");
  440. var crushedMass = prey.sum_property("mass");
  441. macro.scaleWithMass(preyMass);
  442. macro.scaleWithMass(crushedMass);
  443. macro.bowels.feed(prey);
  444. updateVictims("bowels",prey);
  445. updateVictims("stomped",crushed);
  446. update([sound,line1,line1summary,newline,sound2,line2,line2summary,newline]);
  447. }
  448. function breast_crush()
  449. {
  450. var area = macro.breastArea;
  451. var prey = getPrey(biome, area);
  452. var line = prey.breast_crush(verbose);
  453. var linesummary = summarize(prey.sum(), true);
  454. var people = get_living_prey(prey.sum());
  455. var sound = "Thump";
  456. if (people < 3) {
  457. sound = "Thump!";
  458. } else if (people < 10) {
  459. sound = "Squish!";
  460. } else if (people < 50) {
  461. sound = "Crunch!";
  462. } else if (people < 500) {
  463. sound = "CRUNCH!";
  464. } else if (people < 5000) {
  465. sound = "CRRUUUNCH!!";
  466. } else {
  467. sound = "Oh the humanity!";
  468. }
  469. var preyMass = prey.sum_property("mass");
  470. macro.scaleWithMass(preyMass);
  471. updateVictims("breasts",prey);
  472. update([sound,line,linesummary,newline]);
  473. }
  474. function unbirth()
  475. {
  476. var area = macro.vaginaArea;
  477. var prey = getPrey(biome, area);
  478. var line = prey.unbirth(verbose)
  479. var linesummary = summarize(prey.sum(), false);
  480. var people = get_living_prey(prey.sum());
  481. var sound = "";
  482. if (people < 3) {
  483. sound = "Shlp.";
  484. } else if (people < 10) {
  485. sound = "Squelch.";
  486. } else if (people < 50) {
  487. sound = "Shlurrp.";
  488. } else if (people < 500) {
  489. sound = "SHLRP!";
  490. } else if (people < 5000) {
  491. sound = "SQLCH!!";
  492. } else {
  493. sound = "Oh the humanity!";
  494. }
  495. var preyMass = prey.sum_property("mass");
  496. macro.scaleWithMass(preyMass);
  497. macro.womb.feed(prey);
  498. updateVictims("womb",prey);
  499. update([sound,line,linesummary,newline]);
  500. }
  501. function cockslap()
  502. {
  503. var area = macro.dickArea;
  504. var prey = getPrey(biome, area);
  505. var line = prey.cockslap(verbose)
  506. var linesummary = summarize(prey.sum(), true);
  507. var people = get_living_prey(prey.sum());
  508. var sound = "Thump";
  509. if (people < 3) {
  510. sound = "Thump!";
  511. } else if (people < 10) {
  512. sound = "Squish!";
  513. } else if (people < 50) {
  514. sound = "Crunch!";
  515. } else if (people < 500) {
  516. sound = "CRUNCH!";
  517. } else if (people < 5000) {
  518. sound = "CRRUUUNCH!!";
  519. } else {
  520. sound = "Oh the humanity!";
  521. }
  522. var preyMass = prey.sum_property("mass");
  523. macro.scaleWithMass(preyMass);
  524. updateVictims("cock",prey);
  525. update([sound,line,linesummary,newline]);
  526. }
  527. function cock_vore()
  528. {
  529. var area = macro.dickGirth;
  530. var prey = getPrey(biome, area);
  531. var line = prey.cock_vore(verbose)
  532. var linesummary = summarize(prey.sum(), true);
  533. var people = get_living_prey(prey.sum());
  534. var sound = "lp";
  535. if (people < 3) {
  536. sound = "Shlp.";
  537. } else if (people < 10) {
  538. sound = "Squelch.";
  539. } else if (people < 50) {
  540. sound = "Shlurrp.";
  541. } else if (people < 500) {
  542. sound = "SHLRP!";
  543. } else if (people < 5000) {
  544. sound = "SQLCH!!";
  545. } else {
  546. sound = "Oh the humanity!";
  547. }
  548. var preyMass = prey.sum_property("mass");
  549. macro.scaleWithMass(preyMass);
  550. macro.balls.feed(prey);
  551. updateVictims("balls",prey);
  552. update([sound,line,linesummary,newline]);
  553. }
  554. function ball_smother()
  555. {
  556. var area = macro.ballArea * 2;
  557. var prey = getPrey(biome, area);
  558. var line = prey.ball_smother(verbose)
  559. var linesummary = summarize(prey.sum(), true);
  560. var people = get_living_prey(prey.sum());
  561. var sound = "Thump";
  562. if (people < 3) {
  563. sound = "Thump!";
  564. } else if (people < 10) {
  565. sound = "Squish!";
  566. } else if (people < 50) {
  567. sound = "Smoosh!";
  568. } else if (people < 500) {
  569. sound = "SMOOSH!";
  570. } else if (people < 5000) {
  571. sound = "SMOOOOOSH!!";
  572. } else {
  573. sound = "Oh the humanity!";
  574. }
  575. var preyMass = prey.sum_property("mass");
  576. macro.scaleWithMass(preyMass);
  577. updateVictims("balls",prey);
  578. update([sound,line,linesummary,newline]);
  579. }
  580. function update(lines = [])
  581. {
  582. var log = document.getElementById("log");
  583. lines.forEach(function (x) {
  584. var line = document.createElement('div');
  585. line.innerHTML = x;
  586. log.appendChild(line);
  587. });
  588. log.scrollTop = log.scrollHeight;
  589. document.getElementById("height").innerHTML = "Height: " + length(macro.height, unit);
  590. document.getElementById("mass").innerHTML = "Mass: " + mass(macro.mass, unit);
  591. for (var type in victims) {
  592. if (victims.hasOwnProperty(type)) {
  593. for (var key in victims[type]){
  594. if (victims[type].hasOwnProperty(key)) {
  595. if (document.getElementById("stats-" + type + "-" + key) == null) {
  596. if (victims[type][key] == 0)
  597. continue;
  598. child = document.createElement('div');
  599. child.id = "stats-" + type + "-" + key;
  600. child.classList.add("stat-line");
  601. document.getElementById("stats-" + type).appendChild(child);
  602. }
  603. document.getElementById("stats-" + type + "-" + key).innerHTML = key + ": " + victims[type][key];
  604. }
  605. }
  606. }
  607. }
  608. }
  609. function pick_move()
  610. {
  611. if (!strolling) {
  612. setTimeout(pick_move, 1500 * Math.sqrt(macro.scale));
  613. return;
  614. }
  615. var choice = Math.random();
  616. if (choice < 0.2) {
  617. anal_vore();
  618. } else if (choice < 0.6) {
  619. stomp();
  620. } else {
  621. feed();
  622. }
  623. setTimeout(pick_move, 1500 * Math.sqrt(macro.scale));
  624. }
  625. function grow()
  626. {
  627. var oldHeight = macro.height;
  628. var oldMass = macro.mass;
  629. macro.scale *= 1.2;
  630. var newHeight = macro.height;
  631. var newMass = macro.mass;
  632. var heightDelta = newHeight - oldHeight;
  633. var massDelta = newMass - oldMass;
  634. var heightStr = length(heightDelta, unit);
  635. var massStr = mass(massDelta, unit);
  636. update(["Power surges through you as you grow " + heightStr + " taller and gain " + massStr + " of mass",newline]);
  637. }
  638. window.addEventListener('load', function(event) {
  639. victims["stomped"] = initVictims();
  640. victims["digested"] = initVictims();
  641. victims["stomach"] = initVictims();
  642. victims["bowels"] = initVictims();
  643. victims["breasts"] = initVictims();
  644. victims["womb"] = initVictims();
  645. victims["cock"] = initVictims();
  646. victims["balls"] = initVictims();
  647. victims["smothered"] = initVictims();
  648. macro.init();
  649. document.getElementById("button-look").addEventListener("click",look);
  650. document.getElementById("button-grow").addEventListener("click",grow);
  651. document.getElementById("button-feed").addEventListener("click",feed);
  652. document.getElementById("button-stomp").addEventListener("click",stomp);
  653. document.getElementById("button-breast_crush").addEventListener("click",breast_crush);
  654. document.getElementById("button-unbirth").addEventListener("click",unbirth);
  655. document.getElementById("button-cockslap").addEventListener("click",cockslap);
  656. document.getElementById("button-cock_vore").addEventListener("click",cock_vore);
  657. document.getElementById("button-ball_smother").addEventListener("click",ball_smother);
  658. document.getElementById("button-anal_vore").addEventListener("click",anal_vore);
  659. document.getElementById("button-stroll").addEventListener("click",toggle_auto);
  660. document.getElementById("button-location").addEventListener("click",change_location);
  661. document.getElementById("button-units").addEventListener("click",toggle_units);
  662. document.getElementById("button-verbose").addEventListener("click",toggle_verbose);
  663. setTimeout(pick_move, 2000);
  664. update();
  665. });