NWNX:EE  8193.37.14
nwnx_skillranks.nss
Go to the documentation of this file.
1 
7 const string NWNX_SkillRanks = "NWNX_SkillRanks";
8 
21 
33 
36 {
37  int iSkill;
38  int iFeat;
39 
41  int iModifier;
42 
46 
55  string sClasses;
56 
60 
63 
66 
70 
73 
80 };
81 
85 
91 
98 
102 void NWNX_SkillRanks_SetSkillFeat(struct NWNX_SkillRanks_SkillFeat skillFeat, int createIfNonExistent = FALSE);
103 
112 
119 void NWNX_SkillRanks_SetSkillFeatFocusModifier(int iModifier, int iEpic = FALSE);
120 
124 
129 
134 int NWNX_SkillRanks_GetAreaModifier(object oArea, int iSkill);
135 
140 void NWNX_SkillRanks_SetAreaModifier(object oArea, int iSkill, int iModifier);
141 
143 
145 {
146  NWNXPushInt(iSkill);
147  NWNXCall(NWNX_SkillRanks, "GetSkillFeatCountForSkill");
148  return NWNXPopInt();
149 }
150 
152 {
153  NWNXPushInt(iIndex);
154  NWNXPushInt(iSkill);
155  NWNXCall(NWNX_SkillRanks, "GetSkillFeatForSkillByIndex");
156  struct NWNX_SkillRanks_SkillFeat skillFeat;
157  skillFeat.iSkill = iSkill;
158  skillFeat.iFeat = NWNXPopInt();
159  skillFeat.iModifier = NWNXPopInt();
160  skillFeat.iFocusFeat = NWNXPopInt();
161  skillFeat.sClasses = NWNXPopString();
162  skillFeat.fClassLevelMod = NWNXPopFloat();
163  skillFeat.iAreaFlagsRequired = NWNXPopInt();
164  skillFeat.iAreaFlagsForbidden = NWNXPopInt();
165  skillFeat.iDayOrNight = NWNXPopInt();
166  skillFeat.bBypassArmorCheckPenalty = NWNXPopInt();
167  skillFeat.iKeyAbilityMask = NWNXPopInt();
168  return skillFeat;
169 }
170 
172 {
173  NWNXPushInt(iFeat);
174  NWNXPushInt(iSkill);
175  NWNXCall(NWNX_SkillRanks, "GetSkillFeat");
176  struct NWNX_SkillRanks_SkillFeat skillFeat;
177  skillFeat.iSkill = iSkill;
178  skillFeat.iFeat = iFeat;
179  skillFeat.iModifier = NWNXPopInt();
180  skillFeat.iFocusFeat = NWNXPopInt();
181  skillFeat.sClasses = NWNXPopString();
182  skillFeat.fClassLevelMod = NWNXPopFloat();
183  skillFeat.iAreaFlagsRequired = NWNXPopInt();
184  skillFeat.iAreaFlagsForbidden = NWNXPopInt();
185  skillFeat.iDayOrNight = NWNXPopInt();
186  skillFeat.bBypassArmorCheckPenalty = NWNXPopInt();
187  skillFeat.iKeyAbilityMask = NWNXPopInt();
188  return skillFeat;
189 }
190 
191 void NWNX_SkillRanks_SetSkillFeat(struct NWNX_SkillRanks_SkillFeat skillFeat, int createIfNonExistent = FALSE)
192 {
193  NWNXPushInt(createIfNonExistent);
194  NWNXPushInt(skillFeat.iKeyAbilityMask);
195  NWNXPushInt(skillFeat.bBypassArmorCheckPenalty);
196  NWNXPushInt(skillFeat.iDayOrNight);
197  NWNXPushInt(skillFeat.iAreaFlagsForbidden);
198  NWNXPushInt(skillFeat.iAreaFlagsRequired);
199  NWNXPushFloat(skillFeat.fClassLevelMod);
200  // We only need to send the string from the point of the first set bit
201  NWNXPushString(GetStringRight(skillFeat.sClasses,GetStringLength(skillFeat.sClasses)-FindSubString(skillFeat.sClasses,"1")));
202  NWNXPushInt(skillFeat.iFocusFeat);
203  NWNXPushInt(skillFeat.iModifier);
204  NWNXPushInt(skillFeat.iFeat);
205  NWNXPushInt(skillFeat.iSkill);
206  NWNXCall(NWNX_SkillRanks, "SetSkillFeat");
207 }
208 
210 {
211  if (GetStringLength(skillFeat.sClasses) < 255)
212  {
213  int i;
214  string sPad;
215  for (i = 0; i < 255-GetStringLength(skillFeat.sClasses); i++) { sPad = sPad + "0"; }
216  skillFeat.sClasses = sPad + skillFeat.sClasses;
217  }
218  skillFeat.sClasses = GetStringLeft(skillFeat.sClasses, 254 - iClass) + "1" + GetStringRight(skillFeat.sClasses, iClass);
219  return skillFeat;
220 }
221 
222 void NWNX_SkillRanks_SetSkillFeatFocusModifier(int iModifier, int epicFocus = FALSE)
223 {
224  NWNXPushInt(epicFocus);
225  NWNXPushInt(iModifier);
226  NWNXCall(NWNX_SkillRanks, "SetSkillFeatFocusModifier");
227 }
228 
230 {
231  NWNXCall(NWNX_SkillRanks, "GetBlindnessPenalty");
232  return NWNXPopInt();
233 }
234 
236 {
237  NWNXPushInt(iModifier);
238  NWNXCall(NWNX_SkillRanks, "SetBlindnessPenalty");
239 }
240 
241 int NWNX_SkillRanks_GetAreaModifier(object oArea, int iSkill)
242 {
243  NWNXPushInt(iSkill);
244  NWNXPushObject(oArea);
245  NWNXCall(NWNX_SkillRanks, "GetAreaModifier");
246  return NWNXPopInt();
247 }
248 
249 void NWNX_SkillRanks_SetAreaModifier(object oArea, int iSkill, int iModifier)
250 {
251  NWNXPushInt(iModifier);
252  NWNXPushInt(iSkill);
253  NWNXPushObject(oArea);
254  NWNXCall(NWNX_SkillRanks, "SetAreaModifier");
255 }
const int NWNX_SKILLRANKS_KEY_ABILITY_INTELLIGENCE
Intelligence.
int NWNX_SkillRanks_GetBlindnessPenalty()
Gets the current penalty to Dexterity based skills when blind.
const int NWNX_SKILLRANKS_KEY_ABILITY_STRENGTH
Strength.
struct NWNX_SkillRanks_SkillFeat NWNX_SkillRanks_GetSkillFeatForSkillByIndex(int iSkill, int iIndex)
Returns a skill feat by index.
const int NWNX_SKILLRANKS_KEY_ABILITY_DEXTERITY
Dexterity.
int NWNX_SkillRanks_GetAreaModifier(object oArea, int iSkill)
Get a skill modifier for an area.
const int NWNX_SKILLRANKS_KEY_ABILITY_WISDOM
Wisdom.
const int NWNX_SKILLRANKS_KEY_ABILITY_CALC_AVERAGE
Use the average value of the provided ability scores.
const int NWNX_SKILLRANKS_KEY_ABILITY_CALC_MIN
Use the minimum value of the provided ability scores.
void NWNX_SkillRanks_SetAreaModifier(object oArea, int iSkill, int iModifier)
Sets a skill modifier for the area.
const int NWNX_SKILLRANKS_KEY_ABILITY_CHARISMA
Charisma.
const int NWNX_SKILLRANKS_KEY_ABILITY_CALC_SUM
Use the sum of the provided ability scores.
int NWNX_SkillRanks_GetSkillFeatCountForSkill(int iSkill)
void NWNX_SkillRanks_SetSkillFeatFocusModifier(int iModifier, int iEpic=FALSE)
Change the modifier value for Skill Focus and Epic Skill Focus feats.
void NWNX_SkillRanks_SetSkillFeat(struct NWNX_SkillRanks_SkillFeat skillFeat, int createIfNonExistent=FALSE)
Modifies or creates a skill feat.
const int NWNX_SKILLRANKS_KEY_ABILITY_CONSTITUTION
Constitution.
const int NWNX_SKILLRANKS_KEY_ABILITY_CALC_MAX
Use the maximum value of the provided ability scores.
struct NWNX_SkillRanks_SkillFeat NWNX_SkillRanks_AddSkillFeatClass(struct NWNX_SkillRanks_SkillFeat skillFeat, int iClass)
Add classes to a skill feat instead of working with the NWNX_SkillRanks_SkillFeat::sClasses string.
void NWNX_SkillRanks_SetBlindnessPenalty(int iModifier)
Set the value the Dexterity based skills get decreased due to blindness.
struct NWNX_SkillRanks_SkillFeat NWNX_SkillRanks_GetSkillFeat(int iSkill, int iFeat)
Returns a skill feat.
A feat that manipulates skill ranks.
int iKeyAbilityMask
Bitmask of abilities and method to calculate the ability modifier for a skill.
int iAreaFlagsForbidden
Used for feats like Stonecunning or Trackless Step which restrict skill modifiers by area types.
int iSkill
The skill this feat impacts.
int bBypassArmorCheckPenalty
This allows for feats that bypass the armor check penalty on skill rank calculations.
string sClasses
255 char bitset string for skill ranks impacted by class levels (like Bardic Knowledge).
int iModifier
Skill feat bonus/penalty.
int iAreaFlagsRequired
Used for feats like Stonecunning or Trackless Step which restrict skill modifiers by area types.