blob: af983ecf3d3f6bfb3b0042fecd1257475c322522 [file] [log] [blame]
Zesstra8b5320e2022-02-18 21:10:26 +01001#pragma strict_types, rtt_checks, lightweight
2
3#define NEED_PROTOTYPES
4#include <player/comm.h>
5
6inherit "/std/player/comm_structs";
7
Zesstra7459f252022-02-23 22:47:26 +01008private nosave string uuid;
Zesstra8b5320e2022-02-18 21:10:26 +01009// nosave ist wichtig - niemand soll den buffer mit save_value() auslesen
10// koennen!
Zesstra7459f252022-02-23 22:47:26 +010011private nosave struct kobold_msg_s *buffer = ({});
Zesstra8b5320e2022-02-18 21:10:26 +010012
13protected void create_lw()
14{
15 uuid = getuuid(previous_object());
16}
17
18public string uuid()
19{
20 return uuid;
21}
22
Zesstra7459f252022-02-23 22:47:26 +010023public struct kobold_msg_s *Retrieve()
Zesstra8b5320e2022-02-18 21:10:26 +010024{
Zesstra7459f252022-02-23 22:47:26 +010025 if (uuid == getuuid(previous_object()))
Zesstra8b5320e2022-02-18 21:10:26 +010026 {
27 return buffer;
28 }
29 return 0;
30}
31
32public void Empty()
33{
Zesstra7459f252022-02-23 22:47:26 +010034 if (uuid == getuuid(previous_object()))
Zesstra8b5320e2022-02-18 21:10:26 +010035 {
36 buffer = ({});
37 }
38}
39
40public int store_msg(string msg, int msg_type, string msg_action,
41 string msg_prefix, object origin)
42{
43 // Nur KOBOLD in /secure darf Nachrichten speichern und es werden nur
44 // Nachrichten von Spielern/Magiern gespeichert.
45 if (object_name(previous_object()) != KOBOLD
46 || !query_once_interactive(origin))
47 return MSG_FAILED;
48 if (sizeof(buffer) >= MAX_KOBOLD_LIMIT)
49 return MSG_BUFFER_FULL;
50
Zesstra7459f252022-02-23 22:47:26 +010051 buffer += ({ (<kobold_msg_s> msg:msg, type:msg_type,
Zesstra8b5320e2022-02-18 21:10:26 +010052 prefix: msg_prefix, action: msg_action,
53 sendername: ({string})origin.query_real_name(),
54 timestamp: time())
55 });
56 return MSG_BUFFERED;
57}
58