예제 #1
0
파일: core.py 프로젝트: imgxx/DefilerWings
    def create_lair(self, lair_type=None):
        """
        Создание нового логова.
        """
        # Выпускаем всех женщин в прошлом логове на свободу. 
        self.girls_list.free_all_girls()

        if lair_type is not None:
            # Если меняется логово на лучшее - сохраняем сокровищницу
            save_treas = self.lair.treasury
            # Создаем новое логово
            self.lair = Lair(lair_type)
            # Копируем сокровищницу из прошлого логова
            self.lair.treasury = save_treas
        else:
            # определяем логово по умолчанию
            lair_list = []
            mods = self.dragon.modifiers()
            for lair in data.lair_types.iterkeys():
                if 'prerequisite' in data.lair_types[lair]:  # просматриваем логова, выдаваемые автоматически при выполнении требований
                    prerequisite_list = data.lair_types[lair]['prerequisite']  # получаем список требований к дракону
                    prerequisite_exists = True  # временная переменная для требований
                    for prerequisite in prerequisite_list:  # просматриваем список требований
                        prerequisite_exists = prerequisite_exists and prerequisite in mods  # удостоверяемся, что список требований выполнен
                    if prerequisite_exists:
                        lair_list.append((data.lair_types[lair].name, lair))  # если список требований выполнен, добавляем логово к списку
            if len(lair_list) == 0:
                lair_type = 'impassable_coomb'  # список логов пуст, выбираем начальное
            elif len(lair_list) == 1:
                lair_type = lair_list[0][1]  # в списке одно логово, выбираем его автоматически
            else:
                lair_list.insert(0, (u"Выберите логово:", None))
                lair_type = renpy.display_menu(lair_list)  # в списке больше одного логова, даём список на выбор
            self.lair = Lair(lair_type)
예제 #2
0
 def choose_spell(self, back_message=u"Вернуться"):
     """
     Выводит меню для выбора заклинания
     :param back_message: название для пункта меню с отказом от выбора.
     :return: При выборе какого-либо заклинания кастует его и возвращает True,
              при отказе от выбора возвращает False.
     """
     spells_menu = []
     for spell in data.spell_list.keys():
         # Добавляем в список только актуальные заклинания.
         if spell not in self.dragon.spells and (
                 spell is not 'spellbound_trap'
                 or 'magic_traps' not in self.lair.upgrades):
             spells_menu.append((data.spell_list_rus[spell], spell))
     spells_menu = sorted(spells_menu, key=lambda spell: spell[0])
     spells_menu.append((back_message, 'back'))
     spell_name = renpy.display_menu(spells_menu)
     if spell_name == 'back':
         return False
     else:
         if spell_name == 'spellbound_trap':
             self.lair.add_upgrade('magic_traps')
         else:
             self.dragon.add_effect(spell_name)
         return True
