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