being.rb 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. module Woe
  2. module Being
  3. include Serdes
  4. include Monolog
  5. serdes_reader :id
  6. serdes_reader :account
  7. # Essentials
  8. serdes_reader :kind # AKA "race"
  9. serdes_reader :level
  10. serdes_reader :profession # AKA "class"
  11. # Talents
  12. serdes_reader :strength
  13. serdes_reader :toughness
  14. serdes_reader :agility
  15. serdes_reader :dexterity
  16. serdes_reader :intelligence
  17. serdes_reader :wisdom
  18. serdes_reader :charisma
  19. serdes_reader :essence
  20. # Vitals
  21. serdes_reader :hp
  22. serdes_reader :hp_max
  23. serdes_reader :mp
  24. serdes_reader :mp_max
  25. serdes_reader :jp
  26. serdes_reader :jp_max
  27. serdes_reader :lp
  28. serdes_reader :lp_max
  29. # Equipment values
  30. serdes_reader :offense
  31. serdes_reader :protection
  32. serdes_reader :block
  33. serdes_reader :rapidity
  34. serdes_reader :yield
  35. # Skills array
  36. serdes_reader :skills
  37. # Affects array
  38. serdes_reader :affects
  39. # Derived stats
  40. def force
  41. return (strength * 2 + wisdom) / 3
  42. end
  43. def vitality
  44. return (toughness * 2 + charisma) / 3
  45. end
  46. def quickness
  47. return (agilty * 2 + intelligence) / 3
  48. end
  49. def knack
  50. return (dexterity * 2 + essence) / 3
  51. end
  52. def understanding
  53. return (intelligence * 2 + toughness) / 3
  54. end
  55. def grace
  56. return (charisma * 2 + agility) / 3
  57. end
  58. def zeal
  59. return (wisdom * 2 + strength) / 3
  60. end
  61. def numen
  62. return (essence * 2 + DEX) / 3
  63. end
  64. # Generates a prompt for use with the being
  65. def to_prompt
  66. if essence > 0
  67. "HP:#{hp}/#{hp_max} MP:#{mp}/#{mp_max} JP:#{jp}/#{jp_max} LP:#{lp}/#{lp_max}>"
  68. else
  69. "HP:#{hp}/#{hp_max} MP:#{mp}/#{mp_max} LP:#{lp}/#{lp_max}>"
  70. end
  71. end
  72. # Generates an overview of the status of the being.
  73. def to_status
  74. status <<- STATUS_END
  75. ********************************
  76. Status
  77. #{id} level #{level} #{kind} #{profession}
  78. Talents
  79. STR #{strength}
  80. TOU #{toughness}
  81. AGI #{agility}
  82. DEX #{dexterity}
  83. INT #{intelligence}
  84. WIS #{wisdom}
  85. CHA #{charisma}
  86. ESS #{essence}
  87. Equipment
  88. OFF #{offense}
  89. PRO #{protection}
  90. BLO #{block}
  91. RAP #{rapidity}
  92. YIE #{self.yield}
  93. "HP:#{hp}/#{hp_max} MP:#{mp}/#{mp_max} JP:#{jp}/#{jp_max} LP:#{lp}/#{lp_max}>"
  94. ********************************
  95. STATUS_END
  96. return status
  97. end
  98. # Sets up the being based on the talents
  99. def setup_on_birth
  100. end
  101. end
  102. end