Ejemplo n.º 1
0
        // Convert unpacked effect structure to native type
        public static Lite.Effect PackEffect(EffectUnpacked effect)
        {
            Internal.NativeFunctions.nwnxSetFunction(PLUGIN_NAME, "PackEffect");
            ResolvePack(effect);

            return(new Lite.Effect(Internal.NativeFunctions.nwnxPopEffect()));
        }
Ejemplo n.º 2
0
        public static void ReplaceEffectByIndex(uint oObject, int nIndex, EffectUnpacked e)
        {
            Internal.NativeFunctions.nwnxSetFunction(PLUGIN_NAME, "ReplaceEffectByIndex");

            ResolvePack(e, true);
            Internal.NativeFunctions.nwnxPushInt(nIndex);
            Internal.NativeFunctions.nwnxPushObject(oObject);
            Internal.NativeFunctions.nwnxCallFunction();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Convert unpacked effect structure to native type
        /// </summary>
        /// <param name="effect"></param>
        /// <returns></returns>
        public static Effect PackEffect(EffectUnpacked effect)
        {
            string sFunc = "PackEffect";

            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.EffectID);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.Type);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.SubType);

            NWNXCore.NWNX_PushArgumentFloat(NWNX_Effect, sFunc, effect.Duration);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.ExpiryCalendarDay);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.ExpiryTimeOfDay);

            NWNXCore.NWNX_PushArgumentObject(NWNX_Effect, sFunc, effect.Creator);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.SpellID);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.Expose);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.ShowIcon);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.CasterLevel);

            NWNXCore.NWNX_PushArgumentEffect(NWNX_Effect, sFunc, effect.LinkLeft);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.LinkLeftValid);
            NWNXCore.NWNX_PushArgumentEffect(NWNX_Effect, sFunc, effect.LinkRight);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.LinkRightValid);

            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.NumIntegers);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam0);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam1);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam2);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam3);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam4);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam5);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam6);
            NWNXCore.NWNX_PushArgumentInt(NWNX_Effect, sFunc, effect.nParam7);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Effect, sFunc, effect.fParam0);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Effect, sFunc, effect.fParam1);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Effect, sFunc, effect.fParam2);
            NWNXCore.NWNX_PushArgumentFloat(NWNX_Effect, sFunc, effect.fParam3);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam0);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam1);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam2);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam3);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam4);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.sParam5);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Effect, sFunc, effect.oParam0);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Effect, sFunc, effect.oParam1);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Effect, sFunc, effect.oParam2);
            NWNXCore.NWNX_PushArgumentObject(NWNX_Effect, sFunc, effect.oParam3);

            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, effect.Tag);

            NWNXCore.NWNX_CallFunction(NWNX_Effect, sFunc);
            return(NWNXCore.NWNX_GetReturnValueEffect(NWNX_Effect, sFunc));
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Convert native effect type to unpacked structure
        /// </summary>
        /// <param name="effect"></param>
        /// <returns></returns>
        public static EffectUnpacked UnpackEffect(Effect effect)
        {
            string sFunc = "UnpackEffect";

            NWNXCore.NWNX_PushArgumentEffect(NWNX_Effect, sFunc, effect);
            NWNXCore.NWNX_CallFunction(NWNX_Effect, sFunc);

            EffectUnpacked n = new EffectUnpacked
            {
                Tag               = NWNXCore.NWNX_GetReturnValueString(NWNX_Effect, sFunc),
                oParam3           = NWNXCore.NWNX_GetReturnValueObject(NWNX_Effect, sFunc),
                oParam2           = NWNXCore.NWNX_GetReturnValueObject(NWNX_Effect, sFunc),
                oParam1           = NWNXCore.NWNX_GetReturnValueObject(NWNX_Effect, sFunc),
                oParam0           = NWNXCore.NWNX_GetReturnValueObject(NWNX_Effect, sFunc),
                sParam5           = NWNXCore.NWNX_GetReturnValueString(NWNX_Effect, sFunc),
                sParam4           = NWNXCore.NWNX_GetReturnValueString(NWNX_Effect, sFunc),
                sParam3           = NWNXCore.NWNX_GetReturnValueString(NWNX_Effect, sFunc),
                sParam2           = NWNXCore.NWNX_GetReturnValueString(NWNX_Effect, sFunc),
                sParam1           = NWNXCore.NWNX_GetReturnValueString(NWNX_Effect, sFunc),
                sParam0           = NWNXCore.NWNX_GetReturnValueString(NWNX_Effect, sFunc),
                fParam3           = NWNXCore.NWNX_GetReturnValueFloat(NWNX_Effect, sFunc),
                fParam2           = NWNXCore.NWNX_GetReturnValueFloat(NWNX_Effect, sFunc),
                fParam1           = NWNXCore.NWNX_GetReturnValueFloat(NWNX_Effect, sFunc),
                fParam0           = NWNXCore.NWNX_GetReturnValueFloat(NWNX_Effect, sFunc),
                nParam7           = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                nParam6           = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                nParam5           = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                nParam4           = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                nParam3           = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                nParam2           = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                nParam1           = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                nParam0           = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                NumIntegers       = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                LinkRightValid    = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                LinkRight         = NWNXCore.NWNX_GetReturnValueEffect(NWNX_Effect, sFunc),
                LinkLeftValid     = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                LinkLeft          = NWNXCore.NWNX_GetReturnValueEffect(NWNX_Effect, sFunc),
                CasterLevel       = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                ShowIcon          = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                Expose            = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                SpellID           = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                Creator           = NWNXCore.NWNX_GetReturnValueObject(NWNX_Effect, sFunc),
                ExpiryTimeOfDay   = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                ExpiryCalendarDay = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                Duration          = NWNXCore.NWNX_GetReturnValueFloat(NWNX_Effect, sFunc),
                SubType           = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                Type              = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc),
                EffectID          = NWNXCore.NWNX_GetReturnValueInt(NWNX_Effect, sFunc)
            };

            return(n);
        }
