# alias: MaximalDouble # button-text: Maximal Double # gib-works: false # bba-works: true # auction-filter: Auction.....\n1H .* 2H +3D|1S .* 2S +3H # convention-card-ns: 21GF-SPECIALS # convention-card-ew: 21GF-GIB /*@chat --- Maximal Overcall Double: After we've bid and raised a major suit and they compete in the suit just under ours (the Maximal suit) we need to distinguish between a competitive raise and an invitational raise. The Maximal Double is the answer: • After 1!H (?) 2!H (3!D), 3!H is competitive and X is invitational • After 1!S (?) 2!S (3!H), 3!S is competitive and X is invitational The BBO Robots do NOT play this. https://www.nvba.org/novices/Robert_Todd/(195)+Maximal+Doubles.pdf @chat*/ # Add 1M - 3M inviting, add Maximal Doubles, kill Reverse Bergen, Kill Support 1N, kill Two-way game tries # Maximal Overcall Double dealer north #include "script/Total-Points-South" # Defines sTP # GIB opens 1N w/15-17 HCP or 15-16 and a 5-card major ntP = hcp(north) + shape(north,5xxx+x5xx) nt1 = shape(north, any 5332+any 4432+any 4333) and hcp(north)>14 and ntP<18 # GIB does not open with 5422 and a 5-card major # GIB does not open with 5422 and the strength to reverse nt2 = shape(north, any 5422-5xxx-x5xx) and hcp(north)>14 and hcp(north)<17 gibNT = nt1 or nt2 # North opens 1M S_ = spades(north)>4 and hearts(north)<5 and diamonds(north)<=5 and clubs(north)<=5 H_ = hearts(north)>4 and spades(north)<5 and diamonds(north)<=5 and clubs(north)<=5 n1M = (S_ or H_) and hcp(north)>11 and hcp(north)<22 and losers(north)>3 and losers(north)<8 and not gibNT nLP = S_ ? spades(north) - 4 : hearts(north) - 4 nTP = hcp(north) + nLP # Define East's Total Points -- discount short-suit points eSp = spades(east)<3 and hcp(east,spades)>1 ? 1 : 0 eHp = hearts(east)<3 and hcp(east,hearts)>1 ? 1 : 0 eDp = diamonds(east)<3 and hcp(east,diamonds)>1 ? 1 : 0 eCp = clubs(east)<3 and hcp(east,clubs)>1 ? 1 : 0 eTP = hcp(east) -eSp -eHp -eDp -eCp # Define East Takeout Double for West's max response eHCP = hcp(east,spades)<7 and hcp(east,hearts)<7 and hcp(east,diamonds)<7 and hcp(east,clubs)<7 // no concentration eHX = H_ and hearts(east)<3 and shape(east,any 5440 +any 5431 +any 5332 +any 4441 +any 4432 -5xxx) and hcp(east,hearts)==0 and hearts(west)>3 eSX = S_ and spades(east)<3 and shape(east,any 5440 +any 5431 +any 5332 +any 4441 +any 4432 -x5xx) and hcp(east,spades)==0 and diamonds(west)>4 eX = (eHX or eSX) and eHCP and eTP>11 # Define East overcalls in Maximal suit e2D = H_ and shape(east,xx5x +xx6x) and top3(east,diamonds)>1 e2H = S_ and shape(east,x5xx +x6xx) and top3(east,hearts)>1 eShape = shape(east,any 6322 + any 6331 +any 6430 +any 5332 +any 5431) eRange = hcp(east)>9 and eTP>11 and eTP<19 and controls(east)>2 // BBA requires HCP>12, I think eMaxOC = (e2D or e2H) and eShape and eRange and not eX # avoid other overcalls eWJS = shape(east,any 9xxx +any 8xxx +any 7xxx +any 6xxx) and hcp(east)<11 e2suits = shape(east,any 85xx +any 76xx + any 75xx +any 65xx +any 55xx) and eTP>8 HS = H_ and spades(east)>4 and eTP>5 HC = H_ and clubs(east)>4 and eTP>9 SD = S_ and diamonds(east)>4 and eTP>9 SH = S_ and hearts(east)>4 and eTP>9 ePass = not (eWJS or e2suits or HS or HC or SD or SH) # Define East bids eBids = eX or eMaxOC or ePass # Define South's fits: 3+, 4+, and 5+ sFit3 = S_ and spades(south)>2 hFit3 = H_ and hearts(south)>2 and spades(south)<4 fit3 = (sFit3 or hFit3) and spades(south)<5 sFit4 = S_ and spades(south)>3 hFit4 = H_ and hearts(south)>3 and spades(south)<4 fit4 = (sFit4 or hFit4) and spades(south)<5 sFit5 = S_ and spades(south)>4 hFit5 = H_ and hearts(south)>4 and spades(south)<4 fit5 = (sFit5 or hFit5) and spades(south)<5 # Define South's major suit raises # Preemptive raise 1M-?-4M -- 5+ cards; 9- HCP; 6+ total points PR = fit5 and hcp(south)<10 and sTP>5 # Free jump raise 1M-X-3M -- 4+ cards; 8- HCP; 7+ total points FJR = fit4 and hcp(south)<9 and sTP>6 and eMaxOC # Free Major raise 1M-X-2M -- 3+ cards; ; 6-10 total points FMR = fit3 and sTP>5 and sTP<12 and eMaxOC and not FJR # Limit raise 1M-P-3M -- 4+ cards; 10-12 total points LR = fit4 and sTP>9 and sTP<13 and ePass # Simple raise 1M-P-2M -- 3+ cards; 7-10 total points SR = fit3 and sTP>6 and sTP<11 and not shape(south,any 4333) and not LR # Define South's 2-level raise sRaise = (SR or FMR) and controls(south)>1 and not PR and shape(south,xxxx -any 7xxx -any 6xxx -any 4333) # Define West's Total Points -- discount short-suit points wSp = spades(west)<3 and hcp(west,spades)>1 ? 1 : 0 wHp = hearts(west)<3 and hcp(west,hearts)>1 ? 1 : 0 wDp = diamonds(west)<3 and hcp(west,diamonds)>1 ? 1 : 0 wCp = clubs(west)<3 and hcp(west,clubs)>1 ? 1 : 0 wTP = hcp(west) - wSp - wHp - wDp - wCp # Define West's raise of Maximal overcall wHR = H_ and shape(west,x3xx+x4xx) and hcp(west,hearts)>1 wDR = S_ and shape(west,xx3x+xx4x) and hcp(west,diamonds)>1 wRaise = eMaxOC and (wHR or wDR) and wTP>5 and wTP<11 and shape(west,xxxx -5xxx -x5xx -any 7xxx -any 6xxx) // avoid new suit # Define West's response to X // avoid preference to 4-card major wD = H_ and diamonds(west)>4 wH = S_ and hearts(west)>4 wRespToX = eX and (wD or wH) and shape(west,xxxx -any 76xx -any 75xx -any 65xx -any 55xx) and wTP>6 and wTP<11 # Define West's free bid of Maximal suit. wGD = H_ and top4(west,diamonds)>2 and shape(west,xx8x +xx7x +xx6x) wGH = S_ and top4(west,hearts)>2 and shape(west,x8xx +x7xx +x6xx) wFreeBid = ePass and (wGD or wGH) and shape(west,xxxx -any 85xx -any 76xx -any 75xx -any 66xx -any 65xx) and wTP>10 and wTP<16 # Define West's 3 of the Maximal suit w3Max = (wRaise or wRespToX or wFreeBid) #include "script/Leveling" nMin = nTP<15 nMax = nTP>14 levMax = nMax and keep levMin = nMin and keep levR = wRaise and keep67 levX = wRespToX and keep levF = wFreeBid and keep25 levelTheDeal = (levR or levX or levF) # Now do it n1M and eBids and sRaise and w3Max and levelTheDeal produce 5000 action average "free bid " 100 * wFreeBid, average "raise " 100 * wRaise, average "response to X " 100 * wRespToX, average "north 12-14 TP " 100 * nMin, average "north 15+ TP " 100 * nMax, frequency "HCP North " (nTP, 11, 23),