NWNX:EE  8193.37.14
nwnx_effect.nss
Go to the documentation of this file.
1 
6 const string NWNX_Effect = "NWNX_Effect";
7 
15 const int DURATION_TYPE_EQUIPPED = 3;
16 
20 const int DURATION_TYPE_INNATE = 4;
21 
24 {
25  string sID;
26  int nType;
27  int nSubType;
28 
29  float fDuration;
32 
33  object oCreator;
34  int nSpellId;
35  int bExpose;
36  int bShowIcon;
38 
39  effect eLinkLeft;
41  effect eLinkRight;
43 
45  int nParam0;
46  int nParam1;
47  int nParam2;
48  int nParam3;
49  int nParam4;
50  int nParam5;
51  int nParam6;
52  int nParam7;
53  float fParam0;
54  float fParam1;
55  float fParam2;
56  float fParam3;
57  string sParam0;
58  string sParam1;
59  string sParam2;
60  string sParam3;
61  string sParam4;
62  string sParam5;
63  object oParam0;
64  object oParam1;
65  object oParam2;
66  object oParam3;
67  vector vParam0;
68  vector vParam1;
69 
70  string sTag;
71 
72  string sItemProp;
73 };
74 
79 
84 
89 int NWNX_Effect_ReplaceEffect(object obj, effect eOld, effect eNew);
90 
94 int NWNX_Effect_GetTrueEffectCount(object oObject);
95 
100 struct NWNX_EffectUnpacked NWNX_Effect_GetTrueEffect(object oObject, int nIndex);
101 
107 void NWNX_Effect_ReplaceEffectByIndex(object oObject, int nIndex, struct NWNX_EffectUnpacked e);
108 
113 int NWNX_Effect_RemoveEffectById(object oObject, string sID);
114 
118 void NWNX_Effect_Apply(effect eEffect, object oObject);
119 
124 effect NWNX_Effect_SetEffectCreator(effect eEffect, object oObject);
125 
129 int NWNX_Effect_GetIsEffectValid(effect eEffect);
130 
134 int NWNX_Effect_GetAppliedEffectCount(object oObject);
135 
141 effect NWNX_Effect_GetAppliedEffect(object oObject, int nNth);
142 
144 
146 {
147  struct NWNX_EffectUnpacked n;
148 
149  n.sItemProp = NWNXPopString();
150 
151  n.sTag = NWNXPopString();
152 
153  n.vParam1 = NWNXPopVector();
154  n.vParam0 = NWNXPopVector();
155  n.oParam3 = NWNXPopObject();
156  n.oParam2 = NWNXPopObject();
157  n.oParam1 = NWNXPopObject();
158  n.oParam0 = NWNXPopObject();
159  n.sParam5 = NWNXPopString();
160  n.sParam4 = NWNXPopString();
161  n.sParam3 = NWNXPopString();
162  n.sParam2 = NWNXPopString();
163  n.sParam1 = NWNXPopString();
164  n.sParam0 = NWNXPopString();
165  n.fParam3 = NWNXPopFloat();
166  n.fParam2 = NWNXPopFloat();
167  n.fParam1 = NWNXPopFloat();
168  n.fParam0 = NWNXPopFloat();
169  n.nParam7 = NWNXPopInt();
170  n.nParam6 = NWNXPopInt();
171  n.nParam5 = NWNXPopInt();
172  n.nParam4 = NWNXPopInt();
173  n.nParam3 = NWNXPopInt();
174  n.nParam2 = NWNXPopInt();
175  n.nParam1 = NWNXPopInt();
176  n.nParam0 = NWNXPopInt();
177  n.nNumIntegers = NWNXPopInt();
178 
179  if(bLink)
180  {
181  n.bLinkRightValid = NWNXPopInt();
182  n.eLinkRight = NWNXPopEffect();
183  n.bLinkLeftValid = NWNXPopInt();
184  n.eLinkLeft = NWNXPopEffect();
185  }
186  else
187  {
188  n.bLinkRightValid = FALSE;
189  n.bLinkLeftValid = FALSE;
190  }
191 
192  n.nCasterLevel = NWNXPopInt();
193  n.bShowIcon = NWNXPopInt();
194  n.bExpose = NWNXPopInt();
195  n.nSpellId = NWNXPopInt();
196  n.oCreator = NWNXPopObject();
197 
198  n.nExpiryTimeOfDay = NWNXPopInt();
199  n.nExpiryCalendarDay = NWNXPopInt();
200  n.fDuration = NWNXPopFloat();
201 
202  n.nSubType = NWNXPopInt();
203  n.nType = NWNXPopInt();
204  n.sID = NWNXPopString();
205 
206  return n;
207 }
208 
209 void __NWNX_Effect_ResolvePack(struct NWNX_EffectUnpacked e, int bReplace=FALSE)
210 {
211  if(!bReplace)
212  NWNXPushInt(e.nType);
213 
214  NWNXPushInt(e.nSubType);
215 
216  NWNXPushFloat(e.fDuration);
217  NWNXPushInt(e.nExpiryCalendarDay);
218  NWNXPushInt(e.nExpiryTimeOfDay);
219 
220  NWNXPushObject(e.oCreator);
221  NWNXPushInt(e.nSpellId);
222  NWNXPushInt(e.bExpose);
223  NWNXPushInt(e.bShowIcon);
224  NWNXPushInt(e.nCasterLevel);
225 
226  if(!bReplace)
227  {
228  NWNXPushEffect(e.eLinkLeft);
229  NWNXPushInt(e.bLinkLeftValid);
230  NWNXPushEffect(e.eLinkRight);
231  NWNXPushInt(e.bLinkRightValid);
232  }
233 
234  NWNXPushInt(e.nNumIntegers);
235  NWNXPushInt(e.nParam0);
236  NWNXPushInt(e.nParam1);
237  NWNXPushInt(e.nParam2);
238  NWNXPushInt(e.nParam3);
239  NWNXPushInt(e.nParam4);
240  NWNXPushInt(e.nParam5);
241  NWNXPushInt(e.nParam6);
242  NWNXPushInt(e.nParam7);
243  NWNXPushFloat(e.fParam0);
244  NWNXPushFloat(e.fParam1);
245  NWNXPushFloat(e.fParam2);
246  NWNXPushFloat(e.fParam3);
247  NWNXPushString(e.sParam0);
248  NWNXPushString(e.sParam1);
249  NWNXPushString(e.sParam2);
250  NWNXPushString(e.sParam3);
251  NWNXPushString(e.sParam4);
252  NWNXPushString(e.sParam5);
253  NWNXPushObject(e.oParam0);
254  NWNXPushObject(e.oParam1);
255  NWNXPushObject(e.oParam2);
256  NWNXPushObject(e.oParam3);
257 
258  NWNXPushVector(e.vParam0);
259  NWNXPushVector(e.vParam1);
260 
261  NWNXPushString(e.sTag);
262 
263  NWNXPushString(e.sItemProp);
264 }
265 
267 {
268  NWNXPushEffect(e);
269  NWNXCall(NWNX_Effect, "UnpackEffect");
271 }
273 {
275  NWNXCall(NWNX_Effect, "PackEffect");
276  return NWNXPopEffect();
277 }
278 
279 int NWNX_Effect_ReplaceEffect(object obj, effect eOld, effect eNew)
280 {
281  NWNXPushEffect(eNew);
282  NWNXPushEffect(eOld);
283  NWNXPushObject(obj);
284  NWNXCall(NWNX_Effect, "ReplaceEffect");
285  return NWNXPopInt();
286 }
287 
289 {
290  NWNXPushObject(oObject);
291  NWNXCall(NWNX_Effect, "GetTrueEffectCount");
292  return NWNXPopInt();
293 }
294 
295 struct NWNX_EffectUnpacked NWNX_Effect_GetTrueEffect(object oObject, int nIndex)
296 {
297  NWNXPushInt(nIndex);
298  NWNXPushObject(oObject);
299  NWNXCall(NWNX_Effect, "GetTrueEffect");
300  return __NWNX_Effect_ResolveUnpack(FALSE);
301 }
302 
303 void NWNX_Effect_ReplaceEffectByIndex(object oObject, int nIndex, struct NWNX_EffectUnpacked e)
304 {
305  __NWNX_Effect_ResolvePack(e, TRUE);
306  NWNXPushInt(nIndex);
307  NWNXPushObject(oObject);
308  NWNXCall(NWNX_Effect, "ReplaceEffectByIndex");
309 }
310 
311 int NWNX_Effect_RemoveEffectById(object oObject, string sID)
312 {
313  NWNXPushString(sID);
314  NWNXPushObject(oObject);
315  NWNXCall(NWNX_Effect, "RemoveEffectById");
316  return NWNXPopInt();
317 }
318 
319 void NWNX_Effect_Apply(effect eEffect, object oObject)
320 {
321  NWNXPushObject(oObject);
322  NWNXPushEffect(eEffect);
323  NWNXCall(NWNX_Effect, "Apply");
324 }
325 
326 effect NWNX_Effect_SetEffectCreator(effect eEffect, object oObject)
327 {
328  NWNXPushObject(oObject);
329  NWNXPushEffect(eEffect);
330  NWNXCall(NWNX_Effect, "SetEffectCreator");
331  return NWNXPopEffect();
332 }
333 
334 int NWNX_Effect_GetIsEffectValid(effect eEffect)
335 {
336  NWNXPushEffect(eEffect);
337  NWNXCall(NWNX_Effect, "GetIsEffectValid");
338  return NWNXPopInt();
339 }
340 
342 {
343  NWNXPushObject(oObject);
344  NWNXCall(NWNX_Effect, "GetAppliedEffectCount");
345  return NWNXPopInt();
346 }
347 
348 effect NWNX_Effect_GetAppliedEffect(object oObject, int nNth)
349 {
350  NWNXPushInt(nNth);
351  NWNXPushObject(oObject);
352  NWNXCall(NWNX_Effect, "GetAppliedEffect");
353  return NWNXPopEffect();
354 }
int NWNX_Effect_GetIsEffectValid(effect eEffect)
Checks if the given effect is valid. Unlike the game builtin, this call considers internal types too.
void NWNX_Effect_Apply(effect eEffect, object oObject)
Applys an effect, bypassing any processing done by ApplyEffectToObject.
struct NWNX_EffectUnpacked NWNX_Effect_UnpackEffect(effect e)
Convert native effect type to unpacked structure.
struct NWNX_EffectUnpacked NWNX_Effect_GetTrueEffect(object oObject, int nIndex)
Gets a specific effect on an object. This can grab effects normally hidden from developers,...
int NWNX_Effect_GetAppliedEffectCount(object oObject)
Returns the number of applied effects on the given object.
int NWNX_Effect_RemoveEffectById(object oObject, string sID)
Removes effect by ID.
effect NWNX_Effect_GetAppliedEffect(object oObject, int nNth)
Returns the nNth applied effect on a object.
effect NWNX_Effect_PackEffect(struct NWNX_EffectUnpacked e)
Convert unpacked effect structure to native type.
effect NWNX_Effect_SetEffectCreator(effect eEffect, object oObject)
Sets an effect creator.
int NWNX_Effect_ReplaceEffect(object obj, effect eOld, effect eNew)
replace an already applied effect on an object Only duration, subtype, tag and spell related fields c...
int NWNX_Effect_GetTrueEffectCount(object oObject)
Gets the true effect count.
void NWNX_Effect_ReplaceEffectByIndex(object oObject, int nIndex, struct NWNX_EffectUnpacked e)
Replaces an already applied effect with another.
const int DURATION_TYPE_INNATE
Definition: nwnx_effect.nss:20
const int DURATION_TYPE_EQUIPPED
Definition: nwnx_effect.nss:15
struct NWNX_EffectUnpacked __NWNX_Effect_ResolveUnpack(int bLink=TRUE)
void __NWNX_Effect_ResolvePack(struct NWNX_EffectUnpacked e, int bReplace=FALSE)
An unpacked effect.
Definition: nwnx_effect.nss:24