big steppy
No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.
 
 
 

167 líneas
6.6 KiB

  1. rules = {};
  2. rules["eat"] = [];
  3. rules["stomp"] = [];
  4. rules["kick"] = [];
  5. rules["anal-vore"] = [];
  6. rules["ass-crush"] = [];
  7. rules["breast-crush"] = [];
  8. rules["unbirth"] = [];
  9. rules["cock-vore"] = [];
  10. rules["cockslap"] = [];
  11. rules["ball-smother"] = [];
  12. rules["male-orgasm"] = [];
  13. rules["female-orgasm"] = [];
  14. function hasNothing(container, thing, amount) {
  15. for (var key in container.contents) {
  16. if (container.contents.hasOwnProperty(key))
  17. return false;
  18. }
  19. return true;
  20. }
  21. function hasLessThan(container, thing, amount) {
  22. if (container.contents.hasOwnProperty(thing))
  23. if (container.contents[thing].count < amount && container.contents[thing].count > 0)
  24. return true;
  25. return false;
  26. }
  27. function hasExactly(container, thing, amount) {
  28. if (!container.contents.hasOwnProperty(thing) && amount == 0)
  29. return true;
  30. if (container.contents.hasOwnProperty(thing) && container.contents[thing].count == amount)
  31. return true;
  32. return false;
  33. }
  34. function hasOnly(container, things) {
  35. for (var key in container.contents) {
  36. if (container.contents.hasOwnProperty(key))
  37. if (!things.includes(key))
  38. return false;
  39. }
  40. for (var i=0; i<things.length; i++) {
  41. if (!container.contents.hasOwnProperty(things[i]))
  42. return false;
  43. }
  44. return true;
  45. }
  46. function nothingLarger(container, thing) {
  47. for (var key in container.contents)
  48. if (container.contents.hasOwnProperty(key))
  49. if (areas[key] > areas[thing])
  50. return false;
  51. return true;
  52. }
  53. function describe(action, container, macro, verbose=true) {
  54. options = [];
  55. for (var i = 0; i < rules[action].length; i++) {
  56. if(rules[action][i].test(container,macro)) {
  57. options.push(rules[action][i].desc);
  58. }
  59. }
  60. if (options.length > 0)
  61. return options[0](container, macro, verbose);
  62. else {
  63. return describeDefault(action, container, macro, verbose);
  64. }
  65. }
  66. function describeDefault(action, container, macro, verbose=true) {
  67. switch(action) {
  68. case "eat": return "You scoop up " + container.describe(verbose) + " and swallow " + (container.count > 1 ? "them" : "it") + " whole.";
  69. case "stomp": return "You crush " + container.describe(verbose) + " underfoot.";
  70. case "kick": return "You punt " + container.describe(verbose) + ", destroying " + (container.count > 1 ? "them" : "it") + ".";
  71. case "anal-vore": return "You sit yourself down on " + container.describe(verbose) + ". " + (container.count > 1 ? "They slide" : "It slides") + " inside with ease.";
  72. case "ass-crush": return "Your heavy ass obliterates " + container.describe(verbose) + ". ";
  73. case "breast-crush": return "Your heavy breasts obliterate " + container.describe(verbose) + ". ";
  74. case "unbirth": return "You gasp as you slide " + container.describe(verbose) + " up your slit. ";
  75. case "cock-vore": return "You stuff " + container.describe(verbose) + " into your throbbing shaft, forcing them down to your heavy balls.";
  76. case "cockslap": return "Your swaying shaft crushes " + container.describe(verbose) + ". ";
  77. case "ball-smother": return "Your weighty balls spread over " + container.describe(verbose) + ", smothering them in musk.";
  78. case "male-orgasm": return "You're cumming! Your thick cock spurts out $VOLUME of seed, splooging " + container.describe(verbose) + ".";
  79. case "female-orgasm": return "You're cumming! Your moist slit sprays $VOLUME of slick femcum, splooging " + container.describe(verbose) + ".";
  80. }
  81. }
  82. // EATING
  83. rules["eat"].push({
  84. "test": function(container, macro) {
  85. return hasNothing(container);
  86. },
  87. "desc": function(container, macro, verbose) {
  88. return "You scoop up...nothing. Oh well.";
  89. }
  90. });
  91. rules["eat"].push({
  92. "test": function(container, macro) {
  93. return hasOnly(container, ["Person"])
  94. && hasLessThan(container, "Person", 6)
  95. && macro.height >= 10;
  96. },
  97. "desc": function(container, macro, verbose) {
  98. return "You pluck up the " + container.describe() + " and stuff them into your mouth, swallowing lightly to drag them down to your bubbling guts.";
  99. }
  100. });
  101. rules["eat"].push({
  102. "test": function(container, macro) {
  103. return hasOnly(container, ["Person"])
  104. && hasExactly(container, "Person", 1)
  105. && macro.height < 10;
  106. },
  107. "desc": function(container, macro, verbose) {
  108. return "You grasp " + container.describe() + " and greedily wolf them down, swallowing forcefully to cram them into your bulging stomach. A crass belch escapes your lips as they curl up in your slimy gut.";
  109. }
  110. })
  111. rules["eat"].push({
  112. "test": function(container, macro) {
  113. return hasOnly(container, ["Person","Car"])
  114. && hasExactly(container, "Car", 1)
  115. && hasLessThan(container, "Person", 5);
  116. },
  117. "desc": function(container, macro, verbose) {
  118. return "You crush the " + container.contents["Car"].describe() + " with your tight throat, washing it down with " + container.contents["Person"].describe();
  119. }
  120. })
  121. rules["eat"].push({
  122. "test": function(container, macro) {
  123. return hasExactly(container, "Small Skyscraper", 1)
  124. && nothingLarger(container, "Small Skyscraper")
  125. && macro.height < 500;
  126. },
  127. "desc": function(container, macro, verbose) {
  128. return "You drop onto your hands and knees, jaws opening wide to envelop the skyscraper. It glides into your throat as your snout touches the ground,\
  129. and you suckle on it for a long moment before twisting your head to snap it loose. The entire building and the " + describe_all(container.contents["Small Skyscraper"].contents, verbose) + "\
  130. within plunge into your roiling guts, along with some delicious treats you slurped up along with it - " + describe_all(container.contents, verbose, ["Small Skyscraper"]) + ".";
  131. }
  132. })
  133. rules["eat"].push({
  134. "test": function(container, macro) {
  135. return hasExactly(container, "Small Skyscraper", 2)
  136. && nothingLarger(container, "Small Skyscraper")
  137. && macro.height < 750;
  138. },
  139. "desc": function(container, macro, verbose) {
  140. return "You drop onto your hands and knees, jaws opening wide to envelop the skyscraper. It glides into your throat as your snout touches the ground,\
  141. and you suckle on it for a long moment before twisting your head to snap it loose. Without missing a beat, you rise back up, sloppy tongue slathering over the side \
  142. of the remaining tower, sucking on its tip and roughly shoving it into your maw. It breaks from its foundation, vanishing past your lips as you use two fingers to shove it \
  143. down your sultry throat. Your gut bubbles as " + describe_all(container.contents["Small Skyscraper"].contents, verbose) + " are crunched and crushed within, along with the \
  144. " + describe_all(container.contents, verbose, ["Small Skyscraper"]) + " that were unfortunate enough to be caught up by your slimy tongue.";
  145. }
  146. })