aboutsummaryrefslogtreecommitdiff
path: root/src/features/fragBot
diff options
context:
space:
mode:
Diffstat (limited to 'src/features/fragBot')
-rw-r--r--src/features/fragBot/index.js84
-rw-r--r--src/features/fragBot/metadata.json8
2 files changed, 92 insertions, 0 deletions
diff --git a/src/features/fragBot/index.js b/src/features/fragBot/index.js
new file mode 100644
index 0000000..2b89203
--- /dev/null
+++ b/src/features/fragBot/index.js
@@ -0,0 +1,84 @@
+/// <reference types="../../../../CTAutocomplete" />
+/// <reference lib="es2015" />
+import Feature from "../../featureClass/class";
+import SettingBase from "../settings/settingThings/settingBase";
+import ToggleSetting from "../settings/settingThings/toggle";
+
+class FragBot extends Feature {
+ constructor() {
+ super()
+ }
+
+ onEnable() {
+ this.initVariables()
+
+ this.hostingFragBot = false
+ this.fragBotQueue = []
+ this.commandQueue = []
+
+ new SettingBase("To host a fragbot use /fragbot", "", undefined, "host_fragbot_info", this)
+ new SettingBase("NOTE: All this does atm is accept party invites", "More features for this coming soon", true, "stat_next_to_name_description", this)
+
+ // this.uploadToWebsite = new ToggleSetting("Advertise fragbot status", "Will show up as a fragbot in other peoples fragbot lists", true, "advertise_fragbot", this)
+
+ this.registerCommand("fragbot", this.fragbotCommand)
+
+ this.registerStep(false, 5, this.step).registeredWhen(() => this.hostingFragBot)
+ this.registerStep(true, 2, this.step2).registeredWhen(() => this.hostingFragBot)
+
+ this.registerChat("&9&m---------------------------${*}&r&9\n&r${player} &r&ehas invited you to join their party!\n&r&eYou have &r&c60 &r&eseconds to accept. &r&6Click here to join!&r&9\n&r&9&m----------------------------${*}&r", this.recievedPartyInvite)
+ }
+
+ step() {
+ if (!this.hostingFragBot) return
+
+ if (this.fragBotQueue.length > 0) {
+ let player = this.fragBotQueue.shift()
+ if (player) {
+ this.commandQueue.push("/party leave")
+
+ this.commandQueue.push("/party accept " + player)
+ }
+ }
+ }
+ step2() {
+ if (!this.hostingFragBot) return
+
+ if (this.commandQueue.length > 0) {
+ let command = this.commandQueue.shift()
+ if (command) {
+ ChatLib.say(command)
+ }
+ }
+ }
+ recievedPartyInvite(player) {
+ if (!this.hostingFragBot) return
+ player = ChatLib.removeFormatting(player).split(" ").pop()
+
+ this.fragBotQueue.push(player)
+ }
+
+ fragbotCommand(...args) {
+ if (this.hostingFragBot) {
+ this.hostingFragBot = false
+ ChatLib.chat(this.FeatureManager.messagePrefix + "Fragbot has been disabled")
+ } else {
+ this.hostingFragBot = true
+ ChatLib.chat(this.FeatureManager.messagePrefix + "Now acting as a fragbot, run /fragbot again to disable")
+ }
+ }
+
+ initVariables() {
+ this.hostingFragBot = undefined
+ this.fragBotQueue = undefined
+ this.commandQueue = undefined
+ }
+
+ onDisable() {
+ this.initVariables()
+ }
+}
+
+module.exports = {
+ class: new FragBot()
+} \ No newline at end of file
diff --git a/src/features/fragBot/metadata.json b/src/features/fragBot/metadata.json
new file mode 100644
index 0000000..5aaa6a9
--- /dev/null
+++ b/src/features/fragBot/metadata.json
@@ -0,0 +1,8 @@
+{
+ "name": "Frag Bot",
+ "description": "Features to assist using fragbots, or to host one",
+ "isHidden": false,
+ "isTogglable": true,
+ "defaultEnabled": true,
+ "sortA": 1
+} \ No newline at end of file