-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdelve.py
57 lines (43 loc) · 1.75 KB
/
delve.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import discord
from zone import Zone
from character import Character
class Delve(object):
def __init__(self, bot, leader: discord.Member, players: [discord.Member], zone: Zone, channel: discord.TextChannel, restart: bool):
self.bot = bot
self.leader = leader
self.players = players
self.players.append(leader)
self.characters = []
cc = bot.get_cog('CharacterController')
for player in players:
char = cc.get(player)
char.reset_stats()
self.characters.append(char)
self.zone = zone
if restart:
leader_char = cc.get(leader)
if zone.name in leader_char.depths.keys():
self.depth = zone.get_restart_level(leader_char.get_depth_progress(zone.name))
else:
self.depth = 1
self.solo = True if len(players) == 1 else False
self.channel = channel
self.current_room = self.zone.get_next_room(self.characters, self.depth)
self.status = 'idle' # idle, fighting
def proceed(self):
self.depth += 1
self.current_room = self.zone.get_next_room(self.characters, self.depth)
async def remove_player(self, player: discord.Member):
self.players.remove(player)
leader = None
for character in self.characters:
if character.name == player.name:
self.characters.remove(character)
break
if player == self.leader:
leader = self.players[0]
await self.channel.set_permissions(player, overwrite=None)
return leader.name
async def remove_character(self, character: Character):
leader_name = await self.remove_player(character.player)
return leader_name