scottkit 1.5.0 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +9 -0
  3. data/.yardopts +1 -1
  4. data/ChangeLog.md +14 -4
  5. data/Gemfile +6 -0
  6. data/README.md +6 -5
  7. data/Rakefile +0 -2
  8. data/VERSION +1 -1
  9. data/bin/scottkit +3 -2
  10. data/{notes → docs/notes}/Definition-saved-game.txt +0 -0
  11. data/{notes → docs/notes}/Definition-scottfree-1.14.txt +0 -0
  12. data/{notes → docs/notes}/Definition.txt +0 -0
  13. data/{notes → docs/notes}/adventureland-maze +0 -0
  14. data/{notes → docs/notes}/continue-action +0 -0
  15. data/{manual → docs}/reference.md +1 -1
  16. data/{data/tutorial → docs}/tutorial.md +43 -13
  17. data/{data → games}/.gitignore +0 -0
  18. data/{data → games}/adams/.gitignore +0 -0
  19. data/{data → games}/adams/AdamsGames.zip +0 -0
  20. data/{data → games}/adams/Makefile +0 -0
  21. data/{data → games}/crystal/crystal.map +19 -5
  22. data/{data/test → games/crystal}/crystal.sck +12 -8
  23. data/{data → games}/crystal/crystal.solution +3 -1
  24. data/{data → games}/dan-and-matt/dan-and-matt.sck +0 -0
  25. data/{data → games}/dan-and-matt/dan-and-matt.solution +0 -0
  26. data/{data → games}/howarth/.gitignore +0 -0
  27. data/{data → games}/howarth/Makefile +0 -0
  28. data/{data → games}/howarth/mysterious.tar.gz +0 -0
  29. data/{data → games}/nosferatu/.gitignore +0 -0
  30. data/{data → games}/nosferatu/Makefile +0 -0
  31. data/{data → games}/nosferatu/README +0 -0
  32. data/{data → games}/nosferatu/TODO +0 -0
  33. data/{data → games}/nosferatu/nosferatu.map +0 -0
  34. data/{data → games}/nosferatu/nosferatu.regression +0 -0
  35. data/{data → games}/nosferatu/nosferatu.sck +0 -0
  36. data/{data → games}/nosferatu/nosferatu.sol +0 -0
  37. data/{data → games}/nosferatu/nosferatu.transcript +1 -10
  38. data/{data → games}/test/Makefile +0 -0
  39. data/{data → games}/test/adams/Makefile +0 -0
  40. data/{data → games}/test/adams/adv01.solution +0 -0
  41. data/{data → games}/test/adams/adv01.transcript +2 -20
  42. data/games/test/adams/adv01.transcript.md5 +1 -0
  43. data/{data → games}/test/adams/adv02.solution +0 -0
  44. data/{data → games}/test/adams/adv02.transcript +31 -39
  45. data/games/test/adams/adv02.transcript.md5 +1 -0
  46. data/{data → games}/test/adams/adv04.solution +0 -0
  47. data/{data → games}/test/adams/adv04.transcript +19 -42
  48. data/games/test/adams/adv04.transcript.md5 +1 -0
  49. data/{data → games}/test/crystal.decompile +0 -0
  50. data/{data → games}/test/crystal.sao +0 -0
  51. data/{data → games}/test/crystal.save-file +0 -0
  52. data/{data → games}/test/crystal.save-script +0 -0
  53. data/{data/crystal → games/test}/crystal.sck +0 -0
  54. data/{data → games}/test/crystal.solution +0 -0
  55. data/{data → games}/test/crystal.transcript +34 -33
  56. data/{data → games}/test/t6.pretty-print +0 -0
  57. data/{data/tutorial/t7.sck → games/test/t6.sck} +6 -26
  58. data/{data → games}/test/t7.sao +0 -0
  59. data/{data → games}/test/t7.solution +0 -0
  60. data/{data → games}/test/t7.transcript +8 -18
  61. data/games/tutorial/Makefile +5 -0
  62. data/{data → games}/tutorial/t1.map +0 -0
  63. data/{data → games}/tutorial/t1.sck +0 -0
  64. data/{data → games}/tutorial/t2.map +0 -0
  65. data/{data → games}/tutorial/t2.sck +0 -0
  66. data/{data → games}/tutorial/t3.map +0 -0
  67. data/{data → games}/tutorial/t3.sck +0 -0
  68. data/{data → games}/tutorial/t4.map +0 -0
  69. data/{data → games}/tutorial/t4.sck +0 -0
  70. data/{data → games}/tutorial/t5.map +0 -0
  71. data/{data → games}/tutorial/t5.sck +2 -2
  72. data/games/tutorial/t6.sck +149 -0
  73. data/{data/tutorial/t6.sck → games/tutorial/t7.sck} +4 -2
  74. data/{data → games}/tutorial/tutorial.source.md +1 -1
  75. data/lib/scottkit/compile.rb +0 -1
  76. data/lib/scottkit/play.rb +76 -41
  77. data/scottkit.gemspec +135 -0
  78. data/test/test_canonicalise.rb +1 -1
  79. data/test/test_compile.rb +5 -5
  80. data/test/test_decompile.rb +2 -2
  81. data/test/test_play.rb +3 -3
  82. data/test/test_playadams.rb +3 -3
  83. data/test/test_save.rb +6 -6
  84. metadata +113 -67
  85. data/data/test/adams/adv01.transcript.md5 +0 -1
  86. data/data/test/adams/adv02.transcript.md5 +0 -1
  87. data/data/test/adams/adv04.transcript.md5 +0 -1
  88. data/data/tutorial/Makefile +0 -7
