def test_items(self): ITEM_TYPES = ['good', 'bad', 'neutral', 'special', 'pets'] for t in ITEM_TYPES: for r in itemloader.get_all_items(t): item = itemloader.load_item(r, t) self.assertFalse(item is None)
def action(user, reply, text): if text == actions[0]: items = [(it[0], it[1]) for it in user.get_room_temp('items', def_val=[]) if len(it) < 3 or len(it[2]) == 0] if len(items) == 0: reply('У него ничего не было.') else: reply( 'Ты забрал его вещи, золотишко и парочку сохранившихся зубов.') user.give_gold(random.randrange(12, 72)) items.append(('loot', 'tooth')) items.append(('loot', 'tooth')) for it in items: user.add_item(it[0], it[1]) counter_items = Counter(items) items_str = [] for it, cnt in counter_items.most_common(): loaded_item = itemloader.load_item(it[1], it[0], usr=user) if loaded_item is not None: items_str.append('*{0}* ({1} шт.)'.format( loaded_item.name, cnt)) reply('Его рюкзак вмещал в себя следующие вещи: {0}'.format( ', '.join(items_str))) else: reply('Ты уходишь отсюда.') user.leave(reply)
def test_items(self): ITEM_TYPES = [ 'good', 'bad', 'neutral', 'special', 'pets' ] for t in ITEM_TYPES: for r in itemloader.get_all_items(t): item = itemloader.load_item(r, t) self.assertFalse(item is None)
def open_shop(self, reply): self.state = 'shop' if self.visited_shop: self.open_corridor(reply) return if self.shop_names is None or len(self.shop_items) != 4: self.shop_items = itemloader.load_shop_items() items = [ itemloader.load_item(i[1], i[0], usr=self) for i in self.shop_items ] self.shop_names = [ i.name for i in items ] for item in self.get_items(): item.on_shop(self, reply, items) txt = locale_manager.get('SHOP_MESSAGE').format( items[0].name, items[0].price, items[0].description, items[1].name, items[1].price, items[1].description, items[2].name, items[2].price, items[2].description, items[3].name, items[3].price, items[3].description ) keyboard = [ self.shop_names[0:2], self.shop_names[2:], locale_manager.get('EXIT') ] reply(txt, keyboard)
def action(user, reply, text): if text == actions[0]: items = [ (it[0], it[1]) for it in user.get_room_temp('items', def_val=[]) if len(it) < 3 or len(it[2]) == 0 ] if len(items) == 0: reply('У него ничего не было.') else: reply('Ты забрал его вещи, золотишко и парочку сохранившихся зубов.') user.give_gold(random.randrange(12, 72)) items.append(('loot', 'tooth')) items.append(('loot', 'tooth')) for it in items: user.add_item(it[0], it[1]) counter_items = Counter(items) items_str = [ ] for it, cnt in counter_items.most_common(): loaded_item = itemloader.load_item(it[1], it[0], usr=user) if loaded_item is not None: items_str.append('*{0}* ({1} шт.)'.format(loaded_item.name, cnt)) reply('Его рюкзак вмещал в себя следующие вещи: {0}'.format(', '.join(items_str))) else: reply('Ты уходишь отсюда.') user.leave(reply)
def open_shop(self, reply): self.state = 'shop' if self.visited_shop: self.open_corridor(reply) return if self.shop_names is None or len(self.shop_items) != 4: self.shop_items = itemloader.load_shop_items() items = [ itemloader.load_item(i[1], i[0], usr=self) for i in self.shop_items ] self.shop_names = [i.name for i in items] for item in self.get_items(): item.on_shop(self, reply, items) txt = locale_manager.get('SHOP_MESSAGE').format( items[0].name, items[0].price, items[0].description, items[1].name, items[1].price, items[1].description, items[2].name, items[2].price, items[2].description, items[3].name, items[3].price, items[3].description) keyboard = [ self.shop_names[0:2], self.shop_names[2:], locale_manager.get('EXIT') ] reply(txt, keyboard)
def open_shop(self, reply): self.state = 'shop' if self.visited_shop: self.open_corridor(reply) return self.shop_items = itemloader.load_shop_items() items = [ itemloader.load_item(i[1], i[0]) for i in self.shop_items ] self.shop_names = [ i.name for i in items ] self.shop_names.append('Выход') for item in self.get_items(): item.on_shop(self, reply, items) txt = ( 'Привет! Давно не виделись, смотри, что у меня есть:\n\n' '{0}\nЦена: {1}\n{2}\n\n' '{3}\nЦена: {4}\n{5}\n\n' '{6}\nЦена: {7}\n{8}' ).format( items[0].name, items[0].price, items[0].description, items[1].name, items[1].price, items[1].description, items[2].name, items[2].price, items[2].description ) reply(txt, self.shop_names)
def __random_item(): items = list(map(itemloader.load_random_item, TYPES_OF_ITEMS)) item_type, item_name = random.choice(items) item = itemloader.load_item(item_name, item_type) return (item_type, item_name, item)
def __random_item(): items = list(map(itemloader.load_random_item, TYPES_OF_ITEMS)) item_type, item_name = random.choice(items) item = itemloader.load_item(item_name, item_type) return (item_type, item_name, item)
def won(self, reply, tornament=False, boss=None): room = roomloader.load_room(self.room[1], self.room[0], self) if room.code_name == 'tornament' and tornament: reply('Стоп. Это же турнир, тут все работает не так. Ты просто нанес огромный урон противникам. Примерно `100`') room.make_damage(self, reply, 100) return self.monsters_killed += 1 room.on_won(self, reply) items = [ itemloader.load_item(i, 'loot') for i in room.loot ] loot = ', '.join([ item.name for item in items ]) if len(items) > 0 else 'Ничего.' for lt in room.loot: self.add_item('loot', lt) if room.room_type == 'boss' and boss is not None: total_damage = self.get_room_temp('user_damage', def_val=0) if total_damage >= 1: room.coins = round(total_damage / boss['max_hp'] * boss['coins']) else: room.coins = 0 if room.coins > 0: reply(locale_manager.get('GOLD_FOUND').format(room.coins)) self.give_gold(room.coins) reply(locale_manager.get('YOU_WON').format(loot)) if room.room_type != 'boss': self.leave(reply)
def won(self, reply, tornament=False, boss=None): room = roomloader.load_room(self.room[1], self.room[0], self) if room.code_name == 'tornament' and tornament: reply('Стоп. Это же турнир, тут все работает не так. Ты просто нанес огромный урон противникам. Примерно `100`') room.make_damage(self, reply, 100) return self.monsters_killed += 1 room.on_won(self, reply) items = [ itemloader.load_item(i, 'loot') for i in room.loot ] loot = ', '.join([ item.name for item in items ]) if len(items) > 0 else 'Ничего.' for lt in room.loot: self.add_item('loot', lt) if room.room_type == 'boss' and boss is not None: total_damage = self.get_room_temp('user_damage', def_val=0) if total_damage >= 1: room.coins = round(total_damage / boss['max_hp'] * boss['coins']) else: room.coins = 0 if room.coins > 0: reply(locale_manager.get('GOLD_FOUND').format(room.coins)) self.give_gold(room.coins) reply(locale_manager.get('YOU_WON').format(loot)) if room.room_type != 'boss': self.leave(reply)
def get_pet(self): if self.pet is None: return None pet = itemloader.load_item(self.pet[0], 'pets') pet.real_name = self.pet[1] return pet
def get_pet(self): if self.pet is None: return None pet = itemloader.load_item(self.pet[0], "pets") pet.real_name = self.pet[1] return pet
def generate_items_text(user): trade_items = user.get_room_temp('trade_items', def_val=[]) items = [itemloader.load_item(i[1], i[0]) for i in trade_items] names = [i.name for i in items] descriptions = [i.description for i in items if i is not None] costs = [i.price * 2 for i in items if i is not None] user.set_room_temp('names', names) user.set_room_temp('descriptions', descriptions) user.set_room_temp('costs', costs)
def generate_items_text(user): trade_items = user.get_room_temp('trade_items', def_val=[ ]) items = [ itemloader.load_item(i[1], i[0]) for i in trade_items ] names = [ i.name for i in items ] descriptions = [ i.description for i in items if i is not None ] costs = [ i.price * 2 for i in items if i is not None ] user.set_room_temp('names', names) user.set_room_temp('descriptions', descriptions) user.set_room_temp('costs', costs)
def generate_items_text(user, lst): trade_items = user.get_room_temp(lst, def_val=[]) items = [itemloader.load_item(i[1], i[0]) for i in trade_items] names = [i.name for i in items] descriptions = [i.description for i in items if i is not None] costs = [i.price * 2 for i in items if i is not None] user.set_room_temp(lst + "_names", names) user.set_room_temp(lst + "_descriptions", descriptions) user.set_room_temp(lst + "_costs", costs)
def shop(self, reply, text): if text == 'Выход': reply('До новых встреч!') self.open_corridor(reply) else: for ind, name in enumerate(self.shop_names): if name == text: buff, name = self.shop_items[ind] item = itemloader.load_item(name, buff) self.buy(item, reply) return reply('У меня такого нет', self.shop_names)
def shop(self, reply, text): if text == locale_manager.get('EXIT'): reply(locale_manager.get('SHOP_EXITED')) self.open_corridor(reply) else: for ind, name in enumerate(self.shop_names): if name == text: buff, name = self.shop_items[ind] item = itemloader.load_item(name, buff, usr=self) self.buy(item, reply) return reply(locale_manager.get('NO_GOODS'), [ self.shop_names[0:2], self.shop_names[2:], locale_manager.get('EXIT') ])
def shop(self, reply, text): if text == locale_manager.get('EXIT'): reply(locale_manager.get('SHOP_EXITED')) self.open_corridor(reply) else: for ind, name in enumerate(self.shop_names): if name == text: buff, name = self.shop_items[ind] item = itemloader.load_item(name, buff) self.buy(item, reply) return reply(locale_manager.get('NO_GOODS'), self.shop_names)
def won(self, reply): room = roomloader.load_room(self.room[1], self.room[0]) items = [ itemloader.load_item(i, 'loot') for i in room.loot ] loot = ', '.join([ item.name for item in items ]) if len(items) > 0 else 'Ничего.' for lt in room.loot: self.add_item('loot', lt) if room.coins > 0: reply('А еще тут лежало несколько золотых. Твой карман потяжелел на *{0}*'.format(room.coins)) self.gold += room.coins reply('Ты победил!\nТакже в комнате ты нашел..\n\n{0}'.format(loot)) self.leave(reply)
def won(self, reply): room = roomloader.load_room(self.room[1], self.room[0]) items = [itemloader.load_item(i, 'loot') for i in room.loot] loot = ', '.join([item.name for item in items]) if len(items) > 0 else 'Ничего.' for lt in room.loot: self.add_item('loot', lt) if room.coins > 0: reply(locale_manager.get('GOLD_FOUND').format(room.coins)) self.gold += room.coins reply(locale_manager.get('YOU_WON').format(loot)) self.leave(reply)
def open_shop(self, reply): self.state = 'shop' if self.visited_shop: self.open_corridor(reply) return self.shop_items = itemloader.load_shop_items() items = [itemloader.load_item(i[1], i[0]) for i in self.shop_items] self.shop_names = [i.name for i in items] self.shop_names.append(locale_manager.get('EXIT')) for item in self.get_items(): item.on_shop(self, reply, items) txt = locale_manager.get('SHOP_MESSAGE').format( items[0].name, items[0].price, items[0].description, items[1].name, items[1].price, items[1].description, items[2].name, items[2].price, items[2].description) reply(txt, self.shop_names)
def load_item(i): if len(i) >= 3: return itemloader.load_item(i[1], i[0], i[2], self) else: return itemloader.load_item(i[1], i[0], {}, self)
def load_item(i): if len(i) >= 3: return itemloader.load_item(i[1], i[0], i[2], self) else: return itemloader.load_item(i[1], i[0], { }, self)
def get_items(self): return [ i for i in [itemloader.load_item(i[1], i[0]) for i in self.items] if i is not None ]