diff --git a/README.md b/README.md index 94f3a2a..980e762 100644 --- a/README.md +++ b/README.md @@ -9,6 +9,7 @@ Cog Function | ccrole | **Release** |
Create custom commands that also assign rolesMay have some bugs, please create an issue if you find any
| | chatter | **Beta** |
Chat-bot trained to talk like your guildMissing some key features, but currently functional. See [Chatter](https://github.com/bobloy/Fox-V3/tree/master/chatter) for install instructions
| | coglint | **Alpha** |
Error check code in python syntax posted to discordWorks, but probably needs more turning to work for cogs
| +| conquest | **Alpha** |
Manage maps for war games and RPGsLots of additional features are planned, currently function with simple map
| | dad | **Beta** |
Tell dad jokesWorks great!
| | exclusiverole | **Alpha** |
Prevent certain roles from getting any other rolesFully functional, but pretty simple
| | fight | **Incomplete** |
Organize bracket tournaments within discordStill in-progress, a massive project
| diff --git a/conquest/Map Ideas/AxisAllies_MAP_006L.jpg b/conquest/Map Ideas/AxisAllies_MAP_006L.jpg new file mode 100644 index 0000000..9bb2755 Binary files /dev/null and b/conquest/Map Ideas/AxisAllies_MAP_006L.jpg differ diff --git a/conquest/Map Ideas/j0e88vlp28pz.png b/conquest/Map Ideas/j0e88vlp28pz.png new file mode 100644 index 0000000..3c97e53 Binary files /dev/null and b/conquest/Map Ideas/j0e88vlp28pz.png differ diff --git a/conquest/__init__.py b/conquest/__init__.py new file mode 100644 index 0000000..1466d52 --- /dev/null +++ b/conquest/__init__.py @@ -0,0 +1,11 @@ +from redbot.core import data_manager + +from .conquest import Conquest + + +async def setup(bot): + cog = Conquest(bot) + data_manager.bundled_data_path(cog) + await cog.load_data() + + bot.add_cog(cog) diff --git a/conquest/conquest.py b/conquest/conquest.py new file mode 100644 index 0000000..609f8b4 --- /dev/null +++ b/conquest/conquest.py @@ -0,0 +1,363 @@ +import json +import os +import pathlib +from shutil import copyfile +from typing import Optional + +import discord +from PIL import Image, ImageColor, ImageOps +from discord.ext.commands import Greedy +from redbot.core import Config, commands +from redbot.core.bot import Red +from redbot.core.data_manager import bundled_data_path, cog_data_path + + +class Conquest(commands.Cog): + """ + Cog Description + + Less important information about the cog + """ + + default_zoom_json = {"enabled": False, "x": -1, "y": -1, "zoom": 1.0} + + def __init__(self, bot: Red): + super().__init__() + self.bot = bot + self.config = Config.get_conf( + self, identifier=67111110113117101115116, force_registration=True + ) + + default_guild = {} + default_global = {"current_map": None} + self.config.register_guild(**default_guild) + self.config.register_global(**default_global) + + self.data_path: pathlib.Path = cog_data_path(self) + self.asset_path: Optional[pathlib.Path] = None + + self.current_map = None + self.map_data = None + + async def red_delete_data_for_user(self, **kwargs): + """Nothing to delete""" + return + + async def load_data(self): + self.asset_path = bundled_data_path(self) / "assets" + self.current_map = await self.config.current_map() + + map_data_path = self.asset_path / self.current_map / "data.json" + with map_data_path.open() as mapdata: + self.map_data = json.load(mapdata) + + @commands.group() + async def conquest(self, ctx: commands.Context): + """ + Base command for conquest cog. Start with `[p]conquest set map` to select a map. + """ + if ctx.invoked_subcommand is None: + pass # TODO: Print current map probably + + @conquest.command(name="list") + async def _conquest_list(self, ctx: commands.Context): + """ + List currently available maps + """ + maps_json = self.asset_path / "maps.json" + + with maps_json.open() as maps: + maps_json = json.load(maps) + map_list = "\n".join(map_name for map_name in maps_json["maps"]) + await ctx.maybe_send_embed(f"Current maps:\n{map_list}") + + @conquest.group(name="set") + async def conquest_set(self, ctx: commands.Context): + """Base command for admin actions like selecting a map""" + if ctx.invoked_subcommand is None: + pass + + @conquest_set.command(name="resetzoom") + async def _conquest_set_resetzoom(self, ctx: commands.Context): + """Resets the zoom level of the current map""" + if self.current_map is None: + await ctx.maybe_send_embed("No map is currently set. See `[p]conquest set map`") + return + + zoom_json_path = self.data_path / self.current_map / "settings.json" + if not zoom_json_path.exists(): + await ctx.maybe_send_embed( + f"No zoom data found for {self.current_map}, reset not needed" + ) + return + + with zoom_json_path.open("w+") as zoom_json: + json.dump({"enabled": False}, zoom_json) + + await ctx.tick() + + @conquest_set.command(name="zoom") + async def _conquest_set_zoom(self, ctx: commands.Context, x: int, y: int, zoom: float): + """ + Set the zoom level and position of the current map + + x: positive integer + y: positive integer + zoom: float greater than or equal to 1 + """ + if self.current_map is None: + await ctx.maybe_send_embed("No map is currently set. See `[p]conquest set map`") + return + + if x < 0 or y < 0 or zoom < 1: + await ctx.send_help() + return + + zoom_json_path = self.data_path / self.current_map / "settings.json" + + zoom_data = self.default_zoom_json.copy() + zoom_data["enabled"] = True + zoom_data["x"] = x + zoom_data["y"] = y + zoom_data["zoom"] = zoom + + with zoom_json_path.open("w+") as zoom_json: + json.dump(zoom_data, zoom_json) + + await ctx.tick() + + @conquest_set.command(name="zoomtest") + async def _conquest_set_zoomtest(self, ctx: commands.Context, x: int, y: int, zoom: float): + """ + Test the zoom level and position of the current map + + x: positive integer + y: positive integer + zoom: float greater than or equal to 1 + """ + if self.current_map is None: + await ctx.maybe_send_embed("No map is currently set. See `[p]conquest set map`") + return + + if x < 0 or y < 0 or zoom < 1: + await ctx.send_help() + return + + zoomed_path = await self._create_zoomed_map( + self.data_path / self.current_map / "current.jpg", x, y, zoom + ) + + await ctx.send(file=discord.File(fp=zoomed_path, filename="current_zoomed.jpg",)) + + async def _create_zoomed_map(self, map_path, x, y, zoom, **kwargs): + current_map = Image.open(map_path) + + w, h = current_map.size + zoom2 = zoom * 2 + zoomed_map = current_map.crop((x - w / zoom2, y - h / zoom2, x + w / zoom2, y + h / zoom2)) + # zoomed_map = zoomed_map.resize((w, h), Image.LANCZOS) + zoomed_map.save(self.data_path / self.current_map / "zoomed.jpg", "jpeg") + return self.data_path / self.current_map / "zoomed.jpg" + + @conquest_set.command(name="save") + async def _conquest_set_save(self, ctx: commands.Context, *, save_name): + """Save the current map to be loaded later""" + if self.current_map is None: + await ctx.maybe_send_embed("No map is currently set. See `[p]conquest set map`") + return + + current_map_folder = self.data_path / self.current_map + current_map = current_map_folder / "current.jpg" + + if not current_map_folder.exists() or not current_map.exists(): + await ctx.maybe_send_embed("Current map doesn't exist! Try setting a new one") + return + + copyfile(current_map, current_map_folder / f"{save_name}.jpg") + await ctx.tick() + + @conquest_set.command(name="load") + async def _conquest_set_load(self, ctx: commands.Context, *, save_name): + """Load a saved map to be the current map""" + if self.current_map is None: + await ctx.maybe_send_embed("No map is currently set. See `[p]conquest set map`") + return + + current_map_folder = self.data_path / self.current_map + current_map = current_map_folder / "current.jpg" + saved_map = current_map_folder / f"{save_name}.jpg" + + if not current_map_folder.exists() or not saved_map.exists(): + await ctx.maybe_send_embed(f"Saved map not found in the {self.current_map} folder") + return + + copyfile(saved_map, current_map) + await ctx.tick() + + @conquest_set.command(name="map") + async def _conquest_set_map(self, ctx: commands.Context, mapname: str, reset: bool = False): + """ + Select a map from current available maps + + To add more maps, see the guide (WIP) + """ + map_dir = self.asset_path / mapname + if not map_dir.exists() or not map_dir.is_dir(): + await ctx.maybe_send_embed( + f"Map `{mapname}` was not found in the {self.asset_path} directory" + ) + return + + self.current_map = mapname + await self.config.current_map.set(self.current_map) # Save to config too + + map_data_path = self.asset_path / mapname / "data.json" + with map_data_path.open() as mapdata: + self.map_data = json.load(mapdata) + + current_map_folder = self.data_path / self.current_map + current_map = current_map_folder / "current.jpg" + + if not reset and current_map.exists(): + await ctx.maybe_send_embed( + "This map is already in progress, resuming from last game\n" + "Use `[p]conquest set map [mapname] True` to start a new game" + ) + else: + if not current_map_folder.exists(): + os.makedirs(current_map_folder) + copyfile(self.asset_path / mapname / "blank.jpg", current_map) + + await ctx.tick() + + @conquest.command(name="current") + async def _conquest_current(self, ctx: commands.Context): + """ + Send the current map. + """ + if self.current_map is None: + await ctx.maybe_send_embed("No map is currently set. See `[p]conquest set map`") + return + + current_jpg = self.data_path / self.current_map / "current.jpg" + + await self._send_maybe_zoomed_map(ctx, current_jpg, "current_map.jpg") + + async def _send_maybe_zoomed_map(self, ctx, map_path, filename): + zoom_data = {"enabled": False} + + zoom_json_path = self.data_path / self.current_map / "settings.json" + + if zoom_json_path.exists(): + with zoom_json_path.open() as zoom_json: + zoom_data = json.load(zoom_json) + + if zoom_data["enabled"]: + map_path = await self._create_zoomed_map(map_path, **zoom_data) + + await ctx.send(file=discord.File(fp=map_path, filename=filename)) + + @conquest.command("blank") + async def _conquest_blank(self, ctx: commands.Context): + """ + Print the blank version of the current map, for reference. + """ + if self.current_map is None: + await ctx.maybe_send_embed("No map is currently set. See `[p]conquest set map`") + return + + current_blank_jpg = self.asset_path / self.current_map / "blank.jpg" + + await self._send_maybe_zoomed_map(ctx, current_blank_jpg, "blank_map.jpg") + # await ctx.send(file=discord.File(fp=current_blank_jpg, filename="blank_map.jpg")) + + @conquest.command("numbered") + async def _conquest_numbered(self, ctx: commands.Context): + """ + Print the numbered version of the current map, for reference. + """ + if self.current_map is None: + await ctx.maybe_send_embed("No map is currently set. See `[p]conquest set map`") + return + + numbers_path = self.asset_path / self.current_map / "numbers.jpg" + if not numbers_path.exists(): + await ctx.send( + file=discord.File( + fp=self.asset_path / self.current_map / "numbered.jpg", + filename="numbered.jpg", + ) + ) + return + + current_map = Image.open(self.data_path / self.current_map / "current.jpg") + numbers = Image.open(numbers_path).convert("L") + + inverted_map = ImageOps.invert(current_map) + + current_numbered_jpg: Image.Image = Image.composite(current_map, inverted_map, numbers) + current_numbered_jpg.save( + self.data_path / self.current_map / "current_numbered.jpg", "jpeg" + ) + + await self._send_maybe_zoomed_map( + ctx, self.data_path / self.current_map / "current_numbered.jpg", "current_numbered.jpg" + ) + # await ctx.send( + # file=discord.File( + # fp=self.data_path / self.current_map / "current_numbered.jpg", + # filename="current_numbered.jpg", + # ) + # ) + + @conquest.command(name="take") + async def _conquest_take(self, ctx: commands.Context, regions: Greedy[int], *, color: str): + """ + Claim a territory or list of territories for a specified color + + :param regions: List of integer regions + :param color: Color to claim regions + """ + if not regions: + await ctx.send_help() + return + + if self.current_map is None: + await ctx.maybe_send_embed("No map is currently set. See `[p]conquest set map`") + return + + try: + color = ImageColor.getrgb(color) + except ValueError: + await ctx.maybe_send_embed(f"Invalid color {color}") + return + + for region in regions: + if region > self.map_data["region_max"] or region < 1: + await ctx.maybe_send_embed( + f"Max region number is {self.map_data['region_max']}, minimum is 1" + ) + + current_jpg_path = self.data_path / self.current_map / "current.jpg" + im = Image.open(current_jpg_path) + out: Image.Image = await self._composite_regions(im, regions, color) + + out.save(current_jpg_path, "jpeg") + + await self._send_maybe_zoomed_map(ctx, current_jpg_path, "map.jpg") + # await ctx.send(file=discord.File(fp=current_jpg_path, filename="map.jpg")) + + async def _composite_regions(self, im, regions, color) -> Image.Image: + + im2 = Image.new("RGB", im.size, color) + + out = None + for region in regions: + mask = Image.open( + self.asset_path / self.current_map / "masks" / f"{region}.jpg" + ).convert("L") + if out is None: + out = Image.composite(im, im2, mask) + else: + out = Image.composite(out, im2, mask) + return out diff --git a/conquest/data/assets/HoI/blank.png b/conquest/data/assets/HoI/blank.png new file mode 100644 index 0000000..7cf4e82 Binary files /dev/null and b/conquest/data/assets/HoI/blank.png differ diff --git a/conquest/data/assets/HoI/data.json b/conquest/data/assets/HoI/data.json new file mode 100644 index 0000000..9baa7fa --- /dev/null +++ b/conquest/data/assets/HoI/data.json @@ -0,0 +1,3 @@ +{ + "region_max": 70 +} \ No newline at end of file diff --git a/conquest/data/assets/HoI/numbered.jpg b/conquest/data/assets/HoI/numbered.jpg new file mode 100644 index 0000000..228e9bb Binary files /dev/null and b/conquest/data/assets/HoI/numbered.jpg differ diff --git a/conquest/data/assets/ck2/blank.png b/conquest/data/assets/ck2/blank.png new file mode 100644 index 0000000..058abe7 Binary files /dev/null and b/conquest/data/assets/ck2/blank.png differ diff --git a/conquest/data/assets/ck2/data.json b/conquest/data/assets/ck2/data.json new file mode 100644 index 0000000..9baa7fa --- /dev/null +++ b/conquest/data/assets/ck2/data.json @@ -0,0 +1,3 @@ +{ + "region_max": 70 +} \ No newline at end of file diff --git a/conquest/data/assets/ck2/numbered.png b/conquest/data/assets/ck2/numbered.png new file mode 100644 index 0000000..91a4c76 Binary files /dev/null and b/conquest/data/assets/ck2/numbered.png differ diff --git a/conquest/data/assets/maps.json b/conquest/data/assets/maps.json new file mode 100644 index 0000000..96f1418 --- /dev/null +++ b/conquest/data/assets/maps.json @@ -0,0 +1,5 @@ +{ + "maps": [ + "simple_blank_map" + ] +} \ No newline at end of file diff --git a/conquest/data/assets/simple/blank.jpg b/conquest/data/assets/simple/blank.jpg new file mode 100644 index 0000000..f8f4f07 Binary files /dev/null and b/conquest/data/assets/simple/blank.jpg differ diff --git a/conquest/data/assets/simple/data.json b/conquest/data/assets/simple/data.json new file mode 100644 index 0000000..9baa7fa --- /dev/null +++ b/conquest/data/assets/simple/data.json @@ -0,0 +1,3 @@ +{ + "region_max": 70 +} \ No newline at end of file diff --git a/conquest/data/assets/simple/masks/1.jpg b/conquest/data/assets/simple/masks/1.jpg new file mode 100644 index 0000000..084384b Binary files /dev/null and b/conquest/data/assets/simple/masks/1.jpg differ diff --git a/conquest/data/assets/simple/masks/10.jpg b/conquest/data/assets/simple/masks/10.jpg new file mode 100644 index 0000000..078f526 Binary files /dev/null and b/conquest/data/assets/simple/masks/10.jpg differ diff --git a/conquest/data/assets/simple/masks/11.jpg b/conquest/data/assets/simple/masks/11.jpg new file mode 100644 index 0000000..7d8092e Binary files /dev/null and b/conquest/data/assets/simple/masks/11.jpg differ diff --git a/conquest/data/assets/simple/masks/12.jpg b/conquest/data/assets/simple/masks/12.jpg new file mode 100644 index 0000000..89ef52a Binary files /dev/null and b/conquest/data/assets/simple/masks/12.jpg differ diff --git a/conquest/data/assets/simple/masks/13.jpg b/conquest/data/assets/simple/masks/13.jpg new file mode 100644 index 0000000..d5bcf44 Binary files /dev/null and b/conquest/data/assets/simple/masks/13.jpg differ diff --git a/conquest/data/assets/simple/masks/14.jpg b/conquest/data/assets/simple/masks/14.jpg new file mode 100644 index 0000000..86a7c01 Binary files /dev/null and b/conquest/data/assets/simple/masks/14.jpg differ diff --git a/conquest/data/assets/simple/masks/15.jpg b/conquest/data/assets/simple/masks/15.jpg new file mode 100644 index 0000000..b18a720 Binary files /dev/null and b/conquest/data/assets/simple/masks/15.jpg differ diff --git a/conquest/data/assets/simple/masks/16.jpg b/conquest/data/assets/simple/masks/16.jpg new file mode 100644 index 0000000..1de9ab3 Binary files /dev/null and b/conquest/data/assets/simple/masks/16.jpg differ diff --git a/conquest/data/assets/simple/masks/17.jpg b/conquest/data/assets/simple/masks/17.jpg new file mode 100644 index 0000000..6f428bd Binary files /dev/null and b/conquest/data/assets/simple/masks/17.jpg differ diff --git a/conquest/data/assets/simple/masks/18.jpg b/conquest/data/assets/simple/masks/18.jpg new file mode 100644 index 0000000..c3f13cc Binary files /dev/null and b/conquest/data/assets/simple/masks/18.jpg differ diff --git a/conquest/data/assets/simple/masks/19.jpg b/conquest/data/assets/simple/masks/19.jpg new file mode 100644 index 0000000..bf9ec38 Binary files /dev/null and b/conquest/data/assets/simple/masks/19.jpg differ diff --git a/conquest/data/assets/simple/masks/2.jpg b/conquest/data/assets/simple/masks/2.jpg new file mode 100644 index 0000000..6edd658 Binary files /dev/null and b/conquest/data/assets/simple/masks/2.jpg differ diff --git a/conquest/data/assets/simple/masks/20.jpg b/conquest/data/assets/simple/masks/20.jpg new file mode 100644 index 0000000..39fac15 Binary files /dev/null and b/conquest/data/assets/simple/masks/20.jpg differ diff --git a/conquest/data/assets/simple/masks/21.jpg b/conquest/data/assets/simple/masks/21.jpg new file mode 100644 index 0000000..a6f2d88 Binary files /dev/null and b/conquest/data/assets/simple/masks/21.jpg differ diff --git a/conquest/data/assets/simple/masks/22.jpg b/conquest/data/assets/simple/masks/22.jpg new file mode 100644 index 0000000..a4c8057 Binary files /dev/null and b/conquest/data/assets/simple/masks/22.jpg differ diff --git a/conquest/data/assets/simple/masks/23.jpg b/conquest/data/assets/simple/masks/23.jpg new file mode 100644 index 0000000..3229d3e Binary files /dev/null and b/conquest/data/assets/simple/masks/23.jpg differ diff --git a/conquest/data/assets/simple/masks/24.jpg b/conquest/data/assets/simple/masks/24.jpg new file mode 100644 index 0000000..413bf4a Binary files /dev/null and b/conquest/data/assets/simple/masks/24.jpg differ diff --git a/conquest/data/assets/simple/masks/25.jpg b/conquest/data/assets/simple/masks/25.jpg new file mode 100644 index 0000000..c040946 Binary files /dev/null and b/conquest/data/assets/simple/masks/25.jpg differ diff --git a/conquest/data/assets/simple/masks/26.jpg b/conquest/data/assets/simple/masks/26.jpg new file mode 100644 index 0000000..232b004 Binary files /dev/null and b/conquest/data/assets/simple/masks/26.jpg differ diff --git a/conquest/data/assets/simple/masks/27.jpg b/conquest/data/assets/simple/masks/27.jpg new file mode 100644 index 0000000..c8229a3 Binary files /dev/null and b/conquest/data/assets/simple/masks/27.jpg differ diff --git a/conquest/data/assets/simple/masks/28.jpg b/conquest/data/assets/simple/masks/28.jpg new file mode 100644 index 0000000..d5484a1 Binary files /dev/null and b/conquest/data/assets/simple/masks/28.jpg differ diff --git a/conquest/data/assets/simple/masks/29.jpg b/conquest/data/assets/simple/masks/29.jpg new file mode 100644 index 0000000..0f138f6 Binary files /dev/null and b/conquest/data/assets/simple/masks/29.jpg differ diff --git a/conquest/data/assets/simple/masks/3.jpg b/conquest/data/assets/simple/masks/3.jpg new file mode 100644 index 0000000..112d1b0 Binary files /dev/null and b/conquest/data/assets/simple/masks/3.jpg differ diff --git a/conquest/data/assets/simple/masks/30.jpg b/conquest/data/assets/simple/masks/30.jpg new file mode 100644 index 0000000..b04de09 Binary files /dev/null and b/conquest/data/assets/simple/masks/30.jpg differ diff --git a/conquest/data/assets/simple/masks/31.jpg b/conquest/data/assets/simple/masks/31.jpg new file mode 100644 index 0000000..90812e7 Binary files /dev/null and b/conquest/data/assets/simple/masks/31.jpg differ diff --git a/conquest/data/assets/simple/masks/32.jpg b/conquest/data/assets/simple/masks/32.jpg new file mode 100644 index 0000000..fd12574 Binary files /dev/null and b/conquest/data/assets/simple/masks/32.jpg differ diff --git a/conquest/data/assets/simple/masks/33.jpg b/conquest/data/assets/simple/masks/33.jpg new file mode 100644 index 0000000..87704c5 Binary files /dev/null and b/conquest/data/assets/simple/masks/33.jpg differ diff --git a/conquest/data/assets/simple/masks/34.jpg b/conquest/data/assets/simple/masks/34.jpg new file mode 100644 index 0000000..1c610df Binary files /dev/null and b/conquest/data/assets/simple/masks/34.jpg differ diff --git a/conquest/data/assets/simple/masks/35.jpg b/conquest/data/assets/simple/masks/35.jpg new file mode 100644 index 0000000..e86c726 Binary files /dev/null and b/conquest/data/assets/simple/masks/35.jpg differ diff --git a/conquest/data/assets/simple/masks/36.jpg b/conquest/data/assets/simple/masks/36.jpg new file mode 100644 index 0000000..7f4ad3d Binary files /dev/null and b/conquest/data/assets/simple/masks/36.jpg differ diff --git a/conquest/data/assets/simple/masks/37.jpg b/conquest/data/assets/simple/masks/37.jpg new file mode 100644 index 0000000..c8b6b87 Binary files /dev/null and b/conquest/data/assets/simple/masks/37.jpg differ diff --git a/conquest/data/assets/simple/masks/38.jpg b/conquest/data/assets/simple/masks/38.jpg new file mode 100644 index 0000000..6fcd5a6 Binary files /dev/null and b/conquest/data/assets/simple/masks/38.jpg differ diff --git a/conquest/data/assets/simple/masks/39.jpg b/conquest/data/assets/simple/masks/39.jpg new file mode 100644 index 0000000..455f0e5 Binary files /dev/null and b/conquest/data/assets/simple/masks/39.jpg differ diff --git a/conquest/data/assets/simple/masks/4.jpg b/conquest/data/assets/simple/masks/4.jpg new file mode 100644 index 0000000..b77cc24 Binary files /dev/null and b/conquest/data/assets/simple/masks/4.jpg differ diff --git a/conquest/data/assets/simple/masks/40.jpg b/conquest/data/assets/simple/masks/40.jpg new file mode 100644 index 0000000..5692661 Binary files /dev/null and b/conquest/data/assets/simple/masks/40.jpg differ diff --git a/conquest/data/assets/simple/masks/41.jpg b/conquest/data/assets/simple/masks/41.jpg new file mode 100644 index 0000000..f0e3972 Binary files /dev/null and b/conquest/data/assets/simple/masks/41.jpg differ diff --git a/conquest/data/assets/simple/masks/42.jpg b/conquest/data/assets/simple/masks/42.jpg new file mode 100644 index 0000000..b41a652 Binary files /dev/null and b/conquest/data/assets/simple/masks/42.jpg differ diff --git a/conquest/data/assets/simple/masks/43.jpg b/conquest/data/assets/simple/masks/43.jpg new file mode 100644 index 0000000..463c17f Binary files /dev/null and b/conquest/data/assets/simple/masks/43.jpg differ diff --git a/conquest/data/assets/simple/masks/44.jpg b/conquest/data/assets/simple/masks/44.jpg new file mode 100644 index 0000000..b2da82b Binary files /dev/null and b/conquest/data/assets/simple/masks/44.jpg differ diff --git a/conquest/data/assets/simple/masks/45.jpg b/conquest/data/assets/simple/masks/45.jpg new file mode 100644 index 0000000..fdeca1c Binary files /dev/null and b/conquest/data/assets/simple/masks/45.jpg differ diff --git a/conquest/data/assets/simple/masks/46.jpg b/conquest/data/assets/simple/masks/46.jpg new file mode 100644 index 0000000..6da7ec6 Binary files /dev/null and b/conquest/data/assets/simple/masks/46.jpg differ diff --git a/conquest/data/assets/simple/masks/47.jpg b/conquest/data/assets/simple/masks/47.jpg new file mode 100644 index 0000000..4e7a2a4 Binary files /dev/null and b/conquest/data/assets/simple/masks/47.jpg differ diff --git a/conquest/data/assets/simple/masks/48.jpg b/conquest/data/assets/simple/masks/48.jpg new file mode 100644 index 0000000..87223f7 Binary files /dev/null and b/conquest/data/assets/simple/masks/48.jpg differ diff --git a/conquest/data/assets/simple/masks/49.jpg b/conquest/data/assets/simple/masks/49.jpg new file mode 100644 index 0000000..d749cae Binary files /dev/null and b/conquest/data/assets/simple/masks/49.jpg differ diff --git a/conquest/data/assets/simple/masks/5.jpg b/conquest/data/assets/simple/masks/5.jpg new file mode 100644 index 0000000..c392916 Binary files /dev/null and b/conquest/data/assets/simple/masks/5.jpg differ diff --git a/conquest/data/assets/simple/masks/50.jpg b/conquest/data/assets/simple/masks/50.jpg new file mode 100644 index 0000000..514a67f Binary files /dev/null and b/conquest/data/assets/simple/masks/50.jpg differ diff --git a/conquest/data/assets/simple/masks/51.jpg b/conquest/data/assets/simple/masks/51.jpg new file mode 100644 index 0000000..c928321 Binary files /dev/null and b/conquest/data/assets/simple/masks/51.jpg differ diff --git a/conquest/data/assets/simple/masks/52.jpg b/conquest/data/assets/simple/masks/52.jpg new file mode 100644 index 0000000..9321238 Binary files /dev/null and b/conquest/data/assets/simple/masks/52.jpg differ diff --git a/conquest/data/assets/simple/masks/53.jpg b/conquest/data/assets/simple/masks/53.jpg new file mode 100644 index 0000000..4b36e75 Binary files /dev/null and b/conquest/data/assets/simple/masks/53.jpg differ diff --git a/conquest/data/assets/simple/masks/54.jpg b/conquest/data/assets/simple/masks/54.jpg new file mode 100644 index 0000000..b592522 Binary files /dev/null and b/conquest/data/assets/simple/masks/54.jpg differ diff --git a/conquest/data/assets/simple/masks/55.jpg b/conquest/data/assets/simple/masks/55.jpg new file mode 100644 index 0000000..5bed3a8 Binary files /dev/null and b/conquest/data/assets/simple/masks/55.jpg differ diff --git a/conquest/data/assets/simple/masks/56.jpg b/conquest/data/assets/simple/masks/56.jpg new file mode 100644 index 0000000..627473c Binary files /dev/null and b/conquest/data/assets/simple/masks/56.jpg differ diff --git a/conquest/data/assets/simple/masks/57.jpg b/conquest/data/assets/simple/masks/57.jpg new file mode 100644 index 0000000..6e0e1e4 Binary files /dev/null and b/conquest/data/assets/simple/masks/57.jpg differ diff --git a/conquest/data/assets/simple/masks/58.jpg b/conquest/data/assets/simple/masks/58.jpg new file mode 100644 index 0000000..47e98fe Binary files /dev/null and b/conquest/data/assets/simple/masks/58.jpg differ diff --git a/conquest/data/assets/simple/masks/59.jpg b/conquest/data/assets/simple/masks/59.jpg new file mode 100644 index 0000000..f23e469 Binary files /dev/null and b/conquest/data/assets/simple/masks/59.jpg differ diff --git a/conquest/data/assets/simple/masks/6.jpg b/conquest/data/assets/simple/masks/6.jpg new file mode 100644 index 0000000..95eb45f Binary files /dev/null and b/conquest/data/assets/simple/masks/6.jpg differ diff --git a/conquest/data/assets/simple/masks/60.jpg b/conquest/data/assets/simple/masks/60.jpg new file mode 100644 index 0000000..c1b149e Binary files /dev/null and b/conquest/data/assets/simple/masks/60.jpg differ diff --git a/conquest/data/assets/simple/masks/61.jpg b/conquest/data/assets/simple/masks/61.jpg new file mode 100644 index 0000000..e343d5d Binary files /dev/null and b/conquest/data/assets/simple/masks/61.jpg differ diff --git a/conquest/data/assets/simple/masks/62.jpg b/conquest/data/assets/simple/masks/62.jpg new file mode 100644 index 0000000..413a5ad Binary files /dev/null and b/conquest/data/assets/simple/masks/62.jpg differ diff --git a/conquest/data/assets/simple/masks/63.jpg b/conquest/data/assets/simple/masks/63.jpg new file mode 100644 index 0000000..f03435f Binary files /dev/null and b/conquest/data/assets/simple/masks/63.jpg differ diff --git a/conquest/data/assets/simple/masks/64.jpg b/conquest/data/assets/simple/masks/64.jpg new file mode 100644 index 0000000..59e80fe Binary files /dev/null and b/conquest/data/assets/simple/masks/64.jpg differ diff --git a/conquest/data/assets/simple/masks/65.jpg b/conquest/data/assets/simple/masks/65.jpg new file mode 100644 index 0000000..fd2cb0d Binary files /dev/null and b/conquest/data/assets/simple/masks/65.jpg differ diff --git a/conquest/data/assets/simple/masks/66.jpg b/conquest/data/assets/simple/masks/66.jpg new file mode 100644 index 0000000..2ac9dda Binary files /dev/null and b/conquest/data/assets/simple/masks/66.jpg differ diff --git a/conquest/data/assets/simple/masks/67.jpg b/conquest/data/assets/simple/masks/67.jpg new file mode 100644 index 0000000..e2ebdc9 Binary files /dev/null and b/conquest/data/assets/simple/masks/67.jpg differ diff --git a/conquest/data/assets/simple/masks/68.jpg b/conquest/data/assets/simple/masks/68.jpg new file mode 100644 index 0000000..535e506 Binary files /dev/null and b/conquest/data/assets/simple/masks/68.jpg differ diff --git a/conquest/data/assets/simple/masks/69.jpg b/conquest/data/assets/simple/masks/69.jpg new file mode 100644 index 0000000..6b1d010 Binary files /dev/null and b/conquest/data/assets/simple/masks/69.jpg differ diff --git a/conquest/data/assets/simple/masks/7.jpg b/conquest/data/assets/simple/masks/7.jpg new file mode 100644 index 0000000..a0202b0 Binary files /dev/null and b/conquest/data/assets/simple/masks/7.jpg differ diff --git a/conquest/data/assets/simple/masks/70.jpg b/conquest/data/assets/simple/masks/70.jpg new file mode 100644 index 0000000..a1716af Binary files /dev/null and b/conquest/data/assets/simple/masks/70.jpg differ diff --git a/conquest/data/assets/simple/masks/8.jpg b/conquest/data/assets/simple/masks/8.jpg new file mode 100644 index 0000000..647c649 Binary files /dev/null and b/conquest/data/assets/simple/masks/8.jpg differ diff --git a/conquest/data/assets/simple/masks/9.jpg b/conquest/data/assets/simple/masks/9.jpg new file mode 100644 index 0000000..3bafeda Binary files /dev/null and b/conquest/data/assets/simple/masks/9.jpg differ diff --git a/conquest/data/assets/simple/numbered.jpg b/conquest/data/assets/simple/numbered.jpg new file mode 100644 index 0000000..228e9bb Binary files /dev/null and b/conquest/data/assets/simple/numbered.jpg differ diff --git a/conquest/data/assets/simple/numbers.jpg b/conquest/data/assets/simple/numbers.jpg new file mode 100644 index 0000000..de87fd7 Binary files /dev/null and b/conquest/data/assets/simple/numbers.jpg differ diff --git a/conquest/data/assets/simple/numbers.png b/conquest/data/assets/simple/numbers.png new file mode 100644 index 0000000..2f72371 Binary files /dev/null and b/conquest/data/assets/simple/numbers.png differ diff --git a/conquest/info.json b/conquest/info.json new file mode 100644 index 0000000..0e33d01 --- /dev/null +++ b/conquest/info.json @@ -0,0 +1,26 @@ +{ + "author": [ + "Bobloy" + ], + "bot_version": [ + 3, + 4, + 0 + ], + "description": "Handle war games by filling in specified territories with colors", + "hidden": true, + "install_msg": "Thank you for installing Dad. Get started with `[p]load conquest`, then `[p]help Conquest`", + "short": "War Game Map", + "requirements": ["pillow",], + "tags": [ + "bobloy", + "games", + "game", + "war", + "map", + "axisandallies", + "heartsofiron", + "conquest", + "rpg" + ] +} \ No newline at end of file