예제 #1
0
    async def updateLoot(self, message_user):
        Global.watcher.currentLoot = None

        self.contributors.append(message_user)

        items = ""
        collection = None
        for i in self.rolled_items:
            emoji = Item.getEmoji(i.item.name)
            if Item.getCategory(i.item.name) == "collection":
                collection = i.item
            else:
                items += f"- {emoji} `{str(i.count)} {i.item.name}`\n"

        # collection items must always be at the end of the item report
        if collection is not None:
            emoji = Item.getEmoji(collection.name)
            items += f"- {emoji} ***`{collection.name}`***"

        user = Global.client.get_user(self.contributors[0].userId)
        self.contributors[0].giveItems(self.rolled_items)

        embed = self.createEmbed(
            str(user) + " has collected " + self.rarity + " " + self.type,
            items)
        embed.colour = int(self.contributors[0].cosmetic["embed_colour"], 0)
        await self.sent_message.edit(embed=embed)
예제 #2
0
    async def run(self, message):
        user = User(message.author.id)
        disc_user = Global.client.get_user(user.userId)

        embed = discord.Embed(title=str(disc_user) + "'s Inventory",
                              color=int(user.cosmetic["embed_colour"], 0))

        if len(user.inventory) > 0:
            for cat in user.inventory:
                items = ""
                if len(user.inventory[cat]) > 0:
                    for i in user.inventory[cat]:
                        if user.inventory[cat][i] > 0:
                            emoji = Item.getEmoji(i)
                            items += f"- {emoji} `{user.inventory[cat][i]} {i}`\n"

                if items == "":
                    items = "Empty!"

                embed.add_field(name=cat.capitalize(), value=items)
        else:
            embed.add_field(name="Your inventory is empty!",
                            value="You have no items!")

        embed.set_thumbnail(url=disc_user.avatar_url)

        await message.channel.send(embed=embed)
예제 #3
0
    async def complete_craft(self, user, channel):
        text = ""
        if not self.requires_furnace:
            for i, x in enumerate(self.grid):
                for y in x:
                    text += Item.getEmoji(y)

                if i == 1:
                    text += "    >    " + Item.getEmoji(self.key)
                text += "\n"
        else:
            text += Item.getEmoji(self.grid[0][0]) + "\n"
            text += f":fire:    >    {Item.getEmoji(self.key)}\n"
            text += Item.getEmoji(self.grid[0][1]) + "\n"

        embed = Embed()
        embed.colour = int(user.cosmetic["embed_colour"], 0)
        embed.set_thumbnail(url=Recipe.items[self.key])
        embed.add_field(name=str(Global.client.get_user(user.userId)) + " crafted " + self.key, value=text)
        await channel.send(embed)
예제 #4
0
    def save_inventory(self):
        itemsstr = ["user_id"]
        items = [self.userId]
        for i in Item.items:
            cat = Item.getCategory(i)
            if cat != "other":
                itemsstr.append(cat + "_" + i.replace(" ", "_"))

                items.append(self.inventory[cat][i])

        Global.sql.insert("user_inventory", itemsstr, items)
예제 #5
0
    def giveItems(self, items):
        for i in items:
            name = i.item.name.lower()
            cat = Item.getCategory(name)
            count = i.count

            if name == "experience":
                self.addToProperties("experience", count)
                continue

            if name == "emerald":
                self.addToProperties("emeralds", count)
                continue

            self.inventory[cat][name] += count

        self.save_inventory()
