File: dialog.h

package info (click to toggle)
crossfire 1.75.0-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,168 kB
  • sloc: ansic: 83,169; sh: 4,659; perl: 1,736; lex: 1,443; makefile: 1,199; python: 43
file content (64 lines) | stat: -rw-r--r-- 2,544 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#ifndef DIALOG_H
#define DIALOG_H

#include "global.h"

/**
 * Various kind of messages a player or NPC can say.
 */
typedef enum {
    rt_say = 0,         /**< Basic sentence. */
    rt_reply = 1,       /**< Reply to something. */
    rt_question = 2     /**< Asking a question. */
} reply_type;

/**
 * One reply a NPC can expect.
 */
typedef struct struct_dialog_reply {
    char *reply;                        /**< Reply expected from the player. */
    char *message;                      /**< What the player will actually say for this reply. */
    reply_type type;                    /**< Type of message. */
    struct struct_dialog_reply *next;   /**< Next reply, NULL for last. */
} struct_dialog_reply;

/**
 * One message a NPC can react to.
 */
typedef struct struct_dialog_message {
    char *match;                                /**< What the player should say, can be a regexp. */
    char *message;                              /**< What the NPC will say. */
    struct struct_dialog_reply *replies;        /**< Replies this message has. */
    struct struct_dialog_message *next;         /**< Next message, NULL if last. */
} struct_dialog_message;

/**
 * Message information for a NPC.
 */
typedef struct struct_dialog_information {
    struct struct_dialog_reply *all_replies;    /**< All replies, to quickly search things. */
    struct struct_dialog_message *all_messages; /**< Messages the NPC can use. */
} struct_dialog_information;

/** How many NPC replies maximum to tell the player. */
#define MAX_REPLIES 10
/** How many NPCs maximum will reply to the player. */
#define MAX_NPC     5
/**
 * Structure used to build up dialog information when a player says something.
 * @sa monster_communicate().
 */
typedef struct talk_info {
    struct obj *who;                    /**< Player saying something. */
    const char *text;                   /**< What the player actually said. */
    sstring message;                    /**< If not NULL, what the player will be displayed as said. */
    int message_type;                   /**< A reply_type value for message. */
    int replies_count;                  /**< How many items in replies_words and replies. */
    sstring replies_words[MAX_REPLIES]; /**< Available reply words. */
    sstring replies[MAX_REPLIES];       /**< Description for replies_words. */
    int npc_msg_count;                  /**< How many NPCs reacted to the text being said. */
    sstring npc_msgs[MAX_NPC];          /**< What the NPCs will say. */
} talk_info;


#endif /* DIALOG_H */