async def _set_view(self, player: Player, form: Form) -> None: if player.primary_view: # Reduce chat clutter by displaying one view message at a time. old_message = player.view_message await self.delete_message(old_message) player.set_primary_view(form) await form.render()
async def _show_fight_start(self, player: Player) -> None: server = self.channel.server user = server.get_member(player.id) discord_message = await self.bot.send_message( user, f"```Fight vs {self.opponent.nickname} starting!```") options = BattleViewOptions(self.bot, player, player.combat_team, discord_message) battle_form = BattleView(options) player.set_primary_view(battle_form) await battle_form.render()
def _fetch_items(self, player: Player) -> None: """ Retrieves the player's items and adds them to the inventory. """ response = self.inventory_table.get_item(Key={'id': player.id}) try: inventory_resource = InventoryResource(**response['Item']) item_resources = [ ItemResource(**item) for item in inventory_resource.items ] for resource in item_resources: item = ItemInitializer.from_name(resource.name) player.add_item(item, resource.amount) except KeyError: pass
def _create_profile(self, user) -> Player: new_player = Player.from_user(user) new_player.add_starter_items() self.players[user.id] = new_player self.update_player(new_player) self.update_inventory(new_player) return new_player
def execute(self, game): text = [ 'Выбор класса:', '1. Warrior', '2. Mage', ] self.interface.print(text, delay=0.2) valid_answers = { 1: ['1', 'warrior'], 2: ['2', 'mage', 'wizard'], } question = self.interface.create_readable_text(valid_answers) answer = self.interface.ask(question, valid_answers) if answer == 1: game.player = Player(Warrior()) elif answer == 2: game.player = Player(Wizard()) game.scene = ShowPlayerStats()
def _fetch_player(self, user) -> Player or None: response = self.player_table.get_item(Key={'id': user.id}) try: resource = PlayerResource(**response['Item']) self.players[user.id] = Player.from_resource(resource) elementals = self._fetch_elementals(resource.elementals) self.players[user.id].set_elementals(elementals) team = self._get_team(resource.team, elementals) self.players[user.id].set_team(team) self._fetch_items(self.players[user.id]) return self.players[user.id] except KeyError: return None
def __init__(self): self._species = SpeciesBuilder().build() self._level = 1 self._nickname = None self._current_hp = None self._max_hp = None self._rank = 1 self._starting_mana = None self._physical_def = None self._speed = None user = UserBuilder().build() self._owner = Player(user.id, user.name) self._owner._level = 60 # Max level, as Elemental levels are restricted by owner level self._attribute_manager = AttributeFactory.create_random()
def execute(self, game): text = [ 'Выбор класса:', '1. Warrior', '2. Mage', '3. Assassin', '4. Cleric', '5. Archer', '6. Paladin', '7. Witcher', ] self.interface.print(text, delay=0.2) valid_answers = { 1: ['1', 'warrior'], 2: ['2', 'mage', 'wizard'], 3: ['3', 'Assassin'], 4: ['4', 'Cleric'], 5: ['5', 'Archer'], 6: ['6', 'Paladin'], 7: ['7', 'Witcher'], } question = self.interface.create_readable_text(valid_answers) answer = self.interface.ask(question, valid_answers) if answer == 1: game.player = Player(Warrior()) elif answer == 2: game.player = Player(Wizard()) elif answer == 3: game.player = Player(Assassin()) elif answer == 4: game.player = Player(Cleric()) elif answer == 5: game.player = Player(Archer()) elif answer == 6: game.player = Player(Paladin()) elif answer == 7: game.player = Player(Witcher()) game.scene = ShowPlayerStats()
def update_inventory(self, player: Player) -> None: self.inventory_table.put_item(Item=player.inventory_to_server())
def update_player(self, player: Player) -> None: self.player_table.put_item(Item=player.to_server())