tormenta20 0.2.12 → 0.2.15

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1f886f621c00e35038fde523eacced3f4175b13e8bab3bd074bfab3f9637dffb
4
- data.tar.gz: e9e38bcbda3848467cc947012f8e199fd837041e600f96c5731541d3ad28d3a6
3
+ metadata.gz: 8156d99b6e735535deff6f5f46c6b0b1e97372ddcb52002076ff31961fd7bad4
4
+ data.tar.gz: 75e84861f7ddeb6a7e71a7a75b4069a899f8deb5c47a8eb646eb7818cd57f24c
5
5
  SHA512:
6
- metadata.gz: af7f1457d16363868626614eab6cb5e029d84d961e602daf4328f8e10eaaec00c4cab3a5c3a5310274355bb9f4fcd0f6c442def10c651055145f33594f951113
7
- data.tar.gz: dd0aad7e3d8f04ff788621acdcac1101da78ee064f70770a7da8b5b6226b2e760b07f589246852f2975b4cc9833f682653dc943e0afe853a43b9a81cb70165c1
6
+ metadata.gz: 2862f845544e61bd23b4481eea952026cf402103894108e223f43256bbabdc840fb1c8b71078f0bd286bbcbdf471500272b04963f0ce96fd1b4eb50769fff8ab
7
+ data.tar.gz: 00b38aca5faa66b2ed4a53a0d941df44f888a18f2e8fd8bf5d3ef41d716331c1df33e81a4748b3feddb6c23a6dafb5ee85061d6cab74e1a071b4dac99ebef75c
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ 3.3.6
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Tormenta20
2
2
 
