The _battle function calculated a random uint256 based on block.timestamp, block.prevrandao, msg.sender and totalBattleSkill which is not a really random number.
All of the values used to generate a random number can be predicted/calculated, furthermore block.prevrandao on Arbitrum returns 1.
This means a malicious user can calculate the outcome of a battle and use it to steal all the funds in the contract.
High as a malicious user can calculate the random number and use it to win battles.
Use Chainlink VRF or similar service.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.