open-adventure/templates/dungeon.h.tpl
2023-04-03 11:25:11 -04:00

164 lines
3.8 KiB
Smarty

/*
SPDX-FileCopyrightText: Eric S. Raymond
SPDX-License-Identifier: BSD-2-Clause
*/
#ifndef DUNGEON_H
#define DUNGEON_H
#include <stdio.h>
#include <stdbool.h>
#define SILENT -1 /* no sound */
/* Symbols for cond bits */
#define COND_LIT 0 /* Light */
#define COND_OILY 1 /* If bit 2 is on: on for oil, off for water */
#define COND_FLUID 2 /* Liquid asset, see bit 1 */
#define COND_NOARRR 3 /* Pirate doesn't go here unless following */
#define COND_NOBACK 4 /* Cannot use "back" to move away */
#define COND_ABOVE 5 /* Aboveground, but not in forest */
#define COND_DEEP 6 /* Deep - e.g where dwarves are active */
#define COND_FOREST 7 /* In the forest */
#define COND_FORCED 8 /* Only one way in or out of here */
#define COND_ALLDIFFERENT 9 /* Room is in maze all different */
#define COND_ALLALIKE 10 /* Room is in maze all alike */
/* Bits past 11 indicate areas of interest to "hint" routines */
#define COND_HBASE 11 /* Base for location hint bits */
#define COND_HCAVE 12 /* Trying to get into cave */
#define COND_HBIRD 13 /* Trying to catch bird */
#define COND_HSNAKE 14 /* Trying to deal with snake */
#define COND_HMAZE 15 /* Lost in maze */
#define COND_HDARK 16 /* Pondering dark room */
#define COND_HWITT 17 /* At Witt's End */
#define COND_HCLIFF 18 /* Cliff with urn */
#define COND_HWOODS 19 /* Lost in forest */
#define COND_HOGRE 20 /* Trying to deal with ogre */
#define COND_HJADE 21 /* Found all treasures except jade */
typedef struct {{
const char** strs;
const int n;
}} string_group_t;
typedef struct {{
const string_group_t words;
const char* inventory;
int plac, fixd;
bool is_treasure;
const char** descriptions;
const char** sounds;
const char** texts;
const char** changes;
}} object_t;
typedef struct {{
const char* small;
const char* big;
}} descriptions_t;
typedef struct {{
descriptions_t description;
const long sound;
const bool loud;
}} location_t;
typedef struct {{
const char* query;
const char* yes_response;
}} obituary_t;
typedef struct {{
const int threshold;
const int point_loss;
const char* message;
}} turn_threshold_t;
typedef struct {{
const int threshold;
const char* message;
}} class_t;
typedef struct {{
const int number;
const int turns;
const int penalty;
const char* question;
const char* hint;
}} hint_t;
typedef struct {{
const string_group_t words;
}} motion_t;
typedef struct {{
const string_group_t words;
const char* message;
const bool noaction;
}} action_t;
enum condtype_t {{cond_goto, cond_pct, cond_carry, cond_with, cond_not}};
enum desttype_t {{dest_goto, dest_special, dest_speak}};
typedef struct {{
const long motion;
const long condtype;
const long condarg1;
const long condarg2;
const enum desttype_t desttype;
const long destval;
const bool nodwarves;
const bool stop;
}} travelop_t;
extern const location_t locations[];
extern const object_t objects[];
extern const char* arbitrary_messages[];
extern const class_t classes[];
extern const turn_threshold_t turn_thresholds[];
extern const obituary_t obituaries[];
extern const hint_t hints[];
extern long conditions[];
extern const motion_t motions[];
extern const action_t actions[];
extern const travelop_t travel[];
extern const long tkey[];
extern const char *ignore;
#define NLOCATIONS {num_locations}
#define NOBJECTS {num_objects}
#define NHINTS {num_hints}
#define NCLASSES {num_classes}
#define NDEATHS {num_deaths}
#define NTHRESHOLDS {num_thresholds}
#define NMOTIONS {num_motions}
#define NACTIONS {num_actions}
#define NTRAVEL {num_travel}
#define NKEYS {num_keys}
#define BIRD_ENDSTATE {bird_endstate}
enum arbitrary_messages_refs {{
{arbitrary_messages}
}};
enum locations_refs {{
{locations}
}};
enum object_refs {{
{objects}
}};
enum motion_refs {{
{motions}
}};
enum action_refs {{
{actions}
}};
/* State definitions */
{state_definitions}
#endif /* end DUNGEON_H */