예제 #1
0
 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()
예제 #2
0
파일: versus.py 프로젝트: Hammerlord/Monbot
 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()
예제 #3
0
 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
예제 #4
0
 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
예제 #5
0
	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()
예제 #6
0
 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
예제 #7
0
 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()
예제 #8
0
 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()
예제 #9
0
 def update_inventory(self, player: Player) -> None:
     self.inventory_table.put_item(Item=player.inventory_to_server())
예제 #10
0
 def update_player(self, player: Player) -> None:
     self.player_table.put_item(Item=player.to_server())