예제 #3
0
    def after_awakening(self):
        """
        Все действия после пробуждения - разбираемся с воспитанными отродьями.
        """
        for spawn_i in xrange(len(self.spawn)):
            spawn_type = self.spawn[spawn_i]  # упрощение обращения к типу отродий
            spawn = girls_data.spawn_info[spawn_type]  # упрощение обращения к данным отродий
            renpy.show("meow", what=store.Image("img/scene/spawn/%s.jpg" % spawn_type))
            spawn_mod = spawn['modifier']  # упрощение обращения к списку модификаторов отродий
            # Делаем проверку. Истина, если не морское отродье или морское в подводном логове
            # TODO: Возможно стоит сделать умирание слуги, если оно не морское и в морском логове.
            marine_check = ('marine' not in spawn_mod) or \
                           (self.game.lair.type.require and 'swimming' in self.game.lair.type.require)
            spawn_menu = [(u"К Вам приходит %s и просит назначения" % spawn['name'], None)]  # меню отродий
            # Возможные пункты меню
            if ('poisonous' in spawn_mod) and ('poison_guards' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Выпустить в логово", u'poison_guards'))
            if ('servant' in spawn_mod) and ('servant' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать слугой", 'servant'))
            if ('warrior' in spawn_mod) and ('regular_guards' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать охранником", 'regular_guards'))
            if ('elite' in spawn_mod) and ('elite_guards' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать элитным охранником", 'elite_guards'))
            spawn_menu.append((u"Выпустить в королевство", 'free'))
            if (('servant' in spawn_mod) or
                    ('warrior' in spawn_mod) or
                    ('elite' in spawn_mod)) and \
                    ('marine' not in spawn_mod):
                spawn_menu.append((u"Отправить в армию тьмы", 'army_of_darkness'))

            menu_action = renpy.display_menu(spawn_menu)

            if menu_action == 'free':
                renpy.say(self.game.narrator, u"%s отправляется бесчинствовать в королевстве." % spawn['name'])
                self.free_spawn(spawn['power'])
            elif menu_action == 'army_of_darkness':
                renpy.say(self.game.narrator, u"%s отправляется в армию тьмы." % spawn['name'])
                self.army_of_darkness(spawn_type)
            else:
                # выдача сообщения о начале работы
                renpy.say(self.game.narrator, u"%s приступает к выполнению обязанностей." % spawn['name'])
                # выдача сообщения о конце работы, если это необходимо
                if 'replaces' in data.lair_upgrades[menu_action].keys():
                    replace = data.lair_upgrades[menu_action]['replaces']
                    renpy.say(self.game.narrator,
                              u"%s больше не требуются и уходят." % data.lair_upgrades[replace]['name'])
                # добавление в улучшение логова
                self.game.lair.add_upgrade(menu_action)
                
        renpy.hide("meow")
        self.spawn = []
예제 #4
0
    def after_awakening(self):
        """
        All actions after awakening - sort out spawns.
        """
        for spawn_i in xrange(len(self.spawn)):
            spawn_type = self.spawn[spawn_i]  # simplified access to spawns's type
            spawn = girls_data.spawn_info[spawn_type]  # simplified access to spawns's data
            renpy.show("meow", what=store.Image("img/scene/spawn/%s.jpg" % spawn_type))
            spawn_mod = spawn['modifier']  # simplified access to spawns's modifiers list
            # Make check. True if not sea spawn or sea spawn in underwater lair
            # TODO: Возможно стоит сделать умирание слуги, если оно не морское и в морском логове.
            marine_check = ('marine' not in spawn_mod) or \
                           (self.game.lair.type.require and 'swimming' in self.game.lair.type.require)
            spawn_menu = [(u"К Вам приходит %s и просит назначения" % spawn['name'], None)]  # меню отродий
            # Possible menu points
            if ('poisonous' in spawn_mod) and ('poison_guards' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Выпустить в логово", u'poison_guards'))
            if ('servant' in spawn_mod) and ('servant' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать слугой", 'servant'))
            if ('warrior' in spawn_mod) and ('regular_guards' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать охранником", 'regular_guards'))
            if ('elite' in spawn_mod) and ('elite_guards' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать элитным охранником", 'elite_guards'))
            spawn_menu.append((u"Выпустить в королевство", 'free'))
            if (('servant' in spawn_mod) or
                    ('warrior' in spawn_mod) or
                    ('elite' in spawn_mod)) and \
                    ('marine' not in spawn_mod):
                spawn_menu.append((u"Отправить в армию тьмы", 'army_of_darkness'))

            menu_action = renpy.display_menu(spawn_menu)

            if menu_action == 'free':
                renpy.say(self.game.narrator, u"%s отправляется бесчинствовать в королевстве." % spawn['name'])
                self.free_spawn(spawn['power'])
            elif menu_action == 'army_of_darkness':
                renpy.say(self.game.narrator, u"%s отправляется в армию тьмы." % spawn['name'])
                self.army_of_darkness(spawn_type)
            else:
                # Message about work start
                renpy.say(self.game.narrator, u"%s приступает к выполнению обязанностей." % spawn['name'])
                # Message about work end
                if 'replaces' in data.lair_upgrades[menu_action].keys():
                    replace = data.lair_upgrades[menu_action]['replaces']
                    renpy.say(self.game.narrator,
                              u"%s больше не требуются и уходят." % data.lair_upgrades[replace]['name'])
                # add lair improvement
                self.game.lair.add_upgrade(menu_action)
                
        renpy.hide("meow")
        self.spawn = []
예제 #5
0
 def make_locations_menu(self):
     menu_list = []
     for location in self.locations:
         displayed = location.name
         menu_list.append((displayed, location))
     diff = self.loc_max - len(self.locations)
     for i in range(diff):
         menu_list.append(('???', 'pass'))
     menu_list.append(('Do not go anywhere', 'done'))
     choice = renpy.display_menu(menu_list)
     if choice == 'done':
         return renpy.call('lbl_edge_manage')
     if choice == 'pass':
         return renpy.call('lbl_edge_missed_location')
     return self.go_to(choice)
예제 #6
0
    def create_lair(self, lair_type=None):
        """
        Создание нового логова.
        """
        # Выпускаем всех женщин в прошлом логове на свободу.
        self.girls_list.free_all_girls()

        if lair_type is not None:
            # Если меняется логово на лучшее - сохраняем сокровищницу
            save_treas = self.lair.treasury
            # Создаем новое логово
            self.lair = Lair(lair_type)
            data.achieve_target(self.lair.type_name,
                                "lair")  #событие для ачивок
            # Копируем сокровищницу из прошлого логова
            self.lair.treasury = save_treas
        else:
            # определяем логово по умолчанию
            lair_list = []
            mods = self.dragon.modifiers()
            for lair in data.lair_types.iterkeys():
                # просматриваем логова, выдаваемые автоматически при выполнении требований
                if 'prerequisite' in data.lair_types[lair]:
                    prerequisite_list = data.lair_types[lair][
                        'prerequisite']  # получаем список требований к дракону
                    prerequisite_exists = True  # временная переменная для требований
                    for prerequisite in prerequisite_list:  # просматриваем список требований
                        # удостоверяемся, что список требований выполнен
                        prerequisite_exists = prerequisite_exists and prerequisite in mods
                    if prerequisite_exists:
                        # если список требований выполнен, добавляем логово к списку
                        lair_list.append((data.lair_types[lair].name, lair))
            if len(lair_list) == 0:
                lair_type = 'impassable_coomb'  # список логов пуст, выбираем начальное
            elif len(lair_list) == 1:
                lair_type = lair_list[0][
                    1]  # в списке одно логово, выбираем его автоматически
            else:
                lair_list.insert(0, (u"Выберите логово:", None))
                lair_type = renpy.display_menu(
                    lair_list
                )  # в списке больше одного логова, даём список на выбор
            self.lair = Lair(lair_type)
            data.achieve_target(self.lair.type_name,
                                "lair")  # событие для ачивок
예제 #7
0
    def create_lair(self, lair_type=None):
        """
        Create new lair.
        """
        # Frees all girls from old lair. 
        self.girls_list.free_all_girls()

        if lair_type is not None:
            # If lair changed for better one - save treasury
            save_treas = self.lair.treasury
            # Create new lair
            self.lair = Lair(lair_type)
            data.achieve_target(self.lair.type_name, "lair")#событие для ачивок
            # Copy treasury from old lair
            self.lair.treasury = save_treas
        else:
            # define default lair
            lair_list = []
            mods = self.dragon.modifiers()
            for lair in data.lair_types.iterkeys():
                # review lairs which are given away automatically if requirements done
                if 'prerequisite' in data.lair_types[lair]:
                    prerequisite_list = data.lair_types[lair]['prerequisite']  # get list of requirements for dragon
                    prerequisite_exists = True  # temporary variable for requirements
                    for prerequisite in prerequisite_list:  # look through requirements list
                        # Make sure that list of requirements is done
                        prerequisite_exists = prerequisite_exists and prerequisite in mods
                    if prerequisite_exists:
                        # if list of requirements is done, adding lair to a list
                        lair_list.append((data.lair_types[lair].name, lair))
            if len(lair_list) == 0:
                lair_type = 'impassable_coomb'  # list of lairs is empty, choose default
            elif len(lair_list) == 1:
                lair_type = lair_list[0][1]  # one lair in a list, choose it automatically
            else:
                lair_list.insert(0, (u"Выберите логово:", None))
                lair_type = renpy.display_menu(lair_list)  # more than one lair in list, give a list to choose from
            self.lair = Lair(lair_type)
            data.achieve_target(self.lair.type_name, "lair")# achievements event
예제 #8
0
파일: girls.py 프로젝트: imgxx/DefilerWings
    def after_awakening(self):
        """
        Все действия после пробуждения - разбираемся с воспитанными отродьями.
        """
        for spawn_i in xrange(len(self.spawn)):
            spawn_type = self.spawn[spawn_i]  # упрощение обращения к типу отродий
            spawn = girls_data.spawn_info[spawn_type]  # упрощение обращения к данным отродий
            spawn_mod = spawn['modifier']  # упрощение обращения к списку модификаторов отродий
            marine_check = ('marine' not in spawn_mod) or \
                           (self.game.lair.type.require and 'swimming' in self.game.lair.type.require)  # истина, если не морское отродье или морское в подводном логове
            spawn_menu = [(u"К Вам приходит %s и просит назначения" % spawn['name'], None)]  # меню отродий
            # Возможные пункты меню
            if ('poisonous' in spawn_mod) and ('poison_guards' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Выпустить в логово", 'poison_guards'))
            if ('servant' in spawn_mod) and ('servant' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать слугой", 'servant'))
            if ('warrior' in spawn_mod) and ('regular_guards' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать охранником", 'regular_guards'))
            if ('elite' in spawn_mod) and ('elite_guards' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать элитным охранником", 'elite_guards'))
            spawn_menu.append((u"Выпустить в королевство", 'free'))
            if (('servant' in spawn_mod) or ('warrior' in spawn_mod) or ('elite' in spawn_mod)) and ('marine' not in spawn_mod):
                spawn_menu.append((u"Отправить в армию тьмы", 'army_of_darkness'))

            menu_action = renpy.display_menu(spawn_menu)

            if menu_action == 'free':
                renpy.say(self.game.narrator, u"%s отправляется бесчинствовать в королевстве" % spawn['name'])
                self.free_spawn(spawn['power'])
            elif menu_action == 'army_of_darkness':
                renpy.say(self.game.narrator, u"%s отправляется в армию тьмы" % spawn['name'])
                self.army_of_darkness(spawn_type)
            else:
                renpy.say(self.game.narrator,
                          u"%s приступает к выполнению обязанностей" % spawn['name'])  # выдача сообщения
                self.game.lair.upgrades.add(menu_action,
                                            deepcopy(data.lair_upgrades[menu_action]))  # добавление в улучшение логова
        self.spawn = []
예제 #9
0
 def choose_spell(self, back_message=u"Вернуться"):
     """
     Implements spell choose menu
     :param back_message: name for item with choose refusion in menu.
     :return: When spell choosed, uses it and return True,
              return False on refuse.
     """
     spells_menu = []
     for spell in data.spell_list.keys():
         # Добавляем в список только актуальные заклинания.
         if spell not in self.dragon.spells and (spell is not 'spellbound_trap' or 'magic_traps' not in self.lair.upgrades):
             spells_menu.append((data.spell_list_rus[spell], spell))
     spells_menu = sorted(spells_menu, key=lambda spell: spell[0])
     spells_menu.append((back_message, 'back'))
     spell_name = renpy.display_menu(spells_menu)
     if spell_name == 'back':
         return False
     else:
         if spell_name == 'spellbound_trap':
             self.lair.add_upgrade('magic_traps')
         else:
             self.dragon.add_effect(spell_name)
         return True
예제 #10
0
 def choose_spell(self, back_message=u"Вернуться"):
     """
     Выводит меню для выбора заклинания
     :param back_message: название для пункта меню с отказом от выбора.
     :return: При выборе какого-либо заклинания кастует его и возвращает True,
              при отказе от выбора возвращает False.
     """
     spells_menu = []
     for spell in data.spell_list.keys():
         # Добавляем в список только актуальные заклинания.
         if spell not in self.dragon.spells and (spell is not 'spellbound_trap' or 'magic_traps' not in self.lair.upgrades):
             spells_menu.append((data.spell_list_rus[spell], spell))
     spells_menu = sorted(spells_menu, key=lambda spell: spell[0])
     spells_menu.append((back_message, 'back'))
     spell_name = renpy.display_menu(spells_menu)
     if spell_name == 'back':
         return False
     else:
         if spell_name == 'spellbound_trap':
             self.lair.add_upgrade('magic_traps')
         else:
             self.dragon.add_effect(spell_name)
         return True
예제 #11
0
def make_menu(location):
    locations = edge.get_locations('grim_battlefield')
    menu_list = [(location.name + ' ' + location.owner, location) for location in locations]
    choice = renpy.display_menu(menu_list)
    return edge.go_to(choice)
예제 #12
0
    def after_awakening(self):
        """
        Все действия после пробуждения - разбираемся с воспитанными отродьями.
        """
        for spawn_i in xrange(len(self.spawn)):
            spawn_type = self.spawn[
                spawn_i]  # упрощение обращения к типу отродий
            spawn = girls_data.spawn_info[
                spawn_type]  # упрощение обращения к данным отродий
            renpy.show("meow",
                       what=store.Image("img/scene/spawn/%s.jpg" % spawn_type))
            spawn_mod = spawn[
                'modifier']  # упрощение обращения к списку модификаторов отродий
            # Делаем проверку. Истина, если не морское отродье или морское в подводном логове
            # TODO: Возможно стоит сделать умирание слуги, если оно не морское и в морском логове.
            marine_check = ('marine' not in spawn_mod) or \
                           (self.game.lair.type.require and 'swimming' in self.game.lair.type.require)
            spawn_menu = [
                (u"К Вам приходит %s и просит назначения" % spawn['name'],
                 None)
            ]  # меню отродий
            # Возможные пункты меню
            if ('poisonous' in spawn_mod) and (
                    'poison_guards'
                    not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Выпустить в логово", u'poison_guards'))
            if ('servant' in spawn_mod) and (
                    'servant' not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать слугой", 'servant'))
            if ('warrior' in spawn_mod) and (
                    'regular_guards'
                    not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append((u"Сделать охранником", 'regular_guards'))
            if ('elite' in spawn_mod) and (
                    'elite_guards'
                    not in self.game.lair.upgrades) and marine_check:
                spawn_menu.append(
                    (u"Сделать элитным охранником", 'elite_guards'))
            spawn_menu.append((u"Выпустить в королевство", 'free'))
            if (('servant' in spawn_mod) or
                    ('warrior' in spawn_mod) or
                    ('elite' in spawn_mod)) and \
                    ('marine' not in spawn_mod):
                spawn_menu.append(
                    (u"Отправить в армию тьмы", 'army_of_darkness'))

            menu_action = renpy.display_menu(spawn_menu)

            if menu_action == 'free':
                renpy.say(
                    self.game.narrator,
                    u"%s отправляется бесчинствовать в королевстве." %
                    spawn['name'])
                self.free_spawn(spawn['power'])
            elif menu_action == 'army_of_darkness':
                renpy.say(self.game.narrator,
                          u"%s отправляется в армию тьмы." % spawn['name'])
                self.army_of_darkness(spawn_type)
            else:
                # выдача сообщения о начале работы
                renpy.say(
                    self.game.narrator,
                    u"%s приступает к выполнению обязанностей." %
                    spawn['name'])
                # выдача сообщения о конце работы, если это необходимо
                if 'replaces' in data.lair_upgrades[menu_action].keys():
                    replace = data.lair_upgrades[menu_action]['replaces']
                    renpy.say(
                        self.game.narrator,
                        u"%s больше не требуются и уходят." %
                        data.lair_upgrades[replace]['name'])
                # добавление в улучшение логова
                self.game.lair.add_upgrade(menu_action)

        renpy.hide("meow")
        self.spawn = []