blob: 6001ffd27a3f69dc47cc086d87d6bab12bdf9130 [file] [log] [blame]
MG Mud User88f12472016-06-24 23:31:02 +02001// MorgenGrauen MUDlib
2//
3// living/comm.c -- communiction module for livings
4//
5// $Id$
6
7#pragma strong_types,save_types
8#pragma no_clone
9#pragma pedantic
10#pragma range_check
11
12#include <defines.h>
13#include <living/comm.h>
14
15void create_super()
16{
17 set_next_reset(-1);
18}
19
20protected string comm_guess_action() {
21 string cmd;
22 string action = query_verb();
23 // Die Aktionen sind intern in der Regel nach den haeufigsten Kommandoverben
24 // dieser Aktion benannt. Bei einigen Aktionen sind mehrere Kommandoverben
25 // ueblich, die sollen hier noch abgehandelt werden.
26 switch(action) {
27 case "nehme":
28 // MA_TAKE == nimm
29 action = MA_TAKE;
30 break;
31
32 case "norden":
33 case "nordosten":
34 case "osten":
35 case "suedosten":
36 case "sueden":
37 case "suedwesten":
38 case "westen":
39 case "nordwesten":
40 case "oben":
41 case "unten":
42 case "betrete":
43 case "verlasse":
44 case "teleport":
45 case "teleportiere":
46 action = MA_MOVE;
47 break;
48
49 case "unt":
50 action = MA_LOOK;
51 break;
52
53 case "wirf":
54 if (strstr(query_command(), " weg") > -1)
55 action = MA_PUT;
56 break;
57
58 case "stecke":
59 cmd = query_command();
60 if (strstr(cmd, " weg") > -1)
61 action = MA_UNWIELD;
62 else if (strstr(cmd," in ") > -1)
63 action = MA_PUT;
64 break;
65
66 case "ziehe":
67 cmd = query_command();
68 if (strstr(cmd, " an") > -1)
69 action = MA_WEAR;
70 else if (strstr(cmd, " aus") > -1)
71 action = MA_UNWEAR;
72 break;
73
74 case "esse":
75 case "friss":
76 action = MA_EAT;
77 break;
78
79 case "saufe":
80 action = MA_DRINK;
81 break;
82
83 case "hoere":
84 //MA_LISTEN == lausche
85 action = MA_LISTEN;
86 break;
87 case "lese":
88 action = MA_READ;
89 break;
90
91 case ":":
92 case ";":
93 action = MA_EMOTE;
94 break;
95
96 case "zerbreche":
97 case "zerstoere":
98 case "verbrenne":
99 case "entsorge":
100 action = MA_REMOVE;
101 break;
102 }
103 return action;
104}
105
106protected int comm_guess_message_type(string action, mixed origin) {
107 // everything not mentioned in the switch becomes MT_LOOK.
108 switch(action) {
109 case MA_FIGHT:
110 // Kampf kann man meisten sowohl sehen als auch hoeren.
111 return MT_LOOK | MT_LISTEN;
112 case MA_LISTEN:
113 case MA_SAY:
114 return MT_LISTEN;
115 case MA_FEEL:
116 return MT_FEEL;
117 case MA_SMELL:
118 return MT_SMELL;
119 case MA_CHANNEL:
120 return MT_COMM | MT_FAR;
121 case MA_EMOTE:
122 if (objectp(origin)
123 && environment(origin) == environment())
124 return MT_COMM;
125 else
126 return MT_COMM | MT_FAR;
127 case MA_SHOUT:
128 return MT_LISTEN | MT_FAR;
129 }
130 // die meisten Aktionen sind zumindest sichtbar...
131 return MT_LOOK;
132}
133