Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
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)
Ejemplo n.º 3
0
	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)
Ejemplo n.º 4
0
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)
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
	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)
Ejemplo n.º 8
0
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)
Ejemplo n.º 9
0
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)
Ejemplo n.º 10
0
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)
Ejemplo n.º 12
0
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
Ejemplo n.º 13
0
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
Ejemplo n.º 14
0
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)
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
	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)
Ejemplo n.º 18
0
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') ])
Ejemplo n.º 19
0
    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)
Ejemplo n.º 20
0
	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)
Ejemplo n.º 21
0
    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)
Ejemplo n.º 22
0
    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)
Ejemplo n.º 23
0
 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)
Ejemplo n.º 24
0
	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)
Ejemplo n.º 25
0
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
    ]