Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- int32_t Player::getDefense() const
- {
- int32_t baseDefense = 5;
- int32_t defenseValue = 0;
- int32_t defenseSkill = 0;
- int32_t extraDefense = 0;
- float defenseFactor = getDefenseFactor();
- const Item* weapon;
- const Item* shield;
- getShieldAndWeapon(shield, weapon);
- if (weapon) {
- defenseValue = baseDefense + weapon->getDefense();
- extraDefense = weapon->getExtraDefense();
- defenseSkill = getWeaponSkill(weapon);
- }
- if (shield && shield->getDefense() >= defenseValue) {
- defenseValue = weapon != nullptr ? shield->getDefense() + weapon->getExtraDefense() : shield->getDefense();
- defenseSkill = getSkillLevel(SKILL_SHIELD);
- }
- if (defenseSkill == 0) {
- switch (fightMode) {
- case FIGHTMODE_ATTACK:
- case FIGHTMODE_BALANCED:
- return 1;
- case FIGHTMODE_DEFENSE:
- return 2;
- }
- }
- defenseValue = static_cast<int32_t>(defenseValue * vocation->defenseMultiplier);
- return static_cast<int32_t>(std::ceil((static_cast<float>(defenseSkill * (defenseValue * 0.015)) + (defenseValue * 0.1)) * defenseFactor));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement