crunch
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.
 
 
 

75 line
2.1 KiB

  1. "use strict";
  2. function attack(attacker, defender, baseDamage) {
  3. let damage = Math.round((Math.random() * 0.5 - 0.25 + 1) * baseDamage);
  4. defender.health -= damage;
  5. return damage;
  6. }
  7. function punchAttack(attacker) {
  8. return {
  9. name: "Punch",
  10. desc: "Punch a nerd",
  11. attack: function(defender) {
  12. return "You punch the " + defender.description() + " for " + attack(attacker, defender, attacker.str) + " damage";
  13. },
  14. attackPlayer: function(defender) {
  15. return "The " + attacker.description() + " punches you for " + attack(attacker, defender, attacker.str) + " damage";
  16. }
  17. };
  18. }
  19. function flankAttack(attacker) {
  20. return {
  21. name: "Flank",
  22. desc: "Be sneaky",
  23. attack: function(defender) {
  24. return "You run around the " + defender.description() + " and attack for " + attack(attacker, defender, attacker.dex) + " damage";
  25. },
  26. attackPlayer: function(defender) {
  27. return "The " + attacker.description() + " runs past you, then turns and hits you for " + attack(attacker, defender, attacker.str) + " damage";
  28. }
  29. };
  30. }
  31. function devourPlayer(attacker) {
  32. return {
  33. name: "Devours YOU!",
  34. desc: "You won't see this",
  35. conditions: [
  36. function(prefs) { return prefs.player.prey; }
  37. ],
  38. requirements: [
  39. function(attacker, defender) { return attacker.leering == true; }
  40. ],
  41. attackPlayer: function(defender) {
  42. changeMode("eaten");
  43. return "The voracious " + attacker.description() + " pins you down and devours you in seconds.";
  44. }
  45. }
  46. }
  47. function leer(attacker) {
  48. return {
  49. name: "Leer",
  50. desc: "Leer at something",
  51. attackPlayer: function(defender) {
  52. attacker.leering = true;
  53. return "The " + attacker.description() + " leers at you.";
  54. },
  55. requirements: [
  56. function(attacker, defender) { return attacker.leering != true; }
  57. ]
  58. };
  59. }
  60. function poke(attacker) {
  61. return {
  62. name: "Poke",
  63. desc: "Poke a nerd",
  64. attackPlayer: function(defender) {
  65. return "The " + attacker.description() + " pokes you on the snout for " + attack(attacker, defender, 1e12) + " damage";
  66. }
  67. };
  68. }