Example #1
0
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();	
}
Example #2
0
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();
	}
}
Example #3
0
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();
}