After bashing my head in for around 16 hours on this problem, I've finally found a value that gives consistent results, even though it shouldn't.

Code
INIT
    CHARACTER:__Me
    CHARACTER:%ASC_Source
    STRING:%ASC_DoT
EVENTS

EVENT OnDotsTick
VARS
    INT:_ASC_Level
	FLOAT3:_ExplodeLoc
	FLOAT: _ExplodeY
	FIXEDSTRING: _Y
ON
    OnCharacterEvent(__Me, "DoTsTick")
ACTIONS
    IF "c1&c2&c3"
        GetLevelOverrideCurrent(%ASC_Source, _ASC_Level)
		GetPosition(__Me, _ExplodeLoc)
		GetY(_ExplodeLoc, _ExplodeY)
    THEN
        IF "c1"
            IsEqual(%ASC_DoT, "Projectile_ASC_DoT_Poison_Dart")
        THEN
			Add(_ExplodeY, 3.00)
			Cast(_Y, _ExplodeY)
			StatusText(__Me, _Y)
			SetY(_ExplodeLoc, _ExplodeY)
			ExplodeAt(_ExplodeLoc, Projectile_ASC_DoT_Poison_Dart, _ASC_Level, %ASC_Source)
        ENDIF
    ENDIF


Despite how it looks, this works even standing next to very large targets like trolls, shambling horrors, etc.

It's not ideal but if you need to simulate direct damage via a script, a value of 3.0 with ExplodeAt is working for me currently.

Last edited by Sinistralis; 09/10/17 02:20 AM.