summaryrefslogtreecommitdiff
path: root/commands.c
diff options
context:
space:
mode:
authorTest_User <hax@andrewyu.org>2023-05-03 22:57:53 -0400
committerTest_User <hax@andrewyu.org>2023-05-03 22:57:53 -0400
commite4b5445b3ca844e568a84abbf931a026a6ca6226 (patch)
tree9d9d615406c5a91036ebcd5b23bd8af30d3e8f3d /commands.c
parentec8b1682e86535333c34966f6aafee349e609641 (diff)
downloadcoupserv-e4b5445b3ca844e568a84abbf931a026a6ca6226.tar.gz
coupserv-e4b5445b3ca844e568a84abbf931a026a6ca6226.zip
C HaxServ
Diffstat (limited to 'commands.c')
-rw-r--r--commands.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/commands.c b/commands.c
new file mode 100644
index 0000000..ad0607d
--- /dev/null
+++ b/commands.c
@@ -0,0 +1,65 @@
+#include <stdint.h>
+#include <stdlib.h>
+
+#include "types.h"
+#include "table.h"
+#include "commands.h"
+#include "network.h"
+#include "tls.h"
+
+struct table user_commands = {0};
+
+int raw_command(struct string sender, struct string original_message, struct string to, uint64_t argc, struct string *argv) {
+ if (argv[0].len < original_message.len) {
+ original_message.data += argv[0].len + 1;
+ original_message.len -= argv[0].len + 1;
+ SEND(original_message);
+ }
+ SEND(STRING("\n"));
+
+ return 0;
+}
+static struct command_def raw_command_def = {
+ .func = raw_command,
+ .privs = STRING("Admin"),
+ .local_only = 0,
+};
+
+static struct pref_type_suff {
+ struct string pref;
+ uint8_t type;
+ struct string suff;
+} sus_strings[] = {
+ {STRING(":1HC000000 PRIVMSG "), 0, STRING(" :Andrew is very sus.\n")},
+ {STRING(":1HC000000 PRIVMSG "), 0, STRING(" :I was the impostor, but you only know because I killed you.\n")},
+ {STRING(":1HC000000 PRIVMSG "), 0, STRING(" :\x1b(0\n")},
+ {STRING(":1HC000000 KILL "), 1, STRING(" :Ejected (1 Impostor remains)\n")},
+ {STRING(":1HC000000 KILL "), 1, STRING(" :Ejected, and the crewmates have won.\n")},
+};
+
+int sus_command(struct string sender, struct string original_message, struct string to, uint64_t argc, struct string *argv) {
+ uint64_t index = random() % (sizeof(sus_strings)/sizeof(sus_strings[0]));
+
+ SEND(sus_strings[index].pref);
+ if (sus_strings[index].type == 0)
+ SEND(to);
+ else
+ SEND(sender);
+ SEND(sus_strings[index].suff);
+
+ return 0;
+}
+static struct command_def sus_command_def = {
+ .func = sus_command,
+ .privs = {0},
+ .local_only = 0,
+};
+
+int init_user_commands(void) {
+ user_commands.array = malloc(0);
+
+ set_table_index(&user_commands, STRING(":"), &raw_command_def);
+ set_table_index(&user_commands, STRING("sus"), &sus_command_def);
+
+ return 0;
+}