i made this in newton once.. let me see if i can find the source.
edit.
i check all objects in the scene.. maybe that isn't very smart :/ here is my source anyhow. it will give the objects a kick; the closer to the hit, the harder the kick.
ps. it uses some types and arrays that are not included with this little snippet, but you probably get the point :/
for x = 1 to TotalObjects
if Entity(x).CanBeBlasted = 1
if hitmass# < 0.1
if NDB_BodyExist( NDB_GetBody(x) ) = 1
BodyToAffect = NDB_GetBody(x)
NDB_BodyGetPosition BodyToAffect
xBody# = NDB_GetVector_X() : yBody# = NDB_GetVector_Y() : zBody# = NDB_GetVector_Z()
distanceToMissile# = sqrt( (cast_x#-xBody#)^2 + (cast_y#-yBody#)^2 + (cast_z#-zBody#)^2 )
if distanceToMissile# < pExplosionPower# then Entity(x).InZone = 1 else Entity(x).Inzone = 0
endif
endif
if hitmass# > 0.0
if Entity(x).Breakable <> 1
if NDB_BodyExist( NDB_GetBody(x) ) = 1
BodyToAffect = NDB_GetBody(x)
NDB_BodyGetPosition BodyToAffect
xBody# = NDB_GetVector_X() : yBody# = NDB_GetVector_Y() : zBody# = NDB_GetVector_Z()
distanceToMissile# = sqrt( (cast_x#-xBody#)^2 + (cast_y#-yBody#)^2 + (cast_z#-zBody#)^2 )
if distanceToMissile# < pExplosionPower# then Entity(x).InZone = 1 else Entity(x).Inzone = 0
endif
endif
endif
endif
if Entity(x).InZone = 1
if NDB_BodyExist( NDB_GetBody(x) ) = 1
BodyToAffect = NDB_GetBody(x)
NDB_SetVector 1, cast_x#, cast_y#, cast_z#
NDB_SetVector 2, pShootPower#/(distanceToMissile#*5), pShootPower#/(distanceToMissile#*5), pShootPower#/(distanceToMissile#*5)
NDB_BodyAddForceGlobal bodyToAffect
NDB_NewtonWorldUnfreezeBody bodyToAffect
if Entity(x).Material = "wood"
SetObjectBurnProperties( x,1,5,10,10,20,0)
BurnObject( x,5,10,10,20,0)
endif
endif
endif
next x
endif