tormenta20 0.2.15 → 0.2.17

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: 8156d99b6e735535deff6f5f46c6b0b1e97372ddcb52002076ff31961fd7bad4
4
- data.tar.gz: 75e84861f7ddeb6a7e71a7a75b4069a899f8deb5c47a8eb646eb7818cd57f24c
3
+ metadata.gz: ca7327ced61dd962c932132d83385e8f1cc854d7e6beba7d73fbbeffcdb51e8c
4
+ data.tar.gz: 1902c5fa0499d0f639631cd3eef40542109097677b91c2a40f5655d88edf568e
5
5
  SHA512:
6
- metadata.gz: 2862f845544e61bd23b4481eea952026cf402103894108e223f43256bbabdc840fb1c8b71078f0bd286bbcbdf471500272b04963f0ce96fd1b4eb50769fff8ab
7
- data.tar.gz: 00b38aca5faa66b2ed4a53a0d941df44f888a18f2e8fd8bf5d3ef41d716331c1df33e81a4748b3feddb6c23a6dafb5ee85061d6cab74e1a071b4dac99ebef75c
6
+ metadata.gz: feb87e81128736bbf6fb9849e25e6b803c92474949a21b505d41f16eb8943dfca41a749d82b943af38090820d51aaf989b1cdbd8bd7ca3fe0c2f17f213b7fdd0
7
+ data.tar.gz: c6d219df82ae23aca5ccbdf4523dbe79e7686ccfe478a4fca18b2de2a8d7a3b48f3743adf3a98302ef3bf18e7f2fd069922367e8e1c924d369749cc67fd5d91d
data/.rubocop.yml CHANGED
@@ -32,4 +32,4 @@ Metrics/PerceivedComplexity:
32
32
  Enabled: false
33
33
 
34
34
  Layout/LineLength:
35
- Max: 200
35
+ Max: 200
data/README.md CHANGED
@@ -268,7 +268,7 @@ bundle install
268
268
 
269
269
  ### Construir o Banco de Dados
270
270
 
271
- O banco de dados SQLite é construído a partir dos arquivos JSON em `src/json/`:
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:
272
272
 
273
273
  ```bash
274
274
  # Construir apenas o banco
@@ -278,6 +278,8 @@ rake build_db
278
278
  rake build
279
279
  ```
280
280
 
281
+ Os specs (`rake spec` / `rake`) também executam `build_db` automaticamente antes de rodar.
282
+
281
283
  ### Estrutura do Projeto
282
284
 
283
285
  ```
@@ -316,7 +318,17 @@ tormenta20/
316
318
  ### Testes
317
319
 
318
320
  ```bash
319
- rake spec
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
320
332
  ```
321
333
 
322
334
  ### Linting
data/Rakefile CHANGED
@@ -17,5 +17,6 @@ task :build_db do
17
17
  ruby "bin/build_db"
18
18
  end
19
19
 
20
- # Ensure database is built before gem packaging
20
+ # Ensure database is built before specs and gem packaging
21
+ Rake::Task[:spec].enhance([:build_db])
21
22
  Rake::Task[:build].enhance([:build_db])
Binary file
@@ -3,7 +3,7 @@
3
3
  "name": "Curar Ferimentos",
4
4
  "type": "divina",
5
5
  "circle": "1",
6
- "school": "abjur",
6
+ "school": "evoc",
7
7
  "execution": "padrão",
8
8
  "execution_details": null,
9
9
  "range": "toque",
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Tormenta20
4
+ module Rules
5
+ # PM cap rules for variable-cost abilities (Tormenta20 core rules).
6
+ #
7
+ # Rule: the PM spent on a single use of a variable-cost ability cannot exceed
8
+ # the character's level in the class that provides it. If the ability comes
9
+ # from a race, origin, or general power (no class source), the cap equals the
10
+ # total character level.
11
+ module PmCap
12
+ # Returns the PM cap for a variable-cost ability.
13
+ #
14
+ # @param source_class [String, nil] name of the class that provides the
15
+ # ability (e.g. "arcanista"), or nil for race/origin/general powers
16
+ # @param class_level [Integer, nil] character's level in that class
17
+ # @param character_level [Integer] total character level (used as fallback)
18
+ # @return [Integer]
19
+ def self.for_ability(source_class:, class_level:, character_level:)
20
+ return character_level if source_class.nil? || class_level.nil?
21
+
22
+ class_level
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "rules/pm_cap"
4
+
5
+ module Tormenta20
6
+ # Namespace for Tormenta20 rule calculations and constraints.
7
+ module Rules
8
+ end
9
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Tormenta20
4
- VERSION = ENV.fetch("GEM_VERSION", "0.0.0")
4
+ VERSION = ENV.fetch("GEM_VERSION", "0.0.0").delete_prefix("v")
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tormenta20
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.15
4
+ version: 0.2.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - LuanGB
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2026-04-30 00:00:00.000000000 Z
11
+ date: 2026-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -1277,6 +1277,8 @@ files:
1277
1277
  - src/ruby/tormenta20/models/poder.rb
1278
1278
  - src/ruby/tormenta20/models/raca.rb
1279
1279
  - src/ruby/tormenta20/models/regra.rb
1280
+ - src/ruby/tormenta20/rules.rb
1281
+ - src/ruby/tormenta20/rules/pm_cap.rb
1280
1282
  - src/ruby/tormenta20/seeder.rb
1281
1283
  - src/ruby/tormenta20/version.rb
1282
1284
  - src/schema/magia.schema.json