being.cr 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. # Arts array
  38. serdes_reader :arts
  39. # Affects array
  40. serdes_reader :affects
  41. # Equipment array
  42. serdes_reader :equipment
  43. # Inventory
  44. serdes_reader :inventory
  45. # Derived stats
  46. def force
  47. return (strength * 2 + wisdom) / 3
  48. end
  49. def vitality
  50. return (toughness * 2 + charisma) / 3
  51. end
  52. def quickness
  53. return (agilty * 2 + intelligence) / 3
  54. end
  55. def knack
  56. return (dexterity * 2 + essence) / 3
  57. end
  58. def understanding
  59. return (intelligence * 2 + toughness) / 3
  60. end
  61. def grace
  62. return (charisma * 2 + agility) / 3
  63. end
  64. def zeal
  65. return (wisdom * 2 + strength) / 3
  66. end
  67. def numen
  68. return (essence * 2 + DEX) / 3
  69. end
  70. # Generates a prompt for use with the being
  71. def to_prompt
  72. if essence > 0
  73. "HP:#{hp}/#{hp_max} MP:#{mp}/#{mp_max} JP:#{jp}/#{jp_max} LP:#{lp}/#{lp_max}>"
  74. else
  75. "HP:#{hp}/#{hp_max} MP:#{mp}/#{mp_max} LP:#{lp}/#{lp_max}>"
  76. end
  77. end
  78. # Generates an overview of the status of the being.
  79. def to_status
  80. status <<- STATUS_END
  81. ********************************
  82. Status
  83. #{id} level #{level} #{kind} #{profession}
  84. Talents
  85. STR #{strength}
  86. TOU #{toughness}
  87. AGI #{agility}
  88. DEX #{dexterity}
  89. INT #{intelligence}
  90. WIS #{wisdom}
  91. CHA #{charisma}
  92. ESS #{essence}
  93. Equipment
  94. OFF #{offense}
  95. PRO #{protection}
  96. BLO #{block}
  97. RAP #{rapidity}
  98. YIE #{self.yield}
  99. "HP:#{hp}/#{hp_max} MP:#{mp}/#{mp_max} JP:#{jp}/#{jp_max} LP:#{lp}/#{lp_max}>"
  100. ********************************
  101. STATUS_END
  102. return status
  103. end
  104. # Sets up the being based on the talents
  105. def setup_on_birth
  106. end
  107. end
  108. end