Ejemplo n.º 5
0
        // Convert native effect type to unpacked structure
        public static EffectUnpacked UnpackEffect(NWN.Effect effect)
        {
            Internal.NativeFunctions.nwnxSetFunction(PLUGIN_NAME, "GetCurrentNodeType");
            Internal.NativeFunctions.nwnxPushEffect(effect.Handle);
            Internal.NativeFunctions.nwnxCallFunction();

            var newEffect = new EffectUnpacked {
                Tag               = Internal.NativeFunctions.nwnxPopString(),
                oParam3           = Internal.NativeFunctions.nwnxPopObject().AsObject(),
                oParam2           = Internal.NativeFunctions.nwnxPopObject().AsObject(),
                oParam1           = Internal.NativeFunctions.nwnxPopObject().AsObject(),
                oParam0           = Internal.NativeFunctions.nwnxPopObject().AsObject(),
                sParam5           = Internal.NativeFunctions.nwnxPopString(),
                sParam4           = Internal.NativeFunctions.nwnxPopString(),
                sParam3           = Internal.NativeFunctions.nwnxPopString(),
                sParam2           = Internal.NativeFunctions.nwnxPopString(),
                sParam1           = Internal.NativeFunctions.nwnxPopString(),
                sParam0           = Internal.NativeFunctions.nwnxPopString(),
                fParam3           = Internal.NativeFunctions.nwnxPopFloat(),
                fParam2           = Internal.NativeFunctions.nwnxPopFloat(),
                fParam1           = Internal.NativeFunctions.nwnxPopFloat(),
                fParam0           = Internal.NativeFunctions.nwnxPopFloat(),
                nParam7           = Internal.NativeFunctions.nwnxPopInt(),
                nParam6           = Internal.NativeFunctions.nwnxPopInt(),
                nParam5           = Internal.NativeFunctions.nwnxPopInt(),
                nParam4           = Internal.NativeFunctions.nwnxPopInt(),
                nParam3           = Internal.NativeFunctions.nwnxPopInt(),
                nParam2           = Internal.NativeFunctions.nwnxPopInt(),
                nParam1           = Internal.NativeFunctions.nwnxPopInt(),
                nParam0           = Internal.NativeFunctions.nwnxPopInt(),
                NumIntegers       = Internal.NativeFunctions.nwnxPopInt(),
                LinkRightValid    = Internal.NativeFunctions.nwnxPopInt(),
                LinkRight         = new NWN.Effect(Internal.NativeFunctions.nwnxPopEffect()),
                LinkLeftValid     = Internal.NativeFunctions.nwnxPopInt(),
                LinkLeft          = new NWN.Effect(Internal.NativeFunctions.nwnxPopEffect()),
                CasterLevel       = Internal.NativeFunctions.nwnxPopInt(),
                ShowIcon          = Internal.NativeFunctions.nwnxPopInt(),
                Expose            = Internal.NativeFunctions.nwnxPopInt(),
                SpellID           = Internal.NativeFunctions.nwnxPopInt(),
                Creator           = Internal.NativeFunctions.nwnxPopObject().AsObject(),
                ExpiryTimeOfDay   = Internal.NativeFunctions.nwnxPopInt(),
                ExpiryCalendarDay = Internal.NativeFunctions.nwnxPopInt(),
                Duration          = Internal.NativeFunctions.nwnxPopFloat(),
                SubType           = Internal.NativeFunctions.nwnxPopInt(),
                Type              = Internal.NativeFunctions.nwnxPopInt(),
                EffectID          = Internal.NativeFunctions.nwnxPopInt()
            };

            return(newEffect);
        }
