示例#1
0
    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"看起來你的行李好像還沒準備好, 詳情請洽冒險者公會員工.")
示例#2
0
    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
示例#3
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)
    
        
示例#4
0
 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
示例#5
0
 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"看起來招募中心已滿, 詳情請洽冒險者公會員工.")
示例#6
0
 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
示例#7
0
    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
示例#8
0
 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
示例#9
0
 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)
示例#10
0
 def test_createExistedCharacter_false(self):
     member = self.database.add_member(33)
     RPGCharacterUtil.createNewRPGCharacter(member)
     character = RPGCharacterUtil.createNewRPGCharacter(member)
     assert character == None
示例#11
0
 def test_createNewCharacter_success(self):
     member = self.database.add_member(33)
     character = RPGCharacterUtil.createNewRPGCharacter(member)
     assert character.character == member
示例#12
0
 def test_hasAdventureStarted_started(self):
     member = self.database.add_member(33)
     RPGCharacterUtil.createNewRPGCharacter(member)
     assert RPGCharacterUtil.hasAdventureStared(33)