# alias: ResponsiveDouble # button-text: Responsive Double # gib-works: false # bba-works: true # auction-filter: Note....Responsive # curate: kind=bidding # convention-card-ns: 21GF-GIB # convention-card-ew: 21GF-GIB /*@chat --- Responsive Double LHO Opens, Partner Doubles, RHO raises, and you make Responsive Double, showing both majors if LHO opened a minor, otherwise, the other major and 3+ cards in each minor. 4NT is Roman Keycard Blackwood (0314) with a trump suit agreed, or quantitative (inviting 6NT) in a notrump auction. Keycard responses: • 5!C = 0 or 3 keycards • 5!D = 1 or 4 • 5!H = 2 without the trump queen • 5!S = 2 with the trump queen @chat*/ dealer west #include "script/TP" # Defines tpWest, tpNorth, tpEast, tpSouth # Predict West's Opening suit s = spades(west) h = hearts(west) d = diamonds(west) c = clubs(west) oS = s>4 and s>=h and s>=d and s>=c oH = not oS and h>4 and h>=d and h>=c oD = not (oS or oH) and ((d>3 and d>=c) or c<3) oC = not (oS or oH or oD) westSuit = (oS or oH or oD or oC) # Define East's raise. Support thresholds for EPBot to raise after the takeout double: # MAJOR: 3+ (>2) — a 3-card single raise to 2M is common; 4+ can also jump to 3M. Both raise # levels are responsive-double auctions for South and are captured by the auction-filter. # MINOR: 5+ (>4, see eD/eC) — raises to 2m with 5, JUMPS to 3m with 6+ (EPBot won't raise on 3-4). eS = oS and spades(east) >2 and hcp(east,spades) >1 and spades(north)<3 eH = oH and hearts(east) >2 and hcp(east,hearts) >1 and hearts(north)<3 # Minor raise: East needs 5+ support to raise a minor after the double — EPBot passes/bids a major # with 3-4, raises to 2m with exactly 5, and JUMPS to 3m with 6+. Both (1m) X 2m X and (1m) X 3m X # are responsive-double auctions, so accept 5+ here and let the filter take both raise levels. eD = oD and diamonds(east)>4 and hcp(east,diamonds)>2 and spades(east)<4 and hearts(east)<4 and diamonds(north)<3 eC = oC and clubs(east) >4 and hcp(east,clubs) >3 and spades(east)<4 and hearts(east)<4 and clubs(north)<3 # East raises eastRaises = (eS or eH or eD or eC) and hcp(east)>5 and tpEast<10 # Major opened: other major ==4, both minors 3+. Minor opened: both majors ==4, other minor 3+. # Require South SHORT (singleton/void) in opener's suit: that shortness both makes the responsive # double clear bridge and is what BBA/EPBot needs to actually make the double (a doubleton in # opener's suit and it passes and waits for partner to reopen). # North EXACTLY 2 in opener's suit (was <3): the textbook takeout-double doubleton. Since South is # forced singleton (above) and E/W fit = 13 - North - South, pinning North to 2 makes every E/W fit # a clean 10 and removes the 11-card fits that North's 0-1 lengths produced (yield unchanged, ~95). dS = oS and spades(north)==2 and hearts(south)==4 and diamonds(south)>2 and clubs(south)>2 and hcp(south,spades)==0 and spades(south)<2 dH = oH and hearts(north)==2 and spades(south)==4 and diamonds(south)>2 and clubs(south)>2 and hcp(south,hearts)==0 and hearts(south)<2 dD = oD and diamonds(north)==2 and spades(south)==4 and hearts(south)==4 and clubs(south)>2 and hcp(south,diamonds)==0 and diamonds(south)<2 dC = oC and clubs(north)==2 and spades(south)==4 and hearts(south)==4 and diamonds(south)>2 and hcp(south,clubs)==0 and clubs(south)<2 southSuits = dS or dH or dD or dC # NOTE: do NOT cap West's suit length. West's long suit is what creates South's shortness in # opener's suit, and without it EPBot won't make the responsive double at all (empirically 0). # We generate a large pool of genuine responsive doubles here and CURATE toward the competitive # (part-score / NS-declaring) boards downstream, rather than constraining the point balance up front. westOpens = hcp(west)>10 and tpWest>11 and hcp(west)<17 northDoubles = hcp(north)>11 and shape(north,any 4432 +any 4441 +any 5440 -5xxx -x5xx) southDoubles = tpSouth>8 and southSuits ##### Now do it ##### westOpens and northDoubles and eastRaises and southDoubles produce 30 action average "West HCP " hcp(west), average "East HCP " hcp(east), average "North HCP " hcp(north), average "South HCP " hcp(south), average "EW combined " hcp(west)+hcp(east), average "NS combined " hcp(north)+hcp(south), average "open Spades %" 100*oS, average "open Hearts %" 100*oH, average "open Diamond%" 100*oD, average "open Clubs %" 100*oC, frequency "EW combined HCP" (hcp(west)+hcp(east), 14, 24), frequency "NS combined HCP" (hcp(north)+hcp(south), 16, 28), frequency "West opened-suit length" (oS*spades(west)+oH*hearts(west)+oD*diamonds(west)+oC*clubs(west), 4, 7)