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)
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)
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)
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)
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()
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]
def getInventoryByType(self, item_type): return [(m if Item.getCategory(m) == item_type else None) for m in self.inventory]
def getItemCount(self, item): cat = Item.getCategory(item) return self.inventory[cat][item]
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()
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