/// Get Attack Event Data /// <returns>A NWNX_Damage_AttackEventData struct.</returns> /// @note To use only in the Attack Event Script. public static AttackEventData GetAttackEventData() { const string sFunc = "GetAttackEventData"; VM.NWNX.SetFunction(NWNX_Damage, sFunc); AttackEventData data = default; VM.NWNX.Call(); data.oTarget = VM.NWNX.StackPopObject(); data.iBludgeoning = VM.NWNX.StackPopInt(); data.iPierce = VM.NWNX.StackPopInt(); data.iSlash = VM.NWNX.StackPopInt(); data.iMagical = VM.NWNX.StackPopInt(); data.iAcid = VM.NWNX.StackPopInt(); data.iCold = VM.NWNX.StackPopInt(); data.iDivine = VM.NWNX.StackPopInt(); data.iElectrical = VM.NWNX.StackPopInt(); data.iFire = VM.NWNX.StackPopInt(); data.iNegative = VM.NWNX.StackPopInt(); data.iPositive = VM.NWNX.StackPopInt(); data.iSonic = VM.NWNX.StackPopInt(); data.iBase = VM.NWNX.StackPopInt(); data.iAttackNumber = VM.NWNX.StackPopInt(); data.iAttackResult = VM.NWNX.StackPopInt(); data.iWeaponAttackType = VM.NWNX.StackPopInt(); data.iSneakAttack = VM.NWNX.StackPopInt(); data.bKillingBlow = VM.NWNX.StackPopInt(); data.iAttackType = VM.NWNX.StackPopInt(); data.iToHitRoll = VM.NWNX.StackPopInt(); data.iToHitModifier = VM.NWNX.StackPopInt(); return(data); }
/// Set Attack Event Data /// <param name="data">A NWNX_Damage_AttackEventData struct.</param> /// @note To use only in the Attack Event Script. public static void SetAttackEventData(AttackEventData data) { const string sFunc = "SetAttackEventData"; VM.NWNX.SetFunction(NWNX_Damage, sFunc); VM.NWNX.StackPush(data.iAttackResult); VM.NWNX.StackPush(data.iBase); VM.NWNX.StackPush(data.iSonic); VM.NWNX.StackPush(data.iPositive); VM.NWNX.StackPush(data.iNegative); VM.NWNX.StackPush(data.iFire); VM.NWNX.StackPush(data.iElectrical); VM.NWNX.StackPush(data.iDivine); VM.NWNX.StackPush(data.iCold); VM.NWNX.StackPush(data.iAcid); VM.NWNX.StackPush(data.iMagical); VM.NWNX.StackPush(data.iSlash); VM.NWNX.StackPush(data.iPierce); VM.NWNX.StackPush(data.iBludgeoning); VM.NWNX.Call(); }