BML - Markup language for Full Disclosure A way to create Full Disclosure (bss) files easier
#22
Posted 2012-May-14, 15:40
nige1, on 2012-May-12, 12:53, said:
- As well as a BML->BSS it would be useful to have a BSS -> BML program
- Then you could offer BML to BBO as an alternative to BSS. With automatic interconversion, BBO could allow members to use either format
- Later you could write conversion programs to HTML and WBF system-card format
- Allow WBF abbreviations (e.g. ART for Artificial, INV for invitational) with automatic expansion on display.
- Allow generic descriptions (e.g. for raises, splinters) so a program could use BML to automatically bid hands (c.f. COBRA).
- OK OK yes I know: If you put a broom up your arse, you could also sweep the floor
Glad you like it!
BSS->BML might be possible. However BML does not currently use some of the features of BSS when converting, so this would need to be fixed in that case.
I have actually thought about doing a HTML converter, but I'm not quite sure how such a page would look. I wont write a converter to the WBF system-card format since I do not use these cards. But if anyone else wants to do it, feel free!
The abbreviations which you suggest are included and should show up on screen on BBO since they're a part of the BSS file format. Check the manual for a full list of abbreviations.
I don't know how these generic descriptions would work, and they would probably not work on conversion to BSS (which is the main purpose for BML as of now). I had an idea of a feature where you could define a sequence which would be used at all times except when defined elsewhere. Like 4NT as RKCB for instance. This is not supported by BSS, so these sequences would be copied into all other sequences in the BSS-file (making the file quite big).
#23
Posted 2012-May-28, 00:41
Works fine, but if I change
D 15+
1D ART. 0-4 Bust
to
D 15+
1STEP ART. 0-4 Bust
It won't compile
d:\PlaceIHavethings\>bml2bss.exe
What's the name of the file you want to convert?
SCM.bml
Traceback (most recent call last):
File "bml2bss.py", line 302, in <module>
parse(i[:-1]) # skip the \n
File "bml2bss.py", line 182, in parse
include(row, _indentation)
File "bml2bss.py", line 140, in include
parse(' ' * indentation + i)
File "bml2bss.py", line 189, in parse
bid = stepBid(_lastbid, bid)
File "bml2bss.py", line 96, in stepBid
denomination = int(bid[0])
ValueError: invalid literal for int() with base 10: 'C'
I can email you a copy of all the files involved.
Note for reproducing: It only seems to happen if I use the step command after a double - as seen in the file above, the step is fine after a bid of a suit! This took me some time to figure out - what a bug! I think it's simply that STEP looks for the root bid, gets double and breaks.
Thanks again for all your work
Also, if anyone wants it, I've developed a bunch of modules for this
Canape Overcalls - Mark Abraham's Catomult overcalls
Overcall Structure - Fout's overcall structure
Myxos - Myxomitis twos
1416NT - 14-16 NT response structure
Majors
ShortClub
UnbalancedDiamond
Inquiry's Equality Transfer Advances
The 1CDHS openings are based on stuff from the forums
And one included Ekrens 2H, Multi 2D, Dutch 2C and a random 2S. Nothing is of course perfect, but if anyone wants them email me
Edit: Tip for authors, if you write a COPY/END copy block, then import it into your main BML file, your other bml files can refer to it - so I have my variation of XYZ in a copy block and then my 1C and 1D structures just have INSERT TransferXYZ so I only need to update one place despite having it mentioned in lots of modules.
#24
Posted 2012-May-29, 18:29
Also, have you tested running your code example? I haven't used the disturbed/defensive features very much as I said, but I think something like
(1C); D 15+ 1D ART. 0-4 Bust
would be defined as the OPPONENTS showing 0-4 and a bust after they bid 1♦ after your double of their 1♣ opening. I may be wrong about this, but I think the correct code would be:
(1C); D 15+ P1D ART. 0-4 Bust
Its great to hear that you've written BML modules! Right now the interest for BML seems to be pretty limited, but it would be fun to do a website where people could post their modules and stuff
#25
Posted 2012-May-30, 01:41
Kungsgeten, on 2012-May-29, 18:29, said:
Also, have you tested running your code example? I haven't used the disturbed/defensive features very much as I said, but I think something like
would be defined as the OPPONENTS showing 0-4 and a bust after they bid 1♦ after your double of their 1♣ opening. I may be wrong about this, but I think the correct code would be:
I literally logged in to post about this, but I see you are ahead of me. Your solution doesn't quote work, either this:
1N 8-14 3 Suited takeout (P)-2C ART. Game Try (P)-2D To Play (P)-2H To Play (P)-2S To Play (P)-3D To Play (P)-3H To Play (P)-3S To Play (P)-2N Asking for 5 card suit (P)-3C Asking for 4 card major, Invitational+
or this
1N 8-14 3 Suited takeout (P) 2S ART. Game Try 2CDH To Play 3CDH To Play 2N Asking for 5 card suit 3S Asking for 4 card major, Invitational+
Work - the second option is better because (P)-2CDH doesn;t work.
#26
Posted 2012-June-28, 16:58
One thing I've noticed is that the parser does NOT accept lowercase letters in copy - paste procedures. Second, and kind of more importantly, it only allows me to use two variables. Is that deliberate? It seems sort of arbitrary.
COPY major_raise 2\X 6-9 hcps, 3 or 4 !\Xs. 2N ART. SLAM. Jacoby 2NT. 15+ hcps, 4+ !\Xs. 3C ART. RESPONSE. A singleton or void in !cs. 3D ART. RESPONSE. A singleton or void in !ds. 3\X ART. RESPONSE. 14+ hcps and a 6+ !\X suit. No side shortness. 3\Y ART. RESPONSE. A singleton or void in !ss. 3N ART. RESPONSE. 14+ hcps and exactly 5 trumps. No side shortness. 4C ART. RESPONSE. A 5 card !cs suit with 2 of the top 3 honors. 4D ART. RESPONSE. A 5 card !ds suit with 2 of the top 3 honors. 3C ART. INV. Limit raise, 9-11 points. Either 3 !\Xs w side shortness, or 4 without. 3D ART. ASK. Asks responder to describe his hand. 3\X ART. RESPONSE. Responder holds 4!\Xs and no side shortness. 3\Y ART. RESPONSE. Responder holds 3!\Xs and a void. 3N ART. ASK. Location of the void? 4C ART. RESPONSE. Void in !cs. 4D ART. RESPONSE. Void in !ds. 4\X ART. RESPONSE. Void in !\Ys. Opener may sign off here. 3N ART. RESPONSE. Singleton is !\Ys. 4C ART. RESPONSE. Singleton in !cs. 4D ART. RESPONSE. Singleton in !ds. 3\X TP. To sign off. 4\X TP. To sign off. 1STEP ART. SLAM. Kickback 1430. 4N 3D ART. GF. Limit raise, 9-11 points with 4 trumps and a side shortness. 3\X ART. ASK. Opener inquires about responder's feature. 3\Y ART. RESPONSE. Responder holds a void. 3N ART. ASK. What void, partner? 4C ART. RESPONSE. Void in !cs. 4D ART. RESPONSE. Void in !ds. 4\X ART. RESPONSE. Void in !\Ys. Opener may sign off here. 1STEP ART. SLAM. Kickback 1430. 3N ART. RESPONSE. Singleton is !\Ys. 4C ART. RESPONSE. Singleton in !cs. 4D ART. RESPONSE. Singleton in !ds. 4\X TP. Opener signs off. 1STEP ART. SLAM. Kickback 1430. 4\X TP. NAT. Sign off. 1STEP ART. SLAM. Kickback 1430. 3\X ART. INV. Exactly 4 !\Xs, but fewer than 6 points. 3\Y ART. GF. 12-15 points, 4+ !\Xs, and a concealed splinter. 3N ART. ASK. Where is your shortness? 4C ART. RESPONSE. !c singleton or void. 4D ART. RESPONSE. !d singleton or void. 4\X ART. RESPONSE. !\Y singleton or void. 1STEP ART. SLAM. Kickback 1430. 4\X TP. Sign off. 1STEP ASK. Kickback 1430. 4C ART. GF. 12-15 points, 4+ !\Xs, a balanced hand and 2 of the top 3 trumps, or 5 trumps to the A or K. 4D ART. GF. 12-15 points, 4+ !\Xs, a balanced hand and any lesser trump holding. 4\X ART. TP. Fast Arrival. 5 trumps, less than 6 hcp, no outside controls. ENDCOPY
That's my major raise structure, which is pretty simple - X and Y is fine, but M and m produce gibberish in the bss files. As do x and y - they have to be capital. I can accomplish most anything with two variables and step commands, but when I introduce interference it may get nasty.
#27
Posted 2012-June-30, 09:16
Not sure if people are using it. I use it myself and actually haven't posted the last update I made. Could you post the "code" above but in a code snippet block so that I can see the indentation? Glad to see that people are posting errors and suggestions on improvements!
I am not sure that you can use variables in the "bid" section, but I haven't tried it. By bid section I mean the first two (usually) characters of a line:
3\X Support and shortness in \Xs
Not sure the "3\X" part above works? I'll check it out.
#28
Posted 2012-July-02, 14:45
But the above works - at least the programming side of it does. I have to iron out the logic a bit so that my RCK_KICKBACK procedure can be launched from within it, and so spades works completely. I may not be able to do the former without some kind of command structure within bml, so I may learn me some python and alter the source a bit, if I have your permission. If I come up with anything useful I'll share it with you.
It's a great timesaver as it is.
#29
Posted 2012-July-03, 23:36
Thanks for the software bml to bss. It works fine and I had converted my bidding system to bml format.
I splitted my file into many bml files: OpenTable.bml, NormalBids.bml, 1M_raise.bml, 2NT.bml, 2C.bml....., then I create a content file named my system, use "INCLUDE" command to load all these bml files.
It worked fine, I like it very much.
But a problem in open seat(1 2 3 4) : In bidedit.exe of BBO, I can define open seats & VULs. Because some open bids rely on the seat and VULs. For example, open 2H in 1 2 seat is different from 3 or 4 seat, and it's response of 2NT have different meanings.
I tried it like this:
2S-(P); 2N Ogust (P)-2S-(P); 2N Ogust P-(P)-2S-(P); 2N ASK. Asking for short suit (P)-P-(P)-2S-(P); 2N ASK. Asking for short
But when I converted to bss file, only 1 2S open bid.
Can you give me some advice?
#30
Posted 2012-July-04, 06:24
chuanru, on 2012-July-03, 23:36, said:
Thanks for the software bml to bss. It works fine and I had converted my bidding system to bml format.
I splitted my file into many bml files: OpenTable.bml, NormalBids.bml, 1M_raise.bml, 2NT.bml, 2C.bml....., then I create a content file named my system, use "INCLUDE" command to load all these bml files.
It worked fine, I like it very much.
But a problem in open seat(1 2 3 4) : In bidedit.exe of BBO, I can define open seats & VULs. Because some open bids rely on the seat and VULs. For example, open 2H in 1 2 seat is different from 3 or 4 seat, and it's response of 2NT have different meanings.
I tried it like this:
2S-(P); 2N Ogust (P)-2S-(P); 2N Ogust P-(P)-2S-(P); 2N ASK. Asking for short suit (P)-P-(P)-2S-(P); 2N ASK. Asking for short
But when I converted to bss file, only 1 2S open bid.
Can you give me some advice?
I'm not an expert, but the way I was planning on handling that was to go into the bss files when I'm done and use regular expressions to alter the YNNNNN=305 or whatever parts of the bidding lines, which I think indicate seat and vulnerability.
#31
Posted 2012-July-05, 01:40
ColdCrayon, on 2012-July-04, 06:24, said:
Thanks to your reply. I analysed the structure of BSS file yestoday.
For example: 351C=NYYYYYY2484+!c
3 = seat(0:Any 1: 1 2:2 3:3 4:4 5:1 or 2 6:3 or 4)
5 = Vul (0 :Any 1:None Vul 2:Only We Vul 3:Only They Vul 4:Both Vul 5:We not Vul 6:We Vul 7: They not Vul 8:They Vul)
NYYYYYY = Artificial(Y or N),Possible Outcomes(Y or N):Clubs, Diamons, Hearts, Spades, Notrump, Defend undoubled.
248:
2 = Disposition
4 = min length
8 = max length
4+!c = bid describe: 4+♣
I want to create them use bml2bss.exe , not manually. Hope the author of the software can support this.
#32
Posted 2012-July-05, 10:22
chuanru, on 2012-July-05, 01:40, said:
For example: 351C=NYYYYYY2484+!c
3 = seat(0:Any 1: 1 2:2 3:3 4:4 5:1 or 2 6:3 or 4)
5 = Vul (0 :Any 1:None Vul 2:Only We Vul 3:Only They Vul 4:Both Vul 5:We not Vul 6:We Vul 7: They not Vul 8:They Vul)
NYYYYYY = Artificial(Y or N),Possible Outcomes(Y or N):Clubs, Diamons, Hearts, Spades, Notrump, Defend undoubled.
248:
2 = Disposition
4 = min length
8 = max length
4+!c = bid describe: 4+♣
I want to create them use bml2bss.exe , not manually. Hope the author of the software can support this.
Thanks! That's a huge help.
My problem is figuring out a way to make Blackwood into a file that my 2/1 can read on the bbo server, since if I put the copy/paste into the file itself, each line adds about 20k to the overall size, and I haven't even gotten to the king ask, or void showing, or things like that - just the ace asking and third round followups. I may end up having to make a different one for each major, since it accepts arguments right now (/X is for the trump major, and /Y is for the other major) which is fine for bml, but bss doesn't work like that.
Minorwood is no big deal - it's not called in a million places the way RKC is from the majors, at least not in my system. And there are certain times when 4N is a keycard ask, and others where it's a cuebid denying a control in the next highest suit. Ugh.
I will finish this - I will have a complex FD file that describes my whole system and doesn't drop you off at the three level as soon as a trump is established. Even if I have to dick around with the source code to do it.
#33
Posted 2012-July-18, 18:23
ColdCrayon, on 2012-July-02, 14:45, said:
If you do something useful, please share it. You are free to modify the source code, but please do not release it. I do not consider BML finished, and releasing it here on the forum is sort of a beta test It will be released as open source/free software in some way.
chuanru, on 2012-July-03, 23:36, said:
Thanks for the software bml to bss. It works fine and I had converted my bidding system to bml format.
I splitted my file into many bml files: OpenTable.bml, NormalBids.bml, 1M_raise.bml, 2NT.bml, 2C.bml....., then I create a content file named my system, use "INCLUDE" command to load all these bml files.
It worked fine, I like it very much.
But a problem in open seat(1 2 3 4) : In bidedit.exe of BBO, I can define open seats & VULs. Because some open bids rely on the seat and VULs. For example, open 2H in 1 2 seat is different from 3 or 4 seat, and it's response of 2NT have different meanings.
I tried it like this:
2S-(P); 2N Ogust (P)-2S-(P); 2N Ogust P-(P)-2S-(P); 2N ASK. Asking for short suit (P)-P-(P)-2S-(P); 2N ASK. Asking for short
But when I converted to bss file, only 1 2S open bid.
Can you give me some advice?
Yes, you can change the position and vulnerability in BML. The default is that position and vulnerability does not matter. However you can specify the position and or vulnerability for a specific bid/sequence, just as in bidedit. However it seems that I've forgotten to write about it in the manual, will fix on next update. For now, here's how you do it:
2S; pos=12 2N Ogust 2S; pos=34 ASK. Asking for short
To define a position, somewhere in the definition of the bid write "pos=" directly followed by a number. 0 is any position (the default), 1, 2, 3 or 4 corresponds to those positions, 12 is first or second seat, 34 is third or fourth seat. You can not use other combinations, since BSS does not support these.
To define the vulnerability, you write "vul=" directly followed by a combination of two letters. The first letter represents if we are vulnerable and the second letter represents if they are vulnerable. The letters can be Y (yes), N (no) or 0 (does not matter). The default is 00. In a system where you open mini no trump when not vulnerable you could use something like:
1N; 10-12 balanced vul=N0 1N; 14-16 balanced vul=Y0
chuanru, on 2012-July-05, 01:40, said:
For example: 351C=NYYYYYY2484+!c
3 = seat(0:Any 1: 1 2:2 3:3 4:4 5:1 or 2 6:3 or 4)
5 = Vul (0 :Any 1:None Vul 2:Only We Vul 3:Only They Vul 4:Both Vul 5:We not Vul 6:We Vul 7: They not Vul 8:They Vul)
NYYYYYY = Artificial(Y or N),Possible Outcomes(Y or N):Clubs, Diamons, Hearts, Spades, Notrump, Defend undoubled.
248:
2 = Disposition
4 = min length
8 = max length
4+!c = bid describe: 4+♣
I want to create them use bml2bss.exe , not manually. Hope the author of the software can support this.
I was thinking about including support in BML for possible outcomes and max/min-length originally. The reason why I did not was because I thought the BBO implementation of it looked ugly (it's usually nicer to just write your own description of what the bid means). I also wasn't quite sure of the best way to implement this in the BML syntax. One of the main design goals of BML is making it easy to write and easy to read.
ColdCrayon, on 2012-July-05, 10:22, said:
My problem is figuring out a way to make Blackwood into a file that my 2/1 can read on the bbo server, since if I put the copy/paste into the file itself, each line adds about 20k to the overall size, and I haven't even gotten to the king ask, or void showing, or things like that - just the ace asking and third round followups. I may end up having to make a different one for each major, since it accepts arguments right now (/X is for the trump major, and /Y is for the other major) which is fine for bml, but bss doesn't work like that.
Minorwood is no big deal - it's not called in a million places the way RKC is from the majors, at least not in my system. And there are certain times when 4N is a keycard ask, and others where it's a cuebid denying a control in the next highest suit. Ugh.
I will finish this - I will have a complex FD file that describes my whole system and doesn't drop you off at the three level as soon as a trump is established. Even if I have to dick around with the source code to do it.
It would be great if BSS supported conventions like these, but I do not think it does (at least not writing your own) I've thought about some way to make it easier to add more general conventions like Blackwood to BML, but even if I did all it would do would be to write a lot of stuff into the BSS file, so that file would still be big.
#34
Posted 2012-July-19, 03:41
ColdCrayon, on 2012-June-28, 16:58, said:
One thing I've noticed is that the parser does NOT accept lowercase letters in copy - paste procedures. Second, and kind of more importantly, it only allows me to use two variables. Is that deliberate? It seems sort of arbitrary.
A lot of code
That's my major raise structure, which is pretty simple - X and Y is fine, but M and m produce gibberish in the bss files. As do x and y - they have to be capital. I can accomplish most anything with two variables and step commands, but when I introduce interference it may get nasty.
I tried your example and it works fine. I also tried using more "variables" (I like your approach of using a backslash before the variable name) and there was no problems. Here's the BML file I used:
Major raise test Major raises according to ColdCrayon COPY major_raise 2\X 6-9 hcps, 3 or 4 !\Xs. \M and \m 2N ART. SLAM. Jacoby 2NT. 15+ hcps, 4+ !\Xs. 3C ART. RESPONSE. A singleton or void in !cs. 3D ART. RESPONSE. A singleton or void in !ds. 3\X ART. RESPONSE. 14+ hcps and a 6+ !\X suit. No side shortness. 3\Y ART. RESPONSE. A singleton or void in !\Ys. 3N ART. RESPONSE. 14+ hcps and exactly 5 trumps. No side shortness. 4C ART. RESPONSE. A 5 card !cs suit with 2 of the top 3 honors. 4D ART. RESPONSE. A 5 card !ds suit with 2 of the top 3 honors. 3C ART. INV. Limit raise, 9-11 points. Either 3 !\Xs w side shortness, or 4 without. 3D ART. ASK. Asks responder to describe his hand. 3\X ART. RESPONSE. Responder holds 4!\Xs and no side shortness. 3\Y ART. RESPONSE. Responder holds 3!\Xs and a void. 3N ART. ASK. Location of the void? 4C ART. RESPONSE. Void in !cs. 4D ART. RESPONSE. Void in !ds. 4\X ART. RESPONSE. Void in !\Ys. Opener may sign off here. 3N ART. RESPONSE. Singleton is !\Ys. 4C ART. RESPONSE. Singleton in !cs. 4D ART. RESPONSE. Singleton in !ds. 3\X TP. To sign off. 4\X TP. To sign off. 1STEP ART. SLAM. Kickback 1430. 4N 3D ART. GF. Limit raise, 9-11 points with 4 trumps and a side shortness. 3\X ART. ASK. Opener inquires about responder's feature. 3\Y ART. RESPONSE. Responder holds a void. 3N ART. ASK. What void, partner? 4C ART. RESPONSE. Void in !cs. 4D ART. RESPONSE. Void in !ds. 4\X ART. RESPONSE. Void in !\Ys. Opener may sign off here. 1STEP ART. SLAM. Kickback 1430. 3N ART. RESPONSE. Singleton is !\Ys. 4C ART. RESPONSE. Singleton in !cs. 4D ART. RESPONSE. Singleton in !ds. 4\X TP. Opener signs off. 1STEP ART. SLAM. Kickback 1430. 4\X TP. NAT. Sign off. 1STEP ART. SLAM. Kickback 1430. 3\X ART. INV. Exactly 4 !\Xs, but fewer than 6 points. 3\Y ART. GF. 12-15 points, 4+ !\Xs, and a concealed splinter. 3N ART. ASK. Where is your shortness? 4C ART. RESPONSE. !c singleton or void. 4D ART. RESPONSE. !d singleton or void. 4\X ART. RESPONSE. !\Y singleton or void. 1STEP ART. SLAM. Kickback 1430. 4\X TP. Sign off. 1STEP ASK. Kickback 1430. 4C ART. GF. 12-15 points, 4+ !\Xs, a balanced hand and 2 of the top 3 trumps, or 5 trumps to the A or K. 4D ART. GF. 12-15 points, 4+ !\Xs, a balanced hand and any lesser trump holding. 4\X ART. TP. Fast Arrival. 5 trumps, less than 6 hcp, no outside controls. ENDCOPY 1h; 5+ PASTE major_raise \X=h \Y=s \M=test1 \m=test2
#36
Posted 2012-July-20, 08:42
Kungsgeten, on 2012-July-19, 17:22, said:
If you haven't used positions (now called "seat" instead) or vulnerability (which you probably haven't, since I forgot to include it in the manual), old BML files should still work, I think.
Ah, exciting! I'm going to try it out now.
#37
Posted 2012-July-20, 10:54
COPY RKC_4NT_Module 4N Roman Keycard Blackwood for !\X 5c 4 or 1 keycards of 5 5d 3 or 0 keycards of 5 5h 2 keycards without Q of !\X 5s 2 keycards with Q of !\X 5N even number of keycards and a useful void 6\X Odd number of keycards and void in higher suit 6\Y undefined 6c Odd number of keycards and void in !c 6d Odd number of keycards and void in !d 6h Odd number of keycards and void in !h ENDCOPY PASTE RKC_4NT_Module \X=C \Y=dhs
Is this the best way to define this?
It would be useful if there would be some kind of conditional structure in bml.
Like:
COPY RKC_4NT_Module 4N Roman Keycard Blackwood for !\X 5c 4 or 1 keycards of 5 5d 3 or 0 keycards of 5 5h 2 keycards without Q of !\X 5s 2 keycards with Q of !\X 5N even number of keycards and a useful void IF \X=C THEN 6\X Odd number of keycards and void in higher suit FI IF \X=D THEN 6c Odd number of keycards and void in !c 6\X Odd number of keycards and void in higher suit FI IF \X=H THEN 6c Odd number of keycards and void in !c 6d Odd number of keycards and void in !d 6\X Odd number of keycards and void in higher suit FI IF \X=S THEN 6c Odd number of keycards and void in !c 6d Odd number of keycards and void in !d 6h Odd number of keycards and void in !h FI ENDCOPY
#38
Posted 2012-July-20, 11:36
kgr, on 2012-July-20, 10:54, said:
It would be useful if there would be some kind of conditional structure in bml.
Like:
....
There aren't any IFs in BML at present, but you can get a lot out of just using variables.
I don't have my RKC module anymore, but it's easy enough to rewrite - it basically worked like this:
PASTE RKC_1430 \X=H \Y=S // \X is the trump, \Y is the other major. COPY RKC_1430 4H SLAM. RKC 1430. 5C ABR. 1 or 4 Keycards. 5D ASK. Q!\X? 5\X ABR. No. 5\Y ABR. Yes, with a side king in \Y. 5N ABR. Yes, but no side-suit king. Shows at least one 3rd-round control. 6\X SO. To play. 6C ASK. Must have all 5 keycards. Grand-slam try. Bid 7\X if 3rd-round control is in !c, otherwise, sign off in 6\X. 6\X SO. To play. 7\X SO. To play. 6D ASK. Must have all 5 keycards. Grand-slam try. Bid 7\X if 3rd-round control in !d, otherwise, sign off in 6\X. 6\X SO. To play. 7\X SO. To play. 6\Y ASK. Must have all 5 keycards. Grand-slam try. Bid 7\X if 3rd-round control in !\Y, otherwise sign off in 6\X. 6\X SO. To play. 7\X SO. To play. 6C ABR. Yes, with king of !c. Denies K!\X. 6D ABR. Yes, with K!d. Denies K!\X or K!c. 6\X SO. Yes, but no outside king or 3rd-round control. To play. etc etc. ENDCOPY
Then for 5D 0 or 3, you'd have a structure really similar to the above, but you wouldn't be able to deny the queen below the 6 level.
This is how I used to have it set up before I switched to kickback, which is a lot trickier. Anyway, the thing to keep in mind is that BML does not care what order you put your lines in, so you can have 6H defined before 5S, and vice-versa. The only problem with the above code is the 6\Y Grand-slam try - since Spades are the other major, you'll have it asking for a third round control BEYOND 6H, which is the point of no return. I had some line in there like "Must have all 5 keycards and not be beyond 6\X." As long as you don't mind that, you can use the whole structure for the void showing, the king asks, etc.
#39
Posted 2012-July-20, 13:55
Quote
Seems pretty good. Smart move with the \Y as undefined Altough you could use the brand new !SUIT variable, like this:
COPY RKC_4NT_Module 4N Roman Keycard Blackwood for !\X 5c 4 or 1 keycards of 5 5d 3 or 0 keycards of 5 5h 2 keycards without Q of !\X 5s 2 keycards with Q of !\X 5N even number of keycards and a useful void 6\X Odd number of keycards and void in higher suit 6\Y undefined 6cdh Odd number of keycards and void in !SUIT ENDCOPY PASTE RKC_4NT_Module \X=C \Y=dhs
Quote
I like the idea. I'll see what I can do.
Also ColdCrayon, I now understand what you meant by not be able to use copy/paste arguments in lowercase. This is only true if you use them in replacement for the bid (they were not intended for this, it is sort of a "bug gone into feature" thing). This is because bids are automatically converted to uppercase. It should be pretty easy to fix (they can be converted at a later stage), I'll see what I can do about it.
#40
Posted 2012-July-20, 16:55
Kungsgeten, on 2012-July-20, 13:55, said:
Ah, okay, now it makes perfect sense.