diff --git a/app/src/providers/PlayerProvider.tsx b/app/src/providers/PlayerProvider.tsx index 063bc35..6941033 100644 --- a/app/src/providers/PlayerProvider.tsx +++ b/app/src/providers/PlayerProvider.tsx @@ -169,8 +169,12 @@ const PlayerProvider = ({ children }: { children: ReactNode }) => { abi, address: contractAddress, functionName: 'raid', + }, { + onSuccess: (hash) => { + setHashAndCallback([hash, resetHashAndCallback]) + } }) - }, [writeContract]) + }, [writeContract, resetHashAndCallback]) const addUnit = useCallback((unit: UnitType) => { writeContract({ diff --git a/src/RaidGeld.sol b/src/RaidGeld.sol index 7afff11..6f69b2e 100644 --- a/src/RaidGeld.sol +++ b/src/RaidGeld.sol @@ -42,6 +42,8 @@ contract RaidGeld is ERC20, Ownable, Constants { uint16 championLevel ); event DaoTokenBuyInAmountSet(address indexed owner, uint256 oldAmount, uint256 newAmount); + event PrestigeGained(address indexed player, uint32 prestigeLevel); + event BossDefeated(address indexed player, uint8 bossLevel, uint256 earnings); // Modifier for functions that should only be available to registered players modifier onlyPlayer() { @@ -252,9 +254,12 @@ contract RaidGeld is ERC20, Ownable, Constants { uint256 reward = RaidGeldUtils.calculateBossReward(boss_to_attack.level, BUY_IN_DAO_TOKEN_AMOUNT); players[msg.sender].total_rewards += reward; daoToken.transfer(msg.sender, reward); + emit BossDefeated(msg.sender, boss_to_attack.level, reward); + if (boss_to_attack.level == 6) { // User ascends! Moloch is defeated, user can start a new run players[msg.sender].prestige_level += 1; + emit PrestigeGained(msg.sender, players[msg.sender].prestige_level); player_dies(msg.sender); return [hasWonBattle, true /* New prestige level! */ ]; } else {