@@ -18,12 +18,12 @@ a bronze sceptre, a zinc goblet and a tin stoat.
18
18
  Tell me what to do ? read sign
19
19
  It says - "Leave *TREASURES* here, then say: SCORE"
20
20
  Tell me what to do ? east
21
+ Oh, there they are. That wasn't as hard as I expected.
21
22
 
22
23
  I'm in a clearing. There's a small hut to the west.
23
24
  Obvious exits: North, South, East, West.
24
25
  I can also see: *Platinum chain*, *Gold crown*, *Silver medallion*, *Bronze sceptre*, *Zinc goblet*
25
26
 
26
- Oh, there they are. That wasn't as hard as I expected.
27
27
  Tell me what to do ? get chain
28
28
  O.K.
29
29
  Tell me what to do ? get crown
@@ -236,39 +236,39 @@ OK
236
236
  I can only hold my breath for
237
237
  5 more turns.
238
238
  Tell me what to do ? go pool
239
+ I can only hold my breath for
240
+ 4 more turns.
239
241
 
240
242
  I'm in a bubbling pool, just below the water level
241
243
  Obvious exits: Up.
242
244
  I can also see: inflow from the south
243
245
 
244
- I can only hold my breath for
245
- 4 more turns.
246
246
  Tell me what to do ? go inflow
247
+ I can only hold my breath for
248
+ 3 more turns.
247
249
 
248
250
  I'm swimming in an underground river.
249
251
  Light pours from the north.
250
252
  Obvious exits: North, South.
251
253
 
252
- I can only hold my breath for
253
- 3 more turns.
254
254
  Tell me what to do ? south
255
+ I can only hold my breath for
256
+ 2 more turns.
255
257
 
256
258
  I'm swimming in an underground river.
257
259
  There's a faint glimmer of light to the north.
258
260
  Obvious exits: North, South.
259
261
 
260
- I can only hold my breath for
261
- 2 more turns.
262
262
  Tell me what to do ? drop vase
263
263
  O.K.
264
264
  I can only hold my breath for
265
265
  1 more turns.
266
266
  Tell me what to do ? go vase
267
+ I have to breathe NOW!
267
268
 
268
269
  I'm INSIDE a huge vase!
269
270
  I can also see: Iron key
270
271
 
271
- I have to breathe NOW!
272
272
  Tell me what to do ? get key
273
273
  O.K.
274
274
  Tell me what to do ? hold breath
@@ -276,39 +276,39 @@ OK
276
276
  I can only hold my breath for
277
277
  5 more turns.
278
278
  Tell me what to do ? get out
279
+ I can only hold my breath for
280
+ 4 more turns.
279
281
 
280
282
  I'm swimming in an underground river.
281
283
  There's a faint glimmer of light to the north.
