Reexpress the motion words in adventure.yaml.
This commit is contained in:
parent
4b2472fb16
commit
f9edfc5151
6 changed files with 185 additions and 62 deletions
8
advent.h
8
advent.h
|
@ -167,17 +167,9 @@ extern int restore(FILE *);
|
||||||
#define INDEEP(LOC) ((LOC) >= LOC_MISTHALL && !OUTSID(LOC))
|
#define INDEEP(LOC) ((LOC) >= LOC_MISTHALL && !OUTSID(LOC))
|
||||||
|
|
||||||
/* vocabulary items */
|
/* vocabulary items */
|
||||||
extern long NUL;
|
|
||||||
extern long BACK;
|
|
||||||
extern long LOOK;
|
|
||||||
extern long CAVE;
|
|
||||||
extern long FIND;
|
extern long FIND;
|
||||||
extern long INVENT;
|
extern long INVENT;
|
||||||
extern long SAY;
|
extern long SAY;
|
||||||
extern long ENTER;
|
|
||||||
extern long STREAM;
|
|
||||||
extern long DPRSSN;
|
|
||||||
extern long ENTRNC;
|
|
||||||
extern long LOCK;
|
extern long LOCK;
|
||||||
extern long THROW;
|
extern long THROW;
|
||||||
|
|
||||||
|
|
156
adventure.yaml
156
adventure.yaml
|
@ -378,6 +378,162 @@ actspk: {
|
||||||
35: HUH_MAN,
|
35: HUH_MAN,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
motions: !!omap
|
||||||
|
- MOT_0:
|
||||||
|
words: !!null
|
||||||
|
- MOT_1:
|
||||||
|
words: !!null
|
||||||
|
- MOT_2:
|
||||||
|
words: ['road', 'hill']
|
||||||
|
- ENTER:
|
||||||
|
words: ['enter']
|
||||||
|
- MOT_4:
|
||||||
|
words: ['upstr']
|
||||||
|
- MOT_5:
|
||||||
|
words: ['downs']
|
||||||
|
- MOT_6:
|
||||||
|
words: ['fores']
|
||||||
|
- MOT_7:
|
||||||
|
words: ['forwa', 'conti', 'onwar']
|
||||||
|
- BACK:
|
||||||
|
words: ['back', 'retur', 'retre']
|
||||||
|
- MOT_9:
|
||||||
|
words: ['valle']
|
||||||
|
- MOT_10:
|
||||||
|
words: ['stair']
|
||||||
|
- MOT_11:
|
||||||
|
words: ['out', 'outsi', 'exit', 'leave']
|
||||||
|
- MOT_12:
|
||||||
|
words: ['build', 'house']
|
||||||
|
- MOT_13:
|
||||||
|
words: ['gully']
|
||||||
|
- STREAM:
|
||||||
|
words: ['strea']
|
||||||
|
- MOT_15:
|
||||||
|
words: ['fork']
|
||||||
|
- MOT_16:
|
||||||
|
words: ['bed']
|
||||||
|
- MOT_17:
|
||||||
|
words: ['crawl']
|
||||||
|
- MOT_18:
|
||||||
|
words: ['cobbl']
|
||||||
|
- MOT_19:
|
||||||
|
words: ['inwar', 'insid', 'in']
|
||||||
|
- MOT_20:
|
||||||
|
words: ['surfa']
|
||||||
|
- NUL:
|
||||||
|
words: ['null', 'nowhe']
|
||||||
|
- MOT_22:
|
||||||
|
words: ['dark']
|
||||||
|
- MOT_23:
|
||||||
|
words: ['passa', 'tunne']
|
||||||
|
- MOT_24:
|
||||||
|
words: ['low']
|
||||||
|
- MOT_25:
|
||||||
|
words: ['canyo']
|
||||||
|
- MOT_26:
|
||||||
|
words: ['awkwa']
|
||||||
|
- MOT_27:
|
||||||
|
words: ['giant']
|
||||||
|
- MOT_28:
|
||||||
|
words: ['view']
|
||||||
|
- MOT_29:
|
||||||
|
words: ['upwar', 'up', 'u', 'above', 'ascen']
|
||||||
|
- MOT_30:
|
||||||
|
words: ['d', 'downw', 'down', 'desce']
|
||||||
|
- MOT_31:
|
||||||
|
words: ['pit']
|
||||||
|
- MOT_32:
|
||||||
|
words: ['outdo']
|
||||||
|
- MOT_33:
|
||||||
|
words: ['crack']
|
||||||
|
- MOT_34:
|
||||||
|
words: ['steps']
|
||||||
|
- MOT_35:
|
||||||
|
words: ['dome']
|
||||||
|
- MOT_36:
|
||||||
|
words: ['left']
|
||||||
|
- MOT_37:
|
||||||
|
words: ['right']
|
||||||
|
- MOT_38:
|
||||||
|
words: ['hall']
|
||||||
|
- MOT_39:
|
||||||
|
words: ['jump']
|
||||||
|
- MOT_40:
|
||||||
|
words: ['barre']
|
||||||
|
- MOT_41:
|
||||||
|
words: ['over']
|
||||||
|
- MOT_42:
|
||||||
|
words: ['acros']
|
||||||
|
- MOT_43:
|
||||||
|
words: ['east', 'e']
|
||||||
|
- MOT_44:
|
||||||
|
words: ['west', 'w']
|
||||||
|
- MOT_45:
|
||||||
|
words: ['north', 'n']
|
||||||
|
- MOT_46:
|
||||||
|
words: ['south', 's']
|
||||||
|
- MOT_47:
|
||||||
|
words: ['ne']
|
||||||
|
- MOT_48:
|
||||||
|
words: ['se']
|
||||||
|
- MOT_49:
|
||||||
|
words: ['sw']
|
||||||
|
- MOT_50:
|
||||||
|
words: ['nw']
|
||||||
|
- MOT_51:
|
||||||
|
words: ['debri']
|
||||||
|
- MOT_52:
|
||||||
|
words: ['hole']
|
||||||
|
- MOT_53:
|
||||||
|
words: ['wall']
|
||||||
|
- MOT_54:
|
||||||
|
words: ['broke']
|
||||||
|
- MOT_55:
|
||||||
|
words: ['y2']
|
||||||
|
- MOT_56:
|
||||||
|
words: ['climb']
|
||||||
|
- LOOK:
|
||||||
|
words: ['look', 'exami', 'touch', 'descr']
|
||||||
|
- MOT_58:
|
||||||
|
words: ['floor']
|
||||||
|
- MOT_59:
|
||||||
|
words: ['room']
|
||||||
|
- MOT_60:
|
||||||
|
words: ['slit']
|
||||||
|
- MOT_61:
|
||||||
|
words: ['slab', 'slabr']
|
||||||
|
- MOT_62:
|
||||||
|
words: ['xyzzy']
|
||||||
|
- DPRSSN:
|
||||||
|
words: ['depre']
|
||||||
|
- ENTRNC:
|
||||||
|
words: ['entra']
|
||||||
|
- MOT_65:
|
||||||
|
words: ['plugh']
|
||||||
|
- MOT_66:
|
||||||
|
words: ['secre']
|
||||||
|
- CAVE:
|
||||||
|
words: ['cave']
|
||||||
|
- MOT_68:
|
||||||
|
words: !!null
|
||||||
|
- MOT_69:
|
||||||
|
words: ['cross']
|
||||||
|
- MOT_70:
|
||||||
|
words: ['bedqu']
|
||||||
|
- MOT_71:
|
||||||
|
words: ['plove']
|
||||||
|
- MOT_72:
|
||||||
|
words: ['orien']
|
||||||
|
- MOT_73:
|
||||||
|
words: ['caver']
|
||||||
|
- MOT_74:
|
||||||
|
words: ['shell']
|
||||||
|
- MOT_75:
|
||||||
|
words: ['reser']
|
||||||
|
- MOT_76:
|
||||||
|
words: ['main', 'offic']
|
||||||
|
|
||||||
hints:
|
hints:
|
||||||
- hint: &grate
|
- hint: &grate
|
||||||
name: CAVE
|
name: CAVE
|
||||||
|
|
8
cheat.c
8
cheat.c
|
@ -13,17 +13,9 @@ struct game_t game;
|
||||||
long LNLENG, LNPOSN;
|
long LNLENG, LNPOSN;
|
||||||
char rawbuf[LINESIZE], INLINE[LINESIZE + 1];
|
char rawbuf[LINESIZE], INLINE[LINESIZE + 1];
|
||||||
|
|
||||||
long NUL;
|
|
||||||
long BACK;
|
|
||||||
long LOOK;
|
|
||||||
long CAVE;
|
|
||||||
long FIND;
|
long FIND;
|
||||||
long INVENT;
|
long INVENT;
|
||||||
long SAY;
|
long SAY;
|
||||||
long ENTER;
|
|
||||||
long STREAM;
|
|
||||||
long DPRSSN;
|
|
||||||
long ENTRNC;
|
|
||||||
long LOCK;
|
long LOCK;
|
||||||
long THROW;
|
long THROW;
|
||||||
|
|
||||||
|
|
12
init.c
12
init.c
|
@ -74,17 +74,7 @@ void initialise(void)
|
||||||
|
|
||||||
/* Define some handy mnemonics. */
|
/* Define some handy mnemonics. */
|
||||||
|
|
||||||
/* These are motion-verb numbers. */
|
/* Some action verbs. */
|
||||||
BACK = VOCWRD(WORD_BACK, 0);
|
|
||||||
CAVE = VOCWRD(WORD_CAVE, 0);
|
|
||||||
DPRSSN = VOCWRD(WORD_DPRSSN, 0);
|
|
||||||
ENTER = VOCWRD(WORD_ENTER, 0);
|
|
||||||
ENTRNC = VOCWRD(WORD_ENTRNC, 0);
|
|
||||||
LOOK = VOCWRD(WORD_LOOK, 0);
|
|
||||||
NUL = VOCWRD(WORD_NUL, 0);
|
|
||||||
STREAM = VOCWRD(WORD_STREAM, 0);
|
|
||||||
|
|
||||||
/* And some action verbs. */
|
|
||||||
FIND = VOCWRD(WORD_FIND, 2);
|
FIND = VOCWRD(WORD_FIND, 2);
|
||||||
INVENT = VOCWRD(WORD_INVENT, 2);
|
INVENT = VOCWRD(WORD_INVENT, 2);
|
||||||
LOCK = VOCWRD(WORD_LOCK, 2);
|
LOCK = VOCWRD(WORD_LOCK, 2);
|
||||||
|
|
8
main.c
8
main.c
|
@ -43,17 +43,9 @@ struct game_t game;
|
||||||
long LNLENG, LNPOSN;
|
long LNLENG, LNPOSN;
|
||||||
char rawbuf[LINESIZE], INLINE[LINESIZE + 1];
|
char rawbuf[LINESIZE], INLINE[LINESIZE + 1];
|
||||||
|
|
||||||
long NUL;
|
|
||||||
long BACK;
|
|
||||||
long LOOK;
|
|
||||||
long CAVE;
|
|
||||||
long FIND;
|
long FIND;
|
||||||
long INVENT;
|
long INVENT;
|
||||||
long SAY;
|
long SAY;
|
||||||
long ENTER;
|
|
||||||
long STREAM;
|
|
||||||
long DPRSSN;
|
|
||||||
long ENTRNC;
|
|
||||||
long LOCK;
|
long LOCK;
|
||||||
long THROW;
|
long THROW;
|
||||||
|
|
||||||
|
|
|
@ -89,10 +89,8 @@ typedef struct {{
|
||||||
}} hint_t;
|
}} hint_t;
|
||||||
|
|
||||||
typedef struct {{
|
typedef struct {{
|
||||||
const char* word;
|
const char** words;
|
||||||
const int type;
|
}} motion_t;
|
||||||
const int value;
|
|
||||||
}} vocabulary_t;
|
|
||||||
|
|
||||||
extern const location_t locations[];
|
extern const location_t locations[];
|
||||||
extern const object_t objects[];
|
extern const object_t objects[];
|
||||||
|
@ -102,8 +100,8 @@ extern const turn_threshold_t turn_thresholds[];
|
||||||
extern const obituary_t obituaries[];
|
extern const obituary_t obituaries[];
|
||||||
extern const hint_t hints[];
|
extern const hint_t hints[];
|
||||||
extern long conditions[];
|
extern long conditions[];
|
||||||
extern const vocabulary_t vocabulary[];
|
|
||||||
extern const long actspk[];
|
extern const long actspk[];
|
||||||
|
extern const motion_t motions[];
|
||||||
|
|
||||||
#define NLOCATIONS {}
|
#define NLOCATIONS {}
|
||||||
#define NOBJECTS {}
|
#define NOBJECTS {}
|
||||||
|
@ -112,7 +110,6 @@ extern const long actspk[];
|
||||||
#define NDEATHS {}
|
#define NDEATHS {}
|
||||||
#define NTHRESHOLDS {}
|
#define NTHRESHOLDS {}
|
||||||
#define NVERBS {}
|
#define NVERBS {}
|
||||||
#define NVOCAB {}
|
|
||||||
#define NTRAVEL {}
|
#define NTRAVEL {}
|
||||||
|
|
||||||
enum arbitrary_messages_refs {{
|
enum arbitrary_messages_refs {{
|
||||||
|
@ -127,6 +124,10 @@ enum object_refs {{
|
||||||
{}
|
{}
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
enum motion_refs {{
|
||||||
|
{}
|
||||||
|
}};
|
||||||
|
|
||||||
/* State definitions */
|
/* State definitions */
|
||||||
|
|
||||||
{}
|
{}
|
||||||
|
@ -170,12 +171,12 @@ long conditions[] = {{
|
||||||
{}
|
{}
|
||||||
}};
|
}};
|
||||||
|
|
||||||
const vocabulary_t vocabulary[] = {{
|
const long actspk[] = {{
|
||||||
|
NO_MESSAGE,
|
||||||
{}
|
{}
|
||||||
}};
|
}};
|
||||||
|
|
||||||
const long actspk[] = {{
|
const motion_t motions[] = {{
|
||||||
NO_MESSAGE,
|
|
||||||
{}
|
{}
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
@ -397,22 +398,6 @@ def recompose(type_word, value):
|
||||||
sys.stderr.write("%s is not a known word classifier\n" % attrs["type"])
|
sys.stderr.write("%s is not a known word classifier\n" % attrs["type"])
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
def get_vocabulary(vocabulary):
|
|
||||||
template = """ {{
|
|
||||||
.word = {},
|
|
||||||
.type = {},
|
|
||||||
.value = {},
|
|
||||||
}},
|
|
||||||
"""
|
|
||||||
voc_str = ""
|
|
||||||
for vocab in vocabulary:
|
|
||||||
word = make_c_string(vocab["word"])
|
|
||||||
type_code = recompose(vocab["type"], vocab["value"])
|
|
||||||
value = vocab["value"]
|
|
||||||
voc_str += template.format(word, type_code, value)
|
|
||||||
voc_str = voc_str[:-1] # trim trailing newline
|
|
||||||
return voc_str
|
|
||||||
|
|
||||||
def get_actspk(actspk):
|
def get_actspk(actspk):
|
||||||
res = ""
|
res = ""
|
||||||
for (i, word) in actspk.items():
|
for (i, word) in actspk.items():
|
||||||
|
@ -483,6 +468,22 @@ def buildtravel(locs, objs, voc):
|
||||||
#print(tuple(tt))
|
#print(tuple(tt))
|
||||||
return (ltravel, lkeys)
|
return (ltravel, lkeys)
|
||||||
|
|
||||||
|
def get_motions(motions):
|
||||||
|
template = """ {{
|
||||||
|
.words = {},
|
||||||
|
}},
|
||||||
|
"""
|
||||||
|
mot_str = ""
|
||||||
|
for motion in motions:
|
||||||
|
contents = motion[1]
|
||||||
|
if contents["words"] == None:
|
||||||
|
mot_str += template.format("NULL")
|
||||||
|
continue
|
||||||
|
c_words = [make_c_string(s) for s in contents["words"]]
|
||||||
|
words_str = "(const char* []) {" + ", ".join(c_words) + "}"
|
||||||
|
mot_str += template.format(words_str)
|
||||||
|
return mot_str
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
with open(yaml_name, "r") as f:
|
with open(yaml_name, "r") as f:
|
||||||
db = yaml.load(f)
|
db = yaml.load(f)
|
||||||
|
@ -502,8 +503,8 @@ if __name__ == "__main__":
|
||||||
get_obituaries(db["obituaries"]),
|
get_obituaries(db["obituaries"]),
|
||||||
get_hints(db["hints"], db["arbitrary_messages"]),
|
get_hints(db["hints"], db["arbitrary_messages"]),
|
||||||
get_condbits(db["locations"]),
|
get_condbits(db["locations"]),
|
||||||
get_vocabulary(db["vocabulary"]),
|
|
||||||
get_actspk(db["actspk"]),
|
get_actspk(db["actspk"]),
|
||||||
|
get_motions(db["motions"]),
|
||||||
)
|
)
|
||||||
|
|
||||||
h = h_template.format(
|
h = h_template.format(
|
||||||
|
@ -514,11 +515,11 @@ if __name__ == "__main__":
|
||||||
len(db["obituaries"]),
|
len(db["obituaries"]),
|
||||||
len(db["turn_thresholds"]),
|
len(db["turn_thresholds"]),
|
||||||
len(db["actspk"]),
|
len(db["actspk"]),
|
||||||
len(db["vocabulary"]),
|
|
||||||
len(travel),
|
len(travel),
|
||||||
get_refs(db["arbitrary_messages"]),
|
get_refs(db["arbitrary_messages"]),
|
||||||
get_refs(db["locations"]),
|
get_refs(db["locations"]),
|
||||||
get_refs(db["objects"]),
|
get_refs(db["objects"]),
|
||||||
|
get_refs(db["motions"]),
|
||||||
statedefines,
|
statedefines,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue