From de50adbf167f864191f74835a61cb591cc97d5ff Mon Sep 17 00:00:00 2001 From: scottserven Date: Thu, 19 Oct 2023 20:51:41 -0400 Subject: [PATCH 01/12] little shop of horrors --- static/images/blood.gif | Bin 0 -> 80154 bytes static/images/plants/audrey/0.png | Bin 0 -> 10408 bytes static/images/plants/audrey/1.png | Bin 0 -> 12225 bytes static/images/plants/audrey/2.png | Bin 0 -> 16829 bytes static/images/plants/audrey/3.png | Bin 0 -> 17900 bytes static/images/plants/audrey/4.png | Bin 0 -> 20020 bytes static/images/plants/audrey/wilted.png | Bin 0 -> 11149 bytes static/images/plants/{ => basic}/0.png | Bin static/images/plants/{ => basic}/1.png | Bin static/images/plants/{ => basic}/2.png | Bin static/images/plants/{ => basic}/3.png | Bin static/images/plants/{ => basic}/4.png | Bin static/images/plants/{ => basic}/wilted.png | Bin static/js/script.js | 9 ++- time2grow/bot.py | 80 +++++++++++++++++++- time2grow/plant.py | 19 ++++- 16 files changed, 100 insertions(+), 8 deletions(-) create mode 100644 static/images/blood.gif create mode 100644 static/images/plants/audrey/0.png create mode 100644 static/images/plants/audrey/1.png create mode 100644 static/images/plants/audrey/2.png create mode 100644 static/images/plants/audrey/3.png create mode 100644 static/images/plants/audrey/4.png create mode 100644 static/images/plants/audrey/wilted.png rename static/images/plants/{ => basic}/0.png (100%) rename static/images/plants/{ => basic}/1.png (100%) rename static/images/plants/{ => basic}/2.png (100%) rename static/images/plants/{ => basic}/3.png (100%) rename static/images/plants/{ => basic}/4.png (100%) rename static/images/plants/{ => basic}/wilted.png (100%) diff --git a/static/images/blood.gif b/static/images/blood.gif new file mode 100644 index 0000000000000000000000000000000000000000..b356224a02accfcc785f7b6a19caad946091bb8e GIT binary patch literal 80154 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

Onby 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 literal 0 HcmV?d00001 diff --git a/static/images/plants/audrey/0.png b/static/images/plants/audrey/0.png new file mode 100644 index 0000000000000000000000000000000000000000..5dd937e6d2f128ba70fb781b33db6cf5b53c2d40 GIT binary patch literal 10408 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�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 X!fuVb5P#;!i;ldsid2<^X~_QpA811< literal 0 HcmV?d00001 diff --git a/static/images/plants/audrey/3.png b/static/images/plants/audrey/3.png new file mode 100644 index 0000000000000000000000000000000000000000..dc77210c157313b962dcea5ad676eb6156245f15 GIT binary patch literal 17900 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 literal 0 HcmV?d00001 diff --git a/static/images/plants/audrey/wilted.png b/static/images/plants/audrey/wilted.png new file mode 100644 index 0000000000000000000000000000000000000000..5d1fc58a4136f25465f6969cb5a58883a6c0b62b GIT binary patch literal 11149 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 E0hH4^lmGw# literal 0 HcmV?d00001 diff --git a/static/images/plants/0.png b/static/images/plants/basic/0.png similarity index 100% rename from static/images/plants/0.png rename to static/images/plants/basic/0.png diff --git a/static/images/plants/1.png b/static/images/plants/basic/1.png similarity index 100% rename from static/images/plants/1.png rename to static/images/plants/basic/1.png diff --git a/static/images/plants/2.png b/static/images/plants/basic/2.png similarity index 100% rename from static/images/plants/2.png rename to static/images/plants/basic/2.png diff --git a/static/images/plants/3.png b/static/images/plants/basic/3.png similarity index 100% rename from static/images/plants/3.png rename to static/images/plants/basic/3.png diff --git a/static/images/plants/4.png b/static/images/plants/basic/4.png similarity index 100% rename from static/images/plants/4.png rename to static/images/plants/basic/4.png diff --git a/static/images/plants/wilted.png b/static/images/plants/basic/wilted.png similarity index 100% rename from static/images/plants/wilted.png rename to static/images/plants/basic/wilted.png diff --git a/static/js/script.js b/static/js/script.js index bc08848..a405213 100644 --- a/static/js/script.js +++ b/static/js/script.js @@ -14,6 +14,7 @@ event.onmessage = (event) => { for (let plant of plants) { let username = plant["username"]; + let plantType = plant["plant_type"]; let growthNum = Math.min(plant["growth"], 4); let flareNum = Math.min((plant["growth"] - growthNum) - 1, 4); @@ -27,7 +28,7 @@ event.onmessage = (event) => { let medalImg = ''; if (plant["wilted"]) { - plantImg = '../images/plants/wilted.png' + plantImg = `../images/plants/${plantType}/wilted.png` waterImg = `` } @@ -36,7 +37,7 @@ event.onmessage = (event) => { } else { - plantImg = `../images/plants/${growthNum}.png` + plantImg = `../images/plants/${plantType}/${growthNum}.png` } if (flareNum >= 0) { @@ -51,6 +52,10 @@ event.onmessage = (event) => { rainImg = `` } + if (plant["blood_rain"]) { + rainImg = `` + } + if (plant["glasses"]) { glassesImg = `` } diff --git a/time2grow/bot.py b/time2grow/bot.py index 04ec6f7..a23d9a5 100644 --- a/time2grow/bot.py +++ b/time2grow/bot.py @@ -20,6 +20,7 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ +import copy import datetime import logging import random @@ -33,8 +34,7 @@ from .api import Server from .database import Database -from .plant import Plant - +from .plant import Plant, PlantType logger: logging.Logger = logging.getLogger(__name__) @@ -96,6 +96,7 @@ def dispatch(self, data: dict[str, Any] | None = None): async def event_ready(self) -> None: print(f"Logged in: {self.nick}") + @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["plant"] * 60, commands.Bucket.user) async def plant(self, ctx: commands.Context) -> None: @@ -114,6 +115,49 @@ async def plant(self, ctx: commands.Context) -> None: self.dispatch({"extra": {"event": "create", "username": username}}) await self.database.update_stats(username, planted=1) + + @commands.command() + @commands.cooldown(1, core.config["COOLDOWNS"]["eclipse"] * 60, commands.Bucket.user) + async def eclipse(self, ctx: commands.Context) -> None: + username: str = ctx.author.name + + if username not in self.plants: + await ctx.send("A cosmic ray hits the ground, and nothing happened, cause you don't have a plant") + return + + plant: Plant = self.plants[username] + if plant.dead: + await ctx.send("Your plant is dead RIP. Buy a new one.") + return + + await ctx.send(f"{username}, your plant has been hit by a cosmic ray and mutated!! MyAvatar") + plant.plant_type = PlantType.AUDREY + self.dispatch({"extra": {"event": "eclipse", "username": username}}) + + @commands.command() + @commands.cooldown(1, core.config["COOLDOWNS"]["blood"] * 60, commands.Bucket.user) + async def blood(self, ctx: commands.Context) -> None: + username: str = ctx.author.name + + if username not in self.plants: + await ctx.send("You have spilled blood for nothing... Buy a plant FamilyMan") + return + + plant: Plant = self.plants[username] + if plant.dead: + await ctx.send("Your plant is dead RIP. Buy a new one.") + return + + if plant.plant_type == PlantType.BASIC: + await ctx.send("Your plant would not like the taste of blood. Maybe an unexpected '?eclipse' would change their thirst...") + return + + await ctx.send(f"{username} makes a sacrifice to feed his carnivorous plant MyAvatar") + await plant.update(blood=True) + + self.dispatch({"extra": {"event": "water", "username": username}}) + await self.database.update_stats(username, watered=1) + @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["water"] * 60, commands.Bucket.user) async def water(self, ctx: commands.Context) -> None: @@ -128,6 +172,10 @@ async def water(self, ctx: commands.Context) -> None: await ctx.send("Your plant is dead RIP. Buy a new one.") return + if plant.plant_type == PlantType.AUDREY: + await ctx.send("An Audrey II requires more sustenance than water can provide...") + return + await ctx.send(f"{username} watered their plant MyAvatar") await plant.update(water=True) @@ -213,3 +261,31 @@ async def attack(self, ctx: commands.Context, *, recipient: str = "") -> None: ) await self.database.update_stats(recipient, victim=1) await self.database.update_stats(username, sabotaged=1) + + # @commands.command() + # async def debug(self, ctx: commands.Context, *, params: str = "") -> None: + # params = params.split(' ') + # subcommand = params[0] if len(params) > 0 else "" + # data = params[1] if len(params) > 1 else "" + # if subcommand == "next": + # username: str = ctx.author.name if data == "" else data + # plant: Plant = self.plants[username] + # plant.growth += 1 + # self.dispatch() + # if subcommand == "fake": + # username: str = ctx.author.name if data == "fake_user" else data + # self.plants[username] = Plant(username, database=self.database, top=len(self.plants) + 1) + # await ctx.send(f"{username} planted a plant in the plant house SeemsGood") + # + # self.dispatch({"extra": {"event": "create", "username": username}}) + # await self.database.update_stats(username, planted=1) + # if subcommand == "kill": + # username: str = ctx.author.name if data == "" else data + # del self.plants[username] + # if subcommand == "wilt": + # username: str = ctx.author.name if data == "" else data + # plant: Plant = self.plants[username] + # plant.state = DEATH - 1 + # self.dispatch() + + diff --git a/time2grow/plant.py b/time2grow/plant.py index 0ec7a17..7fab072 100644 --- a/time2grow/plant.py +++ b/time2grow/plant.py @@ -25,7 +25,7 @@ from typing import Any import core - +from enum import Enum from .database import Database @@ -51,6 +51,9 @@ SPEECH_CHANCE: int = core.config["GAME"]["speech_chance"] +class PlantType(Enum): + BASIC = 'basic', + AUDREY = 'audrey' class Plant: def __init__(self, username: str, /, *, database: Database, top: int) -> None: @@ -61,6 +64,7 @@ def __init__(self, username: str, /, *, database: Database, top: int) -> None: self.total: int = 0 self._loops: int = 0 + self.plant_type: PlantType = PlantType.BASIC self.state: int = 0 # 0 == fully watered, DEATH == dead self.growth: int = 0 # 0 == baby, GROWTH - 1 == Epic @@ -70,6 +74,7 @@ def __init__(self, username: str, /, *, database: Database, top: int) -> None: self.watering: bool = False self.watered_on: int = 0 + self.blood_rain: bool = False self.glasses: bool = False self.glasses_on: int = 0 @@ -80,12 +85,15 @@ def __init__(self, username: str, /, *, database: Database, top: int) -> None: self.top = top self.created: datetime.datetime = datetime.datetime.now() - async def update(self, water: bool = False, glasses: bool = False, attacked: bool = False) -> None: - if water: + async def update(self, water: bool = False, blood: bool = False, glasses: bool = False, attacked: bool = False) -> None: + if water or blood: self._loops = max(self._loops - (TICKS * WATER), 0) self.state = max(self.state - WATER, 0) self.watered_on = self.total - self.watering = True + if water: + self.watering = True + if blood: + self.blood_rain = True self.wilted = False elif glasses: self.glasses_on = self.total @@ -104,6 +112,7 @@ async def update(self, water: bool = False, glasses: bool = False, attacked: boo if self.watered_on < self.total: self.watering = False + self.blood_rain = False self.state = int(self._loops / TICKS if self._loops % TICKS == 0 else self.state) if self.state == DEATH: @@ -140,6 +149,7 @@ async def died(self) -> None: def as_dict(self) -> dict[str, Any]: data = { "username": self.username, + "plant_type": self.plant_type.value, "state": self.state, "growth": self.growth, "total": self.total, @@ -147,6 +157,7 @@ def as_dict(self) -> dict[str, Any]: "dead": self.dead, "maxed": self.maxed, "watering": self.watering, + "blood_rain": self.blood_rain, "glasses": self.glasses, "speech": self.speech, "top": self.top, From 997fb9ffbe347132a9a14187f8d3b28710fa1891 Mon Sep 17 00:00:00 2001 From: scottserven Date: Sun, 22 Oct 2023 18:54:32 -0400 Subject: [PATCH 02/12] run on 0.0.0.0 so it can be exposed via docker --- launcher.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher.py b/launcher.py index 4c9d825..5138ba8 100644 --- a/launcher.py +++ b/launcher.py @@ -39,7 +39,7 @@ async def main() -> None: app.bot = bot - config: uvicorn.Config = uvicorn.Config(app, port=8000) + config: uvicorn.Config = uvicorn.Config(app, host='0.0.0.0', port=8000) server: uvicorn.Server = uvicorn.Server(config) asyncio.create_task(bot.start()) From 7f08b4c4caae5d210505d0dddac630cf49879751 Mon Sep 17 00:00:00 2001 From: scottserven Date: Sun, 22 Oct 2023 18:55:29 -0400 Subject: [PATCH 03/12] added dockerfile --- dockerfile | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 dockerfile diff --git a/dockerfile b/dockerfile new file mode 100644 index 0000000..04c5eed --- /dev/null +++ b/dockerfile @@ -0,0 +1,11 @@ +FROM python:3.11 + +WORKDIR /app + +COPY . . + +RUN python -m venv venv \ + && . ./venv/bin/activate \ + && pip install -U -r requirements.txt + +EXPOSE 8000 \ No newline at end of file From 3bd355125737296d4ea9a03785c7cd5166f590a9 Mon Sep 17 00:00:00 2001 From: scottserven Date: Sun, 22 Oct 2023 19:15:10 -0400 Subject: [PATCH 04/12] removed debug code --- time2grow/bot.py | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/time2grow/bot.py b/time2grow/bot.py index a23d9a5..4c0f8e7 100644 --- a/time2grow/bot.py +++ b/time2grow/bot.py @@ -96,7 +96,6 @@ def dispatch(self, data: dict[str, Any] | None = None): async def event_ready(self) -> None: print(f"Logged in: {self.nick}") - @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["plant"] * 60, commands.Bucket.user) async def plant(self, ctx: commands.Context) -> None: @@ -115,7 +114,6 @@ async def plant(self, ctx: commands.Context) -> None: self.dispatch({"extra": {"event": "create", "username": username}}) await self.database.update_stats(username, planted=1) - @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["eclipse"] * 60, commands.Bucket.user) async def eclipse(self, ctx: commands.Context) -> None: @@ -261,31 +259,3 @@ async def attack(self, ctx: commands.Context, *, recipient: str = "") -> None: ) await self.database.update_stats(recipient, victim=1) await self.database.update_stats(username, sabotaged=1) - - # @commands.command() - # async def debug(self, ctx: commands.Context, *, params: str = "") -> None: - # params = params.split(' ') - # subcommand = params[0] if len(params) > 0 else "" - # data = params[1] if len(params) > 1 else "" - # if subcommand == "next": - # username: str = ctx.author.name if data == "" else data - # plant: Plant = self.plants[username] - # plant.growth += 1 - # self.dispatch() - # if subcommand == "fake": - # username: str = ctx.author.name if data == "fake_user" else data - # self.plants[username] = Plant(username, database=self.database, top=len(self.plants) + 1) - # await ctx.send(f"{username} planted a plant in the plant house SeemsGood") - # - # self.dispatch({"extra": {"event": "create", "username": username}}) - # await self.database.update_stats(username, planted=1) - # if subcommand == "kill": - # username: str = ctx.author.name if data == "" else data - # del self.plants[username] - # if subcommand == "wilt": - # username: str = ctx.author.name if data == "" else data - # plant: Plant = self.plants[username] - # plant.state = DEATH - 1 - # self.dispatch() - - From 9b7ae7fe944cf74b419722a85527a16f67205cfb Mon Sep 17 00:00:00 2001 From: scottserven Date: Sat, 4 Nov 2023 10:13:08 -0400 Subject: [PATCH 05/12] feature switch audrey commands --- config.example.json | 8 +++++++- core/__init__.py | 2 +- core/config.py | 4 ++++ time2grow/bot.py | 7 +++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/config.example.json b/config.example.json index db787ae..6828237 100644 --- a/config.example.json +++ b/config.example.json @@ -60,6 +60,12 @@ "plant": 12, "water": 6, "attack": 12, - "thug": 12 + "thug": 12, + "blood": 6, + "eclipse": 5 + }, + + "FEATURES": { + "audrey": false } } diff --git a/core/__init__.py b/core/__init__.py index 7bc1886..1665c23 100644 --- a/core/__init__.py +++ b/core/__init__.py @@ -20,5 +20,5 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -from .config import config +from .config import config, feature_enabled from .logger import ColourFormatter diff --git a/core/config.py b/core/config.py index b6e0846..c473f0e 100644 --- a/core/config.py +++ b/core/config.py @@ -4,3 +4,7 @@ with open("config.json", "r") as fp: config: dict[Any, Any] = json.load(fp) + + +def feature_enabled(feature_name: str) -> bool: + return config["FEATURES"][feature_name] if feature_name in config["FEATURES"] else False \ No newline at end of file diff --git a/time2grow/bot.py b/time2grow/bot.py index 4c0f8e7..f1dae9a 100644 --- a/time2grow/bot.py +++ b/time2grow/bot.py @@ -38,6 +38,7 @@ logger: logging.Logger = logging.getLogger(__name__) +AUDREY_FEATURE = 'audrey' class Bot(commands.Bot): def __init__(self, *, server: Server, database: Database) -> None: @@ -117,6 +118,9 @@ async def plant(self, ctx: commands.Context) -> None: @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["eclipse"] * 60, commands.Bucket.user) async def eclipse(self, ctx: commands.Context) -> None: + if not core.feature_enabled(AUDREY_FEATURE): + return + username: str = ctx.author.name if username not in self.plants: @@ -135,6 +139,9 @@ async def eclipse(self, ctx: commands.Context) -> None: @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["blood"] * 60, commands.Bucket.user) async def blood(self, ctx: commands.Context) -> None: + if not core.feature_enabled(AUDREY_FEATURE): + return + username: str = ctx.author.name if username not in self.plants: From 5eb057e1f8107c4c8af89ad1ae10232e34a9743f Mon Sep 17 00:00:00 2001 From: scottserven Date: Sat, 4 Nov 2023 10:23:54 -0400 Subject: [PATCH 06/12] docker init missing --- docker_init.sh | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docker_init.sh diff --git a/docker_init.sh b/docker_init.sh new file mode 100644 index 0000000..fb55cc7 --- /dev/null +++ b/docker_init.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +. ./venv/bin/activate +python launcher.py \ No newline at end of file From 299ffe2065b6940fcd363c7395641c3185f1abbc Mon Sep 17 00:00:00 2001 From: scottserven Date: Sat, 4 Nov 2023 10:25:10 -0400 Subject: [PATCH 07/12] docker init missing --- dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dockerfile b/dockerfile index 04c5eed..1972368 100644 --- a/dockerfile +++ b/dockerfile @@ -8,4 +8,6 @@ RUN python -m venv venv \ && . ./venv/bin/activate \ && pip install -U -r requirements.txt -EXPOSE 8000 \ No newline at end of file +EXPOSE 8000 + +CMD ["./docker_init.sh"] \ No newline at end of file From 2db07c0488162169e8fbc3b05bb8265645cd4965 Mon Sep 17 00:00:00 2001 From: scottserven Date: Thu, 19 Oct 2023 20:51:41 -0400 Subject: [PATCH 08/12] little shop of horrors --- time2grow/bot.py | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/time2grow/bot.py b/time2grow/bot.py index 4c0f8e7..a485973 100644 --- a/time2grow/bot.py +++ b/time2grow/bot.py @@ -96,6 +96,7 @@ def dispatch(self, data: dict[str, Any] | None = None): async def event_ready(self) -> None: print(f"Logged in: {self.nick}") + @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["plant"] * 60, commands.Bucket.user) async def plant(self, ctx: commands.Context) -> None: @@ -114,6 +115,49 @@ async def plant(self, ctx: commands.Context) -> None: self.dispatch({"extra": {"event": "create", "username": username}}) await self.database.update_stats(username, planted=1) + + @commands.command() + @commands.cooldown(1, core.config["COOLDOWNS"]["eclipse"] * 60, commands.Bucket.user) + async def eclipse(self, ctx: commands.Context) -> None: + username: str = ctx.author.name + + if username not in self.plants: + await ctx.send("A cosmic ray hits the ground, and nothing happened, cause you don't have a plant") + return + + plant: Plant = self.plants[username] + if plant.dead: + await ctx.send("Your plant is dead RIP. Buy a new one.") + return + + await ctx.send(f"{username}, your plant has been hit by a cosmic ray and mutated!! MyAvatar") + plant.plant_type = PlantType.AUDREY + self.dispatch({"extra": {"event": "eclipse", "username": username}}) + + @commands.command() + @commands.cooldown(1, core.config["COOLDOWNS"]["blood"] * 60, commands.Bucket.user) + async def blood(self, ctx: commands.Context) -> None: + username: str = ctx.author.name + + if username not in self.plants: + await ctx.send("You have spilled blood for nothing... Buy a plant FamilyMan") + return + + plant: Plant = self.plants[username] + if plant.dead: + await ctx.send("Your plant is dead RIP. Buy a new one.") + return + + if plant.plant_type == PlantType.BASIC: + await ctx.send("Your plant would not like the taste of blood. Maybe an unexpected '?eclipse' would change their thirst...") + return + + await ctx.send(f"{username} makes a sacrifice to feed his carnivorous plant MyAvatar") + await plant.update(blood=True) + + self.dispatch({"extra": {"event": "water", "username": username}}) + await self.database.update_stats(username, watered=1) + @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["eclipse"] * 60, commands.Bucket.user) async def eclipse(self, ctx: commands.Context) -> None: @@ -259,3 +303,31 @@ async def attack(self, ctx: commands.Context, *, recipient: str = "") -> None: ) await self.database.update_stats(recipient, victim=1) await self.database.update_stats(username, sabotaged=1) + + # @commands.command() + # async def debug(self, ctx: commands.Context, *, params: str = "") -> None: + # params = params.split(' ') + # subcommand = params[0] if len(params) > 0 else "" + # data = params[1] if len(params) > 1 else "" + # if subcommand == "next": + # username: str = ctx.author.name if data == "" else data + # plant: Plant = self.plants[username] + # plant.growth += 1 + # self.dispatch() + # if subcommand == "fake": + # username: str = ctx.author.name if data == "fake_user" else data + # self.plants[username] = Plant(username, database=self.database, top=len(self.plants) + 1) + # await ctx.send(f"{username} planted a plant in the plant house SeemsGood") + # + # self.dispatch({"extra": {"event": "create", "username": username}}) + # await self.database.update_stats(username, planted=1) + # if subcommand == "kill": + # username: str = ctx.author.name if data == "" else data + # del self.plants[username] + # if subcommand == "wilt": + # username: str = ctx.author.name if data == "" else data + # plant: Plant = self.plants[username] + # plant.state = DEATH - 1 + # self.dispatch() + + From d33943b9b52705f931fa724eb4adff9c1a21b3e0 Mon Sep 17 00:00:00 2001 From: scottserven Date: Sun, 22 Oct 2023 19:15:10 -0400 Subject: [PATCH 09/12] removed debug code --- time2grow/bot.py | 30 ------------------------------ 1 file changed, 30 deletions(-) diff --git a/time2grow/bot.py b/time2grow/bot.py index a485973..9fff348 100644 --- a/time2grow/bot.py +++ b/time2grow/bot.py @@ -96,7 +96,6 @@ def dispatch(self, data: dict[str, Any] | None = None): async def event_ready(self) -> None: print(f"Logged in: {self.nick}") - @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["plant"] * 60, commands.Bucket.user) async def plant(self, ctx: commands.Context) -> None: @@ -115,7 +114,6 @@ async def plant(self, ctx: commands.Context) -> None: self.dispatch({"extra": {"event": "create", "username": username}}) await self.database.update_stats(username, planted=1) - @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["eclipse"] * 60, commands.Bucket.user) async def eclipse(self, ctx: commands.Context) -> None: @@ -303,31 +301,3 @@ async def attack(self, ctx: commands.Context, *, recipient: str = "") -> None: ) await self.database.update_stats(recipient, victim=1) await self.database.update_stats(username, sabotaged=1) - - # @commands.command() - # async def debug(self, ctx: commands.Context, *, params: str = "") -> None: - # params = params.split(' ') - # subcommand = params[0] if len(params) > 0 else "" - # data = params[1] if len(params) > 1 else "" - # if subcommand == "next": - # username: str = ctx.author.name if data == "" else data - # plant: Plant = self.plants[username] - # plant.growth += 1 - # self.dispatch() - # if subcommand == "fake": - # username: str = ctx.author.name if data == "fake_user" else data - # self.plants[username] = Plant(username, database=self.database, top=len(self.plants) + 1) - # await ctx.send(f"{username} planted a plant in the plant house SeemsGood") - # - # self.dispatch({"extra": {"event": "create", "username": username}}) - # await self.database.update_stats(username, planted=1) - # if subcommand == "kill": - # username: str = ctx.author.name if data == "" else data - # del self.plants[username] - # if subcommand == "wilt": - # username: str = ctx.author.name if data == "" else data - # plant: Plant = self.plants[username] - # plant.state = DEATH - 1 - # self.dispatch() - - From 607aad53c325f63c559219668bbc7ae8421910e5 Mon Sep 17 00:00:00 2001 From: scottserven Date: Sat, 4 Nov 2023 10:13:08 -0400 Subject: [PATCH 10/12] feature switch audrey commands --- config.example.json | 8 +++++++- core/__init__.py | 2 +- core/config.py | 4 ++++ time2grow/bot.py | 7 +++++++ 4 files changed, 19 insertions(+), 2 deletions(-) diff --git a/config.example.json b/config.example.json index db787ae..6828237 100644 --- a/config.example.json +++ b/config.example.json @@ -60,6 +60,12 @@ "plant": 12, "water": 6, "attack": 12, - "thug": 12 + "thug": 12, + "blood": 6, + "eclipse": 5 + }, + + "FEATURES": { + "audrey": false } } diff --git a/core/__init__.py b/core/__init__.py index 7bc1886..1665c23 100644 --- a/core/__init__.py +++ b/core/__init__.py @@ -20,5 +20,5 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. """ -from .config import config +from .config import config, feature_enabled from .logger import ColourFormatter diff --git a/core/config.py b/core/config.py index b6e0846..c473f0e 100644 --- a/core/config.py +++ b/core/config.py @@ -4,3 +4,7 @@ with open("config.json", "r") as fp: config: dict[Any, Any] = json.load(fp) + + +def feature_enabled(feature_name: str) -> bool: + return config["FEATURES"][feature_name] if feature_name in config["FEATURES"] else False \ No newline at end of file diff --git a/time2grow/bot.py b/time2grow/bot.py index 9fff348..330319d 100644 --- a/time2grow/bot.py +++ b/time2grow/bot.py @@ -38,6 +38,7 @@ logger: logging.Logger = logging.getLogger(__name__) +AUDREY_FEATURE = 'audrey' class Bot(commands.Bot): def __init__(self, *, server: Server, database: Database) -> None: @@ -117,6 +118,9 @@ async def plant(self, ctx: commands.Context) -> None: @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["eclipse"] * 60, commands.Bucket.user) async def eclipse(self, ctx: commands.Context) -> None: + if not core.feature_enabled(AUDREY_FEATURE): + return + username: str = ctx.author.name if username not in self.plants: @@ -135,6 +139,9 @@ async def eclipse(self, ctx: commands.Context) -> None: @commands.command() @commands.cooldown(1, core.config["COOLDOWNS"]["blood"] * 60, commands.Bucket.user) async def blood(self, ctx: commands.Context) -> None: + if not core.feature_enabled(AUDREY_FEATURE): + return + username: str = ctx.author.name if username not in self.plants: From 14b90fb2b067daa9da73ecbcf87978db13fb4844 Mon Sep 17 00:00:00 2001 From: scottserven Date: Sat, 4 Nov 2023 10:23:54 -0400 Subject: [PATCH 11/12] docker init missing --- docker_init.sh | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docker_init.sh diff --git a/docker_init.sh b/docker_init.sh new file mode 100644 index 0000000..fb55cc7 --- /dev/null +++ b/docker_init.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +. ./venv/bin/activate +python launcher.py \ No newline at end of file From 8ba88311de2f910c99ea1f42feda7eb28deb6399 Mon Sep 17 00:00:00 2001 From: scottserven Date: Sat, 4 Nov 2023 10:25:10 -0400 Subject: [PATCH 12/12] docker init missing --- dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dockerfile b/dockerfile index 04c5eed..1972368 100644 --- a/dockerfile +++ b/dockerfile @@ -8,4 +8,6 @@ RUN python -m venv venv \ && . ./venv/bin/activate \ && pip install -U -r requirements.txt -EXPOSE 8000 \ No newline at end of file +EXPOSE 8000 + +CMD ["./docker_init.sh"] \ No newline at end of file