So yeah okay, seems to work fine just setting a fixed amount of impulse force, but when I want to factor the mass of the actor to multiply the force so it pushes heavy actors harder apparently it often times returns zero for the mass, doesn't particular have any good reason for doing so, at first I thought it was because I was spawning creatures and their 3D wasn't entirely loaded but that didn't seem to be the case. Is there some hidden havok registration for an actors mass?
Spoiler
Scriptname ImpulseEffect extends ActiveMagicEffectfloat Property VerticalStrength Autofloat Property MassMultiplier Autofloat Property MaximumRadius Autobool Property ThrowTeammates AutoEvent OnEffectStart(Actor akTarget, Actor akCaster)float distanceTo = akCaster.GetDistance(akTarget)If ((ThrowTeammates == false && akTarget.isPlayerTeammate() == false) || ThrowTeammates) && distanceTo < MaximumRadius float targetMass = akTarget.GetMass() If targetMass == 0 If akTarget.Is3DLoaded() Debug.Trace(akTarget + " 3D loaded, re-acquiring mass: " + akTarget.GetMass()) EndIf targetMass = 100 EndIf float x_mod = -(akCaster.GetPositionX()-akTarget.GetPositionX()) float y_mod = -(akCaster.GetPositionY()-akTarget.GetPositionY()) float z_mod = -(akCaster.GetPositionZ()-akTarget.GetPositionZ()) float force = (targetMass * MassMultiplier) * (1.0 - distanceTo / 1000.0) akCaster.PushActorAway(akTarget, 0) akTarget.ApplyHavokImpulse(x_mod, y_mod, z_mod + VerticalStrength, force) Debug.Trace("Throwing actor: " + akTarget + \ " mass: " + targetMass + \ " dist: " + distanceTo + \ " massmult: " + MassMultiplier + \ " result: " + (targetMass * MassMultiplier) + \ " force: " + force)EndIfEndEvent[03/29/2012 - 10:39:14PM] [Actor < (FF000F64)>] 3D loaded, re-acquiring mass: 0.000000[03/29/2012 - 10:39:14PM] [Actor < (FF000F69)>] 3D loaded, re-acquiring mass: 0.000000[03/29/2012 - 10:39:14PM] [Actor < (FF000F6C)>] 3D loaded, re-acquiring mass: 0.000000[03/29/2012 - 10:39:14PM] [Actor < (FF000F6E)>] 3D loaded, re-acquiring mass: 0.000000[03/29/2012 - 10:39:14PM] [Actor < (FF000F6D)>] 3D loaded, re-acquiring mass: 0.000000[03/29/2012 - 10:39:15PM] Throwing actor: [Actor < (FF000F6D)>] mass: 100.000000 dist: 58.905708 massmult: 15.000000 result: 1500.000000 force: 1411.641479[03/29/2012 - 10:39:15PM] Throwing actor: [Actor < (FF000F69)>] mass: 100.000000 dist: 165.184998 massmult: 15.000000 result: 1500.000000 force: 1252.222534[03/29/2012 - 10:39:15PM] Throwing actor: [Actor < (FF000F65)>] mass: 100.000000 dist: 194.941116 massmult: 15.000000 result: 1500.000000 force: 1207.588379[03/29/2012 - 10:39:15PM] Throwing actor: [Actor < (FF000F5B)>] mass: 100.000000 dist: 110.589050 massmult: 15.000000 result: 1500.000000 force: 1334.116455[03/29/2012 - 10:39:15PM] Throwing actor: [Actor < (FF000F64)>] mass: 100.000000 dist: 116.025391 massmult: 15.000000 result: 1500.000000 force: 1325.961914[03/29/2012 - 10:39:15PM] Throwing actor: [Actor < (FF000F6C)>] mass: 100.000000 dist: 120.227722 massmult: 15.000000 result: 1500.000000 force: 1319.658447[03/29/2012 - 10:39:15PM] Throwing actor: [Actor < (FF000F6E)>] mass: 100.000000 dist: 115.532143 massmult: 15.000000 result: 1500.000000 force: 1326.701782[03/29/2012 - 10:39:20PM] [Actor < (FF000F70)>] 3D loaded, re-acquiring mass: 0.000000[03/29/2012 - 10:39:20PM] Throwing actor: [Actor < (FF000F5B)>] mass: 495.000000 dist: 168.228516 massmult: 15.000000 result: 7425.000000 force: 6175.903320[03/29/2012 - 10:39:20PM] Throwing actor: [Actor < (FF000F6D)>] mass: 495.000000 dist: 66.467186 massmult: 15.000000 result: 7425.000000 force: 6931.481445[03/29/2012 - 10:39:20PM] Throwing actor: [Actor < (FF000F64)>] mass: 495.000000 dist: 112.121025 massmult: 15.000000 result: 7425.000000 force: 6592.501465[03/29/2012 - 10:39:20PM] Throwing actor: [Actor < (FF000F6E)>] mass: 495.000000 dist: 122.187210 massmult: 15.000000 result: 7425.000000 force: 6517.760254[03/29/2012 - 10:39:20PM] Throwing actor: [Actor < (FF000F70)>] mass: 100.000000 dist: 259.653076 massmult: 15.000000 result: 1500.000000 force: 1110.520386
Apparently it only gets the mass SOMETIMES, real useful.
Although using it a second time on the same actors seemed to be okay and their mass was updated correctly...
