Advertisement
Guest User

Untitled

a guest
Feb 20th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. int32_t Player::getDefense() const
  2. {
  3. int32_t baseDefense = 5;
  4. int32_t defenseValue = 0;
  5. int32_t defenseSkill = 0;
  6. int32_t extraDefense = 0;
  7. float defenseFactor = getDefenseFactor();
  8. const Item* weapon;
  9. const Item* shield;
  10. getShieldAndWeapon(shield, weapon);
  11.  
  12. if (weapon) {
  13. defenseValue = baseDefense + weapon->getDefense();
  14. extraDefense = weapon->getExtraDefense();
  15. defenseSkill = getWeaponSkill(weapon);
  16. }
  17.  
  18. if (shield && shield->getDefense() >= defenseValue) {
  19. defenseValue = weapon != nullptr ? shield->getDefense() + weapon->getExtraDefense() : shield->getDefense();
  20. defenseSkill = getSkillLevel(SKILL_SHIELD);
  21. }
  22.  
  23. if (defenseSkill == 0) {
  24. switch (fightMode) {
  25. case FIGHTMODE_ATTACK:
  26. case FIGHTMODE_BALANCED:
  27. return 1;
  28.  
  29. case FIGHTMODE_DEFENSE:
  30. return 2;
  31. }
  32. }
  33.  
  34. defenseValue = static_cast<int32_t>(defenseValue * vocation->defenseMultiplier);
  35. return static_cast<int32_t>(std::ceil((static_cast<float>(defenseSkill * (defenseValue * 0.015)) + (defenseValue * 0.1)) * defenseFactor));
  36. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement