~ubuntu-branches/ubuntu/oneiric/gnome-games/oneiric-updates

« back to all changes in this revision

Viewing changes to aisleriot/rules/union_square.scm

  • Committer: Package Import Robot
  • Author(s): Jeremy Bicha
  • Date: 2011-07-21 04:22:50 UTC
  • mfrom: (1.1.93)
  • Revision ID: package-import@ubuntu.com-20110721042250-far722bxogjk1rhi
Tags: 1:3.1.3-0ubuntu1
* New upstream release
  - Aisleriot was split out of gnome-games into its own module.
  - Gnotravex was ported to GSettings.
  - Sudoku was ported to PyGObject/GTK3 by John Stowers.
* debian/aisleriot*: Dropped
* debian/control
  - Drop aisleriot package
  - Recommend aisleriot
  - Disable lightsoff & swell-foop as they're not ready yet
  - Re-enable gnome-sudoku
  - Use python-gobject instead of python-gtk2
  - Don't use python-launchpad-integration as it doesn't work with pygi yet
  - Switch to dh_python2 (LP: #788514)
  - Drop old pre-Lucid conflicts with gnome-cards-data & gnome-games-data
  - Drop obsolete build-depends: check, dpkg-dev, guile-1.8, lsb-release,
    rarian-compat, & scrollkeeper
  - Use ${gir:Depends}
* debian/copyright: Drop aisleriot & blackjack entries
* debian/glchess.install: Drop gnome-gnuchess
* debian/gnome-games-common.install: Drop aisleriot entries
* debian/gnome-sudoku.install: Install gconf schema
* debian/gnotravex.install: Install GSettings schema
* debian/rules
  - Clean up configure flags
  - Switch to dh_python2
* debian/watch: Watch for .bz2
* debian/patches/01_lpi.patch: Refreshed
* debian/patches/02_desktop-path.patch: Removed aisleriot references
* debian/patches/03_add-appinstall-keywords.patch
  - Add keywords to make searching for the games easier in Software Center

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
; AisleRiot - union_square.scm
2
 
; Copyright (C) 1999 Rosanna Yuen <rwsy@mit.edu>
3
 
;
4
 
; This program is free software: you can redistribute it and/or modify
5
 
; it under the terms of the GNU General Public License as published by
6
 
; the Free Software Foundation, either version 3 of the License, or
7
 
; (at your option) any later version.
8
 
;
9
 
; This program is distributed in the hope that it will be useful,
10
 
; but WITHOUT ANY WARRANTY; without even the implied warranty of
11
 
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
 
; GNU General Public License for more details.
13
 
;
14
 
; You should have received a copy of the GNU General Public License
15
 
; along with this program.  If not, see <http://www.gnu.org/licenses/>.
16
 
 
17
 
(define (new-game)
18
 
  (initialize-playing-area)
19
 
  (set-ace-low)
20
 
  (make-standard-double-deck)
21
 
  (shuffle-deck)
22
 
 
23
 
  (add-normal-slot DECK)
24
 
  (add-normal-slot '())
25
 
 
26
 
  (add-blank-slot)
27
 
 
28
 
  (add-partially-extended-slot '() right 2)
29
 
  (add-partially-extended-slot '() right 2)
30
 
  (add-partially-extended-slot '() right 2)
31
 
  (add-partially-extended-slot '() right 2)
32
 
 
33
 
  (add-blank-slot)
34
 
 
35
 
  (add-partially-extended-slot '() right 2)
36
 
 
37
 
  (add-carriage-return-slot)
38
 
  (add-blank-slot)
39
 
  (add-blank-slot)
40
 
  (add-blank-slot)
41
 
 
42
 
  (add-partially-extended-slot '() right 2)
43
 
  (add-partially-extended-slot '() right 2)
44
 
  (add-partially-extended-slot '() right 2)
45
 
  (add-partially-extended-slot '() right 2)
46
 
 
47
 
  (add-blank-slot)
48
 
 
49
 
  (add-partially-extended-slot '() right 2)
50
 
 
51
 
  (add-carriage-return-slot)
52
 
  (add-blank-slot)
53
 
  (add-blank-slot)
54
 
  (add-blank-slot)
55
 
 
56
 
  (add-partially-extended-slot '() right 2)
57
 
  (add-partially-extended-slot '() right 2)
58
 
  (add-partially-extended-slot '() right 2)
59
 
  (add-partially-extended-slot '() right 2)
60
 
 
61
 
  (add-blank-slot)
62
 
 
63
 
  (add-partially-extended-slot '() right 2)
64
 
  (add-carriage-return-slot)
65
 
  (add-blank-slot)
66
 
  (add-blank-slot)
67
 
  (add-blank-slot)
68
 
 
69
 
  (add-partially-extended-slot '() right 2)
70
 
  (add-partially-extended-slot '() right 2)
71
 
  (add-partially-extended-slot '() right 2)
72
 
  (add-partially-extended-slot '() right 2)
73
 
 
74
 
  (add-blank-slot)
75
 
 
76
 
  (add-partially-extended-slot '() right 2)
77
 
 
78
 
  (deal-cards-face-up 0 '(2 3 4 5 7 8 9 10 12 13 14 15 17 18 19 20))
79
 
 
80
 
  (give-status-message)
81
 
 
82
 
  (list 10 4)
83
 
)
84
 
 
85
 
(define (give-status-message)
86
 
  (set-statusbar-message (get-stock-no-string)))
87
 
 
88
 
(define (get-stock-no-string)
89
 
  (string-append (_"Stock left:") " " 
90
 
                 (number->string (length (get-cards 0)))))
91
 
 
92
 
 
93
 
(define (button-pressed slot-id card-list)
94
 
  (and (not (empty-slot? slot-id))
95
 
       (is-visible? (car card-list))
96
 
       (= (length card-list) 1)
97
 
       (not (or (= slot-id 6)
98
 
                (= slot-id 11)
99
 
                (= slot-id 16)
100
 
                (= slot-id 21)))))
101
 
 
102
 
(define (to-foundation? card-list end-slot)
103
 
  (if (empty-slot? end-slot)
104
 
      (and (eq? (get-value (car card-list)) ace)
105
 
           (or (= end-slot 6)
106
 
               (empty-slot? 6)
107
 
               (not (eq? (get-suit (get-top-card 6))
108
 
                         (get-suit (car card-list)))))
109
 
           (or (= end-slot 11)
110
 
               (empty-slot? 11)
111
 
               (not (eq? (get-suit (get-top-card 11))
112
 
                         (get-suit (car card-list)))))
113
 
           (or (= end-slot 16)
114
 
               (empty-slot? 16)
115
 
               (not (eq? (get-suit (get-top-card 16))
116
 
                         (get-suit (car card-list)))))
117
 
           (or (= end-slot 21)
118
 
               (empty-slot? 21)
119
 
               (not (eq? (get-suit (get-top-card 21))
120
 
                         (get-suit (car card-list))))))
121
 
      (if (eq? (get-suit (get-top-card end-slot))
122
 
               (get-suit (car card-list)))
123
 
          (cond ((< (length (get-cards end-slot)) 13)
124
 
                 (= (+ 1 (get-value (get-top-card end-slot)))
125
 
                    (get-value (car card-list))))
126
 
                ((= (length (get-cards end-slot)) 13)
127
 
                 (= (get-value (car card-list)) 13))
128
 
                (#t
129
 
                 (= (get-value (get-top-card end-slot))
130
 
                    (+ 1 (get-value (car card-list))))))
131
 
          #f)))
132
 
 
133
 
(define (to-tableau? card-list end-slot)
134
 
  (if (empty-slot? end-slot)
135
 
      #t
136
 
      (if (eq? (get-suit (get-top-card end-slot))
137
 
               (get-suit (car card-list)))
138
 
          (cond ((= (length (get-cards end-slot)) 1)
139
 
                 (or (= (get-value (car card-list))
140
 
                        (+ 1 (get-value (get-top-card end-slot))))
141
 
                     (= (+ 1 (get-value (car card-list)))
142
 
                        (get-value (get-top-card end-slot)))))
143
 
                ((= (get-value (get-top-card end-slot))
144
 
                    (+ 1 (get-value (cadr (get-cards end-slot)))))
145
 
                 (= (get-value (car card-list))
146
 
                    (+ 1 (get-value (get-top-card end-slot)))))
147
 
                ((= (+ 1 (get-value (get-top-card end-slot)))
148
 
                    (get-value (cadr (get-cards end-slot))))
149
 
                 (= (+ 1 (get-value (car card-list)))
150
 
                    (get-value (get-top-card end-slot))))
151
 
                (#t #f))
152
 
          #f)))
153
 
 
154
 
(define (droppable? start-slot card-list end-slot)
155
 
  (cond ((or (= end-slot start-slot)
156
 
             (= end-slot 0)
157
 
             (= end-slot 1))
158
 
         #f)
159
 
        ((or (= end-slot 6)
160
 
             (= end-slot 11)
161
 
             (= end-slot 16)
162
 
             (= end-slot 21))
163
 
         (to-foundation? card-list end-slot))
164
 
        (#t
165
 
         (to-tableau? card-list end-slot))))
166
 
 
167
 
(define (button-released start-slot card-list end-slot)
168
 
  (and (droppable? start-slot card-list end-slot)
169
 
       (cond ((or (= end-slot 6)
170
 
                  (= end-slot 11)
171
 
                  (= end-slot 16)
172
 
                  (= end-slot 21))
173
 
              (and (move-n-cards! start-slot end-slot card-list)
174
 
                   (add-to-score! 1)))
175
 
             (#t
176
 
              (move-n-cards! start-slot end-slot card-list)))))
177
 
 
178
 
(define (button-clicked slot-id)
179
 
  (and (= slot-id 0)
180
 
       (not (empty-slot? 0))
181
 
       (deal-cards-face-up 0 '(1))))
182
 
 
183
 
(define (play-foundation-helper start-slot end-slots)
184
 
  (define card (get-top-card start-slot))
185
 
  (if (to-foundation? (list card) (car end-slots))
186
 
      (and (remove-card start-slot)
187
 
           (move-n-cards! start-slot (car end-slots) (list card))
188
 
           (add-to-score! 1))
189
 
      (if (eq? (cdr end-slots) '())
190
 
          #f
191
 
          (play-foundation-helper start-slot (cdr end-slots)))))
192
 
 
193
 
(define (button-double-clicked slot-id)
194
 
  (cond ((member slot-id '(1 2 3 4 5 7 8 9 10 12 13 14 15 17 18 19 20))
195
 
         (and (not (empty-slot? slot-id))
196
 
              (play-foundation-helper slot-id '(6 11 16 21))))
197
 
        ((member slot-id '(6 11 16 21))
198
 
         (autoplay-foundations))
199
 
        (#t #f)))
200
 
 
201
 
(define (autoplay-foundations)
202
 
  (define (autoplay-foundations-tail)
203
 
    (if (or-map button-double-clicked '(1 2 3 4 5 7 8 9 10 12 13 14 15 17 18 19 20))
204
 
        (delayed-call autoplay-foundations-tail)
205
 
        #t))
206
 
  (if (or-map button-double-clicked '(1 2 3 4 5 7 8 9 10 12 13 14 15 17 18 19 20))
207
 
      (autoplay-foundations-tail)
208
 
      #f))
209
 
 
210
 
(define (game-continuable)
211
 
  (give-status-message)
212
 
  (not (game-won)))
213
 
 
214
 
(define (game-won)
215
 
  (and (= (length (get-cards 6)) 26)
216
 
       (= (length (get-cards 11)) 26)
217
 
       (= (length (get-cards 16)) 26)
218
 
       (= (length (get-cards 21)) 26)))
219
 
 
220
 
(define (check-a-foundation card-list end-slot)
221
 
  (if (> end-slot 21)
222
 
      #f
223
 
      (if (to-foundation? card-list end-slot)
224
 
          #t
225
 
          (check-a-foundation card-list (+ 5 end-slot)))))
226
 
 
227
 
(define (check-to-foundations slot-id)
228
 
  (if (> slot-id 20)
229
 
      #f
230
 
      (if (or (empty-slot? slot-id)
231
 
              (= slot-id 6)
232
 
              (= slot-id 11)
233
 
              (= slot-id 16)
234
 
              (not (check-a-foundation (list (get-top-card slot-id)) 6)))
235
 
          (check-to-foundations (+ 1 slot-id))
236
 
          (list 2 (get-name (get-top-card slot-id)) (_"appropriate foundation pile")))))
237
 
 
238
 
(define (check-imbedded card-list foundation-id)
239
 
  (if (> (length card-list) 0)
240
 
      (if (to-foundation? card-list foundation-id)
241
 
          #t
242
 
          (check-imbedded (cdr card-list) foundation-id))
243
 
      #f))
244
 
 
245
 
(define (check-slot-contents slot-id)
246
 
  (cond ((and (not (empty-slot? 6))
247
 
              (eq? (get-suit (get-top-card slot-id))
248
 
                   (get-suit (get-top-card 6)))
249
 
              (check-imbedded (get-cards slot-id) 6))
250
 
         (check-imbedded (get-cards slot-id) 6))
251
 
        ((and (not (empty-slot? 11))
252
 
              (eq? (get-suit (get-top-card slot-id))
253
 
                   (get-suit (get-top-card 11)))
254
 
              (check-imbedded (get-cards slot-id) 11))
255
 
         (check-imbedded (get-cards slot-id) 11))
256
 
        ((and (not (empty-slot? 16))
257
 
              (eq? (get-suit (get-top-card slot-id))
258
 
                   (get-suit (get-top-card 16)))
259
 
              (check-imbedded (get-cards slot-id) 16))
260
 
         (check-imbedded (get-cards slot-id) 16))
261
 
        ((and (not (empty-slot? 21))
262
 
              (eq? (get-suit (get-top-card slot-id))
263
 
                   (get-suit (get-top-card 21)))
264
 
              (check-imbedded (get-cards slot-id) 21))
265
 
         (check-imbedded (get-cards slot-id) 21))
266
 
        ((and (empty-slot? 6)
267
 
              (check-imbedded (get-cards slot-id) 6))
268
 
         (check-imbedded (get-cards slot-id) 6))
269
 
        ((and (empty-slot? 11)
270
 
              (check-imbedded (get-cards slot-id) 11))
271
 
         (check-imbedded (get-cards slot-id) 11))
272
 
        ((and (empty-slot? 16)
273
 
              (check-imbedded (get-cards slot-id) 16))
274
 
         (check-imbedded (get-cards slot-id) 16))
275
 
        ((and (empty-slot? 21)
276
 
              (check-imbedded (get-cards slot-id) 21))
277
 
         (check-imbedded (get-cards slot-id) 21))
278
 
        ((and (> (length (get-cards slot-id)) 1)
279
 
              (or (and (not (= slot-id 2))
280
 
                       (not (empty-slot? 2))
281
 
                       (to-tableau? (reverse (get-cards slot-id)) 2)
282
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
283
 
                               (get-value (get-top-card 2)))))
284
 
                  (and (not (= slot-id 3))
285
 
                       (not (empty-slot? 3))
286
 
                       (to-tableau? (reverse (get-cards slot-id)) 3)
287
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
288
 
                               (get-value (get-top-card 3)))))
289
 
                  (and (not (= slot-id 4))
290
 
                       (not (empty-slot? 4))
291
 
                       (to-tableau? (reverse (get-cards slot-id)) 4)
292
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
293
 
                               (get-value (get-top-card 4)))))
294
 
                  (and (not (= slot-id 5))
295
 
                       (not (empty-slot? 5))
296
 
                       (to-tableau? (reverse (get-cards slot-id)) 5)
297
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
298
 
                               (get-value (get-top-card 5)))))
299
 
                  (and (not (= slot-id 7))
300
 
                       (not (empty-slot? 7))
301
 
                       (to-tableau? (reverse (get-cards slot-id)) 7)
302
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
303
 
                               (get-value (get-top-card 7)))))
304
 
                  (and (not (= slot-id 8))
305
 
                       (not (empty-slot? 8))
306
 
                       (to-tableau? (reverse (get-cards slot-id)) 8)
307
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
308
 
                               (get-value (get-top-card 8)))))
309
 
                  (and (not (= slot-id 9))
310
 
                       (not (empty-slot? 9))
311
 
                       (to-tableau? (reverse (get-cards slot-id)) 9)
312
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
313
 
                               (get-value (get-top-card 9)))))
314
 
                  (and (not (= slot-id 10))
315
 
                       (not (empty-slot? 10))
316
 
                       (to-tableau? (reverse (get-cards slot-id)) 10)
317
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
318
 
                               (get-value (get-top-card 10)))))
319
 
                  (and (not (= slot-id 12))
320
 
                       (not (empty-slot? 12))
321
 
                       (to-tableau? (reverse (get-cards slot-id)) 12)
322
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
323
 
                               (get-value (get-top-card 12)))))
324
 
                  (and (not (= slot-id 13))
325
 
                       (not (empty-slot? 13))
326
 
                       (to-tableau? (reverse (get-cards slot-id)) 13)
327
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
328
 
                               (get-value (get-top-card 13)))))
329
 
                  (and (not (= slot-id 14))
330
 
                       (not (empty-slot? 14))
331
 
                       (to-tableau? (reverse (get-cards slot-id)) 14)
332
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
333
 
                               (get-value (get-top-card 14)))))
334
 
                  (and (not (= slot-id 15))
335
 
                       (not (empty-slot? 15))
336
 
                       (to-tableau? (reverse (get-cards slot-id)) 15)
337
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
338
 
                               (get-value (get-top-card 15)))))
339
 
                  (and (not (= slot-id 17))
340
 
                       (not (empty-slot? 17))
341
 
                       (to-tableau? (reverse (get-cards slot-id)) 17)
342
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
343
 
                               (get-value (get-top-card 17)))))
344
 
                  (and (not (= slot-id 18))
345
 
                       (not (empty-slot? 18))
346
 
                       (to-tableau? (reverse (get-cards slot-id)) 18)
347
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
348
 
                               (get-value (get-top-card 18)))))
349
 
                  (and (not (= slot-id 19))
350
 
                       (not (empty-slot? 19))
351
 
                       (to-tableau? (reverse (get-cards slot-id)) 19)
352
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
353
 
                               (get-value (get-top-card 19)))))
354
 
                  (and (not (= slot-id 20))
355
 
                       (not (empty-slot? 20))
356
 
                       (to-tableau? (reverse (get-cards slot-id)) 20)
357
 
                       (not (= (get-value (cadr (reverse (get-cards slot-id))))
358
 
                               (get-value (get-top-card 20)))))))
359
 
         #t)
360
 
        (#t #f)))
361
 
 
362
 
(define (check-a-tslot slot1 slot2)
363
 
  (if (> slot2 20)
364
 
      #f
365
 
      (if (and (not (= slot2 6))
366
 
               (not (= slot2 11))
367
 
               (not (= slot2 16))
368
 
               (not (empty-slot? slot2))
369
 
               (not (= slot1 slot2))
370
 
               (not (empty-slot? slot1))
371
 
               (to-tableau? (list (get-top-card slot1)) slot2)
372
 
               (or (= slot1 1)
373
 
                   (= (length (get-cards slot1)) 1)
374
 
                   (not (= (get-value (cadr (get-cards slot1)))
375
 
                           (get-value (get-top-card slot2))))))
376
 
          (if (and (not (= slot1 1))
377
 
                   (not (empty-slot? slot2))
378
 
                   (to-tableau? (list (get-top-card slot2)) slot1)
379
 
                   (check-slot-contents slot2))
380
 
              (list 1 (get-name (get-top-card slot2))
381
 
                    (get-name (get-top-card slot1)))
382
 
              (list 1 (get-name (get-top-card slot1))
383
 
                    (get-name (get-top-card slot2))))
384
 
          (check-a-tslot slot1 (+ 1 slot2)))))
385
 
 
386
 
(define (check-tableau slot-id)
387
 
  (if (= slot-id 1)
388
 
      (and (not (empty-slot? 1))
389
 
           (check-a-tslot 1 2))
390
 
      (if (or (= slot-id 6)
391
 
              (= slot-id 11)
392
 
              (= slot-id 16))
393
 
          (check-tableau (- slot-id 1))
394
 
          (or (check-a-tslot slot-id 2)
395
 
              (check-tableau (- slot-id 1))))))
396
 
 
397
 
(define (check-for-empty slot-id)
398
 
  (if (= slot-id 21)
399
 
      #f
400
 
      (if (and (not (= slot-id 6))
401
 
               (not (= slot-id 11))
402
 
               (not (= slot-id 16))
403
 
               (empty-slot? slot-id))
404
 
          slot-id
405
 
          (check-for-empty (+ 1 slot-id)))))
406
 
 
407
 
(define (check-rev-tableau slot1 slot2)
408
 
  (if (= slot2 21)
409
 
      #f
410
 
      (if (or (empty-slot? slot2)
411
 
              (= slot1 slot2)
412
 
              (= slot2 6)
413
 
              (= slot2 11)
414
 
              (= slot2 16))
415
 
          (check-rev-tableau slot1 (+ 1 slot2))
416
 
          (if (and (to-tableau? (reverse (get-cards slot1)) slot2)
417
 
                   (= (abs (- (get-value (cadr (reverse (get-cards slot1))))
418
 
                              (get-value (get-top-card slot2))))
419
 
                      2))
420
 
              slot1
421
 
              (check-rev-tableau slot1 (+ 1 slot2))))))
422
 
 
423
 
(define (check-for-bottom slot-id)
424
 
  (if (= slot-id 21)
425
 
      #f
426
 
      (if (or (empty-slot? slot-id)
427
 
              (= 1 (length (get-cards slot-id)))
428
 
              (= slot-id 6)
429
 
              (= slot-id 11)
430
 
              (= slot-id 16))
431
 
          (check-for-bottom (+ 1 slot-id))
432
 
          (or (check-rev-tableau slot-id 2)
433
 
              (check-for-bottom (+ 1 slot-id))))))
434
 
              
435
 
(define (contents-check slot-id)
436
 
  (if (= slot-id 21)
437
 
      #f
438
 
      (if (and (not (= slot-id 6))
439
 
               (not (= slot-id 11))
440
 
               (not (= slot-id 16))
441
 
               (not (empty-slot? slot-id))
442
 
               (check-slot-contents slot-id))
443
 
          slot-id
444
 
          (contents-check (+ 1 slot-id)))))
445
 
 
446
 
(define (check-empty-slot)
447
 
  (if (not (check-for-empty 2))
448
 
      #f
449
 
      (cond ((contents-check 2)
450
 
             (list 2 (get-name (get-top-card (contents-check 2)))
451
 
                   (_"an empty slot")))
452
 
            ((check-for-bottom 2)
453
 
             (list 2 (get-name (get-top-card (check-for-bottom 2)))
454
 
                   (_"an empty slot")))
455
 
            ((not (empty-slot? 1))
456
 
             (list 2 (get-name (get-top-card 1)) (_"an empty slot")))
457
 
            (#t #f))))
458
 
 
459
 
(define (dealable?)
460
 
  (if (not (empty-slot? 0))
461
 
      (list 0 (_"Deal a card"))
462
 
      #f))
463
 
 
464
 
(define (get-hint)
465
 
  (or (check-to-foundations 1)
466
 
      (check-tableau 20)
467
 
      (check-empty-slot)
468
 
      (dealable?)))
469
 
 
470
 
(define (get-options) 
471
 
  #f)
472
 
 
473
 
(define (apply-options options) 
474
 
  #f)
475
 
 
476
 
(define (timeout) 
477
 
  #f)
478
 
 
479
 
(set-features droppable-feature)
480
 
 
481
 
(set-lambda new-game button-pressed button-released button-clicked
482
 
button-double-clicked game-continuable game-won get-hint get-options
483
 
apply-options timeout droppable?)
484