tormenta20 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (471) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +27 -0
  3. data/README.md +203 -12
  4. data/Rakefile +9 -0
  5. data/db/schema.sql +382 -0
  6. data/db/seeds.rb +377 -0
  7. data/db/tormenta20.sqlite3 +0 -0
  8. data/docs/armaduras.md +72 -0
  9. data/docs/armas.md +95 -0
  10. data/docs/classes.md +105 -0
  11. data/docs/divindades.md +77 -0
  12. data/docs/escudos.md +49 -0
  13. data/docs/itens.md +59 -0
  14. data/docs/magias.md +157 -0
  15. data/docs/materiais_especiais.md +50 -0
  16. data/docs/melhorias.md +55 -0
  17. data/docs/origens.md +61 -0
  18. data/docs/poderes.md +98 -0
  19. data/docs/regras.md +51 -0
  20. data/examples/database_usage.rb +155 -0
  21. data/src/json/classes/arcanista.json +86 -0
  22. data/src/json/classes/barbaro.json +85 -0
  23. data/src/json/classes/bardo.json +91 -0
  24. data/src/json/classes/bucaneiro.json +96 -0
  25. data/src/json/classes/cacador.json +96 -0
  26. data/src/json/classes/cavaleiro.json +87 -0
  27. data/src/json/classes/clerigo.json +82 -0
  28. data/src/json/classes/druida.json +88 -0
  29. data/src/json/classes/guerreiro.json +90 -0
  30. data/src/json/classes/inventor.json +100 -0
  31. data/src/json/classes/ladino.json +96 -0
  32. data/src/json/classes/lutador.json +90 -0
  33. data/src/json/classes/nobre.json +100 -0
  34. data/src/json/classes/paladino.json +93 -0
  35. data/src/json/deuses/aharadak.json +26 -0
  36. data/src/json/deuses/allihanna.json +26 -0
  37. data/src/json/deuses/arsenal.json +28 -0
  38. data/src/json/deuses/azgher.json +28 -0
  39. data/src/json/deuses/hyninn.json +28 -0
  40. data/src/json/deuses/kallyadranoch.json +28 -0
  41. data/src/json/deuses/khalmyr.json +27 -0
  42. data/src/json/deuses/lena.json +28 -0
  43. data/src/json/deuses/lin_wu.json +28 -0
  44. data/src/json/deuses/marah.json +28 -0
  45. data/src/json/deuses/megalokk.json +28 -0
  46. data/src/json/deuses/nimb.json +27 -0
  47. data/src/json/deuses/oceano.json +26 -0
  48. data/src/json/deuses/sszzaas.json +28 -0
  49. data/src/json/deuses/tanna_toh.json +28 -0
  50. data/src/json/deuses/tenebra.json +26 -0
  51. data/src/json/deuses/thwor.json +27 -0
  52. data/src/json/deuses/thyatis.json +26 -0
  53. data/src/json/deuses/valkaria.json +30 -0
  54. data/src/json/deuses/wynna.json +25 -0
  55. data/src/json/equipamentos/armaduras/leves/armadura_acolchoada.json +15 -0
  56. data/src/json/equipamentos/armaduras/leves/armadura_de_couro.json +13 -0
  57. data/src/json/equipamentos/armaduras/leves/couraca.json +13 -0
  58. data/src/json/equipamentos/armaduras/leves/couro_batido.json +13 -0
  59. data/src/json/equipamentos/armaduras/leves/gibao_de_peles.json +13 -0
  60. data/src/json/equipamentos/armaduras/pesadas/armadura_completa.json +19 -0
  61. data/src/json/equipamentos/armaduras/pesadas/brunea.json +17 -0
  62. data/src/json/equipamentos/armaduras/pesadas/cota_de_malha.json +17 -0
  63. data/src/json/equipamentos/armaduras/pesadas/loriga_segmentada.json +17 -0
  64. data/src/json/equipamentos/armaduras/pesadas/meia_armadura.json +17 -0
  65. data/src/json/equipamentos/armas/exoticas/chicote.json +23 -0
  66. data/src/json/equipamentos/armas/exoticas/corrente_de_espinhos.json +23 -0
  67. data/src/json/equipamentos/armas/exoticas/espada_bastarda.json +19 -0
  68. data/src/json/equipamentos/armas/exoticas/katana.json +19 -0
  69. data/src/json/equipamentos/armas/exoticas/machado_anao.json +19 -0
  70. data/src/json/equipamentos/armas/exoticas/machado_taurico.json +17 -0
  71. data/src/json/equipamentos/armas/exoticas/rede.json +41 -0
  72. data/src/json/equipamentos/armas/fogo/mosquete.json +21 -0
  73. data/src/json/equipamentos/armas/fogo/pistola.json +21 -0
  74. data/src/json/equipamentos/armas/marciais/alabarda.json +17 -0
  75. data/src/json/equipamentos/armas/marciais/alfange.json +17 -0
  76. data/src/json/equipamentos/armas/marciais/arco_longo.json +22 -0
  77. data/src/json/equipamentos/armas/marciais/besta_pesada.json +21 -0
  78. data/src/json/equipamentos/armas/marciais/cimitarra.json +17 -0
  79. data/src/json/equipamentos/armas/marciais/espada_longa.json +17 -0
  80. data/src/json/equipamentos/armas/marciais/florete.json +17 -0
  81. data/src/json/equipamentos/armas/marciais/gadanho.json +17 -0
  82. data/src/json/equipamentos/armas/marciais/lanca_montada.json +20 -0
  83. data/src/json/equipamentos/armas/marciais/machadinha.json +19 -0
  84. data/src/json/equipamentos/armas/marciais/machado_de_batalha.json +17 -0
  85. data/src/json/equipamentos/armas/marciais/machado_de_guerra.json +17 -0
  86. data/src/json/equipamentos/armas/marciais/mangual.json +21 -0
  87. data/src/json/equipamentos/armas/marciais/marreta.json +17 -0
  88. data/src/json/equipamentos/armas/marciais/martelo_de_guerra.json +17 -0
  89. data/src/json/equipamentos/armas/marciais/montante.json +17 -0
  90. data/src/json/equipamentos/armas/marciais/picareta.json +17 -0
  91. data/src/json/equipamentos/armas/marciais/tridente.json +22 -0
  92. data/src/json/equipamentos/armas/simples/adaga.json +21 -0
  93. data/src/json/equipamentos/armas/simples/arco_curto.json +21 -0
  94. data/src/json/equipamentos/armas/simples/azagaia.json +20 -0
  95. data/src/json/equipamentos/armas/simples/besta_leve.json +21 -0
  96. data/src/json/equipamentos/armas/simples/bordao.json +17 -0
  97. data/src/json/equipamentos/armas/simples/clava.json +17 -0
  98. data/src/json/equipamentos/armas/simples/espada_curta.json +17 -0
  99. data/src/json/equipamentos/armas/simples/foice.json +17 -0
  100. data/src/json/equipamentos/armas/simples/funda.json +23 -0
  101. data/src/json/equipamentos/armas/simples/lanca.json +19 -0
  102. data/src/json/equipamentos/armas/simples/maca.json +17 -0
  103. data/src/json/equipamentos/armas/simples/pique.json +17 -0
  104. data/src/json/equipamentos/armas/simples/tacape.json +17 -0
  105. data/src/json/equipamentos/escudos/escudo_leve.json +22 -0
  106. data/src/json/equipamentos/escudos/escudo_pesado.json +22 -0
  107. data/src/json/equipamentos/itens/alimentacao/batata_valkariana.json +14 -0
  108. data/src/json/equipamentos/itens/alimentacao/gorad_quente.json +12 -0
  109. data/src/json/equipamentos/itens/alimentacao/macarrao_de_yuvalin.json +12 -0
  110. data/src/json/equipamentos/itens/alimentacao/prato_do_aventureiro.json +13 -0
  111. data/src/json/equipamentos/itens/alimentacao/racao_de_viagem.json +14 -0
  112. data/src/json/equipamentos/itens/alimentacao/refeicao_comum.json +9 -0
  113. data/src/json/equipamentos/itens/alimentacao/sopa_de_peixe.json +13 -0
  114. data/src/json/equipamentos/itens/alquimicos/catalisadores/baga_de_fogo.json +17 -0
  115. data/src/json/equipamentos/itens/alquimicos/catalisadores/dente_de_dragao.json +17 -0
  116. data/src/json/equipamentos/itens/alquimicos/catalisadores/essencia_abissal.json +22 -0
  117. data/src/json/equipamentos/itens/alquimicos/catalisadores/liquen_lilas.json +18 -0
  118. data/src/json/equipamentos/itens/alquimicos/catalisadores/musgo_purpura.json +18 -0
  119. data/src/json/equipamentos/itens/alquimicos/catalisadores/ossos_de_monstro.json +17 -0
  120. data/src/json/equipamentos/itens/alquimicos/catalisadores/po_de_cristal.json +18 -0
  121. data/src/json/equipamentos/itens/alquimicos/catalisadores/po_de_giz.json +18 -0
  122. data/src/json/equipamentos/itens/alquimicos/catalisadores/ramo_verdejante.json +16 -0
  123. data/src/json/equipamentos/itens/alquimicos/catalisadores/saco_de_sal.json +18 -0
  124. data/src/json/equipamentos/itens/alquimicos/catalisadores/seixo_de_ambar.json +18 -0
  125. data/src/json/equipamentos/itens/alquimicos/catalisadores/terra_de_cemiterio.json +18 -0
  126. data/src/json/equipamentos/itens/alquimicos/preparados/acido.json +19 -0
  127. data/src/json/equipamentos/itens/alquimicos/preparados/balsamo_restaurador.json +16 -0
  128. data/src/json/equipamentos/itens/alquimicos/preparados/bomba.json +30 -0
  129. data/src/json/equipamentos/itens/alquimicos/preparados/cosmetico.json +18 -0
  130. data/src/json/equipamentos/itens/alquimicos/preparados/elixir_do_amor.json +23 -0
  131. data/src/json/equipamentos/itens/alquimicos/preparados/essencia_de_mana.json +16 -0
  132. data/src/json/equipamentos/itens/alquimicos/preparados/fogo_alquimico.json +27 -0
  133. data/src/json/equipamentos/itens/alquimicos/preparados/po_do_desaparecimento.json +18 -0
  134. data/src/json/equipamentos/itens/alquimicos/venenos/beladona.json +22 -0
  135. data/src/json/equipamentos/itens/alquimicos/venenos/bruma_sonolenta.json +21 -0
  136. data/src/json/equipamentos/itens/alquimicos/venenos/cicuta.json +22 -0
  137. data/src/json/equipamentos/itens/alquimicos/venenos/essencia_de_sombra.json +20 -0
  138. data/src/json/equipamentos/itens/alquimicos/venenos/nevoa_toxica.json +22 -0
  139. data/src/json/equipamentos/itens/alquimicos/venenos/peconha_comum.json +24 -0
  140. data/src/json/equipamentos/itens/alquimicos/venenos/peconha_concentrada.json +22 -0
  141. data/src/json/equipamentos/itens/alquimicos/venenos/peconha_potente.json +22 -0
  142. data/src/json/equipamentos/itens/alquimicos/venenos/po_de_lich.json +23 -0
  143. data/src/json/equipamentos/itens/alquimicos/venenos/riso_de_nimb.json +21 -0
  144. data/src/json/equipamentos/itens/animais/alforje.json +11 -0
  145. data/src/json/equipamentos/itens/animais/cao_de_caca.json +18 -0
  146. data/src/json/equipamentos/itens/animais/cavalo.json +20 -0
  147. data/src/json/equipamentos/itens/animais/cavalo_de_guerra.json +17 -0
  148. data/src/json/equipamentos/itens/animais/estabulo.json +10 -0
  149. data/src/json/equipamentos/itens/animais/ponei.json +21 -0
  150. data/src/json/equipamentos/itens/animais/ponei_de_guerra.json +18 -0
  151. data/src/json/equipamentos/itens/animais/trobo.json +14 -0
  152. data/src/json/equipamentos/itens/aventura/agua_benta.json +23 -0
  153. data/src/json/equipamentos/itens/aventura/algemas.json +35 -0
  154. data/src/json/equipamentos/itens/aventura/arpeu.json +18 -0
  155. data/src/json/equipamentos/itens/aventura/bandoleira_de_pocoes.json +15 -0
  156. data/src/json/equipamentos/itens/aventura/barraca.json +14 -0
  157. data/src/json/equipamentos/itens/aventura/corda.json +26 -0
  158. data/src/json/equipamentos/itens/aventura/espelho.json +10 -0
  159. data/src/json/equipamentos/itens/aventura/lampiao.json +19 -0
  160. data/src/json/equipamentos/itens/aventura/mochila.json +12 -0
  161. data/src/json/equipamentos/itens/aventura/mochila_de_aventureiro.json +14 -0
  162. data/src/json/equipamentos/itens/aventura/oleo.json +19 -0
  163. data/src/json/equipamentos/itens/aventura/organizador_de_pergaminhos.json +14 -0
  164. data/src/json/equipamentos/itens/aventura/pe_de_cabra.json +18 -0
  165. data/src/json/equipamentos/itens/aventura/saco_de_dormir.json +13 -0
  166. data/src/json/equipamentos/itens/aventura/simbolo_sagrado.json +15 -0
  167. data/src/json/equipamentos/itens/aventura/tocha.json +28 -0
  168. data/src/json/equipamentos/itens/aventura/vara_de_madeira.json +12 -0
  169. data/src/json/equipamentos/itens/esotericos/bolsa_de_po.json +17 -0
  170. data/src/json/equipamentos/itens/esotericos/cajado_arcano.json +20 -0
  171. data/src/json/equipamentos/itens/esotericos/cetro_elemental.json +22 -0
  172. data/src/json/equipamentos/itens/esotericos/costela_de_lich.json +18 -0
  173. data/src/json/equipamentos/itens/esotericos/dedo_de_ente.json +21 -0
  174. data/src/json/equipamentos/itens/esotericos/luva_de_ferro.json +17 -0
  175. data/src/json/equipamentos/itens/esotericos/medalhao_de_prata.json +16 -0
  176. data/src/json/equipamentos/itens/esotericos/orbe_cristalino.json +15 -0
  177. data/src/json/equipamentos/itens/esotericos/tomo_hermetico.json +17 -0
  178. data/src/json/equipamentos/itens/esotericos/varinha_arcana.json +15 -0
  179. data/src/json/equipamentos/itens/ferramentas/alaude_elfico.json +16 -0
  180. data/src/json/equipamentos/itens/ferramentas/colecao_de_livros.json +16 -0
  181. data/src/json/equipamentos/itens/ferramentas/equipamento_de_viagem.json +19 -0
  182. data/src/json/equipamentos/itens/ferramentas/estojo_de_disfarces.json +18 -0
  183. data/src/json/equipamentos/itens/ferramentas/flauta_mistica.json +17 -0
  184. data/src/json/equipamentos/itens/ferramentas/gazua.json +18 -0
  185. data/src/json/equipamentos/itens/ferramentas/instrumento_musical.json +20 -0
  186. data/src/json/equipamentos/itens/ferramentas/instrumentos_de_oficio.json +21 -0
  187. data/src/json/equipamentos/itens/ferramentas/luneta.json +15 -0
  188. data/src/json/equipamentos/itens/ferramentas/maleta_de_medicamentos.json +17 -0
  189. data/src/json/equipamentos/itens/ferramentas/sela.json +19 -0
  190. data/src/json/equipamentos/itens/ferramentas/tambor_das_profundezas.json +17 -0
  191. data/src/json/equipamentos/itens/servicos/conducao.json +19 -0
  192. data/src/json/equipamentos/itens/servicos/curandeiro.json +9 -0
  193. data/src/json/equipamentos/itens/servicos/estadia.json +42 -0
  194. data/src/json/equipamentos/itens/servicos/magia.json +23 -0
  195. data/src/json/equipamentos/itens/servicos/mensageiro.json +10 -0
  196. data/src/json/equipamentos/itens/veiculos/balao_goblin.json +34 -0
  197. data/src/json/equipamentos/itens/veiculos/canoa.json +18 -0
  198. data/src/json/equipamentos/itens/veiculos/carroca.json +20 -0
  199. data/src/json/equipamentos/itens/veiculos/carruagem.json +21 -0
  200. data/src/json/equipamentos/itens/veiculos/veleiro.json +11 -0
  201. data/src/json/equipamentos/itens/vestuario/andrajos_de_aldeao.json +16 -0
  202. data/src/json/equipamentos/itens/vestuario/bandana.json +14 -0
  203. data/src/json/equipamentos/itens/vestuario/botas_reforcadas.json +15 -0
  204. data/src/json/equipamentos/itens/vestuario/camisa_bufante.json +14 -0
  205. data/src/json/equipamentos/itens/vestuario/capa_esvoacante.json +14 -0
  206. data/src/json/equipamentos/itens/vestuario/capa_pesada.json +14 -0
  207. data/src/json/equipamentos/itens/vestuario/casaco_longo.json +15 -0
  208. data/src/json/equipamentos/itens/vestuario/chapeu_arcano.json +15 -0
  209. data/src/json/equipamentos/itens/vestuario/enfeite_de_elmo.json +15 -0
  210. data/src/json/equipamentos/itens/vestuario/farrapos_de_ermitao.json +16 -0
  211. data/src/json/equipamentos/itens/vestuario/gorro_de_ervas.json +14 -0
  212. data/src/json/equipamentos/itens/vestuario/luva_de_pelica.json +14 -0
  213. data/src/json/equipamentos/itens/vestuario/manopla.json +15 -0
  214. data/src/json/equipamentos/itens/vestuario/manto_camuflado.json +20 -0
  215. data/src/json/equipamentos/itens/vestuario/manto_eclesiastico.json +14 -0
  216. data/src/json/equipamentos/itens/vestuario/robe_mistico.json +14 -0
  217. data/src/json/equipamentos/itens/vestuario/sapatos_de_camurca.json +14 -0
  218. data/src/json/equipamentos/itens/vestuario/tabardo.json +14 -0
  219. data/src/json/equipamentos/itens/vestuario/traje_da_corte.json +19 -0
  220. data/src/json/equipamentos/itens/vestuario/traje_de_viajante.json +13 -0
  221. data/src/json/equipamentos/itens/vestuario/veste_de_seda.json +14 -0
  222. data/src/json/equipamentos/municoes/balas.json +13 -0
  223. data/src/json/equipamentos/municoes/flechas.json +13 -0
  224. data/src/json/equipamentos/municoes/pedras.json +14 -0
  225. data/src/json/equipamentos/municoes/virotes.json +14 -0
  226. data/src/json/itens_superiores/materiais_especiais/aco_rubi.json +44 -0
  227. data/src/json/itens_superiores/materiais_especiais/adamante.json +35 -0
  228. data/src/json/itens_superiores/materiais_especiais/gelo_eterno.json +33 -0
  229. data/src/json/itens_superiores/materiais_especiais/madeira_tollon.json +31 -0
  230. data/src/json/itens_superiores/materiais_especiais/materia_vermelha.json +51 -0
  231. data/src/json/itens_superiores/materiais_especiais/mitral.json +38 -0
  232. data/src/json/itens_superiores/melhorias/armaduras_escudos/ajustada.json +11 -0
  233. data/src/json/itens_superiores/melhorias/armaduras_escudos/delicada.json +15 -0
  234. data/src/json/itens_superiores/melhorias/armaduras_escudos/espinhosa.json +15 -0
  235. data/src/json/itens_superiores/melhorias/armaduras_escudos/espinhoso.json +11 -0
  236. data/src/json/itens_superiores/melhorias/armaduras_escudos/polida.json +13 -0
  237. data/src/json/itens_superiores/melhorias/armaduras_escudos/reforcada.json +13 -0
  238. data/src/json/itens_superiores/melhorias/armaduras_escudos/selada.json +14 -0
  239. data/src/json/itens_superiores/melhorias/armaduras_escudos/sob_medida.json +13 -0
  240. data/src/json/itens_superiores/melhorias/armas/atroz.json +11 -0
  241. data/src/json/itens_superiores/melhorias/armas/certeira.json +11 -0
  242. data/src/json/itens_superiores/melhorias/armas/cruel.json +11 -0
  243. data/src/json/itens_superiores/melhorias/armas/equilibrada.json +11 -0
  244. data/src/json/itens_superiores/melhorias/armas/harmonizada.json +13 -0
  245. data/src/json/itens_superiores/melhorias/armas/injecao_alquimica.json +14 -0
  246. data/src/json/itens_superiores/melhorias/armas/macica.json +12 -0
  247. data/src/json/itens_superiores/melhorias/armas/mira_telescopica.json +16 -0
  248. data/src/json/itens_superiores/melhorias/armas/precisa.json +12 -0
  249. data/src/json/itens_superiores/melhorias/armas/pungente.json +11 -0
  250. data/src/json/itens_superiores/melhorias/esotericos/canalizador.json +11 -0
  251. data/src/json/itens_superiores/melhorias/esotericos/energetico.json +12 -0
  252. data/src/json/itens_superiores/melhorias/esotericos/harmonizado.json +16 -0
  253. data/src/json/itens_superiores/melhorias/esotericos/poderoso.json +11 -0
  254. data/src/json/itens_superiores/melhorias/esotericos/vigilante.json +11 -0
  255. data/src/json/itens_superiores/melhorias/ferramentas_vestuario/aprimorado.json +15 -0
  256. data/src/json/itens_superiores/melhorias/geral/banhado_a_ouro.json +17 -0
  257. data/src/json/itens_superiores/melhorias/geral/cravejado_de_gemas.json +12 -0
  258. data/src/json/itens_superiores/melhorias/geral/discreto.json +13 -0
  259. data/src/json/itens_superiores/melhorias/geral/macabro.json +12 -0
  260. data/src/json/itens_superiores/melhorias/geral/material_especial.json +13 -0
  261. data/src/json/origens/acolito.json +11 -0
  262. data/src/json/origens/amigo_dos_animais.json +11 -0
  263. data/src/json/origens/amnesico.json +10 -0
  264. data/src/json/origens/aristocrata.json +11 -0
  265. data/src/json/origens/artesao.json +11 -0
  266. data/src/json/origens/artista.json +11 -0
  267. data/src/json/origens/assistente_de_laboratorio.json +11 -0
  268. data/src/json/origens/batedor.json +11 -0
  269. data/src/json/origens/capanga.json +11 -0
  270. data/src/json/origens/charlatao.json +11 -0
  271. data/src/json/origens/circense.json +11 -0
  272. data/src/json/origens/criminoso.json +11 -0
  273. data/src/json/origens/curandeiro.json +11 -0
  274. data/src/json/origens/eremita.json +11 -0
  275. data/src/json/origens/escravo.json +11 -0
  276. data/src/json/origens/estudioso.json +11 -0
  277. data/src/json/origens/fazendeiro.json +11 -0
  278. data/src/json/origens/forasteiro.json +11 -0
  279. data/src/json/origens/gladiador.json +11 -0
  280. data/src/json/origens/guarda.json +11 -0
  281. data/src/json/origens/herdeiro.json +11 -0
  282. data/src/json/origens/heroi_campones.json +11 -0
  283. data/src/json/origens/marujo.json +11 -0
  284. data/src/json/origens/mateiro.json +11 -0
  285. data/src/json/origens/membro_de_guilda.json +11 -0
  286. data/src/json/origens/mercador.json +11 -0
  287. data/src/json/origens/minerador.json +11 -0
  288. data/src/json/origens/nomade.json +11 -0
  289. data/src/json/origens/pivete.json +11 -0
  290. data/src/json/origens/refugiado.json +11 -0
  291. data/src/json/origens/seguidor.json +11 -0
  292. data/src/json/origens/selvagem.json +11 -0
  293. data/src/json/origens/soldado.json +11 -0
  294. data/src/json/origens/taverneiro.json +11 -0
  295. data/src/json/origens/trabalhador.json +11 -0
  296. data/src/json/poderes/habilidades_unicas_de_origem/a_prova_de_tudo.json +14 -0
  297. data/src/json/poderes/habilidades_unicas_de_origem/agua_no_feijao.json +14 -0
  298. data/src/json/poderes/habilidades_unicas_de_origem/alpinista_social.json +9 -0
  299. data/src/json/poderes/habilidades_unicas_de_origem/amigo_especial.json +16 -0
  300. data/src/json/poderes/habilidades_unicas_de_origem/antigo_mestre.json +15 -0
  301. data/src/json/poderes/habilidades_unicas_de_origem/busca_interior.json +13 -0
  302. data/src/json/poderes/habilidades_unicas_de_origem/confissao.json +14 -0
  303. data/src/json/poderes/habilidades_unicas_de_origem/coracao_heroico.json +13 -0
  304. data/src/json/poderes/habilidades_unicas_de_origem/cultura_exotica.json +13 -0
  305. data/src/json/poderes/habilidades_unicas_de_origem/desejo_de_liberdade.json +12 -0
  306. data/src/json/poderes/habilidades_unicas_de_origem/detetive.json +14 -0
  307. data/src/json/poderes/habilidades_unicas_de_origem/dom_artistico.json +10 -0
  308. data/src/json/poderes/habilidades_unicas_de_origem/escavador.json +13 -0
  309. data/src/json/poderes/habilidades_unicas_de_origem/esforcado.json +13 -0
  310. data/src/json/poderes/habilidades_unicas_de_origem/esse_cheiro.json +14 -0
  311. data/src/json/poderes/habilidades_unicas_de_origem/estoico.json +16 -0
  312. data/src/json/poderes/habilidades_unicas_de_origem/frutos_do_trabalho.json +19 -0
  313. data/src/json/poderes/habilidades_unicas_de_origem/gororoba.json +12 -0
  314. data/src/json/poderes/habilidades_unicas_de_origem/heranca.json +13 -0
  315. data/src/json/poderes/habilidades_unicas_de_origem/influencia_militar.json +14 -0
  316. data/src/json/poderes/habilidades_unicas_de_origem/lembrancas_graduais.json +14 -0
  317. data/src/json/poderes/habilidades_unicas_de_origem/medico_de_campo.json +12 -0
  318. data/src/json/poderes/habilidades_unicas_de_origem/membro_da_igreja.json +14 -0
  319. data/src/json/poderes/habilidades_unicas_de_origem/mochileiro.json +9 -0
  320. data/src/json/poderes/habilidades_unicas_de_origem/negociacao.json +12 -0
  321. data/src/json/poderes/habilidades_unicas_de_origem/palpite_fundamentado.json +13 -0
  322. data/src/json/poderes/habilidades_unicas_de_origem/pao_e_circo.json +11 -0
  323. data/src/json/poderes/habilidades_unicas_de_origem/passagem_de_navio.json +13 -0
  324. data/src/json/poderes/habilidades_unicas_de_origem/punguista.json +15 -0
  325. data/src/json/poderes/habilidades_unicas_de_origem/quebra_galho.json +14 -0
  326. data/src/json/poderes/habilidades_unicas_de_origem/rede_de_contatos.json +14 -0
  327. data/src/json/poderes/habilidades_unicas_de_origem/sangue_azul.json +12 -0
  328. data/src/json/poderes/habilidades_unicas_de_origem/truque_de_magica.json +14 -0
  329. data/src/json/poderes/habilidades_unicas_de_origem/vendedor_de_carcacas.json +13 -0
  330. data/src/json/poderes/habilidades_unicas_de_origem/vida_rustica.json +13 -0
  331. data/src/json/poderes/poderes_concedidos/afinidade_com_a_tormenta.json +14 -0
  332. data/src/json/poderes/poderes_concedidos/almejar_o_impossivel.json +13 -0
  333. data/src/json/poderes/poderes_concedidos/anfibio.json +13 -0
  334. data/src/json/poderes/poderes_concedidos/apostar_com_o_trapaceiro.json +12 -0
  335. data/src/json/poderes/poderes_concedidos/armas_da_ambicao.json +12 -0
  336. data/src/json/poderes/poderes_concedidos/arsenal_das_profundezas.json +14 -0
  337. data/src/json/poderes/poderes_concedidos/astucia_da_serpente.json +14 -0
  338. data/src/json/poderes/poderes_concedidos/ataque_piedoso.json +13 -0
  339. data/src/json/poderes/poderes_concedidos/aura_de_medo.json +17 -0
  340. data/src/json/poderes/poderes_concedidos/aura_de_paz.json +18 -0
  341. data/src/json/poderes/poderes_concedidos/aura_restauradora.json +13 -0
  342. data/src/json/poderes/poderes_concedidos/bencao_do_mana.json +10 -0
  343. data/src/json/poderes/poderes_concedidos/caricia_sombria.json +26 -0
  344. data/src/json/poderes/poderes_concedidos/centelha_magica.json +13 -0
  345. data/src/json/poderes/poderes_concedidos/compreender_os_ermos.json +17 -0
  346. data/src/json/poderes/poderes_concedidos/conhecimento_enciclopedico.json +13 -0
  347. data/src/json/poderes/poderes_concedidos/conjurar_arma.json +19 -0
  348. data/src/json/poderes/poderes_concedidos/coragem_total.json +11 -0
  349. data/src/json/poderes/poderes_concedidos/cura_gentil.json +10 -0
  350. data/src/json/poderes/poderes_concedidos/curandeira_perfeita.json +15 -0
  351. data/src/json/poderes/poderes_concedidos/dedo_verde.json +14 -0
  352. data/src/json/poderes/poderes_concedidos/descanso_natural.json +10 -0
  353. data/src/json/poderes/poderes_concedidos/dom_da_esperanca.json +15 -0
  354. data/src/json/poderes/poderes_concedidos/dom_da_imortalidade.json +8 -0
  355. data/src/json/poderes/poderes_concedidos/dom_da_profecia.json +6 -0
  356. data/src/json/poderes/poderes_concedidos/dom_da_ressurreicao.json +8 -0
  357. data/src/json/poderes/poderes_concedidos/dom_da_verdade.json +15 -0
  358. data/src/json/poderes/poderes_concedidos/escamas_draconicas.json +13 -0
  359. data/src/json/poderes/poderes_concedidos/escudo_magico.json +12 -0
  360. data/src/json/poderes/poderes_concedidos/espada_justiceira.json +13 -0
  361. data/src/json/poderes/poderes_concedidos/espada_solar.json +16 -0
  362. data/src/json/poderes/poderes_concedidos/extase_da_loucura.json +12 -0
  363. data/src/json/poderes/poderes_concedidos/familiar_ofidico.json +13 -0
  364. data/src/json/poderes/poderes_concedidos/farsa_do_fingidor.json +14 -0
  365. data/src/json/poderes/poderes_concedidos/fe_guerreira.json +20 -0
  366. data/src/json/poderes/poderes_concedidos/forma_de_macaco.json +20 -0
  367. data/src/json/poderes/poderes_concedidos/fulgor_solar.json +18 -0
  368. data/src/json/poderes/poderes_concedidos/furia_divina.json +20 -0
  369. data/src/json/poderes/poderes_concedidos/golpista_divino.json +14 -0
  370. data/src/json/poderes/poderes_concedidos/habitante_do_deserto.json +14 -0
  371. data/src/json/poderes/poderes_concedidos/inimigo_de_tenebra.json +14 -0
  372. data/src/json/poderes/poderes_concedidos/kiai_divino.json +13 -0
  373. data/src/json/poderes/poderes_concedidos/liberdade_divina.json +12 -0
  374. data/src/json/poderes/poderes_concedidos/manto_da_penumbra.json +14 -0
  375. data/src/json/poderes/poderes_concedidos/mente_analitica.json +16 -0
  376. data/src/json/poderes/poderes_concedidos/mente_vazia.json +16 -0
  377. data/src/json/poderes/poderes_concedidos/mestre_dos_mares.json +18 -0
  378. data/src/json/poderes/poderes_concedidos/olhar_amedrontador.json +14 -0
  379. data/src/json/poderes/poderes_concedidos/palavras_de_bondade.json +14 -0
  380. data/src/json/poderes/poderes_concedidos/percepcao_temporal.json +17 -0
  381. data/src/json/poderes/poderes_concedidos/pesquisa_abencoada.json +15 -0
  382. data/src/json/poderes/poderes_concedidos/poder_oculto.json +21 -0
  383. data/src/json/poderes/poderes_concedidos/presas_primordiais.json +23 -0
  384. data/src/json/poderes/poderes_concedidos/presas_venenosas.json +16 -0
  385. data/src/json/poderes/poderes_concedidos/rejeicao_divina.json +13 -0
  386. data/src/json/poderes/poderes_concedidos/reparar_injustica.json +13 -0
  387. data/src/json/poderes/poderes_concedidos/sangue_de_ferro.json +13 -0
  388. data/src/json/poderes/poderes_concedidos/sangue_ofidico.json +14 -0
  389. data/src/json/poderes/poderes_concedidos/servos_do_dragao.json +24 -0
  390. data/src/json/poderes/poderes_concedidos/sopro_do_mar.json +25 -0
  391. data/src/json/poderes/poderes_concedidos/sorte_dos_loucos.json +13 -0
  392. data/src/json/poderes/poderes_concedidos/talento_artistico.json +14 -0
  393. data/src/json/poderes/poderes_concedidos/teurgista_mistico.json +11 -0
  394. data/src/json/poderes/poderes_concedidos/tradicao_de_lin_wu.json +14 -0
  395. data/src/json/poderes/poderes_concedidos/transmissao_da_loucura.json +17 -0
  396. data/src/json/poderes/poderes_concedidos/tropas_duyshidakk.json +24 -0
  397. data/src/json/poderes/poderes_concedidos/urro_divino.json +13 -0
  398. data/src/json/poderes/poderes_concedidos/visao_nas_trevas.json +10 -0
  399. data/src/json/poderes/poderes_concedidos/voz_da_civilizacao.json +10 -0
  400. data/src/json/poderes/poderes_concedidos/voz_da_natureza.json +18 -0
  401. data/src/json/poderes/poderes_concedidos/voz_dos_monstros.json +11 -0
  402. data/src/json/poderes/poderes_concedidos/zumbificar.json +18 -0
  403. data/src/json/poderes/poderes_da_tormenta/anatomia_insana.json +12 -0
  404. data/src/json/poderes/poderes_da_tormenta/antenas.json +18 -0
  405. data/src/json/poderes/poderes_da_tormenta/armamento_aberrante.json +14 -0
  406. data/src/json/poderes/poderes_da_tormenta/articulacoes_flexiveis.json +15 -0
  407. data/src/json/poderes/poderes_da_tormenta/asas_insetoides.json +17 -0
  408. data/src/json/poderes/poderes_da_tormenta/carapaca.json +12 -0
  409. data/src/json/poderes/poderes_da_tormenta/corpo_aberrante.json +13 -0
  410. data/src/json/poderes/poderes_da_tormenta/cuspir_enxame.json +20 -0
  411. data/src/json/poderes/poderes_da_tormenta/dentes_afiados.json +19 -0
  412. data/src/json/poderes/poderes_da_tormenta/desprezar_a_realidade.json +21 -0
  413. data/src/json/poderes/poderes_da_tormenta/empunhadura_rubra.json +13 -0
  414. data/src/json/poderes/poderes_da_tormenta/fome_de_mana.json +11 -0
  415. data/src/json/poderes/poderes_da_tormenta/larva_explosiva.json +17 -0
  416. data/src/json/poderes/poderes_da_tormenta/legiao_aberrante.json +19 -0
  417. data/src/json/poderes/poderes_da_tormenta/maos_membranosas.json +18 -0
  418. data/src/json/poderes/poderes_da_tormenta/membros_estendidos.json +12 -0
  419. data/src/json/poderes/poderes_da_tormenta/membros_extras.json +27 -0
  420. data/src/json/poderes/poderes_da_tormenta/mente_aberrante.json +20 -0
  421. data/src/json/poderes/poderes_da_tormenta/olhos_vermelhos.json +12 -0
  422. data/src/json/poderes/poderes_da_tormenta/pele_corrompida.json +13 -0
  423. data/src/json/poderes/poderes_da_tormenta/sangue_acido.json +13 -0
  424. data/src/json/poderes/poderes_da_tormenta/visco_rubro.json +15 -0
  425. data/src/json/regras/alcances.json +33 -0
  426. data/src/json/regras/carga.json +47 -0
  427. data/src/json/regras/critico.json +32 -0
  428. data/src/json/regras/dinheiro_inicial.json +27 -0
  429. data/src/json/regras/empunhaduras.json +22 -0
  430. data/src/json/regras/habilidades_armas.json +37 -0
  431. data/src/json/regras/itens_superiores.json +19 -0
  432. data/src/json/regras/limites_uso.json +22 -0
  433. data/src/json/regras/moedas.json +32 -0
  434. data/src/json/regras/passos_dano.json +20 -0
  435. data/src/json/regras/proficiencias.json +32 -0
  436. data/src/json/regras/propositos_armas.json +37 -0
  437. data/src/json/regras/tipos_dano.json +25 -0
  438. data/src/json/regras/venenos.json +45 -0
  439. data/src/ruby/tormenta20/database.rb +224 -0
  440. data/src/ruby/tormenta20/models/arma.rb +123 -0
  441. data/src/ruby/tormenta20/models/armadura.rb +96 -0
  442. data/src/ruby/tormenta20/models/base.rb +19 -0
  443. data/src/ruby/tormenta20/models/classe.rb +134 -0
  444. data/src/ruby/tormenta20/models/divindade.rb +98 -0
  445. data/src/ruby/tormenta20/models/escudo.rb +59 -0
  446. data/src/ruby/tormenta20/models/item.rb +61 -0
  447. data/src/ruby/tormenta20/models/magia.rb +226 -0
  448. data/src/ruby/tormenta20/models/material_especial.rb +52 -0
  449. data/src/ruby/tormenta20/models/melhoria.rb +52 -0
  450. data/src/ruby/tormenta20/models/origem.rb +71 -0
  451. data/src/ruby/tormenta20/models/poder.rb +120 -0
  452. data/src/ruby/tormenta20/models/regra.rb +47 -0
  453. data/src/ruby/tormenta20/seeder.rb +267 -0
  454. data/src/ruby/tormenta20/version.rb +1 -1
  455. data/src/ruby/tormenta20.rb +169 -7
  456. data/src/schema/magia.schema.json +277 -0
  457. data/src/schema/tormenta20.sql +433 -0
  458. data/tasks/jsonlint.rb +6 -4
  459. data/tools/pdf_extractor/README.md +171 -0
  460. data/tools/pdf_extractor/__init__.py +17 -0
  461. data/tools/pdf_extractor/pdf_extractor.py +441 -0
  462. data/tools/pdf_extractor/pipeline.py +450 -0
  463. data/tools/pdf_extractor/prompts.py +789 -0
  464. data/tools/pdf_extractor/requirements.txt +4 -0
  465. metadata +488 -12
  466. data/src/ruby/open_struct_json.rb +0 -35
  467. data/src/ruby/tormenta20/classes.rb +0 -0
  468. data/src/ruby/tormenta20/equipment.rb +0 -0
  469. data/src/ruby/tormenta20/magias.rb +0 -35
  470. data/src/ruby/tormenta20/origins.rb +0 -0
  471. data/src/ruby/tormenta20/races.rb +0 -0