Ejemplo n.º 6
0
 /// Convert unpacked effect structure to native type.
 /// <param name="e">The NWNX_EffectUnpacked structure to convert.</param>
 /// <returns>The effect.</returns>
 public static System.IntPtr PackEffect(EffectUnpacked e)
 {
     VM.NWNX.SetFunction(NWNX_Effect, "PackEffect");
     VM.NWNX.StackPush(e.nType);
     VM.NWNX.StackPush(e.nSubType);
     VM.NWNX.StackPush(e.fDuration);
     VM.NWNX.StackPush(e.nExpiryCalendarDay);
     VM.NWNX.StackPush(e.nExpiryTimeOfDay);
     VM.NWNX.StackPush(e.oCreator);
     VM.NWNX.StackPush(e.nSpellId);
     VM.NWNX.StackPush(e.bExpose);
     VM.NWNX.StackPush(e.bShowIcon);
     VM.NWNX.StackPush(e.nCasterLevel);
     VM.NWNX.StackPush(e.eLinkLeft, NWScript.ENGINE_STRUCTURE_EFFECT);
     VM.NWNX.StackPush(e.bLinkLeftValid);
     VM.NWNX.StackPush(e.eLinkRight, NWScript.ENGINE_STRUCTURE_EFFECT);
     VM.NWNX.StackPush(e.bLinkRightValid);
     VM.NWNX.StackPush(e.nNumIntegers);
     VM.NWNX.StackPush(e.nParam0);
     VM.NWNX.StackPush(e.nParam1);
     VM.NWNX.StackPush(e.nParam2);
     VM.NWNX.StackPush(e.nParam3);
     VM.NWNX.StackPush(e.nParam4);
     VM.NWNX.StackPush(e.nParam5);
     VM.NWNX.StackPush(e.nParam6);
     VM.NWNX.StackPush(e.nParam7);
     VM.NWNX.StackPush(e.fParam0);
     VM.NWNX.StackPush(e.fParam1);
     VM.NWNX.StackPush(e.fParam2);
     VM.NWNX.StackPush(e.fParam3);
     VM.NWNX.StackPush(e.sParam0);
     VM.NWNX.StackPush(e.sParam1);
     VM.NWNX.StackPush(e.sParam2);
     VM.NWNX.StackPush(e.sParam3);
     VM.NWNX.StackPush(e.sParam4);
     VM.NWNX.StackPush(e.sParam5);
     VM.NWNX.StackPush(e.oParam0);
     VM.NWNX.StackPush(e.oParam1);
     VM.NWNX.StackPush(e.oParam2);
     VM.NWNX.StackPush(e.oParam3);
     VM.NWNX.StackPush(e.vParam0);
     VM.NWNX.StackPush(e.vParam1);
     VM.NWNX.StackPush(e.sTag);
     VM.NWNX.Call();
     return(VM.NWNX.StackPopStruct(NWScript.ENGINE_STRUCTURE_EFFECT));
 }