3
+ [![Gem Version](https://img.shields.io/gem/v/tormenta20)](https://rubygems.org/gems/tormenta20)
4
+ [![CI](https://github.com/LuanGB/tormenta20/actions/workflows/main.yml/badge.svg)](https://github.com/LuanGB/tormenta20/actions/workflows/main.yml)
5
+ [![Coverage](https://codecov.io/gh/YggdrasilGeekNetwork/tormenta20/graph/badge.svg?token=XB8BTBS6PJ)](https://codecov.io/gh/YggdrasilGeekNetwork/tormenta20)
6
+ [![License](https://img.shields.io/github/license/LuanGB/tormenta20)](LICENSE.txt)
7
+
3
8
  Uma biblioteca Ruby com dados do RPG de mesa brasileiro Tormenta20.
4
9
 
5
10
  A gem inclui um banco de dados SQLite pré-populado com informações sobre magias, classes, origens, divindades, poderes, equipamentos, raças e condições do sistema Tormenta20. Todos os registros expõem referências de livro e página via o concern `BookReferenceable`.
Binary file
data/exe/tormenta20 CHANGED
@@ -223,7 +223,7 @@ module Tormenta20CLI
223
223
  %w[origens poderes divindades classes magias armas armaduras escudos itens materiais_especiais melhorias regras]
224
224
  end
225
225
 
226
- def seed_table(table, options)
226
+ def seed_table(table, _options)
227
227
  print " Seeding #{table}..."
228
228
 
229
229
  case table
@@ -364,9 +364,9 @@ module Tormenta20CLI
364
364
  "Melhorias" => Tormenta20::Models::Melhoria,
365
365
  "Regras" => Tormenta20::Models::Regra
366
366
  }.each do |name, model|
367
- printf " %-20s %d\n", "#{name}:", model.count
367
+ puts " #{"#{name}:".ljust(20)} #{model.count}"
368
368
  rescue StandardError
369
- printf " %-20s %s\n", "#{name}:", "N/A"
369
+ puts " #{"#{name}:".ljust(20)} N/A"
370
370
  end
371
371
 
372
372
  puts "-" * 40
@@ -0,0 +1,27 @@
1
+ {
2
+ "id": "arremesso_multiplo",
3
+ "name": "Arremesso Múltiplo",
4
+ "type": "poder_geral",
5
+ "sub_type": "poder_de_combate",
6
+ "description": "Uma vez por rodada, quando faz um ataque com uma arma de arremesso, você pode gastar 1 PM para fazer um ataque adicional contra o mesmo alvo, arremessando outra arma de arremesso.",
7
+ "requirements": [
8
+ {
9
+ "type": "attr_value",
10
+ "sub_type": "hard",
11
+ "attr": "des",
12
+ "value": 13
13
+ },
14
+ {
15
+ "type": "power",
16
+ "sub_type": "hard",
17
+ "power": "estilo_de_arremeso"
18
+ }
19
+ ],
20
+ "effects": [
21
+ {
22
+ "type": "active",
23
+ "cost": "1 PM",
24
+ "trigger": "ataque_arremesso"
25
+ }
26
+ ]
27
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "ataque_com_escudo",
3
+ "name": "Ataque com Escudo",
4
+ "type": "poder_geral",
5
+ "sub_type": "poder_de_combate",
6
+ "description": "Uma vez por rodada, se estiver empunhando um escudo e fizer a ação agredir, você pode gastar 1 PM para fazer um ataque corpo a corpo extra com o escudo. Este ataque não faz você perder o bônus do escudo na Defesa.",
7
+ "requirements": [
8
+ {
9
+ "type": "power",
10
+ "sub_type": "hard",
11
+ "power": "estilo_de_arma_e_escudo"
12
+ }
13
+ ],
14
+ "effects": [
15
+ {
16
+ "type": "active",
17
+ "cost": "1 PM",
18
+ "trigger": "acao_agredir"
19
+ }
20
+ ]
21
+ }
@@ -0,0 +1,28 @@
1
+ {
2
+ "id": "estilo_de_arma_longa",
3
+ "name": "Estilo de Arma Longa",
4
+ "type": "poder_geral",
5
+ "sub_type": "poder_de_combate",
6
+ "description": "Você recebe +2 em testes de ataque com armas alongadas e pode atacar alvos adjacentes com essas armas.",
7
+ "requirements": [
8
+ {
9
+ "type": "attr_value",
10
+ "sub_type": "hard",
11
+ "attr": "for",
12
+ "value": 13
13
+ },
14
+ {
15
+ "type": "skill_training",
16
+ "sub_type": "hard",
17
+ "skill": "luta"
18
+ }
19
+ ],
20
+ "effects": [
21
+ {
22
+ "type": "attack_improvement",
23
+ "value": 2,
24
+ "duration": "permanente",
25
+ "requirements": { "weapon": "arma_longa" }
26
+ }
27
+ ]
28
+ }
@@ -1,6 +1,6 @@
1
1
  {
2
- "id": "",
3
- "name": "",
2
+ "id": "estilo_de_uma_arma",
3
+ "name": "Estilo de Uma Arma",
4
4
  "type": "poder_geral",
5
5
  "sub_type": "poder_de_combate",
6
6
  "description": "Se estiver usando uma arma corpo a corpo em uma das mãos e nada na outra, você recebe +2 na Defesa e nos testes de ataque com essa arma (exceto ataques desarmados)",
@@ -0,0 +1,21 @@
1
+ {
2
+ "id": "piqueiro",
3
+ "name": "Piqueiro",
4
+ "type": "poder_geral",
5
+ "sub_type": "poder_de_combate",
6
+ "description": "Uma vez por rodada, se estiver empunhando uma arma alongada e um inimigo entrar voluntariamente em seu alcance corpo a corpo, você pode gastar 1 PM para fazer um ataque corpo a corpo contra este oponente com esta arma. Se o oponente tiver se aproximado fazendo uma investida, seu ataque causa dois dados de dano extra do mesmo tipo.",
7
+ "requirements": [
8
+ {
9
+ "type": "power",
10
+ "sub_type": "hard",
11
+ "power": "estilo_de_arma_longa"
12
+ }
13
+ ],
14
+ "effects": [
15
+ {
16
+ "type": "active",
17
+ "cost": "1 PM",
18
+ "trigger": "inimigo_entra_no_alcance"
19
+ }
20
+ ]
21
+ }
@@ -9,7 +9,7 @@
9
9
  "type": "character_lvl",
10
10
  "sub_type": "hard",
11
11
  "value": 5
12
- },
12
+ }
13
13
  ],
14
14
  "effects": [
15
15
  {
@@ -83,6 +83,6 @@
83
83
  "skill": "a_sua_escolha",
84
84
  "value": 2,
85
85
  "requirement": "character_lvl_20"
86
- },
86
+ }
87
87
  ]
88
88
  }
@@ -0,0 +1,28 @@
1
+ {
2
+ "id": "costas_largas",
3
+ "name": "Costas Largas",
4
+ "type": "poder_geral",
5
+ "sub_type": "poder_de_destino",
6
+ "description": "Seu limite de carga aumenta em 5 espaços e você pode se beneficiar de um item vestido adicional.",
7
+ "requirements": [
8
+ {
9
+ "type": "attr_value",
10
+ "sub_type": "hard",
11
+ "attr": "con",
12
+ "value": 13
13
+ },
14
+ {
15
+ "type": "attr_value",
16
+ "sub_type": "hard",
17
+ "attr": "for",
18
+ "value": 13
19
+ }
20
+ ],
21
+ "effects": [
22
+ {
23
+ "type": "inventory_improvement",
24
+ "value": 5,
25
+ "duration": "permanente"
26
+ }
27
+ ]
28
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "id": "inventario_organizado",
3
+ "name": "Inventário Organizado",
4
+ "type": "poder_geral",
5
+ "sub_type": "poder_de_destino",
6
+ "description": "Você soma sua Inteligência no limite de espaços que pode carregar. Para você, itens muito leves ou pequenos, que normalmente ocupam meio espaço, em vez disso ocupam 1/4 de espaço.",
7
+ "requirements": [
8
+ {
9
+ "type": "attr_value",
10
+ "sub_type": "hard",
11
+ "attr": "int",
12
+ "value": 13
13
+ }
14
+ ],
15
+ "effects": [
16
+ {
17
+ "type": "inventory_improvement",
18
+ "value": "int_modifier",
19
+ "duration": "permanente"
20
+ }
21
+ ]
22
+ }
@@ -44,8 +44,8 @@ module Tormenta20
44
44
  return @_indice_entry if defined?(@_indice_entry)
45
45
 
46
46
  @_indice_entry = Models::IndiceRemissivo
47
- .includes(:livro)
48
- .find_by(tabela: self.class.table_name, registro_id: id.to_s)
47
+ .includes(:livro)
48
+ .find_by(tabela: self.class.table_name, registro_id: id.to_s)
49
49
  end
50
50
  end
51
51
  end
@@ -36,15 +36,15 @@ module Tormenta20
36
36
  scope :para_tabela, ->(tabela) { where(tabela: tabela) }
37
37
  scope :associados, -> { where.not(registro_id: nil) }
38
38
  scope :nao_associados, -> { where(registro_id: nil) }
39
- scope :buscar_termo, ->(q) { where("termo LIKE ?", "%#{q}%") }
39
+ scope :buscar_termo, ->(q) { where("termo LIKE ?", "%#{q}%") }
40
40
 
41
41
  def to_h
42
42
  {
43
- id: id,
44
- livro_id: livro_id,
45
- termo: termo,
46
- pagina: pagina,
47
- tabela: tabela,
43
+ id: id,
44
+ livro_id: livro_id,
45
+ termo: termo,
46
+ pagina: pagina,
47
+ tabela: tabela,
48
48
  registro_id: registro_id
49
49
  }.compact
50
50
  end
@@ -4,6 +4,7 @@ require "active_record"
4
4
 
5
5
  module Tormenta20
6
6
  module Models
7
+ # ActiveRecord model for livros (books).
7
8
  class Livro < Base
8
9
  self.table_name = "livros"
9
10
 
@@ -18,8 +19,8 @@ module Tormenta20
18
19
 
19
20
  def to_h
20
21
  {
21
- id: id,
22
- nome: nome,
22
+ id: id,
23
+ nome: nome,
23
24
  nome_curto: nome_curto
24
25
  }
25
26
  end
@@ -4,6 +4,7 @@ require "active_record"
4
4
 
5
5
  module Tormenta20
6
6
  module Models
7
+ # ActiveRecord model for raças (playable races).
7
8
  class Raca < Base
8
9
  self.table_name = "racas"
9
10
 
@@ -384,4 +384,3 @@ module Tormenta20
384
384
  end
385
385
  end
386
386
  end
387
-
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tormenta20
4
- VERSION = "0.2.12"
4
+ VERSION = ENV.fetch("GEM_VERSION", "0.0.0")
5
5
  end
metadata CHANGED
@@ -1,13 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tormenta20
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.12
4
+ version: 0.2.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - LuanGB
8
+ autorequire:
8
9
  bindir: exe
9
10
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
11
+ date: 2026-04-30 00:00:00.000000000 Z
11
12
  dependencies:
12
13
  - !ruby/object:Gem::Dependency
13
14
  name: activerecord
@@ -62,6 +63,7 @@ extra_rdoc_files: []
62
63
  files:
63
64
  - ".rspec"
64
65
  - ".rubocop.yml"
66
+ - ".ruby-version"
65
67
  - CHANGELOG.md
66
68
  - CODE_OF_CONDUCT.md
67
69
  - LICENSE.txt
@@ -1156,7 +1158,9 @@ files:
1156
1158
  - src/json/poderes/poderes_da_tormenta/visco_rubro.json
1157
1159
  - src/json/poderes/poderes_gerais/poderes_de_combate/acuidade_com_arma.json
1158
1160
  - src/json/poderes/poderes_gerais/poderes_de_combate/arma_secundaria_grande.json
1161
+ - src/json/poderes/poderes_gerais/poderes_de_combate/arremesso_multiplo.json
1159
1162
  - src/json/poderes/poderes_gerais/poderes_de_combate/arremesso_potente.json
1163
+ - src/json/poderes/poderes_gerais/poderes_de_combate/ataque_com_escudo.json
1160
1164
  - src/json/poderes/poderes_gerais/poderes_de_combate/ataque_pesado.json
1161
1165
  - src/json/poderes/poderes_gerais/poderes_de_combate/ataque_poderoso.json
1162
1166
  - src/json/poderes/poderes_gerais/poderes_de_combate/ataque_preciso.json
@@ -1171,6 +1175,7 @@ files:
1171
1175
  - src/json/poderes/poderes_gerais/poderes_de_combate/encouracado.json
1172
1176
  - src/json/poderes/poderes_gerais/poderes_de_combate/esquiva.json
1173
1177
  - src/json/poderes/poderes_gerais/poderes_de_combate/estilo_de_arma_e_escudo.json
1178
+ - src/json/poderes/poderes_gerais/poderes_de_combate/estilo_de_arma_longa.json
1174
1179
  - src/json/poderes/poderes_gerais/poderes_de_combate/estilo_de_arremeso.json
1175
1180
  - src/json/poderes/poderes_gerais/poderes_de_combate/estilo_de_disparo.json
1176
1181
  - src/json/poderes/poderes_gerais/poderes_de_combate/estilo_de_duas_armas.json
@@ -1183,6 +1188,7 @@ files:
1183
1188
  - src/json/poderes/poderes_gerais/poderes_de_combate/ginete.json
1184
1189
  - src/json/poderes/poderes_gerais/poderes_de_combate/inexpugnavel.json
1185
1190
  - src/json/poderes/poderes_gerais/poderes_de_combate/mira_apurada.json
1191
+ - src/json/poderes/poderes_gerais/poderes_de_combate/piqueiro.json
1186
1192
  - src/json/poderes/poderes_gerais/poderes_de_combate/presenca_aterradora.json
1187
1193
  - src/json/poderes/poderes_gerais/poderes_de_combate/proficiencia.json
1188
1194
  - src/json/poderes/poderes_gerais/poderes_de_combate/quebrar_aprimorado.json
@@ -1196,7 +1202,9 @@ files:
1196
1202
  - src/json/poderes/poderes_gerais/poderes_de_destino/atletico.json
1197
1203
  - src/json/poderes/poderes_gerais/poderes_de_destino/atraente.json
1198
1204
  - src/json/poderes/poderes_gerais/poderes_de_destino/comandar.json
1205
+ - src/json/poderes/poderes_gerais/poderes_de_destino/costas_largas.json
1199
1206
  - src/json/poderes/poderes_gerais/poderes_de_destino/foco_em_pericia.json
1207
+ - src/json/poderes/poderes_gerais/poderes_de_destino/inventario_organizado.json
1200
1208
  - src/json/poderes/poderes_gerais/poderes_de_destino/investigador.json
1201
1209
  - src/json/poderes/poderes_gerais/poderes_de_destino/lobo_solitario.json
1202
1210
  - src/json/poderes/poderes_gerais/poderes_de_destino/medicina.json
@@ -1289,6 +1297,7 @@ metadata:
1289
1297
  homepage_uri: https://github.com/LuanGB/tormenta20
1290
1298
  source_code_uri: https://github.com/LuanGB/tormenta20
1291
1299
  changelog_uri: https://github.com/LuanGB/tormenta20/blob/main/CHANGELOG.md
1300
+ post_install_message:
1292
1301
  rdoc_options: []
1293
1302
  require_paths:
1294
1303
  - src/ruby
@@ -1303,7 +1312,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1303
1312
  - !ruby/object:Gem::Version
1304
1313
  version: '0'
1305
1314
  requirements: []
1306
- rubygems_version: 3.7.2
1315
+ rubygems_version: 3.5.22
1316
+ signing_key:
1307
1317
  specification_version: 4
1308
1318
  summary: A Ruby, Node and Python library with data about the Brazilian TTRPG, Tormenta20
1309
1319
  test_files: []