282
284
  Obvious exits: North, South.
283
285
  I can also see: Huge vase
284
286
 
285
- I can only hold my breath for
286
- 4 more turns.
287
287
  Tell me what to do ? south
288
+ I can only hold my breath for
289
+ 3 more turns.
288
290
 
289
291
  I'm swimming in an underground river.
290
292
  There's a faint glimmer of light to the south.
291
293
  Obvious exits: North, South.
292
294
 
293
- I can only hold my breath for
294
- 3 more turns.
295
295
  Tell me what to do ? south
296
+ I can only hold my breath for
297
+ 2 more turns.
296
298
 
297
299
  I'm swimming in an underground river.
298
300
  Light pours from the south.
299
301
  Obvious exits: North, South.
300
302
 
301
- I can only hold my breath for
302
- 2 more turns.
303
303
  Tell me what to do ? south
304
+ I can only hold my breath for
305
+ 1 more turns.
304
306
 
305
307
  I'm in a brightly lit underground chamber.
306
308
  An underground river disappears into the north wall.
307
309
  Obvious exits: North.
308
310
  I can also see: *Tin stoat*
309
311
 
310
- I can only hold my breath for
311
- 1 more turns.
312
312
  Tell me what to do ? get stoat
313
313
  O.K.
314
314
  I have to breathe NOW!
@@ -317,36 +317,36 @@ OK
317
317
  I can only hold my breath for
318
318
  5 more turns.
319
319
  Tell me what to do ? north
320
+ I can only hold my breath for
321
+ 4 more turns.
320
322
 
321
323
  I'm swimming in an underground river.
322
324
  Light pours from the south.
323
325
  Obvious exits: North, South.
324
326
 
325
- I can only hold my breath for
326
- 4 more turns.
327
327
  Tell me what to do ? north
328
+ I can only hold my breath for
329
+ 3 more turns.
328
330
 
329
331
  I'm swimming in an underground river.
330
332
  There's a faint glimmer of light to the south.
331
333
  Obvious exits: North, South.
332
334
 
333
- I can only hold my breath for
334
- 3 more turns.
335
335
  Tell me what to do ? north
336
+ I can only hold my breath for
337
+ 2 more turns.
336
338
 
337
339
  I'm swimming in an underground river.
338
340
  There's a faint glimmer of light to the north.
339
341
  Obvious exits: North, South.
340
342
  I can also see: Huge vase
341
343
 
342
- I can only hold my breath for
343
- 2 more turns.
344
344
  Tell me what to do ? go vase
345
+ I can only hold my breath for
346
+ 1 more turns.
345
347
 
346
348
  I'm INSIDE a huge vase!
347
349
 
348
- I can only hold my breath for
349
- 1 more turns.
350
350
  Tell me what to do ? wait
351
351
  OK
352
352
  I have to breathe NOW!
@@ -355,51 +355,52 @@ OK
355
355
  I can only hold my breath for
356
356
  5 more turns.
357
357
  Tell me what to do ? get out
358
+ I can only hold my breath for
359
+ 4 more turns.
358
360
 
359
361
  I'm swimming in an underground river.
360
362
  There's a faint glimmer of light to the north.
361
363
  Obvious exits: North, South.
362
364
  I can also see: Huge vase
363
365
 
364
- I can only hold my breath for
365
- 4 more turns.
366
366
  Tell me what to do ? north
367
+ I can only hold my breath for
368
+ 3 more turns.
367
369
 
368
370
  I'm swimming in an underground river.
369
371
  Light pours from the north.
370
372
  Obvious exits: North, South.
371
373
 
372
- I can only hold my breath for
373
- 3 more turns.
374
374
  Tell me what to do ? north
375
+ I can only hold my breath for
376
+ 2 more turns.
375
377
 
376
378
  I'm in a bubbling pool, just below the water level
377
379
  Obvious exits: Up.
378
380
  I can also see: inflow from the south
379
381
 
380
- I can only hold my breath for
381
- 2 more turns.
382
382
  Tell me what to do ? up
383
+ I can only hold my breath for
384
+ 1 more turns.
383
385
 
384
386
  I'm in a forest
385
387
  Obvious exits: North, West.
