mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 00:24:22 +03:00
Merge pull request #106 from DavidKinder/master
Switch to latest Glulxe and use its built-in RNG
This commit is contained in:
commit
eafe4e7dae
|
@ -31,7 +31,7 @@ GLKMAKEFILE = Make.cheapglk
|
|||
CC = cc
|
||||
#CC = gcc
|
||||
|
||||
OPTIONS = -g -Wall -Wmissing-prototypes -Wstrict-prototypes -Wno-unused -DOS_UNIX
|
||||
OPTIONS = -g -Wall -Wmissing-prototypes -Wno-unused -DOS_UNIX
|
||||
|
||||
# Locate the libxml2 library. You only need these lines if you are using
|
||||
# the VM_DEBUGGER option. If so, uncomment these and set appropriately.
|
||||
|
|
|
@ -124,9 +124,9 @@ void execute_loop()
|
|||
first. They have to be unsigned values, too, otherwise the
|
||||
0x80000000 case goes wonky. */
|
||||
if (vals0 < 0) {
|
||||
val0 = (-vals0);
|
||||
val0 = (-(glui32)vals0);
|
||||
if (vals1 < 0) {
|
||||
val1 = (-vals1);
|
||||
val1 = (-(glui32)vals1);
|
||||
value = val0 / val1;
|
||||
}
|
||||
else {
|
||||
|
@ -137,7 +137,7 @@ void execute_loop()
|
|||
else {
|
||||
val0 = vals0;
|
||||
if (vals1 < 0) {
|
||||
val1 = (-vals1);
|
||||
val1 = (-(glui32)vals1);
|
||||
value = -(val0 / val1);
|
||||
}
|
||||
else {
|
||||
|
@ -153,13 +153,13 @@ void execute_loop()
|
|||
if (vals1 == 0)
|
||||
fatal_error("Division by zero doing remainder.");
|
||||
if (vals1 < 0) {
|
||||
val1 = -vals1;
|
||||
val1 = -(glui32)vals1;
|
||||
}
|
||||
else {
|
||||
val1 = vals1;
|
||||
}
|
||||
if (vals0 < 0) {
|
||||
val0 = (-vals0);
|
||||
val0 = (-(glui32)vals0);
|
||||
value = -(val0 % val1);
|
||||
}
|
||||
else {
|
||||
|
@ -170,7 +170,7 @@ void execute_loop()
|
|||
break;
|
||||
case op_neg:
|
||||
vals0 = inst[0].value;
|
||||
value = (-vals0);
|
||||
value = (-(glui32)vals0);
|
||||
store_operand(inst[1].desttype, inst[1].value, value);
|
||||
break;
|
||||
|
||||
|
@ -527,7 +527,7 @@ void execute_loop()
|
|||
vals1 = (vals0) - vals1;
|
||||
}
|
||||
else {
|
||||
vals1 = (-vals1) % vals0;
|
||||
vals1 = (-(glui32)vals1) % vals0;
|
||||
}
|
||||
if (vals1 == 0)
|
||||
break;
|
||||
|
@ -663,7 +663,7 @@ void execute_loop()
|
|||
else if (vals0 >= 1)
|
||||
value = glulx_random() % (glui32)(vals0);
|
||||
else
|
||||
value = -(glulx_random() % (glui32)(-vals0));
|
||||
value = -(glulx_random() % (glui32)(-(glui32)vals0));
|
||||
store_operand(inst[1].desttype, inst[1].value, value);
|
||||
break;
|
||||
case op_setrandom:
|
||||
|
|
|
@ -81,10 +81,10 @@ typedef int16_t glsi16;
|
|||
/* Some macros to read and write integers to memory, always in big-endian
|
||||
format. */
|
||||
#define Read4(ptr) \
|
||||
( (glui32)(((unsigned char *)(ptr))[0] << 24) \
|
||||
| (glui32)(((unsigned char *)(ptr))[1] << 16) \
|
||||
| (glui32)(((unsigned char *)(ptr))[2] << 8) \
|
||||
| (glui32)(((unsigned char *)(ptr))[3]))
|
||||
( (glui32)((glui32)((unsigned char *)(ptr))[0] << 24) \
|
||||
| (glui32)((glui32)((unsigned char *)(ptr))[1] << 16) \
|
||||
| (glui32)((glui32)((unsigned char *)(ptr))[2] << 8) \
|
||||
| (glui32)((glui32)((unsigned char *)(ptr))[3]))
|
||||
#define Read2(ptr) \
|
||||
( (glui16)(((unsigned char *)(ptr))[0] << 8) \
|
||||
| (glui16)(((unsigned char *)(ptr))[1]))
|
||||
|
@ -195,6 +195,7 @@ extern void (*stream_char_handler)(unsigned char ch);
|
|||
extern void (*stream_unichar_handler)(glui32 ch);
|
||||
|
||||
/* main.c */
|
||||
extern glui32 init_rng_seed;
|
||||
extern void set_library_start_hook(void (*)(void));
|
||||
extern void set_library_autorestore_hook(void (*)(void));
|
||||
extern void fatal_error_handler(char *str, char *arg, int useval, glsi32 val) GLK_ATTRIBUTE_NORETURN;
|
||||
|
|
|
@ -14,6 +14,8 @@ glui32 gamefile_len = 0; /* The length within the stream. */
|
|||
char *init_err = NULL;
|
||||
char *init_err2 = NULL;
|
||||
|
||||
glui32 init_rng_seed = 0;
|
||||
|
||||
/* The library_start_hook is called at the beginning of glk_main. This
|
||||
is not normally necessary -- the library can do all its setup work
|
||||
before calling glk_main -- but iosglk has some weird cases which
|
||||
|
@ -49,7 +51,7 @@ void glk_main()
|
|||
return;
|
||||
}
|
||||
|
||||
glulx_setrandom(0);
|
||||
glulx_setrandom(init_rng_seed);
|
||||
#ifdef FLOAT_SUPPORT
|
||||
if (!init_float()) {
|
||||
return;
|
||||
|
|
|
@ -14,6 +14,19 @@
|
|||
symbol. Code contributions welcome.
|
||||
*/
|
||||
|
||||
/* Always use Glulxe's random number generator for MacOS and Windows.
|
||||
For Unix and anything else, it is optional: define
|
||||
COMPILE_RANDOM_CODE to use it.
|
||||
*/
|
||||
#if (defined(OS_MAC) || defined (WIN32)) && !defined(COMPILE_RANDOM_CODE)
|
||||
#define COMPILE_RANDOM_CODE
|
||||
#endif
|
||||
|
||||
#ifdef COMPILE_RANDOM_CODE
|
||||
static glui32 lo_random(void);
|
||||
static void lo_seed_random(glui32 seed);
|
||||
#endif
|
||||
|
||||
#ifdef OS_UNIX
|
||||
|
||||
#include <time.h>
|
||||
|
@ -45,13 +58,21 @@ void glulx_setrandom(glui32 seed)
|
|||
{
|
||||
if (seed == 0)
|
||||
seed = time(NULL);
|
||||
#ifdef COMPILE_RANDOM_CODE
|
||||
lo_seed_random(seed);
|
||||
#else
|
||||
srandom(seed);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Return a random number in the range 0 to 2^32-1. */
|
||||
glui32 glulx_random()
|
||||
{
|
||||
#ifdef COMPILE_RANDOM_CODE
|
||||
return (lo_random() << 16) ^ lo_random();
|
||||
#else
|
||||
return (random() << 16) ^ random();
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif /* OS_UNIX */
|
||||
|
@ -81,10 +102,6 @@ void glulx_free(void *ptr)
|
|||
free(ptr);
|
||||
}
|
||||
|
||||
#define COMPILE_RANDOM_CODE
|
||||
static glui32 lo_random(void);
|
||||
static void lo_seed_random(glui32 seed);
|
||||
|
||||
/* Return a random number in the range 0 to 2^32-1. */
|
||||
glui32 glulx_random()
|
||||
{
|
||||
|
@ -127,10 +144,6 @@ void glulx_free(void *ptr)
|
|||
free(ptr);
|
||||
}
|
||||
|
||||
#define COMPILE_RANDOM_CODE
|
||||
static glui32 lo_random(void);
|
||||
static void lo_seed_random(glui32 seed);
|
||||
|
||||
/* Return a random number in the range 0 to 2^32-1. */
|
||||
glui32 glulx_random()
|
||||
{
|
||||
|
|
|
@ -142,7 +142,7 @@ void stream_num(glsi32 val, int inmiddle, int charnum)
|
|||
}
|
||||
else {
|
||||
if (val < 0)
|
||||
ival = -val;
|
||||
ival = -(glui32)val;
|
||||
else
|
||||
ival = val;
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ static void glkunix_game_autorestore(void);
|
|||
glkunix_argumentlist_t glkunix_arguments[] = {
|
||||
|
||||
{ "--undo", glkunix_arg_ValueFollows, "Number of undo states to store." },
|
||||
{ "--rngseed", glkunix_arg_ValueFollows, "Fix initial RNG if nonzero." },
|
||||
|
||||
#if GLKUNIX_AUTOSAVE_FEATURES
|
||||
{ "--autosave", glkunix_arg_NoValue, "Autosave every turn." },
|
||||
|
@ -82,8 +83,9 @@ int glkunix_startup_code(glkunix_startup_t *data)
|
|||
if (!strcmp(data->argv[ix], "--undo")) {
|
||||
ix++;
|
||||
if (ix<data->argc) {
|
||||
int val = atoi(data->argv[ix]);
|
||||
if (val <= 0) {
|
||||
char *endptr = NULL;
|
||||
int val = strtol(data->argv[ix], &endptr, 10);
|
||||
if (*endptr) {
|
||||
init_err = "--undo must be a number.";
|
||||
return TRUE;
|
||||
}
|
||||
|
@ -92,6 +94,20 @@ int glkunix_startup_code(glkunix_startup_t *data)
|
|||
continue;
|
||||
}
|
||||
|
||||
if (!strcmp(data->argv[ix], "--rngseed")) {
|
||||
ix++;
|
||||
if (ix<data->argc) {
|
||||
char *endptr = NULL;
|
||||
int val = strtol(data->argv[ix], &endptr, 10);
|
||||
if (*endptr) {
|
||||
init_err = "--rngseed must be a number.";
|
||||
return TRUE;
|
||||
}
|
||||
init_rng_seed = val;
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
#if GLKUNIX_AUTOSAVE_FEATURES
|
||||
if (!strcmp(data->argv[ix], "--autosave")) {
|
||||
pref_autosave = TRUE;
|
||||
|
|
|
@ -75,20 +75,6 @@ interpreters: $(INTERPRETERS)/dumb-frotz/dumb-frotz $(INTERPRETERS)/dumb-glulx/g
|
|||
# that story files in Z format perform as intended. It's written in old C,
|
||||
# and is dumb in the sense that it uses a dumb terminal.
|
||||
|
||||
GLKLIB = libcheapglk.a
|
||||
GLKINCLUDEDIR = ../cheapglk
|
||||
GLKLIBDIR = ../cheapglk
|
||||
GLKMAKEFILE = Make.cheapglk
|
||||
|
||||
CHEAPGLK_OBJS = \
|
||||
cgfref.o cggestal.o cgmisc.o cgstream.o cgstyle.o cgwindow.o cgschan.o \
|
||||
cgunicod.o main.o gi_dispa.o gi_blorb.o cgblorb.o
|
||||
|
||||
GLULXE_OBJS = main.o files.o vm.o exec.o float.o funcs.o operand.o string.o glkop.o \
|
||||
heap.o serial.o search.o gestalt.o osdepend.o unixstrt.o accel.o profile.o
|
||||
|
||||
CHEAPGLK_HEADERS = cheapglk.h gi_dispa.h
|
||||
|
||||
$(INTERPRETERS)/dumb-frotz/dumb-frotz: \
|
||||
$(INTERPRETERS)/dumb-frotz/*.c \
|
||||
$(INTERPRETERS)/dumb-frotz/*.h
|
||||
|
@ -127,7 +113,7 @@ $(INTERPRETERS)/dumb-glulx/glulxe/glulxe: \
|
|||
cd $(INTERPRETERS)/dumb-glulx/cheapglk; make clean
|
||||
cd $(INTERPRETERS)/dumb-glulx/cheapglk; make
|
||||
cd $(INTERPRETERS)/dumb-glulx/glulxe; make clean
|
||||
cd $(INTERPRETERS)/dumb-glulx/glulxe; make
|
||||
cd $(INTERPRETERS)/dumb-glulx/glulxe; make OPTIONS=-g\ -Wall\ -Wno-unused\ -DOS_UNIX\ -UWIN32\ -DCOMPILE_RANDOM_CODE
|
||||
|
||||
# Cleaning up:
|
||||
|
||||
|
@ -138,9 +124,9 @@ clean:
|
|||
.PHONY: purge
|
||||
purge:
|
||||
$(call clean-up)
|
||||
rm -f $(ME)/Tangled/$(ME)
|
||||
rm -f $(INTERPRETERS)/dumb-frotz/dumb-frotz
|
||||
rm -f $(INTERPRETERS)/dumb-glulx/glulxe/glulxe
|
||||
rm -f $(ME)/Tangled/$(ME)$(EXEEXTENSION)
|
||||
rm -f $(INTERPRETERS)/dumb-frotz/dumb-frotz$(EXEEXTENSION)
|
||||
rm -f $(INTERPRETERS)/dumb-glulx/glulxe/glulxe$(EXEEXTENSION)
|
||||
|
||||
define clean-up
|
||||
rm -f $(SANDBOX)/*.o
|
||||
|
|
|
@ -4,7 +4,7 @@ L sorts to {-7, -7, 0, 2, 3, 5, 11, 16}.
|
|||
L then reverses to {16, 11, 5, 3, 2, 0, -7, -7}.
|
||||
L then rotates to {-7, 16, 11, 5, 3, 2, 0, -7}.
|
||||
L then rotates backwards to {16, 11, 5, 3, 2, 0, -7, -7}.
|
||||
L sorts randomly to {3, 5, 11, 2, 16, -7, -7, 0}.
|
||||
L sorts randomly to {3, 16, 2, 11, -7, -7, 0, 5}.
|
||||
L sorts in reverse order to {16, 11, 5, 3, 2, 0, -7, -7}.
|
||||
"F" = list of fruits: {apple, pear, orange}
|
||||
F sorts in size order to {orange, pear, apple}.
|
||||
|
|
|
@ -1,26 +1,26 @@
|
|||
"a random fruit" = fruit: yuzu
|
||||
"a random fruit" = fruit: apple
|
||||
"a random fruit" = fruit: yuzu
|
||||
"a random fruit" = fruit: pear
|
||||
"a random fruit" = fruit: yuzu
|
||||
"a random fruit between pear and yuzu" = fruit: yuzu
|
||||
"a random fruit" = fruit: persimmon
|
||||
"a random fruit between pear and yuzu" = fruit: persimmon
|
||||
"a random fruit from pear to yuzu" = fruit: yuzu
|
||||
"a random fruit from pear to yuzu" = fruit: yuzu
|
||||
"a random number between 10 and 19" = number: 19
|
||||
"a random fruit between pear and yuzu" = fruit: pear
|
||||
"a random fruit from pear to yuzu" = fruit: pear
|
||||
"a random fruit from pear to yuzu" = fruit: pear
|
||||
"a random number between 10 and 19" = number: 17
|
||||
"a random number between 10 and 19" = number: 16
|
||||
"a random number between 10 and 19" = number: 13
|
||||
"a random number from 10 to 19" = number: 10
|
||||
"a random number from 10 to 19" = number: 14
|
||||
"a random number from 10 to 19" = number: 11
|
||||
"a random number from 10 to 19" = number: 13
|
||||
"a random number from 10 to 19" = number: 13
|
||||
"a random number from 10 to 19" = number: 12
|
||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: true
|
||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: false
|
||||
"a random number between 1 and 100" = number: 2
|
||||
"a random number between 1 and 100" = number: 54
|
||||
"a random number between 1 and 100" = number: 36
|
||||
"a random number between 1 and 100" = number: 2
|
||||
"a random number between 1 and 100" = number: 54
|
||||
"a random number between 1 and 100" = number: 36
|
||||
"whether or not a random chance of 1 in 3 succeeds" = truth state: true
|
||||
"a random number between 1 and 100" = number: 26
|
||||
"a random number between 1 and 100" = number: 66
|
||||
"a random number between 1 and 100" = number: 75
|
||||
"a random number between 1 and 100" = number: 26
|
||||
"a random number between 1 and 100" = number: 66
|
||||
"a random number between 1 and 100" = number: 75
|
||||
|
|
|
@ -11,90 +11,90 @@ This is Summer.
|
|||
This is Autumn.
|
||||
This is Winter.
|
||||
This is Spring.
|
||||
This is a rainy day.
|
||||
This is a rainy day.
|
||||
This is a scorching hot day.
|
||||
This is a cloudy day.
|
||||
This is a cloudy day.
|
||||
This is a cloudy day.
|
||||
This is a cloudy day.
|
||||
This is a cloudy day.
|
||||
This is a cloudy day.
|
||||
This is a cloudy day.
|
||||
This is a cloudy day.
|
||||
This is a cloudy day.
|
||||
This is a rainy day.
|
||||
This is a cloudy day.
|
||||
This is a rainy day.
|
||||
This is a rainy day.
|
||||
This is a sunny day.
|
||||
This is a cloudy day.
|
||||
This is a rainy day.
|
||||
This is a cloudy day.
|
||||
This is a rainy day.
|
||||
This is a scorching hot day.
|
||||
This is a rainy day.
|
||||
This is a sunny day.
|
||||
This is a rainy day.
|
||||
This is a cloudy day.
|
||||
This is a cloudy day.
|
||||
This is a rainy day.
|
||||
This is a cloudy day.
|
||||
Clearly it's Epitaph.
|
||||
Clearly it's Level Five.
|
||||
Clearly it's Nuages.
|
||||
Clearly it's Lizard.
|
||||
Clearly it's Starless.
|
||||
Clearly it's Level Five.
|
||||
Clearly it's Fracture.
|
||||
Clearly it's Lizard.
|
||||
Clearly it's Level Five.
|
||||
Clearly it's Starless.
|
||||
Clearly it's Level Five.
|
||||
Clearly it's Lizard.
|
||||
Clearly it's Epitaph.
|
||||
Clearly it's Fracture.
|
||||
Clearly it's Lizard.
|
||||
Clearly it's Epitaph.
|
||||
Clearly it's Lizard.
|
||||
Clearly it's Nuages.
|
||||
Clearly it's Lizard.
|
||||
Clearly it's Epitaph.
|
||||
Clearly it's Starless.
|
||||
Clearly it's Epitaph.
|
||||
Clearly it's Nuages.
|
||||
Clearly it's Epitaph.
|
||||
The digit is 2.
|
||||
Clearly it's Starless.
|
||||
Clearly it's Epitaph.
|
||||
Clearly it's Lizard.
|
||||
Clearly it's Fracture.
|
||||
Clearly it's Lizard.
|
||||
Clearly it's Nuages.
|
||||
The digit is 3.
|
||||
The digit is 1.
|
||||
The digit is 5.
|
||||
The digit is 2.
|
||||
The digit is 4.
|
||||
The digit is 4.
|
||||
The digit is 1.
|
||||
The digit is 3.
|
||||
The digit is 1.
|
||||
The digit is 4.
|
||||
The digit is 3.
|
||||
The digit is 2.
|
||||
The digit is 5.
|
||||
The letter is A.
|
||||
The letter is A.
|
||||
The letter is A.
|
||||
The letter is A.
|
||||
The light changes randomly again; now it's red.
|
||||
The light changes randomly again; now it's green.
|
||||
The light changes randomly again; now it's red.
|
||||
The letter is B.
|
||||
The letter is B.
|
||||
The letter is B.
|
||||
The letter is B.
|
||||
The light changes randomly again; now it's green.
|
||||
The light changes randomly again; now it's amber.
|
||||
The light changes randomly again; now it's green.
|
||||
The light changes randomly again; now it's amber.
|
||||
The light changes randomly again; now it's green.
|
||||
The coin comes up tails.
|
||||
The coin comes up tails.
|
||||
The coin comes up heads.
|
||||
The coin comes up heads.
|
||||
The coin comes up tails.
|
||||
The coin comes up heads.
|
||||
The coin comes up tails.
|
||||
The coin comes up heads.
|
||||
Maybe the murderer is Colonel Mustard.
|
||||
Maybe the murderer is Professor Plum.
|
||||
Maybe the murderer is Cardinal Cerise.
|
||||
Maybe the murderer is Colonel Mustard.
|
||||
Maybe the murderer is Cardinal Cerise.
|
||||
Maybe the murderer is Professor Plum.
|
||||
Maybe the murderer is Cardinal Cerise.
|
||||
Maybe the murderer is Professor Plum.
|
||||
Maybe the murderer is Colonel Mustard.
|
||||
Maybe the murderer is Cardinal Cerise.
|
||||
Maybe the murderer is Professor Plum.
|
||||
Maybe the murderer is Colonel Mustard.
|
||||
Maybe the murderer is Cardinal Cerise.
|
||||
Maybe the murderer is Colonel Mustard.
|
||||
Maybe the murderer is Professor Plum.
|
||||
Maybe the victim is Colonel Mustard.
|
||||
Maybe the victim is Professor Plum.
|
||||
Maybe the victim is Cardinal Cerise.
|
||||
Maybe the victim is Colonel Mustard.
|
||||
Maybe the victim is Cardinal Cerise.
|
||||
Maybe the victim is Professor Plum.
|
||||
Maybe the victim is Professor Plum.
|
||||
Maybe the victim is Cardinal Cerise.
|
||||
Maybe the victim is Colonel Mustard.
|
||||
Maybe the victim is Professor Plum.
|
||||
Maybe the victim is Cardinal Cerise.
|
||||
Maybe the victim is Cardinal Cerise.
|
||||
Maybe the victim is Cardinal Cerise.
|
||||
Maybe the victim is Professor Plum.
|
||||
Maybe the victim is Cardinal Cerise.
|
||||
Maybe the victim is Colonel Mustard.
|
||||
The screen door squeaks surprisingly loudly.
|
||||
|
|
|
@ -491,10 +491,10 @@ Table of Zoggle
|
|||
(row 4) | 4.4 |
|
||||
Table of Selected Numbers
|
||||
(row 1) | 9 | nine |
|
||||
(row 2) | 154 | one hundred and fifty-four |
|
||||
(row 3) | 3 | three |
|
||||
(row 4) | 4 | four |
|
||||
(row 5) | 27 | twenty-seven |
|
||||
(row 2) | 27 | twenty-seven |
|
||||
(row 3) | 4 | four |
|
||||
(row 4) | 3 | three |
|
||||
(row 5) | 154 | one hundred and fifty-four |
|
||||
(row 6) | -- --
|
||||
(row 7) | -- --
|
||||
(row 8) | -- --
|
||||
|
|
|
@ -1 +1 @@
|
|||
-dataresourcetext '3:inform7/Tests/Test Filings/_internal_files/Nettles.txt'
|
||||
-dataresourcetext "3:inform7/Tests/Test Filings/_internal_files/Nettles.txt"
|
||||
|
|
|
@ -6,14 +6,14 @@ Gelato's Syndrome. It's struck, and it's struck hard. In these sticky summer mon
|
|||
|
||||
Patient Zero
|
||||
An Interactive Fiction
|
||||
Release 1 / Serial number 160428 / Inform 7 v10.1.0 / D
|
||||
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
|
||||
|
||||
Alfred Cralle Pool Hall
|
||||
The town's most popular gathering-place, the pool hall is decorated in honor of the inventor of the ice cream scoop.
|
||||
|
||||
An air conditioner sits in the corner, unhappily inert.
|
||||
|
||||
You can see Lewis and Linnea here.
|
||||
You can see Lewis and Linnea here. The latter looks as though dipped in french vanilla.
|
||||
|
||||
>(Testing.)
|
||||
|
||||
|
@ -58,7 +58,7 @@ Vanessa watches serenely as the metal door slides automatically back in place, s
|
|||
>[6] ask vanessa for french vanilla
|
||||
"Do you have a coupon?" Vanessa demands. You admit you do not. "No french vanilla for you!"
|
||||
|
||||
Antony trades in the coupon and receives a chocolate chip ice cream cone from Vanessa.
|
||||
Antony trades in the coupon and receives a blackberry sorbet ice cream cone from Vanessa.
|
||||
|
||||
>[7] ask vanessa for chocolate
|
||||
"Do you have a coupon?" Vanessa demands. You admit you do not. "No chocolate for you!"
|
||||
|
@ -77,6 +77,6 @@ Vanessa watches serenely as the metal door slides automatically back in place, s
|
|||
>[9] ask vanessa for chocolate chocolate chip
|
||||
"Do you have a coupon?" Vanessa demands. You admit you do not. "No chocolate chocolate chip for you!"
|
||||
|
||||
Martin trades in the coupon and receives a dulce de leche ice cream cone from Vanessa.
|
||||
Martin trades in the coupon and receives a rocky road ice cream cone from Vanessa.
|
||||
|
||||
>Are you sure you want to quit?
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
The Speed of Thought
|
||||
An Interactive Fiction
|
||||
Release 1 / Serial number 160428 / Inform 7 v10.1.0 / D
|
||||
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
|
||||
|
||||
Science Journalism Desk
|
||||
From here you, the Science Anchor, have the privilege of reporting the latest and most fascinating stories to an eager public.
|
||||
|
@ -14,19 +14,19 @@ Currently you have to report on the International Space Station. Your story coul
|
|||
>(Testing.)
|
||||
|
||||
>[1] report experiment module
|
||||
You turn to the camera and speak: "The experiment module has a length of about 7.34211 bathtubs."
|
||||
You turn to the camera and speak: "The experiment module has a length of roughly 7.34211 bathtubs."
|
||||
|
||||
>[2] report logistics
|
||||
"The logistics module has a length of roughly 2.76974 bathtubs." Right now the station will be cutting over to a visual of that.
|
||||
"The logistics module has a length of approximately 2.76974 bathtubs." Right now the station will be cutting over to a visual of that.
|
||||
|
||||
>[3] report height
|
||||
Turning to another camera angle, you add: "The station orbits at heights between about 627.53949 Empire State buildings and 1038.37476 Empire State buildings above the earth."
|
||||
Turning to another camera angle, you add: "The station orbits at heights between around 627.53949 Empire State buildings and 1038.37476 Empire State buildings above the earth."
|
||||
|
||||
>[4] report array
|
||||
"The solar array has a length of around 1.16 Olympic swimming pools and an area of about 125.0 queen-sized mattresses." Pity the kids in audiovisual who have to scare that image together in a hurry.
|
||||
"The solar array has a length of approximately 1.16 Olympic swimming pools and an area of about 125.0 queen-sized mattresses." Pity the kids in audiovisual who have to scare that image together in a hurry.
|
||||
|
||||
>[5] report solar cell
|
||||
"The individual solar cell has an area of roughly 0.17391 credit cards." You smile brightly.
|
||||
"The individual solar cell has an area of approximately 0.17391 credit cards." You smile brightly.
|
||||
|
||||
And that's all! The channel cuts to weather.
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
|
||||
M. Melmoth's Duel
|
||||
An Interactive Fiction
|
||||
Release 1 / Serial number 160428 / Inform 7 v10.1.0 / D
|
||||
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
|
||||
|
||||
Saint-Germain-des-Prés
|
||||
Haunt of artists, of the coffee-drinking sort, and of cafés, of the artist-haunted sort, you once again find yourself outside M. Melmoth's hotel. Today crowds of vulgar children play chase around the lampposts, and you long to be indoors.
|
||||
|
@ -16,7 +16,7 @@ Haunt of artists, of the coffee-drinking sort, and of cafés, of the artist-haun
|
|||
Hôtel d'Alsace
|
||||
Typical. Oscar writes you a letter announcing his own imminent demise - "My wallpaper and I are fighting a duel to the death. One or other of us has got to go." - and then you get there and he's out, no doubt procuring paint the colour of absinthe, if he isn't procuring the painter.
|
||||
|
||||
In this light, the wallpaper has a distinctly aquamarine wash.
|
||||
In this light, the wallpaper has a distinctly darkish purple wash. You particularly dislike purple.
|
||||
|
||||
>[2] out
|
||||
You leave, shaking your head. But within twenty-four hours, you are back, as you always knew you would be.
|
||||
|
@ -30,7 +30,7 @@ Haunt of artists, of the coffee-drinking sort, and of cafés, of the artist-haun
|
|||
Hôtel d'Alsace
|
||||
Typical. Oscar writes you a letter announcing his own imminent demise - "My wallpaper and I are fighting a duel to the death. One or other of us has got to go." - and then you get there and he's out, no doubt procuring paint the colour of absinthe, if he isn't procuring the painter.
|
||||
|
||||
In this light, the wallpaper has a distinctly green wash.
|
||||
In this light, the wallpaper has a distinctly aquamarine wash.
|
||||
|
||||
>[5] out
|
||||
You leave, shaking your head. But within twenty-four hours, you are back, as you always knew you would be.
|
||||
|
|
Loading…
Reference in a new issue