Clone of PhatAC @ https://github.com/floaterxk/PhatAC

Skills.cpp 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. #include "StdAfx.h"
  2. #include "skills.h"
  3. #include "TurbineXPTable.h"
  4. #include "Rules.h"
  5. const char *GetSkillName(eSkill index)
  6. {
  7. switch (index)
  8. {
  9. case eAxe: return "Axe";
  10. case eBow: return "Bow";
  11. case eCrossbow: return "Crossbow";
  12. case eDagger: return "Dagger";
  13. case eMace: return "Mace";
  14. case eMeleeDefense: return "Melee Defense";
  15. case eMissileDefense: return "Missile Defense";
  16. case eSpear: return "Spear";
  17. case eStaff: return "Staff";
  18. case eSword: return "Sword";
  19. case eThrownWeapons: return "Thrown Weapons";
  20. case eUnarmedCombat: return "Unarmed Combat";
  21. case eArcaneLore: return "Arcane Lore";
  22. case eMagicDefense: return "Magic Defense";
  23. case eManaConversion: return "Mana Conversion";
  24. case eAppraiseItem: return "Appraise Item";
  25. case eAssessPerson: return "Assess Person";
  26. case eDeception: return "Deception";
  27. case eHealing: return "Healing";
  28. case eJump: return "Jump";
  29. case eLockpick: return "Lockpick";
  30. case eRun: return "Run";
  31. case eAssessCreature: return "Assess Creature";
  32. case eAppraiseWeapon: return "Appraise Weapon";
  33. case eAppraiseArmor: return "Appraise Armor";
  34. case eAppraiseMagicItem: return "Appraise Magic Item";
  35. case eCreatureEnchantment: return "Creature Enchantment";
  36. case eItemEnchantment: return "Item Enchantment";
  37. case eLifeMagic: return "Life Magic";
  38. case eWarMagic: return "War Magic";
  39. case eLeadership: return "Leadership";
  40. case eLoyalty: return "Loyalty";
  41. case eFletching: return "Fletching";
  42. case eAlchemy: return "Alchemy";
  43. case eCooking: return "Cooking";
  44. default: return "";
  45. }
  46. }
  47. DWORD GetTrainedMaxXP()
  48. {
  49. XPTABLE* pXPTable = g_pGameRules->GetXPTable();
  50. if (pXPTable)
  51. return pXPTable->GetTrainedMaxXP();
  52. else
  53. return 0;
  54. }
  55. DWORD GetSpecializedMaxXP()
  56. {
  57. XPTABLE* pXPTable = g_pGameRules->GetXPTable();
  58. if (pXPTable)
  59. return pXPTable->GetSpecializedMaxXP();
  60. else
  61. return 0;
  62. }
  63. DWORD GetTrainedXP(DWORD Level)
  64. {
  65. XPTABLE* pXPTable = g_pGameRules->GetXPTable();
  66. if (pXPTable)
  67. return pXPTable->GetTrainedXP(Level);
  68. else
  69. return 0;
  70. }
  71. DWORD GetTrainedLevel(DWORD XP)
  72. {
  73. XPTABLE* pXPTable = g_pGameRules->GetXPTable();
  74. if (pXPTable)
  75. return pXPTable->GetTrainedLevel(XP);
  76. else
  77. return 0;
  78. }
  79. DWORD GetSpecializedXP(DWORD Level)
  80. {
  81. XPTABLE* pXPTable = g_pGameRules->GetXPTable();
  82. if (pXPTable)
  83. return pXPTable->GetSpecializedXP(Level);
  84. else
  85. return 0;
  86. }
  87. DWORD GetSpecializedLevel(DWORD XP)
  88. {
  89. XPTABLE* pXPTable = g_pGameRules->GetXPTable();
  90. if (pXPTable)
  91. return pXPTable->GetSpecializedLevel(XP);
  92. else
  93. return 0;
  94. }
  95. DWORD GetLevelXP(DWORD Level)
  96. {
  97. XPTABLE* pXPTable = g_pGameRules->GetXPTable();
  98. if (pXPTable)
  99. return pXPTable->GetLevelXP(Level);
  100. else
  101. return 0;
  102. }
  103. DWORD GetLevel(DWORD XP)
  104. {
  105. XPTABLE* pXPTable = g_pGameRules->GetXPTable();
  106. if (pXPTable)
  107. return pXPTable->GetLevel(XP);
  108. else
  109. return 0;
  110. }
  111. //direct client code
  112. float Calc_BurdenMod(float flBurden)
  113. {
  114. if (flBurden < 1.0f)
  115. return 1.0f;
  116. if (flBurden < 2.0f)
  117. return (2.0f - flBurden);
  118. return 0.0f;
  119. }
  120. //direct client code
  121. float Calc_AnimSpeed(DWORD dwRunSkill, float flBurden)
  122. {
  123. float flBurdenMod = Calc_BurdenMod(flBurden);
  124. float fSpeed = (float)dwRunSkill;
  125. if (fSpeed == 800.0f)
  126. return (18.0f / 4.0f);
  127. fSpeed /= (fSpeed + 200.0f);
  128. fSpeed *= 11.0f * flBurdenMod;
  129. return ((fSpeed + 4.0f) / 4.0f);
  130. }
  131. DWORD GetSkillMax(SKILL *pSkill, float fVitae)
  132. {
  133. //MUST ALSO ADD ATTRIBUTES VIA FORMULAS :(
  134. return (pSkill->data.bonus + pSkill->data.raises);
  135. }