예제 #6
0
    def __init__(self, uid, new=False):
        self.userId = uid

        self.properties = {}
        self.cosmetic = {}
        self.inventory = {}
        self.stats = {}

        properties = [("pickaxe_level", 0), ("sword_level", 0),
                      ("enchantment_sharpness", 0), ("enchantment_looting", 0),
                      ("experience", 0), ("emeralds", 0),
                      ("crafting_table", 0), ("furnace", 0)]
        cosmetic = [("embed_colour", "0x2C2F33")]
        stats = {
            "chests": [("basic", 0), ("common", 0), ("uncommon", 0),
                       ("rare", 0), ("epic", 0)],
            "ores": [("basic", 0), ("common", 0), ("uncommon", 0), ("rare", 0),
                     ("epic", 0)],
            "bosses": [("basic", 0), ("common", 0), ("uncommon", 0),
                       ("rare", 0), ("epic", 0)]
        }

        if new:
            for p in properties:
                self.properties[p[0]] = p[1]

            for c in cosmetic:
                self.cosmetic[c[0]] = c[1]

            for s in stats:
                self.stats[s] = {}
                for cat in stats[s]:
                    self.stats[s][cat[0]] = cat[1]

            for i in Item.items:
                cat = Item.getCategory(i)
                if cat != "other":
                    if cat not in self.inventory:
                        self.inventory[cat] = {}

                    self.inventory[cat][i] = 0

            self.save()

        else:
            userdata = Global.sql.get_user_data(self.userId)

            for p in userdata["properties"]:
                if p == "user_id":
                    continue
                self.properties[p] = userdata["properties"][p]

            for c in userdata["cosmetic"]:
                if c == "user_id":
                    continue
                self.cosmetic[c] = userdata["cosmetic"][c]

            for s in userdata["stats"]:
                if s == "user_id":
                    continue
                cat = s.replace('_', ' ').split()[0]
                rarity = s.replace('_', ' ').split()[1]

                if cat not in self.stats:
                    self.stats[cat] = {}

                self.stats[cat][rarity] = userdata["stats"][s]

            for i in userdata["inventory"]:
                if i == "user_id":
                    continue
                cat = i.replace('_', ' ').split()[0]
                item = i.replace(f"{cat}_", "").replace('_', " ")

                if cat not in self.inventory:
                    self.inventory[cat] = {}

                self.inventory[cat][item] = userdata["inventory"][i]
예제 #7
0
 def getInventoryByType(self, item_type):
     return [(m if Item.getCategory(m) == item_type else None)
             for m in self.inventory]
예제 #8
0
 def getItemCount(self, item):
     cat = Item.getCategory(item)
     return self.inventory[cat][item]
예제 #9
0
    def takeItems(self, items):
        for i in items:
            cat = Item.getCategory(i)
            self.inventory[cat][i] = self.inventory[cat][i] - items[i]

        self.save_inventory()
