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))
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
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..."
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)