krcg 4.8__tar.gz → 4.9.dev0__tar.gz

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 (64) hide show
  1. krcg-4.9.dev0/.coverage +0 -0
  2. krcg-4.9.dev0/.github/FUNDING.yml +3 -0
  3. krcg-4.9.dev0/.github/workflows/validation.yml +42 -0
  4. krcg-4.9.dev0/.gitignore +15 -0
  5. krcg-4.9.dev0/.markdownlint.json +7 -0
  6. {krcg-4.8 → krcg-4.9.dev0}/CHANGELOG.rst +6 -0
  7. krcg-4.9.dev0/Makefile +27 -0
  8. {krcg-4.8 → krcg-4.9.dev0}/PKG-INFO +52 -18
  9. {krcg-4.8 → krcg-4.9.dev0}/README.md +34 -1
  10. krcg-4.9.dev0/dark-pack.png +0 -0
  11. {krcg-4.8 → krcg-4.9.dev0}/krcg/deck.py +8 -7
  12. krcg-4.9.dev0/profiling/__init__.py +0 -0
  13. krcg-4.9.dev0/profiling/seating.py +14 -0
  14. {krcg-4.8 → krcg-4.9.dev0}/pyproject.toml +18 -8
  15. krcg-4.9.dev0/tests/10211.html +72 -0
  16. krcg-4.9.dev0/tests/11435.html +89 -0
  17. krcg-4.9.dev0/tests/2010tcdbng.html +76 -0
  18. krcg-4.9.dev0/tests/2011ptwolss.html +71 -0
  19. krcg-4.9.dev0/tests/2012pslp.html +54 -0
  20. krcg-4.9.dev0/tests/2016ggs.html +67 -0
  21. krcg-4.9.dev0/tests/2019grdojf.html +74 -0
  22. krcg-4.9.dev0/tests/2020pihc.html +135 -0
  23. krcg-4.9.dev0/tests/202207_EC_Day1_1.txt +60 -0
  24. krcg-4.9.dev0/tests/2k2origins1.html +61 -0
  25. krcg-4.9.dev0/tests/2k2stranger.html +79 -0
  26. krcg-4.9.dev0/tests/2k4dcqualifier.html +81 -0
  27. krcg-4.9.dev0/tests/2k5alboraya.html +62 -0
  28. krcg-4.9.dev0/tests/2k5sharednun.html +65 -0
  29. krcg-4.9.dev0/tests/2k7fsmc.html +63 -0
  30. krcg-4.9.dev0/tests/2k8TempleConcordance.html +128 -0
  31. krcg-4.9.dev0/tests/2k8tfnwesterville.html +96 -0
  32. krcg-4.9.dev0/tests/TWDA.html +1501 -0
  33. krcg-4.9.dev0/tests/__init__.py +0 -0
  34. krcg-4.9.dev0/tests/conftest.py +29 -0
  35. krcg-4.9.dev0/tests/test_analyzer.py +17 -0
  36. krcg-4.9.dev0/tests/test_cards.py +217 -0
  37. krcg-4.9.dev0/tests/test_deck.py +552 -0
  38. krcg-4.9.dev0/tests/test_parser.py +284 -0
  39. krcg-4.9.dev0/tests/test_seating.py +311 -0
  40. krcg-4.9.dev0/tests/test_states.py +783 -0
  41. krcg-4.9.dev0/tests/test_tournament_archive.py +113 -0
  42. krcg-4.9.dev0/tests/test_twda.py +2549 -0
  43. krcg-4.9.dev0/tests/test_vtes.py +1312 -0
  44. krcg-4.9.dev0/uv.lock +945 -0
  45. krcg-4.8/krcg.egg-info/SOURCES.txt +0 -22
  46. krcg-4.8/setup.cfg +0 -4
  47. {krcg-4.8 → krcg-4.9.dev0}/LICENSE +0 -0
  48. {krcg-4.8 → krcg-4.9.dev0}/MANIFEST.in +0 -0
  49. {krcg-4.8 → krcg-4.9.dev0}/cards/__init__.py +0 -0
  50. {krcg-4.8 → krcg-4.9.dev0}/cards/vtescrypt.csv +0 -0
  51. {krcg-4.8 → krcg-4.9.dev0}/cards/vteslib.csv +0 -0
  52. {krcg-4.8 → krcg-4.9.dev0}/cards/vteslibmeta.csv +0 -0
  53. {krcg-4.8 → krcg-4.9.dev0}/cards/vtessets.csv +0 -0
  54. {krcg-4.8 → krcg-4.9.dev0}/krcg/__init__.py +0 -0
  55. {krcg-4.8 → krcg-4.9.dev0}/krcg/analyzer.py +0 -0
  56. {krcg-4.8 → krcg-4.9.dev0}/krcg/cards.py +0 -0
  57. {krcg-4.8 → krcg-4.9.dev0}/krcg/config.py +0 -0
  58. {krcg-4.8 → krcg-4.9.dev0}/krcg/parser.py +0 -0
  59. {krcg-4.8 → krcg-4.9.dev0}/krcg/rulings.py +0 -0
  60. {krcg-4.8 → krcg-4.9.dev0}/krcg/seating.py +0 -0
  61. {krcg-4.8 → krcg-4.9.dev0}/krcg/sets.py +0 -0
  62. {krcg-4.8 → krcg-4.9.dev0}/krcg/twda.py +0 -0
  63. {krcg-4.8 → krcg-4.9.dev0}/krcg/utils.py +0 -0
  64. {krcg-4.8 → krcg-4.9.dev0}/krcg/vtes.py +0 -0
