async def init_rpg_character(self, ctx: commands.Context): if not ChannelUtil.hasChannel(ctx.guild.id, ctx.channel.id, Util.ChannelType.RPG_GUILD): return if RPGCharacterUtil.hasAdventureStared(ctx.author.id): await ctx.send("你的冒險已經啟程") return member: Member = MemberUtil.get_or_add_member(ctx.author.id) if member.coin < 5000: await ctx.send(f"看來你的硬幣不足呢, 先在群裡說說話賺取經驗吧.") return isNew = True if RPGCharacterUtil.getRPGCharacter(ctx.author.id) != None: isNew = False if RPGCharacterUtil.createNewRPGCharacter(ctx.author.id) != None: user = self.bot.get_user(ctx.author.id) name = await NicknameUtil.get_user_name(ctx.guild, user) MemberUtil.add_coin(ctx.author.id, -5000) MemberUtil.add_coin(ctx.bot.user.id, 5000) if isNew: await ctx.send(f"歡迎冒險者'{name}'的加入, 從現在開始你的冒險之旅吧!") else: await ctx.send(f"歡迎回來'{name}', 已恢復您冒險者的身分!") return await ctx.send(f"看起來你的行李好像還沒準備好, 詳情請洽冒險者公會員工.")
def test_applyExpiredStatus_success(self): c: RPGCharacter = RPGCharacterUtil.createNewRPGCharacter(1) RPGCharacterUtil.changeHp(c, -1000) StatusUtil.createRestStatus(1, 1, 20, -500) # expired status StatusUtil.applyExpiredStatus() assert None == StatusUtil.getStatus(1, 1, StatusType.REST) c = RPGCharacterUtil.getRPGCharacter(1) assert c.hp_current > 0
def test_changeHp_success(self): member = self.database.add_member(100) rpg: RPGCharacterUtil = RPGCharacterUtil.createNewRPGCharacter(member) expected_hp = rpg.hp_current dead = RPGCharacterUtil.changeHp(rpg, -10000) assert (rpg.hp_current == 0) and (dead is True) dead = RPGCharacterUtil.changeHp(rpg, +100) assert (rpg.hp_current == expected_hp) and (dead is not True)
def test_removeComaStatusToRest(self): c: RPGCharacter = RPGCharacterUtil.createNewRPGCharacter(1) StatusUtil.createComaStatus(guild_id=1, user=c, hp_max=c.hp_max) StatusUtil.startResting(guild_id=1, user=c) status = StatusUtil.getStatus(guild_id=1, member_id=c.id, type=StatusType.COMA) assert status is None status = StatusUtil.getStatus(guild_id=1, member_id=c.id, type=StatusType.REST) assert status is not None
async def draft_character(self, ctx: commands.Context, user: User): if not ChannelUtil.hasChannel(ctx.guild.id, ctx.channel.id, Util.ChannelType.RPG_GUILD): return name = await NicknameUtil.get_user_name(ctx.guild, user) if RPGCharacterUtil.hasAdventureStared(user.id): await ctx.send(f"'{name}'已經是冒險者了, 不需要再招募.") return if RPGCharacterUtil.createNewRPGCharacter(user.id) != None: await ctx.send(f"非常感謝, '{name}'現在已經在冒險者公會登記為冒險者了!") return await ctx.send(f"看起來招募中心已滿, 詳情請洽冒險者公會員工.")
def test_createComaStatus_success(self): c: RPGCharacter = RPGCharacterUtil.createNewRPGCharacter(1) comaStatus = StatusUtil.createComaStatus(guild_id=1, user=c, hp_max=c.hp_max) status = StatusUtil.getStatus(guild_id=1, member_id=c.id, type=StatusType.COMA) assert comaStatus == status statuslist = StatusUtil.reviveComaStatus() assert len(statuslist) == 0 ch: RPGCharacter = RPGCharacterUtil.createNewRPGCharacter(2) comaStatus1 = StatusUtil.createComaStatus(guild_id=1, user=ch, hp_max=ch.hp_max) status1 = StatusUtil.getStatus(guild_id=1, member_id=ch.id, type=StatusType.COMA) assert comaStatus1 == status1 statuslist = StatusUtil.reviveComaStatus() assert len(statuslist) == 0 assert c.hp_max == c.hp_current
def test_levelUpCharacter_success(self): member = self.database.add_member(100) rpg: RPGCharacterUtil = RPGCharacterUtil.createNewRPGCharacter(member) old_hp = rpg.hp_max old_mp = rpg.mp_max old_atk = rpg.attack_basic old_def = rpg.defense_basic RPGCharacterUtil.levelUpCharacter(member.member_id, 1, 10) rpg: RPGCharacterUtil = RPGCharacterUtil.getRPGCharacter(member.member_id) assert rpg.hp_max > old_hp assert rpg.mp_max > old_mp assert rpg.attack_basic > old_atk assert rpg.defense_basic > old_def
def test_getRPGCharacter_successWithId(self): member = self.database.add_member(100) rpg = RPGCharacterUtil.createNewRPGCharacter(member) rpg_get = RPGCharacterUtil.getRPGCharacter(member.member_id) assert rpg_get == rpg
def test_retireCharacter_success(self): member = self.database.add_member(33) RPGCharacterUtil.createNewRPGCharacter(member) RPGCharacterUtil.retireRPGCharacter(member.member_id) assert not RPGCharacterUtil.hasAdventureStared(member.member_id)
def test_createExistedCharacter_false(self): member = self.database.add_member(33) RPGCharacterUtil.createNewRPGCharacter(member) character = RPGCharacterUtil.createNewRPGCharacter(member) assert character == None
def test_createNewCharacter_success(self): member = self.database.add_member(33) character = RPGCharacterUtil.createNewRPGCharacter(member) assert character.character == member
def test_hasAdventureStarted_started(self): member = self.database.add_member(33) RPGCharacterUtil.createNewRPGCharacter(member) assert RPGCharacterUtil.hasAdventureStared(33)