Пример #1
0
    def test_users(self):

        name = 'test'
        wrong_name = 'aaaa'
        email = '*****@*****.**'
        pwd = 'TestPwd0'
        wrong_pwd = 'pwd'
        c = Client()

        response = c.post('/rest-auth/registration/', {
            'username': name,
            'email': email,
            'password1': pwd,
            'password2': pwd
        })
        self.assertTrue(status.is_success(response.status_code))

        user = CustomUser.objects.filter(username=name).first()
        self.assertEqual(user.coins, 1000)
        self.assertEqual(user.level, 1)
        self.assertEqual(user.exp, 0)

        response = c.post('/rest-auth/login/', {
            'username': name,
            'password': pwd
        })
        self.assertTrue(status.is_success(response.status_code))

        response = c.post('/rest-auth/login/', {
            'username': wrong_name,
            'password': pwd
        })
        self.assertTrue(status.is_client_error(response.status_code))

        response = c.post('/rest-auth/login/', {
            'username': name,
            'password': wrong_pwd
        })
        self.assertTrue(status.is_client_error(response.status_code))

        token = Token.objects.filter(user_id=user.id).first()
        self.assertIsNotNone(token)

        needed_exp = ExpMap.objects.get(level=user.level)
        old_level = user.level
        new_exp = needed_exp.exp_for_next_level - 1
        old_exp = user.exp

        increase_user_level(user, new_exp)
        self.assertEqual(user.exp, old_exp + new_exp)

        increase_user_level(user, 1)
        self.assertEqual(user.level, old_level + 1)

        response = c.post('/rest-auth/logout/')
        self.assertTrue(status.is_success(response.status_code))
Пример #2
0
def use_item(javagochi_id, item_name, username):
    javagochi = Javagochi.objects.filter(id=javagochi_id).first()
    item_type = BaseItem.objects.filter(name=item_name).first()
    user = CustomUser.objects.filter(username=username).first()

    owned_item = OwnedItem.objects.filter(owner=user, item=item_type).first()

    if (owned_item.amount_owned > 0):
        func = switcher.get(item_type.property_modified, "nothing")
        func(javagochi, owned_item)
        increase_user_level(user, item_type.user_exp_on_use)
        increase_javagochi_level(javagochi, item_type.jc_exp_on_use)
        return True
    else:
        return False
Пример #3
0
def challenge_result(challenger, challenged):

    challenger_str = challenger.race.strength
    challenged_str = challenged.race.strength

    # Checking weakness for the challenged javagpchi
    if (challenged.race.type.weakness == challenger.race.type.type):
        challenger_str = challenger_str * STRONG_VS_MULTIPLIER

    # Checking weakness for the challenger javagpchi
    if (challenger.race.type.weakness == challenged.race.type.type):
        challenged_str = challenged_str * STRONG_VS_MULTIPLIER

    # "rolling dice" for the javagochi
    challenger_str += randint(1, 100)
    challenged_str += randint(1, 100)

    # Checking the highest strength to determine the winning javagochi
    if (challenged_str > challenger_str):
        # Decrease the user level
        user_challenging = challenger.owner
        user_challenging.level = max(
            1, user_challenging.level - LEVELS_LOST_ON_BATTLE)
        user_challenging.save()
        # Swap the owner of the Javagochi
        challenger.owner = challenged.owner
        challenger.save()
        return "Your Javagochi lost the battle. You lost your Javagochi!"
    elif (challenger_str > challenged_str):
        # Increase the user level
        user_challenging = challenger.owner
        increase_user_level(user_challenging, USER_EXP_GAINED_ON_BATTLE)
        user_challenging.save()
        # Increase the javagochi level
        increase_javagochi_level(challenger, JC_EXP_GAINED_ON_BATTLE)
        # Swap the owner of the Javagochi
        challenged.owner = challenger.owner
        challenged.save()
        return "Your Javagochi won the battle. You aquired your opponent's Javagochi!"
    else:
        return "The battle result was a draw..."
Пример #4
0
    def create(self, validated_data):
        usr = self.request.data['user']
        itm = self.request.data['item']
        amount = int(self.request.data['amount'])

        user = CustomUser.objects.get_by_natural_key(usr)
        item = BaseItem.objects.filter(name=itm).first()

        if(user.coins >= item.cost * amount):
            if OwnedItem.objects.filter(owner=user, item=item).count() >= 1:
                itemObj = OwnedItem.objects.filter(owner=user, item=item).first()
                itemObj.amount_owned += amount
            else:
                itemObj = OwnedItem(owner=user,
                                    item=item,
                                    amount_owned=amount)
            user.coins -= item.cost * amount
            user.save()
            increase_user_level(user, item.exp_on_buy * amount)
            itemObj.save()
            return Response("Correctly added the item to your inventory", status=status.HTTP_201_CREATED)
        else:
            return Response("Not enough money", status=status.HTTP_400_BAD_REQUEST)