tormenta20 0.2.12 → 0.2.16
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 +4 -4
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -0
- data/README.md +19 -2
- data/Rakefile +2 -1
- data/db/tormenta20.sqlite3 +0 -0
- data/exe/tormenta20 +3 -3
- data/src/json/poderes/poderes_gerais/poderes_de_combate/arremesso_multiplo.json +27 -0
- data/src/json/poderes/poderes_gerais/poderes_de_combate/ataque_com_escudo.json +21 -0
- data/src/json/poderes/poderes_gerais/poderes_de_combate/estilo_de_arma_longa.json +28 -0
- data/src/json/poderes/poderes_gerais/poderes_de_combate/estilo_de_uma_arma.json +2 -2
- data/src/json/poderes/poderes_gerais/poderes_de_combate/piqueiro.json +21 -0
- data/src/json/poderes/poderes_gerais/poderes_de_destino/ao_sabor_do_destino.json +2 -2
- data/src/json/poderes/poderes_gerais/poderes_de_destino/costas_largas.json +28 -0
- data/src/json/poderes/poderes_gerais/poderes_de_destino/inventario_organizado.json +22 -0
- data/src/ruby/tormenta20/concerns/book_referenceable.rb +2 -2
- data/src/ruby/tormenta20/models/indice_remissivo.rb +6 -6
- data/src/ruby/tormenta20/models/livro.rb +3 -2
- data/src/ruby/tormenta20/models/raca.rb +1 -0
- data/src/ruby/tormenta20/seeder.rb +0 -1
- data/src/ruby/tormenta20/version.rb +1 -1
- metadata +13 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0b0c4be501539a03f4817d055c4add97a8d35640aa7326ff705cdc22715697ac
|
|
4
|
+
data.tar.gz: d969d67ac78ac78976a9a1842cfd66d9f8ea2a52346d3d20254c2d1efd5958ec
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6db0547fa91860d7e099d6c291684e3c2b8e5e6ce61657696659fa733798ad1e1ae13e2c4bbc04dd88fb7da0e43944b435a2a875a55a7effa1ce166608830de0
|
|
7
|
+
data.tar.gz: 71e7e605ef9e397b06eb508d357dae846c63ab615885a3f99c09ad0f913f74fede6afff0c53d1cecef0e6ec4ebadac6eea92e8bd5fc7cc0856c7a82eda69cf71
|
data/.rubocop.yml
CHANGED
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
|
+
[](https://rubygems.org/gems/tormenta20)
|
|
4
|
+
[](https://github.com/LuanGB/tormenta20/actions/workflows/main.yml)
|
|
5
|
+
[](https://codecov.io/gh/YggdrasilGeekNetwork/tormenta20)
|
|
6
|
+
[](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`.
|
|
@@ -263,7 +268,7 @@ bundle install
|
|
|
263
268
|
|
|
264
269
|
### Construir o Banco de Dados
|
|
265
270
|
|
|
266
|
-
O
|
|
271
|
+
O arquivo `db/tormenta20.sqlite3` é **gerado** a partir dos JSONs em `src/json/` e não está versionado no repositório. É necessário gerá-lo antes de rodar os specs ou a gem localmente:
|
|
267
272
|
|
|
268
273
|
```bash
|
|
269
274
|
# Construir apenas o banco
|
|
@@ -273,6 +278,8 @@ rake build_db
|
|
|
273
278
|
rake build
|
|
274
279
|
```
|
|
275
280
|
|
|
281
|
+
Os specs (`rake spec` / `rake`) também executam `build_db` automaticamente antes de rodar.
|
|
282
|
+
|
|
276
283
|
### Estrutura do Projeto
|
|
277
284
|
|
|
278
285
|
```
|
|
@@ -311,7 +318,17 @@ tormenta20/
|
|
|
311
318
|
### Testes
|
|
312
319
|
|
|
313
320
|
```bash
|
|
314
|
-
|
|
321
|
+
bin/test
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Ou individualmente:
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
# Apenas specs
|
|
328
|
+
bundle exec rspec
|
|
329
|
+
|
|
330
|
+
# Suite completa (build_db + specs + rubocop + jsonlint)
|
|
331
|
+
bin/ci
|
|
315
332
|
```
|
|
316
333
|
|
|
317
334
|
### Linting
|
data/Rakefile
CHANGED
data/db/tormenta20.sqlite3
CHANGED
|
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,
|
|
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
|
-
|
|
367
|
+
puts " #{"#{name}:".ljust(20)} #{model.count}"
|
|
368
368
|
rescue StandardError
|
|
369
|
-
|
|
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
|
+
}
|
|
@@ -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
|
-
|
|
48
|
-
|
|
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,
|
|
39
|
+
scope :buscar_termo, ->(q) { where("termo LIKE ?", "%#{q}%") }
|
|
40
40
|
|
|
41
41
|
def to_h
|
|
42
42
|
{
|
|
43
|
-
id:
|
|
44
|
-
livro_id:
|
|
45
|
-
termo:
|
|
46
|
-
pagina:
|
|
47
|
-
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:
|
|
22
|
-
nome:
|
|
22
|
+
id: id,
|
|
23
|
+
nome: nome,
|
|
23
24
|
nome_curto: nome_curto
|
|
24
25
|
}
|
|
25
26
|
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.
|
|
4
|
+
version: 0.2.16
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- LuanGB
|
|
8
|
+
autorequire:
|
|
8
9
|
bindir: exe
|
|
9
10
|
cert_chain: []
|
|
10
|
-
date:
|
|
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.
|
|
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: []
|