blob: c893e2d3e714ef705af1e5e7d097fad926c4fb6b [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
31 case "norden":
32 case "nordosten":
33 case "osten":
34 case "suedosten":
35 case "sueden":
36 case "suedwesten":
37 case "westen":
38 case "nordwesten":
39 case "oben":
40 case "unten":
41 case "betrete":
42 case "verlasse":
43 case "teleport":
44 case "teleportiere":
45 action = MA_MOVE;
46 break;
47
48 case "unt":
49 action = MA_LOOK;
50 break;
51
52 case "wirf":
53 if (strstr(query_command(), " weg") > -1)
54 action = MA_PUT;
55 break;
56
57 case "stecke":
58 cmd = query_command();
59 if (strstr(cmd, " weg") > -1)
60 action = MA_UNWIELD;
61 else if (strstr(cmd," in ") > -1)
62 action = MA_PUT;
63 break;
64
65 case "ziehe":
66 cmd = query_command();
67 if (strstr(cmd, " an") > -1)
68 action = MA_WEAR;
69 else if (strstr(cmd, " aus") > -1)
70 action = MA_UNWEAR;
71 break;
72
73 case "esse":
74 case "friss":
75 action = MA_EAT;
76 break;
77
78 case "saufe":
79 action = MA_DRINK;
80 break;
81
82 case "hoere":
83 //MA_LISTEN == lausche
84 action = MA_LISTEN;
85 break;
86 case "lese":
87 action = MA_READ;
88 break;
89
90 case ":":
91 case ";":
92 action = MA_EMOTE;
93 break;
94
95 case "zerbreche":
96 case "zerstoere":
97 case "verbrenne":
98 case "entsorge":
99 action = MA_REMOVE;
100 break;
101 }
102 return action;
103}
104
105protected int comm_guess_message_type(string action, mixed origin) {
106 // everything not mentioned in the switch becomes MT_LOOK.
107 switch(action) {
108 case MA_FIGHT:
109 // Kampf kann man meisten sowohl sehen als auch hoeren.
110 return MT_LOOK | MT_LISTEN;
111 case MA_LISTEN:
112 case MA_SAY:
113 return MT_LISTEN;
114 case MA_FEEL:
115 return MT_FEEL;
116 case MA_SMELL:
117 return MT_SMELL;
118 case MA_CHANNEL:
119 return MT_COMM | MT_FAR;
120 case MA_EMOTE:
121 if (objectp(origin)
122 && environment(origin) == environment())
123 return MT_COMM;
124 else
125 return MT_COMM | MT_FAR;
126 case MA_SHOUT:
127 return MT_LISTEN | MT_FAR;
128 }
129 // die meisten Aktionen sind zumindest sichtbar...
130 return MT_LOOK;
131}
132