Binary file
@@ -0,0 +1,3 @@
1
+ # These are supported funding model platforms
2
+
3
+ patreon: krcg
@@ -0,0 +1,42 @@
1
+ # This workflow will install Python dependencies, run tests and lint with a single version of Python
2
+ # For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
3
+
4
+ name: Validation
5
+ on:
6
+ push:
7
+ branches: [master]
8
+ pull_request:
9
+ branches: [master]
10
+ jobs:
11
+ test:
12
+ runs-on: ubuntu-latest
13
+ steps:
14
+ - name: Checkout
15
+ uses: actions/checkout@v4
16
+ - name: Setup Python
17
+ uses: actions/setup-python@v5
18
+ with:
19
+ python-version: "3.11"
20
+ - name: Install dependencies
21
+ run: |
22
+ python -m pip install --upgrade pip
23
+ pip install -e .[dev]
24
+ - name: Format
25
+ run: |
26
+ black --check krcg tests
27
+ - name: Lint
28
+ run: |
29
+ ruff check
30
+ yamllint rulings
31
+ - name: Test
32
+ env:
33
+ LOCAL_CARDS: 1
34
+ run: |
35
+ coverage run -m pytest
36
+ coverage xml
37
+ - name: Upload coverage to Codacy
38
+ if: ${{ github.event_name == 'push' }}
39
+ env:
40
+ CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }}
41
+ run: |
42
+ python-codacy-coverage -r coverage.xml
@@ -0,0 +1,15 @@
1
+ # Build & distribution
2
+ __pycache__/
3
+ build/
4
+ dist/
5
+ venv/
6
+ *.egg-info/
7
+
8
+ # test
9
+ .pytest_cache/
10
+ .ruff_cache/
11
+
12
+ # editors & OS
13
+ .vscode/
14
+ *.DS_Store
15
+ .idea/
@@ -0,0 +1,7 @@
1
+ {
2
+ "MD013": {
3
+ "line_length": 120
4
+ },
5
+ "MD010": false,
6
+ "MD030": false
7
+ }
@@ -1,6 +1,12 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ 4.9 (unreleased)
5
+ ----------------
6
+
7
+ - Nothing changed yet.
8
+
9
+
4
10
  4.8 (2025-06-01)
5
11
  ----------------
6
12
 
krcg-4.9.dev0/Makefile ADDED
@@ -0,0 +1,27 @@
1
+ .PHONY: quality test update clean build release
2
+
3
+ export VTESCSV_GITHUB_BRANCH=main
4
+
5
+ quality:
6
+ uv run black --check krcg tests
7
+ uv run ruff check
8
+
9
+ test: quality
10
+ uv run pytest -vvs
11
+
12
+ update:
13
+ uv sync --upgrade
14
+
15
+ clean:
16
+ rm -rf dist
17
+ rm -rf .pytest_cache
18
+
19
+ build:
20
+ uv build
21
+
22
+ release: test build
23
+ @echo "Release steps:"
24
+ @echo "1. Update version in pyproject.toml"
25
+ @echo "2. Run: make release"
26
+ @echo "3. Run: uv publish"
27
+ @echo "4. Run: git tag v<VERSION> && git push --tags"
@@ -1,44 +1,45 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: krcg
3
- Version: 4.8
3
+ Version: 4.9.dev0
4
4
  Summary: Library for VTES cards and TWDA.