Ejemplo n.º 7
0
 // Convert unpacked effect structure to native type
 public static NWN.Effect PackEffect(EffectUnpacked effect)
 {
     Internal.NativeFunctions.nwnxSetFunction(PLUGIN_NAME, "PackEffect");
     Internal.NativeFunctions.nwnxPushInt(effect.EffectID);
     Internal.NativeFunctions.nwnxPushInt(effect.Type);
     Internal.NativeFunctions.nwnxPushInt(effect.SubType);
     Internal.NativeFunctions.nwnxPushFloat(effect.Duration);
     Internal.NativeFunctions.nwnxPushInt(effect.ExpiryCalendarDay);
     Internal.NativeFunctions.nwnxPushInt(effect.ExpiryTimeOfDay);
     Internal.NativeFunctions.nwnxPushObject(effect.Creator !);
     Internal.NativeFunctions.nwnxPushInt(effect.SpellID);
     Internal.NativeFunctions.nwnxPushInt(effect.Expose);
     Internal.NativeFunctions.nwnxPushInt(effect.ShowIcon);
     Internal.NativeFunctions.nwnxPushInt(effect.CasterLevel);
     Internal.NativeFunctions.nwnxPushEffect(effect.LinkLeft !.Handle);
     Internal.NativeFunctions.nwnxPushInt(effect.LinkLeftValid);
     Internal.NativeFunctions.nwnxPushEffect(effect.LinkRight !.Handle);
     Internal.NativeFunctions.nwnxPushInt(effect.LinkRightValid);
     Internal.NativeFunctions.nwnxPushInt(effect.NumIntegers);
     Internal.NativeFunctions.nwnxPushInt(effect.nParam0);
     Internal.NativeFunctions.nwnxPushInt(effect.nParam1);
     Internal.NativeFunctions.nwnxPushInt(effect.nParam2);
     Internal.NativeFunctions.nwnxPushInt(effect.nParam3);
     Internal.NativeFunctions.nwnxPushInt(effect.nParam4);
     Internal.NativeFunctions.nwnxPushInt(effect.nParam5);
     Internal.NativeFunctions.nwnxPushInt(effect.nParam6);
     Internal.NativeFunctions.nwnxPushInt(effect.nParam7);
     Internal.NativeFunctions.nwnxPushFloat(effect.fParam0);
     Internal.NativeFunctions.nwnxPushFloat(effect.fParam1);
     Internal.NativeFunctions.nwnxPushFloat(effect.fParam2);
     Internal.NativeFunctions.nwnxPushFloat(effect.fParam3);
     Internal.NativeFunctions.nwnxPushString(effect.sParam0 !);
     Internal.NativeFunctions.nwnxPushString(effect.sParam1 !);
     Internal.NativeFunctions.nwnxPushString(effect.sParam2 !);
     Internal.NativeFunctions.nwnxPushString(effect.sParam3 !);
     Internal.NativeFunctions.nwnxPushString(effect.sParam4 !);
     Internal.NativeFunctions.nwnxPushString(effect.sParam5 !);
     Internal.NativeFunctions.nwnxPushObject(effect.oParam0 !);
     Internal.NativeFunctions.nwnxPushObject(effect.oParam1 !);
     Internal.NativeFunctions.nwnxPushObject(effect.oParam2 !);
     Internal.NativeFunctions.nwnxPushObject(effect.oParam3 !);
     Internal.NativeFunctions.nwnxPushString(effect.Tag !);
     Internal.NativeFunctions.nwnxCallFunction();
     return(new NWN.Effect(Internal.NativeFunctions.nwnxPopEffect()));
 }
