void LevelUpData(void) { characterData.statPointsToSpend += STAT_POINTS_PER_LEVEL; ++characterData.level; characterData.xpForNextLevel += ComputeXPForNextLevel(characterData.level); characterData.stats.maxHealth = ComputePlayerHealth(characterData.level); if(characterData.stats.maxHealth > 9999) characterData.stats.maxHealth = 9999; characterData.stats.currentHealth = characterData.stats.maxHealth; UpdateCharacterLevel(); UpdateCharacterHealth(); }
void MonsterAttack(void) { uint16_t baseDamage; uint16_t damageToDeal; bool useMagicAttack = (currentMonster->allowMagicAttack && currentMonster->allowPhysicalAttack) ? Random(2) : currentMonster->allowMagicAttack; baseDamage = ComputePlayerHealth(currentFloor)/GetMonsterPowerDivisor(currentMonster->powerLevel); damageToDeal = ApplyDefense(baseDamage, useMagicAttack ? GetCharacter()->stats.magicDefense : GetCharacter()->stats.defense); if(DealPlayerDamage(damageToDeal)) { CloseBattleWindow(); ShowEndWindow(); } }
void InitializeCharacter(void) { characterData.xp = 0; characterData.level = 1; characterData.gold = 0; characterData.escapes = 0; characterData.xpForNextLevel = ComputeXPForNextLevel(1); characterData.stats.maxHealth = ComputePlayerHealth(1); characterData.stats.currentHealth = characterData.stats.maxHealth; characterData.stats.strength = 1; characterData.stats.magic = 1; characterData.stats.defense = 1; characterData.stats.magicDefense = 1; statPointsToSpend = 0; UpdateCharacterLevel(); UpdateCharacterHealth(); }