5
+ Project-URL: Repository, https://github.com/lionel-panhaleux/krcg
5
6
  Author-email: Lionel Panhaleux <lionel.panhaleux+krcg@gmail.com>
6
7
  License-Expression: MIT
7
- Project-URL: Repository, https://github.com/lionel-panhaleux/krcg
8
- Keywords: vtes,Vampire: The Eternal Struggle,CCG,TWD,TWDA
9
- Classifier: Programming Language :: Python :: 3
10
- Classifier: Programming Language :: Python :: 3.11
8
+ License-File: LICENSE
9
+ Keywords: CCG,TWD,TWDA,Vampire: The Eternal Struggle,vtes
11
10
  Classifier: Development Status :: 5 - Production/Stable
12
11
  Classifier: Intended Audience :: Developers
13
12
  Classifier: Natural Language :: English
14
13
  Classifier: Operating System :: OS Independent
14
+ Classifier: Programming Language :: Python :: 3
15
+ Classifier: Programming Language :: Python :: 3.10
16
+ Classifier: Programming Language :: Python :: 3.11
17
+ Classifier: Programming Language :: Python :: 3.12
18
+ Classifier: Programming Language :: Python :: 3.13
15
19
  Classifier: Topic :: Software Development :: Libraries :: Python Modules
16
20
  Requires-Python: >=3.10
17
- Description-Content-Type: text/markdown
18
- License-File: LICENSE
19
21
  Requires-Dist: arrow
20
- Requires-Dist: pyyaml
21
22
  Requires-Dist: numpy
23
+ Requires-Dist: pyyaml
22
24
  Requires-Dist: requests
23
25
  Requires-Dist: setuptools
24
26
  Requires-Dist: unidecode
25
27
  Provides-Extra: dev
26
- Requires-Dist: certifi; extra == "dev"
27
- Requires-Dist: coverage; extra == "dev"
28
- Requires-Dist: codacy-coverage; extra == "dev"
29
- Requires-Dist: black; extra == "dev"
30
- Requires-Dist: ipython; extra == "dev"
31
- Requires-Dist: pytest; extra == "dev"
32
- Requires-Dist: ruff; extra == "dev"
33
- Requires-Dist: zest.releaser[recommended]; extra == "dev"
34
- Dynamic: license-file
28
+ Requires-Dist: black; extra == 'dev'
29
+ Requires-Dist: certifi; extra == 'dev'
30
+ Requires-Dist: codacy-coverage; extra == 'dev'
31
+ Requires-Dist: coverage; extra == 'dev'
32
+ Requires-Dist: ipython; extra == 'dev'
33
+ Requires-Dist: pytest; extra == 'dev'
34
+ Requires-Dist: ruff; extra == 'dev'
35
+ Description-Content-Type: text/markdown
35
36
 
36
37
  # KRCG
37
38
 
