struct EachMonster{ string name; uint winnings; uint losings; uint health; uint attackPower; uint defensePower; uint speed; } EachMonster[] public monsters; struct Battle { uint index; uint p1CarId; uint scoreToBeat; uint p2CarId; bool ended; uint createdAt; } Battle[] public battles; //create battle function createBattle (uint _p1CarId) public { EachMonster storage m = monsters[_p1CarId]; require(ownerOf(_p1CarId) == msg.sender); uint id = battles.length; uint _score = m.attackPower + m.speed; battles.push(Battle(id, _p1CarId, _score, 0, false, block.timestamp)); } //accept battle function acceptBattle (uint _battleId, uint _p2CarId) public { require(ownerOf(_p2CarId) == msg.sender); Battle storage b = battles[_battleId]; b.p2CarId = _p2CarId; } //end battle function endBattle (uint _battleId) public { Battle storage b = battles[_battleId]; EachMonster storage m = monsters[b.p2CarId]; uint _score = m.defensePower + m.speed; if(_score < b.scoreToBeat) { upgradeKrakens(b.p2CarId); b.ended = true; } else if (_score > b.scoreToBeat) { upgradeKrakens(b.p2CarId); b.ended = true; } else { b.ended = true; } } //upgrade krakens function upgradeKrakens(uint _carId) internal { EachMonster storage m = monsters[_carId]; m.winnings += 1; m.attackPower += 5; m.speed += 1; m.losings += 1; }
0.4.18