Ejemplo n.º 8
0
        private static EffectUnpacked ResolveUnpack(bool bLink = true)
        {
            var newEffect = new EffectUnpacked();

            newEffect.sItemProp = Internal.NativeFunctions.nwnxPopString();
            newEffect.Tag       = Internal.NativeFunctions.nwnxPopString();

            newEffect.vParam1 = new Vector3
            {
                Z = Internal.NativeFunctions.nwnxPopFloat(),
                Y = Internal.NativeFunctions.nwnxPopFloat(),
                X = Internal.NativeFunctions.nwnxPopFloat(),
            };
            newEffect.vParam0 = new Vector3
            {
                Z = Internal.NativeFunctions.nwnxPopFloat(),
                Y = Internal.NativeFunctions.nwnxPopFloat(),
                X = Internal.NativeFunctions.nwnxPopFloat(),
            };

            newEffect.oParam3 = Internal.NativeFunctions.nwnxPopObject();
            newEffect.oParam2 = Internal.NativeFunctions.nwnxPopObject();
            newEffect.oParam1 = Internal.NativeFunctions.nwnxPopObject();
            newEffect.oParam0 = Internal.NativeFunctions.nwnxPopObject();

            newEffect.sParam5 = Internal.NativeFunctions.nwnxPopString();
            newEffect.sParam4 = Internal.NativeFunctions.nwnxPopString();
            newEffect.sParam3 = Internal.NativeFunctions.nwnxPopString();
            newEffect.sParam2 = Internal.NativeFunctions.nwnxPopString();
            newEffect.sParam1 = Internal.NativeFunctions.nwnxPopString();
            newEffect.sParam0 = Internal.NativeFunctions.nwnxPopString();

            newEffect.fParam3 = Internal.NativeFunctions.nwnxPopFloat();
            newEffect.fParam2 = Internal.NativeFunctions.nwnxPopFloat();
            newEffect.fParam1 = Internal.NativeFunctions.nwnxPopFloat();
            newEffect.fParam0 = Internal.NativeFunctions.nwnxPopFloat();

            newEffect.nParam7 = Internal.NativeFunctions.nwnxPopInt();
            newEffect.nParam6 = Internal.NativeFunctions.nwnxPopInt();
            newEffect.nParam5 = Internal.NativeFunctions.nwnxPopInt();
            newEffect.nParam4 = Internal.NativeFunctions.nwnxPopInt();
            newEffect.nParam3 = Internal.NativeFunctions.nwnxPopInt();
            newEffect.nParam2 = Internal.NativeFunctions.nwnxPopInt();
            newEffect.nParam1 = Internal.NativeFunctions.nwnxPopInt();
            newEffect.nParam0 = Internal.NativeFunctions.nwnxPopInt();

            newEffect.NumIntegers = Internal.NativeFunctions.nwnxPopInt();

            if (bLink)
            {
                newEffect.LinkRightValid = Internal.NativeFunctions.nwnxPopInt() == 1;
                newEffect.LinkRight      = new Lite.Effect(Internal.NativeFunctions.nwnxPopEffect());
                newEffect.LinkLeftValid  = Internal.NativeFunctions.nwnxPopInt() == 1;
                newEffect.LinkLeft       = new Lite.Effect(Internal.NativeFunctions.nwnxPopEffect());
            }
            else
            {
                newEffect.LinkRightValid = false;
                newEffect.LinkLeftValid  = false;
            }

            newEffect.CasterLevel = Internal.NativeFunctions.nwnxPopInt();
            newEffect.ShowIcon    = Internal.NativeFunctions.nwnxPopInt();
            newEffect.Expose      = Internal.NativeFunctions.nwnxPopInt();
            newEffect.SpellId     = Internal.NativeFunctions.nwnxPopInt();
            newEffect.Creator     = Internal.NativeFunctions.nwnxPopObject();

            newEffect.ExpiryTimeOfDay   = Internal.NativeFunctions.nwnxPopInt();
            newEffect.ExpiryCalendarDay = Internal.NativeFunctions.nwnxPopInt();
            newEffect.Duration          = Internal.NativeFunctions.nwnxPopFloat();

            newEffect.SubType  = Internal.NativeFunctions.nwnxPopInt();
            newEffect.Type     = Internal.NativeFunctions.nwnxPopInt();
            newEffect.EffectId = Internal.NativeFunctions.nwnxPopInt();

            return(newEffect);
        }