38
39
  [![PyPI version](https://badge.fury.io/py/krcg.svg)](https://badge.fury.io/py/krcg)
39
40
  [![Validation](https://github.com/lionel-panhaleux/krcg/actions/workflows/validation.yml/badge.svg)](https://github.com/lionel-panhaleux/krcg/actions/workflows/validation.yml)
40
41
  [![Coverage](https://api.codacy.com/project/badge/Grade/32d1b809494e4935967608f13f52004a)](https://app.codacy.com/manual/lionel-panhaleux/krcg?utm_source=github.com&utm_medium=referral&utm_content=lionel-panhaleux/krcg&utm_campaign=Badge_Grade_Dashboard)
41
- [![Python version](https://img.shields.io/badge/python-3.11-blue)](https://www.python.org/downloads/)
42
+ [![Python version](https://img.shields.io/badge/python-3.10+-blue)](https://www.python.org/downloads/)
42
43
  [![License](https://img.shields.io/badge/License-MIT-blue)](https://opensource.org/licenses/MIT)
43
44
  [![Code Style](https://img.shields.io/badge/code%20style-black-black)](https://github.com/psf/black)
44
45
 
@@ -430,6 +431,39 @@ Crypt:
430
431
  2 Claus Wegener
431
432
  ```
432
433
 
434
+ ## Development
435
+
436
+ This project uses [uv](https://github.com/astral-sh/uv) for dependency management and packaging.
437
+
438
+ ### Setup
439
+
440
+ 1. Install `uv` if you haven't already:
441
+ ```bash
442
+ curl -LsSf https://astral.sh/uv/install.sh | sh
443
+ ```
444
+
445
+ 2. Clone the repository and install dependencies:
446
+ ```bash
447
+ git clone https://github.com/lionel-panhaleux/krcg.git
448
+ cd krcg
449
+ uv sync --group dev
450
+ ```
451
+
452
+ ### Development Commands
453
+
454
+ - `make quality` - Run code quality checks (black, ruff)
455
+ - `make test` - Run tests
456
+ - `make build` - Build the package
457
+ - `make update` - Update dependencies
458
+ - `make clean` - Clean build artifacts
459
+
460
+ ### Releasing
461
+
462
+ 1. Update the version in `pyproject.toml`
463
+ 2. Run `make release` to test and build
464
+ 3. Run `uv publish` to publish to PyPI
465
+ 4. Create and push a git tag: `git tag v<VERSION> && git push --tags`
466
+
433
467
  ## Contribute
434
468
 
435
469
  Feel free to submit pull requests, they will be merged as long as they pass the tests.
@@ -3,7 +3,7 @@
3
3
  [![PyPI version](https://badge.fury.io/py/krcg.svg)](https://badge.fury.io/py/krcg)
4
4
  [![Validation](https://github.com/lionel-panhaleux/krcg/actions/workflows/validation.yml/badge.svg)](https://github.com/lionel-panhaleux/krcg/actions/workflows/validation.yml)
5
5
  [![Coverage](https://api.codacy.com/project/badge/Grade/32d1b809494e4935967608f13f52004a)](https://app.codacy.com/manual/lionel-panhaleux/krcg?utm_source=github.com&utm_medium=referral&utm_content=lionel-panhaleux/krcg&utm_campaign=Badge_Grade_Dashboard)
6
- [![Python version](https://img.shields.io/badge/python-3.11-blue)](https://www.python.org/downloads/)
6
+ [![Python version](https://img.shields.io/badge/python-3.10+-blue)](https://www.python.org/downloads/)
7
7
  [![License](https://img.shields.io/badge/License-MIT-blue)](https://opensource.org/licenses/MIT)
8
8
  [![Code Style](https://img.shields.io/badge/code%20style-black-black)](https://github.com/psf/black)
9
9
 
@@ -395,6 +395,39 @@ Crypt:
395
395
  2 Claus Wegener
396
396
  ```
397
397
 
398
+ ## Development
399
+
400
+ This project uses [uv](https://github.com/astral-sh/uv) for dependency management and packaging.
401
+
402
+ ### Setup
403
+
404
+ 1. Install `uv` if you haven't already:
405
+ ```bash
406
+ curl -LsSf https://astral.sh/uv/install.sh | sh
407
+ ```
408
+
409
+ 2. Clone the repository and install dependencies:
410
+ ```bash
411
+ git clone https://github.com/lionel-panhaleux/krcg.git
412
+ cd krcg
413
+ uv sync --group dev
414
+ ```
415
+
416
+ ### Development Commands
417
+
418
+ - `make quality` - Run code quality checks (black, ruff)
419
+ - `make test` - Run tests
420
+ - `make build` - Build the package
421
+ - `make update` - Update dependencies
422
+ - `make clean` - Clean build artifacts
423
+
424
+ ### Releasing
425
+
426
+ 1. Update the version in `pyproject.toml`
427
+ 2. Run `make release` to test and build
428
+ 3. Run `uv publish` to publish to PyPI
429
+ 4. Create and push a git tag: `git tag v<VERSION> && git push --tags`
430
+
398
431
  ## Contribute
399
432
 
400
433
  Feel free to submit pull requests, they will be merged as long as they pass the tests.
Binary file
@@ -517,19 +517,20 @@ class Deck(collections.Counter):
517
517
  def to_vdb(self) -> str:
518
518
  """Generating vdb.im link to deck"""
519
519
  link = "https://vdb.im/decks/deck?"
520
- link += urllib.parse.urlencode(
521
- {
522
- "name": self.name or "New KRCG Deck",
523
- "author": self.author or self.player or "KRCG",
524
- }
525
- )
520
+ params = {}
521
+ if self.name:
522
+ params["name"] = self.name
523
+ if self.author:
524
+ params["author"] = self.name
525
+ if params:
526
+ link += urllib.parse.urlencode(params)
526
527
  link += "#"
527
528
  for card, count in self.crypt:
528
529
  link += f"{card.id}={count};"
529
530
  for _, cards in self._sorted_library():
530
531
  for card, count in cards:
531
532
  link += f"{card.id}={count};"
532
- return link[:-1]
533
+ return link[:-1] # remove trailing semicolumn
533
534
 
534
535
 
535
536
  class DeckScore:
File without changes
@@ -0,0 +1,14 @@
1
+ """Used for profiling the seating algorithm
2
+
3
+ >>> python -m cProfile -o seating.stats profiling/seating.py
4
+ >>> python -m pstats seating.stats
5
+
6
+ Also useful for line profiling, add the `@profile` decorator on the function to profile
7
+ >>> pip install line_profiling
8
+ >>> kernprof -lv profiling/seating.py
9
+
10
+ """
11
+ from krcg import seating
12
+
13
+ rounds = seating.get_rounds(list(range(50)), 3)
14
+ seating.optimise(rounds, 80000, 1)
@@ -1,10 +1,10 @@
1
1
  [build-system]
2
- requires = ["setuptools>=68"]
3
- build-backend = "setuptools.build_meta"
2
+ requires = ["hatchling"]
3
+ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "krcg"
7
- version = "4.8"
7
+ version = "4.9.dev0"
8
8
  license = "MIT"
9
9
  authors = [
10
10
  { name = "Lionel Panhaleux", email = "lionel.panhaleux+krcg@gmail.com" },
@@ -15,7 +15,10 @@ readme = "README.md"
15
15
  requires-python = ">=3.10"
16
16
  classifiers = [
17
17
  "Programming Language :: Python :: 3",
18
+ "Programming Language :: Python :: 3.10",
18
19
  "Programming Language :: Python :: 3.11",
20
+ "Programming Language :: Python :: 3.12",
21
+ "Programming Language :: Python :: 3.13",
19
22
  "Development Status :: 5 - Production/Stable",
20
23
  "Intended Audience :: Developers",
21
24
  "Natural Language :: English",
@@ -40,14 +43,21 @@ dev = [
40
43
  "ipython",
41
44
  "pytest",
42
45
  "ruff",
43
- "zest.releaser[recommended]",
44
46
  ]
45
47
 
46
48
  [project.urls]
47
49
  Repository = "https://github.com/lionel-panhaleux/krcg"
48
50
 
49
- [tool.setuptools.packages.find]
50
- include = ["krcg*", "cards*"]
51
+ [tool.hatch.build.targets.wheel]
52
+ packages = ["krcg", "cards"]
51
53
 
52
- [tool.zest-releaser]
53
- create-wheel = true
54
+ [tool.uv]
55
+ dev-dependencies = [
56
+ "certifi",
57
+ "coverage",
58
+ "codacy-coverage",
59
+ "black",
60
+ "ipython",
61
+ "pytest",
62
+ "ruff",
63
+ ]
@@ -0,0 +1,72 @@
1
+ <a id=10211 href=#>Top</a>
2
+ <hr><pre>
3
+ 10211Origins - Thursday 2
4
+ Columbus, Ohio
5
+ June 9th 2022
6
+ 2R+F
7
+ 21 players
8
+ Darby Keeney
9
+ https://www.vekn.net/event-calendar/event/10211
10
+
11
+ -- 1GW6 + 3 VP in final
12
+
13
+ Description: Bruise bleed based around V5 Brujah Barons, New Carthage and Anarch bleed cards. It carries light multi-action, a touch of stealth and just enough bounce that it doesn't have to look left immediately. The titles influence others' political actions, even if I'm not using them myself.
14
+
15
+ In the final, I roasted my prey's opening (famous) Malgorzata even though she dropped a Blood of Acid in the first combat. It was ENTIRELY worth losing a 3-cap who had already done the Illegalism/unlock/Manifesto trick. I ate Mal a turn or two later, just to be sure she didn't make beads.
16
+
17
+ Crypt (12 cards, min=18, max=30, avg=6.17)
18
+ ------------------------------------------
19
+ 2x Theo Bell 8 CEL POT PRE aus dom Brujah:6
20
+ 2x Aline Gädeke 7 POT PRE cel baron Brujah:6
21
+ 2x Valeriya Zinovieva 7 POT cel pre pro baron Brujah:6
22
+ 2x Leumeah 6 PRE cel for pot baron Brujah:6
23
+ 1x Atiena 6 CEL obf pot pre baron Brujah:6
24
+ 1x Brandon Grime 5 CEL pot pre tha Brujah:6
25
+ 1x Elen Kamjian 4 CEL POT Brujah:6
26
+ 1x Ariane 3 cel pot pre Brujah:5
27
+
28
+ The original build used more superior Presence minions but no Theo and some Enchant Kindred. I didn't like the pace at which it played and adjusted for more immediate offense. I finally broke down and added Theo right before Origins - he sheds red cards and I get a second +1 strength minion.
29
+ Every one of those revisions made the deck better and this iteration feels extremely solid.
30
+
31
+ Library (90 cards)
32
+ -- I think there might be a 78 card version that's even more consistent. And no, you don't need Ashur Tablets.
33
+ Master (18; 5 trifle)
34
+ 2x Blood Doll
35
+ 1x Carfax Abbey
36
+ 1x Club Illusion -- dangerous play in today's meta
37
+ 2x Dreams of the Sphinx
38
+ 1x Fame
39
+ 1x Garibaldi-Meucci Museum -- this card just keeps getting better.
40
+ 1x Giant's Blood
41
+ 2x New Carthage -- this version could probably drop to 1 copy
42
+ 1x Powerbase: Los Angeles -- more unlocked Barons at the end of my turn.
43
+ 5x Villein -- this could be 6 copies and the deck wouldn't suffer.
44
+ 1x Warzone Hunting Ground
45
+
46
+ Action (21)
47
+ 1x Fee Stake: New York -- should probably change to LA just for thematic reasons
48
+ 9x Illegalism -- combat minions that bleed, then unlock and fight are pretty good.
49
+ 10x Line Brawl -- see above. The occasional pool steal can screw up other players' math.
50
+ 1x Open War -- almost overkill with Theo and Line Brawls.
51
+
52
+ Equipment (2)
53
+ 2x Anarch Manifesto, An -- slotted during last revision, these things are gold in the mid game (get them AFTER you unlock from Illegialism, don't defer bleed actions to get it)
54
+
55
+ Action Modifier (8)
56
+ 6x Power of One -- I didn't bother with the unlimited [pot] line with a Monkey Wrench, it's better to just have these for stealth on bleeds.
57
+ 2x Zephyr -- don't laugh...even at inferior it is an unlocked bouncer (or a multirushing Theo at superior).
58
+
59
+ Reaction (5)
60
+ 5x Bait and Switch -- this card is shaking up the meta around here.
61
+
62
+ Combat (36)
63
+ 2x Bollix -- kind of iffy, but I like having extra maneuvers and presses hanging around.
64
+ 2x Disarm -- never played on a minion I wasn't dunking anyway, this might be overkill.
65
+ 3x Diversion -- only OK in this deck since Dust Up often eats the additional strike.
66
+ 10x Dust Up -- underrated as a dual use combat tool.
67
+ 4x Immortal Grapple -- because Earth Meld decks need to be killed with fire.
68
+ 2x Pulled Fangs -- sometimes minions just need to stay down
69
+ 5x Target Vitals -- slotted in yet another [pot] deck....this card is poorly designed.
70
+ 4x Taste of Vitae
71
+ 4x Thrown Gate -- a token nod to "screw your Sniper Rifle" with backup defensive value
72
+ </pre>
@@ -0,0 +1,89 @@
1
+ <a id=11435 href=#>Top</a>
2
+ <hr><pre>
3
+ Powerbase Badalona 2024
4
+ Badalona, Spain
5
+ May 4th 2024
6
+ 2R+F
7
+ 25 players
8
+ Miquel Jorge Tortajada
9
+ https://www.vekn.net/event-calendar/event/11435
10
+
11
+ A brief explanation about the final, from my point of view.
12
+ With 1GW4VP I placed second (new salubri powerbleed), so a quite good position to pick my seat.
13
+ The other finalists were:
14
+ Marc Alvarez (1st) Matasuntha rush
15
+ Albert Dulcet (3rd) Marie Faucigny with equipments (strange deck)
16
+ Xavier Macias (4th) Ravnos
17
+ Germán Sánchez (Gangrel block)
18
+ When I got the chance to pick my place the order was already:
19
+ Xavier Macias (Ravnos) -> Albert Dulcet (Marie Faucigny) -> Germán Sanchez (Gangrel block)
20
+ I knew I didn't want to prey the gangrels, my thoughts about the Ravnos were that it was a toolboox with bleed reduction, so ideal choice was between Ravnos and Marie, but I was sure that Matasuntha would then place behind me so I risked it and placed myself between Gangrel and the Ravnos, hoping to get out early and put some pressure on my prey. Marc placed preying Albert.
21
+ Pulled out Seraphina and had a GtU and a SM in hand with a freak drive, so was quite confident to get my second vampire early. Played seduction on the only Ravnos Xavier had, but unfortunately Kuyén decided to block me.
22
+ - I know your deck- Were Germán's words, so I knew he wasn't going to let me play easily, so decided to bring my second vampire transferring from my pool.
23
+ Matasuntha start putting quite some pressure on Marie, but I knew Albert playstyle, and he is a very resourceful person, and really hard to kill, so the Gangrels were free to roam, and a couple more joined Kuyén son enough.
24
+ A bit later, Xavier discarded a Pentex, so having one in hand I knew there was my chance, so with a few tricks from the salubris I manage to give is pool quite a big bite, but not enough to oust him.
25
+ Germán put some pressure on me, not heavy but steady with 2 or 3 bleeds per turn, I was lucky to get almost all my deflections, redirections and TM and that prevent me from dyeing and lowering Xavier's pool a bit. Then he played a risky move, bringing Club Illusion to the game with some sort of agreement with my anarch predator, that if he killed me, he would allow a couple of turns of peace so the Ravnos could recover.
26
+ Matasuntha's attention suddenly faded from Marie and turned backwards, as she had 4 vampires with a potential bleed of 9 and Marc's pool was only at 13, so she multirushed backwards, torporizing 3 vampires. Albert offered to rescue 1 on order to safe Xavier and keep Matasuntha busy with him.
27
+ On his turn, German tried to oust me with his full potential, he had previously recovered a Monkey Wrench with his Garibaldi, so I was ready for it and he failed.
28
+ My second chance was right in front of me, and I wasn't going to waste it, so I jumped towards Xavier's exposed pool and this time I manage to successfully oust him, but even before I could savor my victory I felt Matasuntha's eyes upon me, so with my sweetest salubri voice I offered a deal, and after a few give and take we manage to get ourselves an understanding.
29
+ Marc will not rush me, and I will not bleed him, and the first Monkey Wrench German played I will directly deflect to Albert, all the other bleeds I could deflect them to Marc. I knew it wasn't much of a deal, Albert would get heavy pressure again and the Gangrel will be free to roam around me, and so he did bringing a 5th vampire to the game, but it was too late and the finale concluded a few turns after.
30
+ Special mention to Marie and her crew, who suffered repeatedly Matasuntha's rushes but manage to come back from torpor more times than it seems even possible.
31
+ Hope you all like my chronicle and apologize for my limited English.
32
+ Miki
33
+ P.D. Hope I have reported it correctly, if something is missing let me know.
34
+
35
+ Deck Name: Nuevos Salubri (New Salubri)
36
+
37
+ Crypt (12 cards, min=20, max=32, avg=6.42)
38
+ ------------------------------------------
39
+ 2x Abaddon 8 AUS DOM FOR cel pot Salubri:7
40
+ 2x Seraphina 8 AUS DOM FOR cel tha Salubri:7
41
+ 2x Aniel 6 AUS DOM for Salubri:7
42
+ 2x Malachi 6 AUS DOM FOR Salubri:7
43
+ 2x Opikun 5 FOR aus dom Salubri:7
44
+ 1x Ilonka 7 AUS DOM FOR tha Salubri:7
45
+ 1x Yael 4 aus dom for Salubri:7
46
+
47
+ Library (90 cards)
48
+ Master (14; 1 trifle)
49
+ 1x Anarch Troublemaker
50
+ 2x Blood Doll
51
+ 1x Coven, The
52
+ 1x Direct Intervention
53
+ 1x Giant's Blood
54
+ 1x Meditative Grove
55
+ 2x Pentex(TM) Subversion
56
+ 4x Perfectionist
57
+ 1x Saulot's Healing Touch
58
+
59
+ Action (19)
60
+ 6x Feast of the Soul's Secrets
61
+ 7x Govern the Unaligned
62
+ 6x Scouting Mission
63
+
64
+ Action/Combat (6)
65
+ 6x Touch of Valeren
66
+
67
+ Ally (1)
68
+ 1x Carlton Van Wyk
69
+
70
+ Equipment (1)
71
+ 1x Heart of Nizchetus
72
+
73
+ Action Modifier (32)
74
+ 4x Bonding
75
+ 3x Daring the Dawn
76
+ 6x Forced Confessional
77
+ 8x Freak Drive
78
+ 4x Seduction
79
+ 2x Threats
80
+ 5x Unleashing the Bestial Soul
81
+
82
+ Reaction (17)
83
+ 5x Deflection
84
+ 2x Delaying Tactics
85
+ 3x Eyes of Argus
86
+ 3x On the Qui Vive
87
+ 2x Redirection
88
+ 2x Telepathic Misdirection
89
+ </pre>
@@ -0,0 +1,76 @@
1
+ <a id=2010tcdbng href=#>Top</a>
2
+ <hr><pre>
3
+ Trading Card Day
4
+ Bad Naumheim, Germany
5
+ May 8th 2010
6
+ 2R+F
7
+ 10 players
8
+ Rudolf Scholz
9
+
10
+ -- 4vp in final
11
+
12
+ Deck Name: The Storage Procurers
13
+ Description: Allies with Flash Grenades to keep troubles at bay.
14
+ Storage Annex for card efficiency and a structured hand. Weenies and
15
+ Midcaps with Obfuscate and/or Dominate to oust via Conditionings and
16
+ Deflections.
17
+
18
+ Crypt (12 cards, min=7, max=24, avg=3.75)
19
+ -----------------------------------------
20
+ 1x Gilbert Duane 7 AUS DOM OBF prince Malkavian:1
21
+ 1x Mariel, Lady Thunder 7 DOM OBF aus tha Malkavian:1
22
+ 1x Badr al-Budur 5 OBF cel dom qui Assamite:2
23
+ 1x Count Ormonde 5 OBF dom pre ser Follower of Set:2
24
+ 1x Didi Meyers 5 DOM aus cel obf Malkavian:1
25
+ 1x Zebulon 5 OBF aus dom pro Malkavian:1
26
+ 1x Dimple 2 obf Nosferatu:1
27
+ 1x Mustafa Rahman 2 dom Tremere:2
28
+ 1x Normal 2 obf Malkavian:1
29
+ 1x Ohanna 2 dom Malkavian:2
30
+ 1x Samson 2 dom Ventrue antitribu:2
31
+ 1x Basil 1 obf Pander:2
32
+
33
+ Library (87)
34
+ Action Modifier [19]
35
+ 6x Cloak the Gathering
36
+ 7x Conditioning (should be more!)
37
+ 2x Lost in Crowds
38
+ 4x Veil the Legions
39
+
40
+ Ally [12]
41
+ 1x Carlton Van Wyk (Hunter)
42
+ 1x Gregory Winter
43
+ 1x Impundulu
44
+ 1x Muddled Vampire Hunter
45
+ 1x Ossian
46
+ 6x Procurer
47
+ 1x Young Bloods
48
+
49
+ Combat [8]
50
+ 8x Concealed Weapon
51
+
52
+ Equipment [9]
53
+ 1x Deer Rifle
54
+ 8x Flash Grenade (brings fear to the methuselahs rather than to minions)
55
+
56
+ Event [4]
57
+ 1x FBI Special Affairs Division
58
+ 1x Hunger Moon
59
+ 1x Restricted Vitae
60
+ 1x Unmasking, The
61
+
62
+ Master [19]
63
+ 1x Channel 10
64
+ 2x Charisma
65
+ 1x Creepshow Casino
66
+ 1x KRCG News Radio
67
+ 2x Perfectionist
68
+ 6x Storage Annex (great card! usually underestimated)
69
+ 3x Sudden Reversal
70
+ 3x Vessel
71
+
72
+ Reaction [16]
73
+ 7x Deflection
74
+ 2x Delaying Tactics
75
+ 7x On the Qui Vive
76
+ </pre>