386
388
  I can also see: Bubbling pool
387
389
 
388
- I can only hold my breath for
389
- 1 more turns.
390
390
  Tell me what to do ? north
391
+ I have to breathe NOW!
391
392
 
392
393
  I'm in a glade
393
394
  Obvious exits: North, South, West.
394
395
  I can also see: Beech tree, Blazing hot fire
395
396
 
396
- I have to breathe NOW!
397
397
  Tell me what to do ? west
398
398
 
399
399
  I'm in a clearing. There's a small hut to the west.
400
400
  Obvious exits: North, South, East, West.
401
401
 
402
402
  Tell me what to do ? west
403
+ Your light is growing dim.
403
404
 
404
405
  I'm in a small wooden hut.
405
406
  Obvious exits: East.
File without changes
@@ -1,14 +1,3 @@
1
- ### Should also include location stores (if I can understand them)
2
- ### Maybe add a %include-like facility.
3
-
4
- ident 31802
5
- version 100
6
- wordlen 3
7
- maxload 2
8
- lighttime 26
9
- unknown1 29168
10
- unknown2 28893
11
-
12
1
  start cave
13
2
  treasury throne
14
3
 
@@ -58,17 +47,8 @@ item sign "Sign says: leave treasure here, then say SCORE"
58
47
  item lamp "old-fashioned brass lamp"
59
48
  called "lamp"
60
49
 
61
- item empty_lamp "empty lamp"
62
- called "lamp" nowhere
63
-
64
50
  lightsource lamp
65
51
 
66
- occur 100% when flag 16
67
- clear_flag 16
68
- swap lamp empty_lamp
69
- look
70
- comment "The engine sets flag 16 when the lamp runs out"
71
-
72
52
  room chamber "square chamber"
73
53
  exit east dungeon
74
54
  exit north throne
@@ -125,17 +105,17 @@ room crypt "damp, dismal crypt"
125
105
 
126
106
  item vampire "Vampire"
127
107
 
128
- occur when here vampire and carried cross
129
- print "Vampire cowers away from the cross!"
130
-
131
- occur when here vampire and !carried cross
132
- print "Vampire looks hungrily at me."
133
-
134
108
  occur 25% when here vampire and !carried cross
135
109
  print "Vampire bites me! I'm dead!"
136
110
  game_over
137
111
  comment "vampire can attack unless cross is carried"
138
112
 
113
+ occur when here vampire and !carried cross
114
+ print "Vampire looks hungrily at me."
115
+
116
+ occur when here vampire and carried cross
117
+ print "Vampire cowers away from the cross!"
118
+
139
119
  action get key when here vampire and !carried cross
140
120
  print "I'm not going anywhere near that vampire!"
141
121
 
File without changes
File without changes
@@ -29,6 +29,7 @@ I can also see: Wooden cross
29
29
  Tell me what to do ? get cross
30
30
  O.K.
31
31
  Tell me what to do ? north
32
+ Your light is growing dim.
32
33
 
33
34
  I'm in a gorgeously decorated throne room
34
35
  Obvious exits: South.
@@ -43,46 +44,43 @@ Obvious exits: North, East, West.
43
44
 
44
45
  Tell me what to do ? east
45
46
 
46
- I'm in a gloomy dungeon
47
- Obvious exits: North, West.
48
- I can also see: Locked door
49
-
50
-
51
47
  I'm in a gloomy dungeon
52
48
  Obvious exits: North, West.
53
49
  I can also see: Locked door
54
50
 
55
51
  Tell me what to do ? north
52
+ Vampire cowers away from the cross!
56
53
 
57
54
  I'm in a damp, dismal crypt
58
55
  Obvious exits: South.
59
56
  I can also see: Brass key, Vampire
60
57
 
61
- Vampire cowers away from the cross!
62
58
  Tell me what to do ? drop lamp
63
59
  O.K.
60
+ Your light is growing dim.
64
61
  Vampire cowers away from the cross!
65
62
  Tell me what to do ? get key
66
63
  O.K.
67
64
  Vampire cowers away from the cross!
68
65
  Tell me what to do ? south
66
+ I smell something rotting to the north.
69
67
 
70
68
  I can't see. It is too dark!
71
69
 
