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)
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
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 = []
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 = []
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)
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") # событие для ачивок
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
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 = []
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
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
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)
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 = []