munch
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 
 

153 行
4.2 KiB

  1. /* AEZNON COMMISSION */
  2. function Geta() {
  3. Creature.call(this, "Geta", 5, 15, 10);
  4. this.hasName = true;
  5. this.description = function() { return "Geta"; };
  6. this.attacks.push(new punchAttack(this));
  7. this.attacks.push(new getaShrink(this));
  8. this.attacks.push(new getaGrab(this));
  9. this.attacks.push(new getaTease(this));
  10. this.attacks.push(new getaSuckle(this));
  11. this.attacks.push(new getaSalivaSwallow(this));
  12. this.attacks.push(new getaSwallow(this));
  13. this.backupAttack = new pass(this);
  14. this.digests = [];
  15. this.digests.push(new digestPlayerStomach(this,50));
  16. this.struggles = [];
  17. this.struggles.push(new rub(this));
  18. }
  19. function getaShrink(attacker) {
  20. return {
  21. attackPlayer: function(defender) {
  22. let success = true;
  23. if (success) {
  24. defender.flags.shrunk = true;
  25. return attacker.description() + " pulls a strange device from his pocket and points it at you. A blinding flash envelops your vision...and as your sight returns, you find yourself shrunken down to no more than two inches tall.";
  26. }
  27. },
  28. requirements: [
  29. function(attacker, defender) {
  30. return isNormal(attacker) && isNormal(defender);
  31. }
  32. ],
  33. priority: 2
  34. };
  35. }
  36. function getaGrab(attacker) {
  37. return {
  38. attackPlayer: function(defender) {
  39. defender.flags.grappled = true;
  40. return attacker.description() + " leans down and snatches you up, stuffing you into his maw.";
  41. },
  42. requirements: [
  43. function(attacker, defender) {
  44. return isNormal(attacker) && defender.flags.shrunk == true && defender.flags.grappled != true;
  45. }
  46. ],
  47. priority: 2
  48. };
  49. }
  50. function getaTease(attacker) {
  51. return {
  52. attackPlayer: function(defender) {
  53. defender.stamina = Math.max(defender.stamina - 25, 0);
  54. return attacker.description() + " grinds you against the roof of his maw with his tongue.";
  55. },
  56. requirements: [
  57. function(attacker, defender) {
  58. return isNormal(attacker) && defender.flags.shrunk == true && defender.flags.grappled == true && defender.stamina > 0;
  59. }
  60. ],
  61. priority: 1
  62. };
  63. }
  64. function getaSuckle(attacker) {
  65. return {
  66. attackPlayer: function(defender) {
  67. defender.stamina = Math.max(defender.stamina - 45, 0);
  68. return attacker.description() + " shuts his jaws and suckles on you.";
  69. },
  70. requirements: [
  71. function(attacker, defender) {
  72. return isNormal(attacker) && defender.flags.shrunk == true && defender.flags.grappled == true && defender.stamina > 0;
  73. }
  74. ],
  75. priority: 1
  76. };
  77. }
  78. function getaSalivaSwallow(attacker) {
  79. return {
  80. attackPlayer: function(defender) {
  81. defender.stamina = Math.max(defender.stamina - 15, 0);
  82. return attacker.description() + " swallows, draining the drool from his jaws - leaving you on the precipice of his gullet.";
  83. },
  84. requirements: [
  85. function(attacker, defender) {
  86. return isNormal(attacker) && defender.flags.shrunk == true && defender.flags.grappled == true && defender.stamina > 0;
  87. }
  88. ],
  89. priority: 1
  90. };
  91. }
  92. function getaSwallow(attacker) {
  93. return {
  94. attackPlayer: function(defender) {
  95. changeMode("eaten");
  96. return attacker.description() + " shuts his jaws and swallows, dragging you down into his tight throat and dumping you into a caustic stomach.";
  97. },
  98. requirements: [
  99. function(attacker, defender) {
  100. return isNormal(attacker) && defender.flags.shrunk == true && defender.flags.grappled == true && defender.stamina <= 0;
  101. }
  102. ],
  103. priority: 2
  104. };
  105. }
  106. function GetaObj() {
  107. GameObject.call(this, "Geta");
  108. this.actions.push( {
  109. "name": "Approach Geta",
  110. "action": function() {
  111. startDialog(new GetaDialog());
  112. }
  113. });
  114. }
  115. function GetaDialog() {
  116. DialogNode.call(this);
  117. this.text = "You approach the sandy-furred fox.";
  118. {
  119. let nodeFight = new DialogNode();
  120. this.addChoice("He certainly looks tasty...", nodeFight);
  121. nodeFight.text = "You stalk up to your prey, but he sees you coming. You're going to have to fight!";
  122. nodeFight.hooks.push( function(){
  123. currentFoe = new Geta();
  124. changeMode("combat");
  125. });
  126. }
  127. {
  128. let nodeIgnore = new DialogNode();
  129. this.addChoice("Leave him be", nodeIgnore);
  130. }
  131. }