72
- I smell something rotting to the north.
73
70
  Tell me what to do ? drop key
74
71
  O.K.
75
72
  I smell something rotting to the north.
76
73
  Tell me what to do ? north
77
74
  Dangerous to move in the dark!
75
+ Vampire cowers away from the cross!
78
76
 
79
77
  I'm in a damp, dismal crypt
80
78
  Obvious exits: South.
81
79
  I can also see: old-fashioned brass lamp, Vampire
82
80
 
83
- Vampire cowers away from the cross!
84
81
  Tell me what to do ? get lamp
85
82
  O.K.
83
+ Your light is growing dim.
86
84
  Vampire cowers away from the cross!
87
85
  Tell me what to do ? south
88
86
 
@@ -96,13 +94,14 @@ Tell me what to do ? get key
96
94
  O.K.
97
95
  Tell me what to do ? open door
98
96
  OK
97
+ I smell something rotting to the north.
99
98
 
100
99
  I'm in a gloomy dungeon
101
100
  Obvious exits: North, West.
102
101
  I can also see: Wooden cross, Open door leads south
103
102
 
104
- I smell something rotting to the north.
105
103
  Tell me what to do ? go door
104
+ Your light is growing dim.
106
105
 
107
106
  I'm in a dungeon cell
108
107
  Obvious exits: North.
@@ -120,19 +119,10 @@ I can also see: Wooden cross, Open door leads south
120
119
 
121
120
  Tell me what to do ? west
122
121
 
123
- I'm in a square chamber
124
- Obvious exits: North, East, West.
125
-
126
-
127
122
  I'm in a square chamber
128
123
  Obvious exits: North, East, West.
129
124
 
130
125
  Tell me what to do ? north
131
-
132
- I'm in a gorgeously decorated throne room
133
- Obvious exits: South.
134
- I can also see: Sign says: leave treasure here, then say SCORE
135
-
136
126
  Your light has run out
137
127
 
138
128
  I'm in a gorgeously decorated throne room
@@ -0,0 +1,5 @@
1
+ ../../docs/tutorial.md: tutorial.source.md
2
+ rm -f $@
3
+ m4 $< > $@
4
+ chmod ugo-w $@
5
+
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -118,6 +118,6 @@ occur 25% when here vampire and !carried cross
118
118
  action get key when here vampire and !carried cross
119
119
  print "I'm not going anywhere near that vampire!"
120
120
 
121
- verbgroup take get
122
- verbgroup leave drop
121
+ verbgroup get take g
122
+ verbgroup drop leave
123
123
  noungroup lamp lantern
