session wallet
Some checks failed
CI / Foundry project (push) Has been cancelled

This commit is contained in:
yellow 2024-11-01 16:45:31 +01:00
parent 4c8f2250b7
commit 0e691e46af

View File

@ -314,14 +314,14 @@ contract RaidGeld is ERC20, Ownable, Constants {
// first perform raid // first perform raid
address player = _player(); address player = _player();
performRaid(player); performRaid(player);
Boss memory boss_to_attack = bosses[msg.sender]; Boss memory boss_to_attack = bosses[player];
// calculate how much the player will put into battle // calculate how much the player will put into battle
uint256 geld_to_burn = balanceOf(msg.sender) >= RaidGeldUtils.getBossPower(boss_to_attack.level) uint256 geld_to_burn = balanceOf(player) >= RaidGeldUtils.getBossPower(boss_to_attack.level)
? RaidGeldUtils.getBossPower(boss_to_attack.level) ? RaidGeldUtils.getBossPower(boss_to_attack.level)
: balanceOf(msg.sender); : balanceOf(player);
bool hasWonBattle = RaidGeldUtils.calculateBossFight(boss_to_attack.level, geld_to_burn, block.prevrandao); bool hasWonBattle = RaidGeldUtils.calculateBossFight(boss_to_attack.level, geld_to_burn, block.prevrandao);
emit BossBattle(msg.sender, boss_to_attack.level, hasWonBattle); emit BossBattle(player, boss_to_attack.level, hasWonBattle);
lastBossResults[msg.sender] = LastBossResult({ lastBossResults[player] = LastBossResult({
battled_at: block.timestamp, battled_at: block.timestamp,
level: boss_to_attack.level, level: boss_to_attack.level,
variant: boss_to_attack.variants[boss_to_attack.level], variant: boss_to_attack.variants[boss_to_attack.level],
@ -330,7 +330,7 @@ contract RaidGeld is ERC20, Ownable, Constants {
}); });
if (hasWonBattle) { if (hasWonBattle) {
// Burn geld, send some sweet DAO Token and continue // Burn geld, send some sweet DAO Token and continue
_burn(msg.sender, geld_to_burn); _burn(player, geld_to_burn);
uint256 baseReward = (BUY_IN_DAO_TOKEN_AMOUNT - BUY_IN_DAO_TOKEN_AMOUNT * SACRIFICE_SHARE / MANTISSA); uint256 baseReward = (BUY_IN_DAO_TOKEN_AMOUNT - BUY_IN_DAO_TOKEN_AMOUNT * SACRIFICE_SHARE / MANTISSA);
uint256 wholeReward = RaidGeldUtils.calculateBossReward(boss_to_attack.level, baseReward); uint256 wholeReward = RaidGeldUtils.calculateBossReward(boss_to_attack.level, baseReward);
uint256 treasuryShare = wholeReward * SACRIFICE_SHARE / MANTISSA; uint256 treasuryShare = wholeReward * SACRIFICE_SHARE / MANTISSA;
@ -338,29 +338,29 @@ contract RaidGeld is ERC20, Ownable, Constants {
// send a share to dao treasury // send a share to dao treasury
daoToken.transfer(DAO_TREASURY, treasuryShare); daoToken.transfer(DAO_TREASURY, treasuryShare);
players[msg.sender].total_rewards += reward; players[player].total_rewards += reward;
// send user its reward // send user its reward
daoToken.transfer(msg.sender, reward); daoToken.transfer(player, reward);
emit BossDefeated(msg.sender, boss_to_attack.level, reward); emit BossDefeated(player, boss_to_attack.level, reward);
lastBossResults[msg.sender].reward = reward; lastBossResults[player].reward = reward;
if (boss_to_attack.level == 6) { if (boss_to_attack.level == 6) {
// User ascends! Moloch is defeated, user can start a new run // User ascends! Moloch is defeated, user can start a new run
players[msg.sender].prestige_level += 1; players[player].prestige_level += 1;
emit PrestigeGained(msg.sender, players[msg.sender].prestige_level); emit PrestigeGained(player, players[player].prestige_level);
player_dies(msg.sender); player_dies(player);
lastBossResults[msg.sender].prestigeGained = true; lastBossResults[player].prestigeGained = true;
return [hasWonBattle, true /* New prestige level! */ ]; return [hasWonBattle, true /* New prestige level! */ ];
} else { } else {
// else go to next boss // else go to next boss
bosses[msg.sender].level += 1; bosses[player].level += 1;
} }
} else { } else {
// Whoops u died, boss defeated you // Whoops u died, boss defeated you
lastBossResults[msg.sender].reward = 0; lastBossResults[player].reward = 0;
player_dies(msg.sender); player_dies(player);
} }
return [hasWonBattle, false /* hasnt gotten prestige level */ ]; return [hasWonBattle, false /* hasnt gotten prestige level */ ];
} }