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