Ejemplo n.º 9
0
        private static void ResolvePack(EffectUnpacked e, bool bReplace = false)
        {
            if (!bReplace)
            {
                Internal.NativeFunctions.nwnxPushInt(e.Type);
            }

            Internal.NativeFunctions.nwnxPushInt(e.SubType);

            Internal.NativeFunctions.nwnxPushFloat(e.Duration);
            Internal.NativeFunctions.nwnxPushInt(e.ExpiryCalendarDay);
            Internal.NativeFunctions.nwnxPushInt(e.ExpiryTimeOfDay);

            Internal.NativeFunctions.nwnxPushObject(e.Creator);
            Internal.NativeFunctions.nwnxPushInt(e.SpellId);
            Internal.NativeFunctions.nwnxPushInt(e.Expose);
            Internal.NativeFunctions.nwnxPushInt(e.ShowIcon);
            Internal.NativeFunctions.nwnxPushInt(e.CasterLevel);

            if (!bReplace)
            {
                Internal.NativeFunctions.nwnxPushEffect(e.LinkLeft);
                Internal.NativeFunctions.nwnxPushInt(e.LinkLeftValid ? 1 : 0);
                Internal.NativeFunctions.nwnxPushEffect(e.LinkRight);
                Internal.NativeFunctions.nwnxPushInt(e.LinkRightValid ? 1 : 0);
            }

            Internal.NativeFunctions.nwnxPushInt(e.NumIntegers);
            Internal.NativeFunctions.nwnxPushInt(e.nParam0);
            Internal.NativeFunctions.nwnxPushInt(e.nParam1);
            Internal.NativeFunctions.nwnxPushInt(e.nParam2);
            Internal.NativeFunctions.nwnxPushInt(e.nParam3);
            Internal.NativeFunctions.nwnxPushInt(e.nParam4);
            Internal.NativeFunctions.nwnxPushInt(e.nParam5);
            Internal.NativeFunctions.nwnxPushInt(e.nParam6);
            Internal.NativeFunctions.nwnxPushInt(e.nParam7);
            Internal.NativeFunctions.nwnxPushFloat(e.fParam0);
            Internal.NativeFunctions.nwnxPushFloat(e.fParam1);
            Internal.NativeFunctions.nwnxPushFloat(e.fParam2);
            Internal.NativeFunctions.nwnxPushFloat(e.fParam3);
            Internal.NativeFunctions.nwnxPushString(e.sParam0);
            Internal.NativeFunctions.nwnxPushString(e.sParam1);
            Internal.NativeFunctions.nwnxPushString(e.sParam2);
            Internal.NativeFunctions.nwnxPushString(e.sParam3);
            Internal.NativeFunctions.nwnxPushString(e.sParam4);
            Internal.NativeFunctions.nwnxPushString(e.sParam5);
            Internal.NativeFunctions.nwnxPushObject(e.oParam0);
            Internal.NativeFunctions.nwnxPushObject(e.oParam1);
            Internal.NativeFunctions.nwnxPushObject(e.oParam2);
            Internal.NativeFunctions.nwnxPushObject(e.oParam3);

            Internal.NativeFunctions.nwnxPushFloat(e.vParam0.X);
            Internal.NativeFunctions.nwnxPushFloat(e.vParam0.Y);
            Internal.NativeFunctions.nwnxPushFloat(e.vParam0.Z);

            Internal.NativeFunctions.nwnxPushFloat(e.vParam1.X);
            Internal.NativeFunctions.nwnxPushFloat(e.vParam1.Y);
            Internal.NativeFunctions.nwnxPushFloat(e.vParam1.Z);

            Internal.NativeFunctions.nwnxPushString(e.Tag);

            Internal.NativeFunctions.nwnxPushString(e.sItemProp);
        }