Updated for NWNEE 37-13
Updated for NWNEE 37-13. Updated NWNxEE scripts. CODI Core AI tweaks. Added Diamond Golem AI. Full compile. Updated release archive.
This commit is contained in:
@@ -2,7 +2,6 @@
|
||||
/// @brief Utility functions to manipulate the builtin effect type.
|
||||
/// @{
|
||||
/// @file nwnx_effect.nss
|
||||
#include "nwnx"
|
||||
|
||||
const string NWNX_Effect = "NWNX_Effect"; ///< @private
|
||||
|
||||
@@ -143,52 +142,46 @@ effect NWNX_Effect_GetAppliedEffect(object oObject, int nNth);
|
||||
|
||||
/// @}
|
||||
|
||||
struct NWNX_EffectUnpacked __NWNX_Effect_ResolveUnpack(string sFunc, int bLink=TRUE)
|
||||
struct NWNX_EffectUnpacked __NWNX_Effect_ResolveUnpack(int bLink=TRUE)
|
||||
{
|
||||
struct NWNX_EffectUnpacked n;
|
||||
|
||||
n.sItemProp = NWNX_GetReturnValueString();
|
||||
n.sItemProp = NWNXPopString();
|
||||
|
||||
n.sTag = NWNX_GetReturnValueString();
|
||||
n.sTag = NWNXPopString();
|
||||
|
||||
float fZ = NWNX_GetReturnValueFloat();
|
||||
float fY = NWNX_GetReturnValueFloat();
|
||||
float fX = NWNX_GetReturnValueFloat();
|
||||
n.vParam1 = Vector(fX, fY, fZ);
|
||||
fZ = NWNX_GetReturnValueFloat();
|
||||
fY = NWNX_GetReturnValueFloat();
|
||||
fX = NWNX_GetReturnValueFloat();
|
||||
n.vParam0 = Vector(fX, fY, fZ);
|
||||
n.oParam3 = NWNX_GetReturnValueObject();
|
||||
n.oParam2 = NWNX_GetReturnValueObject();
|
||||
n.oParam1 = NWNX_GetReturnValueObject();
|
||||
n.oParam0 = NWNX_GetReturnValueObject();
|
||||
n.sParam5 = NWNX_GetReturnValueString();
|
||||
n.sParam4 = NWNX_GetReturnValueString();
|
||||
n.sParam3 = NWNX_GetReturnValueString();
|
||||
n.sParam2 = NWNX_GetReturnValueString();
|
||||
n.sParam1 = NWNX_GetReturnValueString();
|
||||
n.sParam0 = NWNX_GetReturnValueString();
|
||||
n.fParam3 = NWNX_GetReturnValueFloat();
|
||||
n.fParam2 = NWNX_GetReturnValueFloat();
|
||||
n.fParam1 = NWNX_GetReturnValueFloat();
|
||||
n.fParam0 = NWNX_GetReturnValueFloat();
|
||||
n.nParam7 = NWNX_GetReturnValueInt();
|
||||
n.nParam6 = NWNX_GetReturnValueInt();
|
||||
n.nParam5 = NWNX_GetReturnValueInt();
|
||||
n.nParam4 = NWNX_GetReturnValueInt();
|
||||
n.nParam3 = NWNX_GetReturnValueInt();
|
||||
n.nParam2 = NWNX_GetReturnValueInt();
|
||||
n.nParam1 = NWNX_GetReturnValueInt();
|
||||
n.nParam0 = NWNX_GetReturnValueInt();
|
||||
n.nNumIntegers = NWNX_GetReturnValueInt();
|
||||
n.vParam1 = NWNXPopVector();
|
||||
n.vParam0 = NWNXPopVector();
|
||||
n.oParam3 = NWNXPopObject();
|
||||
n.oParam2 = NWNXPopObject();
|
||||
n.oParam1 = NWNXPopObject();
|
||||
n.oParam0 = NWNXPopObject();
|
||||
n.sParam5 = NWNXPopString();
|
||||
n.sParam4 = NWNXPopString();
|
||||
n.sParam3 = NWNXPopString();
|
||||
n.sParam2 = NWNXPopString();
|
||||
n.sParam1 = NWNXPopString();
|
||||
n.sParam0 = NWNXPopString();
|
||||
n.fParam3 = NWNXPopFloat();
|
||||
n.fParam2 = NWNXPopFloat();
|
||||
n.fParam1 = NWNXPopFloat();
|
||||
n.fParam0 = NWNXPopFloat();
|
||||
n.nParam7 = NWNXPopInt();
|
||||
n.nParam6 = NWNXPopInt();
|
||||
n.nParam5 = NWNXPopInt();
|
||||
n.nParam4 = NWNXPopInt();
|
||||
n.nParam3 = NWNXPopInt();
|
||||
n.nParam2 = NWNXPopInt();
|
||||
n.nParam1 = NWNXPopInt();
|
||||
n.nParam0 = NWNXPopInt();
|
||||
n.nNumIntegers = NWNXPopInt();
|
||||
|
||||
if(bLink)
|
||||
{
|
||||
n.bLinkRightValid = NWNX_GetReturnValueInt();
|
||||
n.eLinkRight = NWNX_GetReturnValueEffect();
|
||||
n.bLinkLeftValid = NWNX_GetReturnValueInt();
|
||||
n.eLinkLeft = NWNX_GetReturnValueEffect();
|
||||
n.bLinkRightValid = NWNXPopInt();
|
||||
n.eLinkRight = NWNXPopEffect();
|
||||
n.bLinkLeftValid = NWNXPopInt();
|
||||
n.eLinkLeft = NWNXPopEffect();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -196,207 +189,166 @@ struct NWNX_EffectUnpacked __NWNX_Effect_ResolveUnpack(string sFunc, int bLink=T
|
||||
n.bLinkLeftValid = FALSE;
|
||||
}
|
||||
|
||||
n.nCasterLevel = NWNX_GetReturnValueInt();
|
||||
n.bShowIcon = NWNX_GetReturnValueInt();
|
||||
n.bExpose = NWNX_GetReturnValueInt();
|
||||
n.nSpellId = NWNX_GetReturnValueInt();
|
||||
n.oCreator = NWNX_GetReturnValueObject();
|
||||
n.nCasterLevel = NWNXPopInt();
|
||||
n.bShowIcon = NWNXPopInt();
|
||||
n.bExpose = NWNXPopInt();
|
||||
n.nSpellId = NWNXPopInt();
|
||||
n.oCreator = NWNXPopObject();
|
||||
|
||||
n.nExpiryTimeOfDay = NWNX_GetReturnValueInt();
|
||||
n.nExpiryCalendarDay = NWNX_GetReturnValueInt();
|
||||
n.fDuration = NWNX_GetReturnValueFloat();
|
||||
n.nExpiryTimeOfDay = NWNXPopInt();
|
||||
n.nExpiryCalendarDay = NWNXPopInt();
|
||||
n.fDuration = NWNXPopFloat();
|
||||
|
||||
n.nSubType = NWNX_GetReturnValueInt();
|
||||
n.nType = NWNX_GetReturnValueInt();
|
||||
n.sID = NWNX_GetReturnValueString();
|
||||
n.nSubType = NWNXPopInt();
|
||||
n.nType = NWNXPopInt();
|
||||
n.sID = NWNXPopString();
|
||||
|
||||
return n;
|
||||
}
|
||||
|
||||
void __NWNX_Effect_ResolvePack(string sFunc, struct NWNX_EffectUnpacked e, int bReplace=FALSE)
|
||||
void __NWNX_Effect_ResolvePack(struct NWNX_EffectUnpacked e, int bReplace=FALSE)
|
||||
{
|
||||
if(!bReplace)
|
||||
NWNX_PushArgumentInt(e.nType);
|
||||
NWNXPushInt(e.nType);
|
||||
|
||||
NWNX_PushArgumentInt(e.nSubType);
|
||||
NWNXPushInt(e.nSubType);
|
||||
|
||||
NWNX_PushArgumentFloat(e.fDuration);
|
||||
NWNX_PushArgumentInt(e.nExpiryCalendarDay);
|
||||
NWNX_PushArgumentInt(e.nExpiryTimeOfDay);
|
||||
NWNXPushFloat(e.fDuration);
|
||||
NWNXPushInt(e.nExpiryCalendarDay);
|
||||
NWNXPushInt(e.nExpiryTimeOfDay);
|
||||
|
||||
NWNX_PushArgumentObject(e.oCreator);
|
||||
NWNX_PushArgumentInt(e.nSpellId);
|
||||
NWNX_PushArgumentInt(e.bExpose);
|
||||
NWNX_PushArgumentInt(e.bShowIcon);
|
||||
NWNX_PushArgumentInt(e.nCasterLevel);
|
||||
NWNXPushObject(e.oCreator);
|
||||
NWNXPushInt(e.nSpellId);
|
||||
NWNXPushInt(e.bExpose);
|
||||
NWNXPushInt(e.bShowIcon);
|
||||
NWNXPushInt(e.nCasterLevel);
|
||||
|
||||
if(!bReplace)
|
||||
{
|
||||
NWNX_PushArgumentEffect(e.eLinkLeft);
|
||||
NWNX_PushArgumentInt(e.bLinkLeftValid);
|
||||
NWNX_PushArgumentEffect(e.eLinkRight);
|
||||
NWNX_PushArgumentInt(e.bLinkRightValid);
|
||||
NWNXPushEffect(e.eLinkLeft);
|
||||
NWNXPushInt(e.bLinkLeftValid);
|
||||
NWNXPushEffect(e.eLinkRight);
|
||||
NWNXPushInt(e.bLinkRightValid);
|
||||
}
|
||||
|
||||
NWNX_PushArgumentInt(e.nNumIntegers);
|
||||
NWNX_PushArgumentInt(e.nParam0);
|
||||
NWNX_PushArgumentInt(e.nParam1);
|
||||
NWNX_PushArgumentInt(e.nParam2);
|
||||
NWNX_PushArgumentInt(e.nParam3);
|
||||
NWNX_PushArgumentInt(e.nParam4);
|
||||
NWNX_PushArgumentInt(e.nParam5);
|
||||
NWNX_PushArgumentInt(e.nParam6);
|
||||
NWNX_PushArgumentInt(e.nParam7);
|
||||
NWNX_PushArgumentFloat(e.fParam0);
|
||||
NWNX_PushArgumentFloat(e.fParam1);
|
||||
NWNX_PushArgumentFloat(e.fParam2);
|
||||
NWNX_PushArgumentFloat(e.fParam3);
|
||||
NWNX_PushArgumentString(e.sParam0);
|
||||
NWNX_PushArgumentString(e.sParam1);
|
||||
NWNX_PushArgumentString(e.sParam2);
|
||||
NWNX_PushArgumentString(e.sParam3);
|
||||
NWNX_PushArgumentString(e.sParam4);
|
||||
NWNX_PushArgumentString(e.sParam5);
|
||||
NWNX_PushArgumentObject(e.oParam0);
|
||||
NWNX_PushArgumentObject(e.oParam1);
|
||||
NWNX_PushArgumentObject(e.oParam2);
|
||||
NWNX_PushArgumentObject(e.oParam3);
|
||||
NWNXPushInt(e.nNumIntegers);
|
||||
NWNXPushInt(e.nParam0);
|
||||
NWNXPushInt(e.nParam1);
|
||||
NWNXPushInt(e.nParam2);
|
||||
NWNXPushInt(e.nParam3);
|
||||
NWNXPushInt(e.nParam4);
|
||||
NWNXPushInt(e.nParam5);
|
||||
NWNXPushInt(e.nParam6);
|
||||
NWNXPushInt(e.nParam7);
|
||||
NWNXPushFloat(e.fParam0);
|
||||
NWNXPushFloat(e.fParam1);
|
||||
NWNXPushFloat(e.fParam2);
|
||||
NWNXPushFloat(e.fParam3);
|
||||
NWNXPushString(e.sParam0);
|
||||
NWNXPushString(e.sParam1);
|
||||
NWNXPushString(e.sParam2);
|
||||
NWNXPushString(e.sParam3);
|
||||
NWNXPushString(e.sParam4);
|
||||
NWNXPushString(e.sParam5);
|
||||
NWNXPushObject(e.oParam0);
|
||||
NWNXPushObject(e.oParam1);
|
||||
NWNXPushObject(e.oParam2);
|
||||
NWNXPushObject(e.oParam3);
|
||||
|
||||
NWNX_PushArgumentFloat(e.vParam0.x);
|
||||
NWNX_PushArgumentFloat(e.vParam0.y);
|
||||
NWNX_PushArgumentFloat(e.vParam0.z);
|
||||
NWNXPushVector(e.vParam0);
|
||||
NWNXPushVector(e.vParam1);
|
||||
|
||||
NWNX_PushArgumentFloat(e.vParam1.x);
|
||||
NWNX_PushArgumentFloat(e.vParam1.y);
|
||||
NWNX_PushArgumentFloat(e.vParam1.z);
|
||||
NWNXPushString(e.sTag);
|
||||
|
||||
NWNX_PushArgumentString(e.sTag);
|
||||
|
||||
NWNX_PushArgumentString(e.sItemProp);
|
||||
NWNXPushString(e.sItemProp);
|
||||
}
|
||||
|
||||
struct NWNX_EffectUnpacked NWNX_Effect_UnpackEffect(effect e)
|
||||
{
|
||||
string sFunc = "UnpackEffect";
|
||||
|
||||
NWNX_PushArgumentEffect(e);
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
|
||||
return __NWNX_Effect_ResolveUnpack(sFunc);
|
||||
NWNXPushEffect(e);
|
||||
NWNXCall(NWNX_Effect, "UnpackEffect");
|
||||
return __NWNX_Effect_ResolveUnpack();
|
||||
}
|
||||
effect NWNX_Effect_PackEffect(struct NWNX_EffectUnpacked e)
|
||||
{
|
||||
string sFunc = "PackEffect";
|
||||
|
||||
__NWNX_Effect_ResolvePack(sFunc, e);
|
||||
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
return NWNX_GetReturnValueEffect();
|
||||
__NWNX_Effect_ResolvePack(e);
|
||||
NWNXCall(NWNX_Effect, "PackEffect");
|
||||
return NWNXPopEffect();
|
||||
}
|
||||
|
||||
int NWNX_Effect_ReplaceEffect(object obj, effect eOld, effect eNew)
|
||||
{
|
||||
string sFunc = "ReplaceEffect";
|
||||
|
||||
NWNX_PushArgumentEffect(eNew);
|
||||
NWNX_PushArgumentEffect(eOld);
|
||||
NWNX_PushArgumentObject(obj);
|
||||
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
|
||||
return NWNX_GetReturnValueInt();
|
||||
NWNXPushEffect(eNew);
|
||||
NWNXPushEffect(eOld);
|
||||
NWNXPushObject(obj);
|
||||
NWNXCall(NWNX_Effect, "ReplaceEffect");
|
||||
return NWNXPopInt();
|
||||
}
|
||||
|
||||
int NWNX_Effect_GetTrueEffectCount(object oObject)
|
||||
{
|
||||
string sFunc = "GetTrueEffectCount";
|
||||
NWNX_PushArgumentObject(oObject);
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
|
||||
return NWNX_GetReturnValueInt();
|
||||
NWNXPushObject(oObject);
|
||||
NWNXCall(NWNX_Effect, "GetTrueEffectCount");
|
||||
return NWNXPopInt();
|
||||
}
|
||||
|
||||
struct NWNX_EffectUnpacked NWNX_Effect_GetTrueEffect(object oObject, int nIndex)
|
||||
{
|
||||
string sFunc = "GetTrueEffect";
|
||||
NWNX_PushArgumentInt(nIndex);
|
||||
NWNX_PushArgumentObject(oObject);
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
|
||||
return __NWNX_Effect_ResolveUnpack(sFunc, FALSE);
|
||||
NWNXPushInt(nIndex);
|
||||
NWNXPushObject(oObject);
|
||||
NWNXCall(NWNX_Effect, "GetTrueEffect");
|
||||
return __NWNX_Effect_ResolveUnpack(FALSE);
|
||||
}
|
||||
|
||||
void NWNX_Effect_ReplaceEffectByIndex(object oObject, int nIndex, struct NWNX_EffectUnpacked e)
|
||||
{
|
||||
string sFunc = "ReplaceEffectByIndex";
|
||||
|
||||
__NWNX_Effect_ResolvePack(sFunc, e, TRUE);
|
||||
|
||||
NWNX_PushArgumentInt(nIndex);
|
||||
NWNX_PushArgumentObject(oObject);
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
__NWNX_Effect_ResolvePack(e, TRUE);
|
||||
NWNXPushInt(nIndex);
|
||||
NWNXPushObject(oObject);
|
||||
NWNXCall(NWNX_Effect, "ReplaceEffectByIndex");
|
||||
}
|
||||
|
||||
int NWNX_Effect_RemoveEffectById(object oObject, string sID)
|
||||
{
|
||||
string sFunc = "RemoveEffectById";
|
||||
NWNX_PushArgumentString(sID);
|
||||
NWNX_PushArgumentObject(oObject);
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
|
||||
return NWNX_GetReturnValueInt();
|
||||
NWNXPushString(sID);
|
||||
NWNXPushObject(oObject);
|
||||
NWNXCall(NWNX_Effect, "RemoveEffectById");
|
||||
return NWNXPopInt();
|
||||
}
|
||||
|
||||
void NWNX_Effect_Apply(effect eEffect, object oObject)
|
||||
{
|
||||
string sFunc = "Apply";
|
||||
NWNX_PushArgumentObject(oObject);
|
||||
NWNX_PushArgumentEffect(eEffect);
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
NWNXPushObject(oObject);
|
||||
NWNXPushEffect(eEffect);
|
||||
NWNXCall(NWNX_Effect, "Apply");
|
||||
}
|
||||
|
||||
effect NWNX_Effect_SetEffectCreator(effect eEffect, object oObject)
|
||||
{
|
||||
string sFunc = "SetEffectCreator";
|
||||
|
||||
NWNX_PushArgumentObject(oObject);
|
||||
NWNX_PushArgumentEffect(eEffect);
|
||||
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
|
||||
return NWNX_GetReturnValueEffect();
|
||||
NWNXPushObject(oObject);
|
||||
NWNXPushEffect(eEffect);
|
||||
NWNXCall(NWNX_Effect, "SetEffectCreator");
|
||||
return NWNXPopEffect();
|
||||
}
|
||||
|
||||
int NWNX_Effect_GetIsEffectValid(effect eEffect)
|
||||
{
|
||||
string sFunc = "GetIsEffectValid";
|
||||
|
||||
NWNX_PushArgumentEffect(eEffect);
|
||||
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
|
||||
return NWNX_GetReturnValueInt();
|
||||
NWNXPushEffect(eEffect);
|
||||
NWNXCall(NWNX_Effect, "GetIsEffectValid");
|
||||
return NWNXPopInt();
|
||||
}
|
||||
|
||||
int NWNX_Effect_GetAppliedEffectCount(object oObject)
|
||||
{
|
||||
string sFunc = "GetAppliedEffectCount";
|
||||
|
||||
NWNX_PushArgumentObject(oObject);
|
||||
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
|
||||
return NWNX_GetReturnValueInt();
|
||||
NWNXPushObject(oObject);
|
||||
NWNXCall(NWNX_Effect, "GetAppliedEffectCount");
|
||||
return NWNXPopInt();
|
||||
}
|
||||
|
||||
effect NWNX_Effect_GetAppliedEffect(object oObject, int nNth)
|
||||
{
|
||||
string sFunc = "GetAppliedEffect";
|
||||
|
||||
NWNX_PushArgumentInt(nNth);
|
||||
NWNX_PushArgumentObject(oObject);
|
||||
|
||||
NWNX_CallFunction(NWNX_Effect, sFunc);
|
||||
|
||||
return NWNX_GetReturnValueEffect();
|
||||
NWNXPushInt(nNth);
|
||||
NWNXPushObject(oObject);
|
||||
NWNXCall(NWNX_Effect, "GetAppliedEffect");
|
||||
return NWNXPopEffect();
|
||||
}
|
||||
|
Reference in New Issue
Block a user