Esempio n. 1
0
        /// <summary>
        /// Set a script with optional data that runs when an effect expires
        /// Only works for TEMPORARY and PERMANENT effects applied to an object
        /// Note: OBJECT_SELF in the script is the object the effect is applied to
        /// </summary>
        /// <param name="e"></param>
        /// <param name="script"></param>
        /// <param name="data"></param>
        /// <returns></returns>
        public static Effect SetEffectExpiredScript(Effect e, string script, string data = "")
        {
            string sFunc = "SetEffectExpiredScript";

            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, data);
            NWNXCore.NWNX_PushArgumentString(NWNX_Effect, sFunc, script);
            NWNXCore.NWNX_PushArgumentEffect(NWNX_Effect, sFunc, e);

            NWNXCore.NWNX_CallFunction(NWNX_Effect, sFunc);

            return(NWNXCore.NWNX_GetReturnValueEffect(NWNX_Effect, sFunc));
        }
Esempio n. 2
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));
        }
Esempio n. 3
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);
        }