@@ -0,0 +1,149 @@
1
+ start cave
2
+ treasury throne
3
+
4
+ occur when !flag 1
5
+ print "Welcome to the Tutorial adventure."
6
+ print "You must find a gold coin and store it."
7
+ set_flag 1
8
+
9
+ room cave "cave mouth"
10
+ exit east chamber
11
+
12
+ room throne "gorgeously decorated throne room"
13
+ exit south chamber
14
+
15
+ item sign "sign"
16
+
17
+ action examine sign when present sign
18
+ print "It says: leave treasure here, then say SCORE"
19
+
20
+ item lamp "old-fashioned brass lamp"
21
+ called "lamp"
22
+
23
+ action examine lamp when present lamp
24
+ print "It is not lit."
25
+
26
+ item lit_lamp "lit lamp"
27
+ called "lamp" nowhere
28
+
29
+ item empty_lamp "empty lamp"
30
+ called "lamp" nowhere
31
+
32
+ lightsource lit_lamp
33
+ lighttime 10
34
+
35
+ action light lamp when present lamp
36
+ swap lamp lit_lamp
37
+ print "OK, lamp is now lit and will burn for 10 turns."
38
+ look
39
+
40
+ occur when flag 16
41
+ clear_flag 16
42
+ swap lit_lamp empty_lamp
43
+ look
44
+ comment "The engine sets flag 16 when the lamp runs out"
45
+
46
+ item station "lamp-refilling station" at cave
47
+
48
+ action refill lamp when here station and present empty_lamp
49
+ destroy empty_lamp
50
+ refill_lamp
51
+ print "The lamp is now full and lit."
52
+
53
+ room chamber "square chamber"
54
+ exit east dungeon
55
+ exit north throne
56
+ exit west cave
57
+
58
+ # Flag 15 is on when and only when it is dark
59
+ occur when at chamber and flag 15
60
+ clear_dark
61
+ look
62
+
63
+ item cross "Wooden cross"
64
+ called "cross"
65
+
66
+ room dungeon "gloomy dungeon"
67
+ exit west chamber
68
+ exit north crypt
69
+
70
+ occur when at dungeon and !flag 15
71
+ set_dark
72
+ look
73
+
74
+ occur 25% when at dungeon
75
+ print "I smell something rotting to the north."
76
+
77
+ item door "Locked door"
78
+
79
+ item key "Brass key"
80
+ called "key"
81
+ at crypt
82
+
83
+ item door2 "Open door leads south"
84
+ nowhere
85
+
86
+ action open door when here door and !present key
87
+ print "It's locked."
88
+
89
+ action open door when here door
90
+ swap door door2
91
+ print OK
92
+ look
93
+
94
+ action go door when here door2
95
+ goto cell
96
+ look
97
+
98
+ room cell "dungeon cell"
99
+ exit north dungeon
100
+
101
+ item coin "*Gold coin*"
102
+ called "coin"
103
+
104
+ room crypt "damp, dismal crypt"
105
+ exit south dungeon
106
+
107
+ item vampire "Vampire"
108
+
109
+ occur when here vampire and carried cross
110
+ print "Vampire cowers away from the cross!"
111
+
112
+ occur when here vampire and !carried cross
113
+ print "Vampire looks hungrily at me."
114
+
115
+ occur 25% when here vampire and !carried cross
116
+ print "Vampire bites me! I'm dead!"
117
+ game_over
118
+ comment "vampire can attack unless cross is carried"
119
+
120
+ action get key when here vampire and !carried cross
121
+ print "I'm not going anywhere near that vampire!"
122
+
123
+ item rum "bottle of rum" called rum at cell
124
+
125
+ action drink rum when carried rum
126
+ destroy rum
127
+ print "OK. I feel funny."
128
+
129
+ action inventory when !exists rum
130
+ print "I'm carrying ... uh ... you're my best mate, you are."
131
+
132
+ action score: score
133
+ action inventory: inventory
134
+ action look: look
135
+ action save game: save_game
136
+
137
+ action quit game
138
+ print "OK, goodbye."
139
+ game_over
140
+ action quit:
141
+ print "Did you mean to quit? If so, type QUIT GAME."
142
+
143
+ action examine:
144
+ print "I see nothing special."
145
+
146
+ verbgroup get take g
147
+ verbgroup drop leave
148
+ verbgroup examine x
149
+ noungroup lamp lantern
@@ -1,3 +1,5 @@
1
+ # Generate diffs from t5 to this, then apply them to t6 to yield new t7
2
+
1
3
  start cave
2
4
  treasury throne
3
5
 
@@ -144,7 +146,7 @@ occur 25% when here vampire and !carried cross
144
146
  action get key when here vampire and !carried cross
145
147
  print "I'm not going anywhere near that vampire!"
146
148
 
147
- verbgroup take get
148
- verbgroup leave drop
149
+ verbgroup get take g
150
+ verbgroup drop leave
149
151
  noungroup lamp lantern
150
152
  noungroup doorbell bell
@@ -135,7 +135,7 @@ include(t5.sck)dnl
135
135
 
136
136
  ## Caveats
137
137
 
138
- This tutorial skips a lot of details. [The reference manual](../../manual/reference.md) is indispensible for filling in the gaps.
138
+ This tutorial skips a lot of details. [The reference manual](../../docs/reference.md) is indispensible for filling in the gaps.
139
139
 
140
140
  The following directives are not yet discussed: `ident`, `version`, `wordlen`, `maxload`, `lighttime`.
141
141
 
@@ -1,5 +1,4 @@
1
1
  # -*- coding: utf-8 -*-
2
- # Test with: cd /usr/local/src/mike/scott/scottkit && ruby -I lib bin/scottkit -c data/tutorial/t7.sck
3
2
 
4
3
  require 'pp'
5
4