From c0f007c15cbb8dac70c994dd953f6c289d9d540b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Ke=C3=9Fler?= Date: Sat, 13 May 2023 00:01:35 +0200 Subject: [PATCH] add flag for deceptive special rank --- database.py | 7 ++++--- variant_suits_schema.sql | 11 ++++++++++- variants.py | 5 +++-- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/database.py b/database.py index 28eb939..d2c0483 100644 --- a/database.py +++ b/database.py @@ -173,6 +173,7 @@ def init_static_tables(): special_rank_no_colors = var.get('specialNoClueColors', False) special_rank_all_colors = var.get('specialAllClueColors', False) special_rank = var.get('specialRank', None) + special_deceptive = var.get('specialDeceptive', False) assert(not all([special_rank_all_ranks, special_rank_no_ranks])) assert(not all([special_rank_all_colors, special_rank_no_colors])) @@ -184,14 +185,14 @@ def init_static_tables(): "INSERT INTO variants (" "id, name, clue_starved, throw_it_in_a_hole, alternating_clues, synesthesia, chimneys, funnels," "no_color_clues, no_rank_clues, empty_color_clues, empty_rank_clues, odds_and_evens, up_or_down," - "critical_fours, num_suits, special_rank, special_rank_ranks, special_rank_colors" + "critical_fours, num_suits, special_rank, special_rank_ranks, special_rank_colors, special_deceptive" ")" "VALUES" - "(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", + "(%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)", ( var_id, name, clue_starved, throw_it_in_a_hole, alternating_clues, synesthesia, chimneys, funnels, no_color_clues, no_rank_clues, empty_color_clues, empty_rank_clues, odds_and_evens, up_or_down, - critical_fours, num_suits, special_rank, special_rank_ranks, special_rank_colors + critical_fours, num_suits, special_rank, special_rank_ranks, special_rank_colors, special_deceptive ) ) diff --git a/variant_suits_schema.sql b/variant_suits_schema.sql index 5edbcf5..b483c3f 100644 --- a/variant_suits_schema.sql +++ b/variant_suits_schema.sql @@ -84,7 +84,16 @@ CREATE TABLE variants ( Encodes how cards of the special rank (if present) are touched by colorss, in the same manner how we encoded in @table suits */ - special_rank_colors SMALLINT NOT NULL DEFAULT 1 + special_rank_colors SMALLINT NOT NULL DEFAULT 1, + /** + If set to true, then cards of the special rank + will appear as different ranks depending on their suit: + The rank values touching the deceptive special rank are chosen consecutively (starting from smallest) + among all available ranks in the order of the suits of the variant, wrapping around if necessary. + If set, special_rank_ranks has to be set to 1 + */ + special_deceptive BOOLEAN NOT NULL DEFAULT FALSE, + CHECK (special_rank_ranks = 1 OR special_deceptive IS FALSE) ); CREATE INDEX variants_name_idx ON variants (name); diff --git a/variants.py b/variants.py index e720836..f89e829 100644 --- a/variants.py +++ b/variants.py @@ -78,7 +78,7 @@ class Variant: def __init__( self, name, clue_starved, throw_it_in_a_hole, alternating_clues, synesthesia, chimneys, funnels, no_color_clues, no_rank_clues, empty_color_clues, empty_rank_clues, odds_and_evens, up_or_down, - critical_fours, special_rank, special_rank_ranks, special_rank_colors, suits: List[Suit] + critical_fours, special_rank, special_rank_ranks, special_rank_colors, special_deceptive, suits: List[Suit] ): self.name = name self.clue_starved = clue_starved @@ -98,6 +98,7 @@ class Variant: self.special_rank = special_rank self.special_rank_ranks = special_rank_ranks self.special_rank_colors = special_rank_colors + self.special_deceptive = special_deceptive self.suits = suits self.colors = [] @@ -119,7 +120,7 @@ class Variant: "SELECT " "name, clue_starved, throw_it_in_a_hole, alternating_clues, synesthesia, chimneys, funnels, " "no_color_clues, no_rank_clues, empty_color_clues, empty_rank_clues, odds_and_evens, up_or_down," - "critical_fours, special_rank, special_rank_ranks, special_rank_colors " + "critical_fours, special_rank, special_rank_ranks, special_rank_colors, special_deceptive " "FROM variants WHERE id = %s", (var_id,) )