예제 #10
0
class LootManager:

    chests = [
        LootChest(
            40, "basic",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/5/55/Beehive_JE1_BE1.png/revision/latest",
            [
                Item([100, 25], "Stick"),
                Item([50], "Oak Plank"),
                Item([15], "Emerald"),
                Item([1], "Magic Stick")
            ], ["basic", "cardboard"]),
        LootChest(
            25, "common",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/8/82/Barrel_JE1_BE1.png/revision/latest",
            [
                Item([100, 75], "Stick"),
                Item([75], "Oak Plank"),
                Item([25], "Emerald"),
                Item([1], "Mahogany Plank")
            ], ["common", "barrel"]),
        LootChest(
            20,
            "uncommon",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/b/bd/Chest_%28S%29_JE2_BE2.png/revision/latest",
            [
                Item([100, 25], "Oak Plank"),
                Item([50], "Emerald"),
                Item([5], "Chest"),
                Item([1], "Sipsco High Quality Dirt")
            ],  # to updateeeeeeeeeeeeeeeeeeeeee
            ["uncommon", "chest"]),
        LootChest(
            10, "rare",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/9/9d/Xmas_chest.png/revision/latest",
            [
                Item([100, 25], "Emerald"),
                Item([75], "Oak Plank"),
                Item([15], "Chest"),
                Item([1], "Locked Chest"),
                Item([1], "Snowglobe")
            ], ["rare", "present", "gift"]),
        LootChest(
            5, "epic",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/4/41/Ender_Chest_%28S%29_JE2_BE2.png/revision/latest",
            [
                Item([100, 100, 90, 75], "Emerald"),
                Item([50], "Oak Plank"),
                Item([30], "Chest"),
                Item([15], "Key"),
                Item([5], "Locked Chest"),
                Item([1], "Enchanted Book"),
                Item([1], "Unopenable Chest")
            ], ["epic", "enderchest", "mystery"]),
    ]

    ores = [
        LootOre(
            40, "basic",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/d/d6/Coal_Ore_JE2_BE2.png/revision/latest",
            [
                Item([100], "Cobblestone"),
                Item([100, 25], "Coal"),
                Item([1], "Raw Carbon Fibre")
            ], ["basic", "coal"]),
        LootOre(
            25, "common",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/0/0c/Iron_Ore_JE3.png/revision/latest",
            [
                Item([25, 15], "Coal"),
                Item([100], "Iron Ore"),
                Item([1], "Rusty Magnet")
            ], ["common", "iron"]),
        LootOre(
            20, "uncommon",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/b/b9/Gold_Ore_JE3_BE2.png/revision/latest",
            [
                Item([25, 5], "Coal"),
                Item([100], "Gold Ore"),
                Item([1], "Pile of Doubloons")
            ], ["uncommon", "gold"]),
        LootOre(
            10, "rare",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/b/b5/Diamond_Ore_JE3_BE3.png/revision/latest",
            [
                Item([15, 1], "Coal"),
                Item([100], "Diamond"),
                Item([1], "Diamond Ring")
            ], ["rare", "diamond", "shiny"]),
        LootOre(
            5, "epic",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/4/4c/Ancient_Debris_JE1_BE1.png/revision/latest",
            [
                Item([15], "Diamond"),
                Item([15], "Coal"),
                Item([15], "Iron Ore"),
                Item([15], "Gold Ore"),
                Item([100], "Netherite Ore"),
                Item([1], "Quartz Chunk")
            ], ["epic", "netherite", "fireproof"]),
    ]

    bosses = [
        LootBoss(
            40, "basic",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/e/e0/Salmon.png/revision/latest",
            [
                Item([100, 50, 15], "Emerald"),
                Item([100, 75, 50, 25], "Experience"),
                Item([1], "Locked Chest"),
                Item([1], "Sushi")
            ], ["basic", "salmon"], 5),
        LootBoss(
            25, "common",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/5/56/Bee.png/revision/latest",
            [
                Item([100, 50, 15], "Emerald"),
                Item([100, 75, 50, 25], "Experience"),
                Item([3], "Locked Chest"),
                Item([1], "Hivemind")
            ], ["common", "bee"], 10),
        LootBoss(
            20, "uncommon",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/0/0d/Iron_Golem.png/revision/latest",
            [
                Item([100, 50, 15], "Emerald"),
                Item([100, 75, 50, 25], "Experience"),
                Item([5], "Locked Chest"),
                Item([1], "Key"),
                Item([1], "Laputa Crystal")
            ], ["uncommon", "irongolem"], 20),
        LootBoss(
            10, "rare",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/a/aa/Wither.png/revision/latest",
            [
                Item([100, 50, 15], "Emerald"),
                Item([100, 75, 50, 25], "Experience"),
                Item([7], "Locked Chest"),
                Item([3], "Key"),
                Item([1], "Enchanted Book"),
                Item([1], "Nether Star")
            ], ["rare", "wither"], 50),
        LootBoss(
            5, "epic",
            "https://static.wikia.nocookie.net/minecraft_gamepedia/images/5/5a/Ender_Dragon.png/revision/latest",
            [
                Item([100, 50, 15], "Emerald"),
                Item([100, 75, 50, 25], "Experience"),
                Item([10], "Locked Chest"),
                Item([5], "Key"),
                Item([5], "Enchanted Book"),
                Item([1], "Dragon Egg")
            ], ["epic", "dragon"], 100),
    ]

    @staticmethod
    def generateLoot(loot_table):
        val = randrange(100)

        table = []

        for l in loot_table:
            for chance in range(l.chance):
                table.append(l.rarity)

        chosen = table[val]

        for l in loot_table:
            if l.rarity == chosen:
                l.generate()
                return l