@@ -0,0 +1,77 @@
1
+ # Divindades
2
+
3
+ Acesso: `Tormenta20.divindades`
4
+
5
+ ## Atributos
6
+
7
+ | Atributo | Tipo | Descricao |
8
+ |----------|------|-----------|
9
+ | `id` | String | Identificador unico |
10
+ | `name` | String | Nome da divindade |
11
+ | `title` | String | Titulo/epiteto |
12
+ | `description` | String | Descricao |
13
+ | `beliefs_objectives` | String | Crencas e objetivos |
14
+ | `holy_symbol` | String | Simbolo sagrado |
15
+ | `energy` | String | Tipo de energia: `positiva`, `negativa`, `qualquer` |
16
+ | `preferred_weapon` | String | Arma preferida |
17
+ | `devotees` | Hash | Devotos tipicos (races, classes) |
18
+ | `granted_powers` | Array | Lista de poderes concedidos |
19
+ | `obligations_restrictions` | String | Obrigacoes e restricoes |
20
+
21
+ ## Scopes (Filtros)
22
+
23
+ ### Por Tipo de Energia
24
+
25
+ ```ruby
26
+ Tormenta20.divindades.energia_positiva # Deuses de energia positiva
27
+ Tormenta20.divindades.energia_negativa # Deuses de energia negativa
28
+ Tormenta20.divindades.energia_qualquer # Deuses de energia neutra
29
+ Tormenta20.divindades.by_energy("positiva")
30
+ ```
31
+
32
+ ## Metodos de Instancia
33
+
34
+ ```ruby
35
+ divindade = Tormenta20.divindades.find("khalmyr")
36
+
37
+ divindade.races # Racas devotas
38
+ # => ["humano", "anao"]
39
+
40
+ divindade.classes # Classes devotas
41
+ # => ["paladino", "guerreiro"]
42
+
43
+ divindade.to_h # Converte para Hash completo
44
+ ```
45
+
46
+ ## Exemplos
47
+
48
+ ```ruby
49
+ # Listar todas as divindades
50
+ Tormenta20.divindades.all.each do |d|
51
+ puts "#{d.name} - #{d.title} (#{d.energy})"
52
+ end
53
+
54
+ # Divindades de energia positiva
55
+ Tormenta20.divindades.energia_positiva.each do |d|
56
+ puts "#{d.name}: #{d.granted_powers.join(', ')}"
57
+ end
58
+
59
+ # Buscar divindade especifica
60
+ khalmyr = Tormenta20.divindades.find("khalmyr")
61
+ puts khalmyr.name # => "Khalmyr"
62
+ puts khalmyr.title # => "O Deus da Justica"
63
+ puts khalmyr.preferred_weapon # => "Espada longa"
64
+ puts khalmyr.granted_powers # Lista de poderes concedidos
65
+
66
+ # Divindades que concedem um poder especifico
67
+ Tormenta20.divindades.select do |d|
68
+ d.granted_powers&.include?("cura_pelas_maos")
69
+ end
70
+
71
+ # Agrupar por tipo de energia
72
+ Tormenta20.divindades.group(:energy).count
73
+ # => {"positiva"=>12, "negativa"=>6, "qualquer"=>2}
74
+
75
+ # Divindades adoradas por uma raca
76
+ Tormenta20.divindades.select { |d| d.races.include?("elfo") }
77
+ ```
data/docs/escudos.md ADDED
@@ -0,0 +1,49 @@
1
+ # Escudos
2
+
3
+ Acesso: `Tormenta20.escudos`
4
+
5
+ ## Atributos
6
+
7
+ | Atributo | Tipo | Descricao |
8
+ |----------|------|-----------|
9
+ | `id` | String | Identificador unico |
10
+ | `name` | String | Nome do escudo |
11
+ | `price` | String | Preco |
12
+ | `defense_bonus` | Integer | Bonus de defesa |
13
+ | `armor_penalty` | Integer | Penalidade de armadura |
14
+ | `weight` | String | Peso/espacos |
15
+ | `properties` | Array | Propriedades especiais |
16
+ | `description` | String | Descricao |
17
+
18
+ ## Scopes (Filtros)
19
+
20
+ Este modelo nao possui scopes especificos. Use queries ActiveRecord padrao.
21
+
22
+ ## Metodos de Instancia
23
+
24
+ ```ruby
25
+ escudo = Tormenta20.escudos.first
26
+
27
+ escudo.to_h # Converte para Hash completo
28
+ ```
29
+
30
+ ## Exemplos
31
+
32
+ ```ruby
33
+ # Listar todos os escudos
34
+ Tormenta20.escudos.all.each do |e|
35
+ puts "#{e.name}: +#{e.defense_bonus} Defesa, -#{e.armor_penalty} penalidade"
36
+ end
37
+
38
+ # Buscar escudo especifico
39
+ escudo = Tormenta20.escudos.find("escudo_leve")
40
+ puts escudo.name # Nome
41
+ puts escudo.defense_bonus # Bonus de defesa
42
+ puts escudo.armor_penalty # Penalidade
43
+
44
+ # Escudo com maior bonus
45
+ Tormenta20.escudos.order(defense_bonus: :desc).first
46
+
47
+ # Escudos ordenados por preco
48
+ Tormenta20.escudos.order(:price)
49
+ ```
data/docs/itens.md ADDED
@@ -0,0 +1,59 @@
1
+ # Itens
2
+
3
+ Acesso: `Tormenta20.itens`
4
+
5
+ ## Atributos
6
+
7
+ | Atributo | Tipo | Descricao |
8
+ |----------|------|-----------|
9
+ | `id` | String | Identificador unico |
10
+ | `name` | String | Nome do item |
11
+ | `category` | String | Categoria do item |
12
+ | `price` | String | Preco |
13
+ | `weight` | String | Peso/espacos |
14
+ | `description` | String | Descricao |
15
+ | `effects` | Array | Efeitos do item |
16
+
17
+ ## Scopes (Filtros)
18
+
19
+ ### Por Categoria
20
+
21
+ ```ruby
22
+ Tormenta20.itens.by_category("alquimico")
23
+ Tormenta20.itens.by_category("ferramenta")
24
+ Tormenta20.itens.by_category("vestuario")
25
+ ```
26
+
27
+ ## Metodos de Instancia
28
+
29
+ ```ruby
30
+ item = Tormenta20.itens.first
31
+
32
+ item.to_h # Converte para Hash completo
33
+ ```
34
+
35
+ ## Exemplos
36
+
37
+ ```ruby
38
+ # Listar todos os itens
39
+ Tormenta20.itens.all.each do |i|
40
+ puts "#{i.name}: #{i.price}"
41
+ end
42
+
43
+ # Itens de uma categoria
44
+ Tormenta20.itens.by_category("alquimico").each do |i|
45
+ puts "#{i.name}: #{i.description}"
46
+ end
47
+
48
+ # Buscar item especifico
49
+ item = Tormenta20.itens.find("corda")
50
+ puts item.name # Nome
51
+ puts item.price # Preco
52
+ puts item.description # Descricao
53
+
54
+ # Itens ordenados por nome
55
+ Tormenta20.itens.order(:name)
56
+
57
+ # Agrupar itens por categoria
58
+ Tormenta20.itens.group(:category).count
59
+ ```
data/docs/magias.md ADDED
@@ -0,0 +1,157 @@
1
+ # Magias (Spells)
2
+
3
+ Acesso: `Tormenta20.magias`
4
+
5
+ ## Atributos
6
+
7
+ | Atributo | Tipo | Descricao |
8
+ |----------|------|-----------|
9
+ | `id` | String | Identificador unico |
10
+ | `name` | String | Nome da magia |
11
+ | `type` | String | Tipo: `arcana`, `divina`, `universal` |
12
+ | `circle` | String | Circulo (1-5) |
13
+ | `school` | String | Escola de magia |
14
+ | `execution` | String | Tempo de execucao |
15
+ | `execution_details` | String | Detalhes da execucao |
16
+ | `range` | String | Alcance |
17
+ | `duration` | String | Duracao |
18
+ | `duration_details` | String | Detalhes da duracao |
19
+ | `description` | String | Descricao completa |
20
+ | `counterspell` | String | Contramagia |
21
+ | `enhancements` | Array | Aprimoramentos disponiveis |
22
+ | `effects` | Array | Efeitos da magia |
23
+
24
+ ### Atributos de Alvo
25
+
26
+ | Atributo | Tipo | Descricao |
27
+ |----------|------|-----------|
28
+ | `target_amount` | Integer | Quantidade de alvos |
29
+ | `target_up_to` | Boolean | Ate X alvos |
30
+ | `target_type` | String | Tipo de alvo |
31
+
32
+ ### Atributos de Efeito
33
+
34
+ | Atributo | Tipo | Descricao |
35
+ |----------|------|-----------|
36
+ | `effect` | String | Efeito principal |
37
+ | `effect_shape` | String | Forma do efeito |
38
+ | `effect_dimention` | String | Dimensao |
39
+ | `effect_size` | String | Tamanho |
40
+ | `effect_other_details` | String | Outros detalhes |
41
+ | `area_effect` | String | Efeito de area |
42
+ | `area_effect_details` | String | Detalhes da area |
43
+
44
+ ### Atributos de Resistencia
45
+
46
+ | Atributo | Tipo | Descricao |
47
+ |----------|------|-----------|
48
+ | `resistence_effect` | String | Efeito da resistencia |
49
+ | `resistence_skill` | String | Pericia para resistencia |
50
+
51
+ ### Atributos de Custo Extra
52
+
53
+ | Atributo | Tipo | Descricao |
54
+ |----------|------|-----------|
55
+ | `extra_costs_material_component` | String | Componente material |
56
+ | `extra_costs_material_cost` | String | Custo do componente |
57
+ | `extra_costs_pm_debuff` | Integer | Debuff de PM |
58
+ | `extra_costs_pm_sacrifice` | Integer | Sacrificio de PM |
59
+
60
+ ## Scopes (Filtros)
61
+
62
+ ### Por Tipo
63
+
64
+ ```ruby
65
+ Tormenta20.magias.arcanas # Magias arcanas
66
+ Tormenta20.magias.divinas # Magias divinas
67
+ Tormenta20.magias.universais # Magias universais
68
+ Tormenta20.magias.by_type("arcana")
69
+ ```
70
+
71
+ ### Por Circulo
72
+
73
+ ```ruby
74
+ Tormenta20.magias.by_circle("1") # Magias do 1o circulo
75
+ Tormenta20.magias.by_circle("5") # Magias do 5o circulo
76
+ Tormenta20.magias.do_circulo("3") # Alias em portugues
77
+ ```
78
+
79
+ ### Por Escola
80
+
81
+ ```ruby
82
+ Tormenta20.magias.by_school("evoc") # Evocacao
83
+ Tormenta20.magias.by_school("abjur") # Abjuracao
84
+ Tormenta20.magias.by_school("adiv") # Adivinhacao
85
+ Tormenta20.magias.by_school("conv") # Convocacao
86
+ Tormenta20.magias.by_school("encan") # Encantamento
87
+ Tormenta20.magias.by_school("ilus") # Ilusao
88
+ Tormenta20.magias.by_school("necro") # Necromancia
89
+ Tormenta20.magias.by_school("trans") # Transmutacao
90
+ Tormenta20.magias.da_escola("evoc") # Alias em portugues
91
+ ```
92
+
93
+ ### Combinando Filtros
94
+
95
+ ```ruby
96
+ # Magias arcanas do 3o circulo
97
+ Tormenta20.magias.arcanas.by_circle("3")
98
+
99
+ # Magias divinas de necromancia
100
+ Tormenta20.magias.divinas.by_school("necro")
101
+
102
+ # Magias universais do 1o circulo de abjuracao
103
+ Tormenta20.magias.universais.by_circle("1").by_school("abjur")
104
+ ```
105
+
106
+ ## Metodos de Classe
107
+
108
+ ```ruby
109
+ Tormenta20.magias.todas # Todas as magias (alias para .all)
110
+ Tormenta20.magias.arcanas_list # Lista de arcanas
111
+ Tormenta20.magias.divinas_list # Lista de divinas
112
+ Tormenta20.magias.universais_list # Lista de universais
113
+ ```
114
+
115
+ ## Metodos de Instancia
116
+
117
+ ```ruby
118
+ magia = Tormenta20.magias.find("bola_de_fogo")
119
+
120
+ magia.target_info # Hash com info do alvo
121
+ # => { amount: 1, up_to: false, type: "criatura" }
122
+
123
+ magia.effect_details_info # Hash com detalhes do efeito
124
+ # => { shape: "esfera", size: "6m" }
125
+
126
+ magia.resistence_info # Hash com info de resistencia
127
+ # => { effect: "reduz", skill: "Reflexos" }
128
+
129
+ magia.extra_costs_info # Hash com custos extras
130
+ # => { material_component: "enxofre", material_component_cost: "T$ 10" }
131
+
132
+ magia.to_h # Converte para Hash completo
133
+ ```
134
+
135
+ ## Exemplos
136
+
137
+ ```ruby
138
+ # Buscar magia especifica
139
+ bola_de_fogo = Tormenta20.magias.find("bola_de_fogo")
140
+ puts bola_de_fogo.name # => "Bola de Fogo"
141
+ puts bola_de_fogo.circle # => "3"
142
+ puts bola_de_fogo.school # => "evoc"
143
+
144
+ # Listar todas as magias de cura
145
+ Tormenta20.magias.where("name LIKE ?", "%Cura%").each do |m|
146
+ puts "#{m.name} (#{m.type}, #{m.circle}o circulo)"
147
+ end
148
+
149
+ # Magias arcanas ordenadas por circulo
150
+ Tormenta20.magias.arcanas.order(:circle, :name).each do |m|
151
+ puts "#{m.circle}o - #{m.name}"
152
+ end
153
+
154
+ # Contar magias por escola
155
+ Tormenta20.magias.group(:school).count
156
+ # => {"evoc"=>25, "abjur"=>15, ...}
157
+ ```
@@ -0,0 +1,50 @@
1
+ # Materiais Especiais
2
+
3
+ Acesso: `Tormenta20.materiais_especiais`
4
+
5
+ ## Atributos
6
+
7
+ | Atributo | Tipo | Descricao |
8
+ |----------|------|-----------|
9
+ | `id` | String | Identificador unico |
10
+ | `name` | String | Nome do material |
11
+ | `description` | String | Descricao |
12
+ | `applicable_to` | Array | Tipos de item aplicaveis |
13
+ | `price_modifier` | String | Modificador de preco |
14
+ | `effects` | Array | Efeitos do material |
15
+
16
+ ## Scopes (Filtros)
17
+
18
+ Este modelo nao possui scopes especificos. Use queries ActiveRecord padrao.
19
+
20
+ ## Metodos de Instancia
21
+
22
+ ```ruby
23
+ material = Tormenta20.materiais_especiais.first
24
+
25
+ material.to_h # Converte para Hash completo
26
+ ```
27
+
28
+ ## Exemplos
29
+
30
+ ```ruby
31
+ # Listar todos os materiais especiais
32
+ Tormenta20.materiais_especiais.all.each do |m|
33
+ puts "#{m.name}: #{m.description}"
34
+ end
35
+
36
+ # Buscar material especifico
37
+ adamante = Tormenta20.materiais_especiais.find("adamante")
38
+ puts adamante.name # => "Adamante"
39
+ puts adamante.price_modifier # Modificador de preco
40
+ puts adamante.applicable_to # Tipos de item aplicaveis
41
+ puts adamante.effects # Efeitos
42
+
43
+ # Materiais aplicaveis a armas
44
+ Tormenta20.materiais_especiais.select do |m|
45
+ m.applicable_to&.include?("arma")
46
+ end
47
+
48
+ # Materiais ordenados por nome
49
+ Tormenta20.materiais_especiais.order(:name)
50
+ ```
data/docs/melhorias.md ADDED
@@ -0,0 +1,55 @@
1
+ # Melhorias
2
+
3
+ Acesso: `Tormenta20.melhorias`
4
+
5
+ ## Atributos
6
+
7
+ | Atributo | Tipo | Descricao |
8
+ |----------|------|-----------|
9
+ | `id` | String | Identificador unico |
10
+ | `name` | String | Nome da melhoria |
11
+ | `description` | String | Descricao |
12
+ | `applicable_to` | Array | Tipos de item aplicaveis |
13
+ | `price` | String | Preco/custo |
14
+ | `effects` | Array | Efeitos da melhoria |
15
+
16
+ ## Scopes (Filtros)
17
+
18
+ Este modelo nao possui scopes especificos. Use queries ActiveRecord padrao.
19
+
20
+ ## Metodos de Instancia
21
+
22
+ ```ruby
23
+ melhoria = Tormenta20.melhorias.first
24
+
25
+ melhoria.to_h # Converte para Hash completo
26
+ ```
27
+
28
+ ## Exemplos
29
+
30
+ ```ruby
31
+ # Listar todas as melhorias
32
+ Tormenta20.melhorias.all.each do |m|
33
+ puts "#{m.name}: #{m.price}"
34
+ end
35
+
36
+ # Buscar melhoria especifica
37
+ melhoria = Tormenta20.melhorias.find("afiada")
38
+ puts melhoria.name # Nome
39
+ puts melhoria.description # Descricao
40
+ puts melhoria.price # Preco
41
+ puts melhoria.applicable_to # Tipos de item aplicaveis
42
+
43
+ # Melhorias para armas
44
+ Tormenta20.melhorias.select do |m|
45
+ m.applicable_to&.include?("arma")
46
+ end
47
+
48
+ # Melhorias para armaduras
49
+ Tormenta20.melhorias.select do |m|
50
+ m.applicable_to&.include?("armadura")
51
+ end
52
+
53
+ # Melhorias ordenadas por preco
54
+ Tormenta20.melhorias.order(:price)
55
+ ```
data/docs/origens.md ADDED
@@ -0,0 +1,61 @@
1
+ # Origens
2
+
3
+ Acesso: `Tormenta20.origens`
4
+
5
+ ## Atributos
6
+
7
+ | Atributo | Tipo | Descricao |
8
+ |----------|------|-----------|
9
+ | `id` | String | Identificador unico |
10
+ | `name` | String | Nome da origem |
11
+ | `description` | String | Descricao da origem |
12
+ | `items` | Array | Itens iniciais |
13
+ | `benefits` | Hash | Beneficios (skills, powers) |
14
+ | `unique_power` | Hash | Poder unico da origem |
15
+
16
+ ## Scopes (Filtros)
17
+
18
+ ```ruby
19
+ # Origens que possuem poder unico
20
+ Tormenta20.origens.with_unique_power
21
+ ```
22
+
23
+ ## Metodos de Instancia
24
+
25
+ ```ruby
26
+ origem = Tormenta20.origens.find("soldado")
27
+
28
+ origem.skills # Pericias treinadas pela origem
29
+ # => ["Fortitude", "Luta"]
30
+
31
+ origem.powers # Poderes concedidos pela origem
32
+ # => ["Proficiencia"]
33
+
34
+ origem.to_h # Converte para Hash completo
35
+ ```
36
+
37
+ ## Exemplos
38
+
39
+ ```ruby
40
+ # Listar todas as origens
41
+ Tormenta20.origens.all.each do |o|
42
+ puts "#{o.name}: #{o.skills.join(', ')}"
43
+ end
44
+
45
+ # Origens com poder unico
46
+ Tormenta20.origens.with_unique_power.each do |o|
47
+ puts "#{o.name}: #{o.unique_power['name']}"
48
+ end
49
+
50
+ # Buscar origem especifica
51
+ soldado = Tormenta20.origens.find("soldado")
52
+ puts soldado.name # => "Soldado"
53
+ puts soldado.description # Descricao completa
54
+ puts soldado.items # Itens iniciais
55
+
56
+ # Origens que concedem uma pericia especifica
57
+ Tormenta20.origens.select { |o| o.skills.include?("Furtividade") }
58
+
59
+ # Contar origens com poder unico
60
+ Tormenta20.origens.with_unique_power.count
61
+ ```
data/docs/poderes.md ADDED
@@ -0,0 +1,98 @@
1
+ # Poderes
2
+
3
+ Acesso: `Tormenta20.poderes`
4
+
5
+ ## Atributos
6
+
7
+ | Atributo | Tipo | Descricao |
8
+ |----------|------|-----------|
9
+ | `id` | String | Identificador unico |
10
+ | `name` | String | Nome do poder |
11
+ | `type` | String | Tipo do poder |
12
+ | `description` | String | Descricao |
13
+ | `effects` | Array | Efeitos do poder |
14
+ | `prerequisites` | Array | Pre-requisitos |
15
+ | `origin_id` | String | ID da origem associada (se aplicavel) |
16
+ | `deities` | Array | Divindades que concedem (se aplicavel) |
17
+
18
+ ## Tipos de Poder
19
+
20
+ | Tipo | Descricao |
21
+ |------|-----------|
22
+ | `habilidade_unica_origem` | Habilidades unicas de origem |
23
+ | `poder_concedido` | Poderes concedidos por divindades |
24
+ | `poder_tormenta` | Poderes da Tormenta |
25
+ | `poder_classe` | Poderes de classe |
26
+ | `poder_geral` | Poderes gerais |
27
+ | `poder_combate` | Poderes de combate |
28
+ | `poder_destino` | Poderes de destino |
29
+ | `poder_magia` | Poderes de magia |
30
+
31
+ ## Scopes (Filtros)
32
+
33
+ ### Por Tipo
34
+
35
+ ```ruby
36
+ Tormenta20.poderes.habilidades_unicas # Habilidades unicas de origem
37
+ Tormenta20.poderes.poderes_concedidos # Poderes concedidos por divindades
38
+ Tormenta20.poderes.poderes_tormenta # Poderes da Tormenta
39
+ Tormenta20.poderes.poderes_classe # Poderes de classe
40
+ Tormenta20.poderes.poderes_gerais # Poderes gerais
41
+ Tormenta20.poderes.by_type("poder_combate")
42
+ ```
43
+
44
+ ### Por Origem
45
+
46
+ ```ruby
47
+ Tormenta20.poderes.by_origin("soldado") # Poderes da origem Soldado
48
+ ```
49
+
50
+ ### Por Divindade
51
+
52
+ ```ruby
53
+ Tormenta20.poderes.by_deity("khalmyr") # Poderes concedidos por Khalmyr
54
+ ```
55
+
56
+ ## Metodos de Instancia
57
+
58
+ ```ruby
59
+ poder = Tormenta20.poderes.find("ataque_poderoso")
60
+
61
+ poder.to_h # Converte para Hash completo
62
+ ```
63
+
64
+ ## Exemplos
65
+
66
+ ```ruby
67
+ # Listar todos os poderes
68
+ Tormenta20.poderes.all.each do |p|
69
+ puts "#{p.name} (#{p.type})"
70
+ end
71
+
72
+ # Poderes concedidos por divindades
73
+ Tormenta20.poderes.poderes_concedidos.each do |p|
74
+ puts "#{p.name}: #{p.deities&.join(', ')}"
75
+ end
76
+
77
+ # Poderes da Tormenta
78
+ Tormenta20.poderes.poderes_tormenta.each do |p|
79
+ puts "#{p.name}: #{p.description}"
80
+ end
81
+
82
+ # Habilidades unicas de uma origem especifica
83
+ Tormenta20.poderes.habilidades_unicas.by_origin("soldado").each do |p|
84
+ puts p.name
85
+ end
86
+
87
+ # Poderes com pre-requisitos
88
+ Tormenta20.poderes.where.not(prerequisites: nil).each do |p|
89
+ puts "#{p.name}: requer #{p.prerequisites}"
90
+ end
91
+
92
+ # Contar poderes por tipo
93
+ Tormenta20.poderes.group(:type).count
94
+ # => {"poder_concedido"=>50, "habilidade_unica_origem"=>35, ...}
95
+
96
+ # Buscar poderes por nome
97
+ Tormenta20.poderes.where("name LIKE ?", "%Furia%")
98
+ ```
data/docs/regras.md ADDED
@@ -0,0 +1,51 @@
1
+ # Regras
2
+
3
+ Acesso: `Tormenta20.regras`
4
+
5
+ ## Atributos
6
+
7
+ | Atributo | Tipo | Descricao |
8
+ |----------|------|-----------|
9
+ | `id` | String | Identificador unico |
10
+ | `name` | String | Nome da regra/tabela |
11
+ | `description` | String | Descricao |
12
+ | `data` | Hash | Dados estruturados da regra |
13
+
14
+ ## Scopes (Filtros)
15
+
16
+ Este modelo nao possui scopes especificos. Use queries ActiveRecord padrao.
17
+
18
+ ## Metodos de Instancia
19
+
20
+ ```ruby
21
+ regra = Tormenta20.regras.first
22
+
23
+ regra.to_h # Converte para Hash completo
24
+ ```
25
+
26
+ ## Exemplos
27
+
28
+ ```ruby
29
+ # Listar todas as regras
30
+ Tormenta20.regras.all.each do |r|
31
+ puts "#{r.name}: #{r.description}"
32
+ end
33
+
34
+ # Buscar regra especifica
35
+ pericias = Tormenta20.regras.find("pericias")
36
+ puts pericias.name # => "Pericias"
37
+ puts pericias.description # Descricao
38
+ puts pericias.data # Dados estruturados (Hash)
39
+
40
+ # Acessar dados de uma regra
41
+ condicoes = Tormenta20.regras.find("condicoes")
42
+ condicoes.data.each do |key, value|
43
+ puts "#{key}: #{value}"
44
+ end
45
+
46
+ # Buscar regras por nome
47
+ Tormenta20.regras.where("name LIKE ?", "%combate%")
48
+
49
+ # Regras ordenadas por nome
50
+ Tormenta20.regras.order(:name)
51
+ ```