I don't want it to "hit" over and over; i'm aiming for a steady life drain effect.
I'll try this solution out first though, because I'm not exactly sure what you meant.
I will let you know how it worked out...
Now, it's having no effect at all. Again, I'm not sure if I understood what you meant... 
Here's the new code:
The poison:
[Statedef 1011, POISON]
type = S
movetype= A
physics = N
juggle = 1
velset = 0,0
ctrl = 0
anim = 1010
[State 200, 1]
type = HitDef
trigger1 = !Time
attr = A, HP
damage = 0
animtype = Light
affectteam = B
sparkxy = -10, -32
hitsound = S17, 0
guardsound = 6, 0
ground.type = High
ground.hittime = 0
ground.slidetime = 0
ground.velocity = 0
air.velocity = 0
p2stateno = 1012
[State 0, BindToTarget]
type = BindToTarget
trigger1 = 1
[State 0, TargetLifeAdd]
type = TargetLifeAdd
trigger1 = 1
value = -1
[State 0, TargetPowerAdd]
type = TargetPowerAdd
trigger1 = 1
value = -15
[State 0, ReversalDef]
type = ReversalDef
trigger1 = 1
reversal.attr = C,HT
p1stateno = -1
[State 1010, 2]
type = PlaySnd
trigger1 = Time = 1
value = 0, 0
[State 1010, 3]
type = DestroySelf
trigger1 = Time = 500
The state that p2 enters:
[Statedef 1012, Poison Hit]
type = U
movetype= A
physics = U
juggle = 1
ctrl = 0
anim = 1011
[State 200, 1]
type = HitDef
trigger1 = !Time
attr = C, HT
damage = 0
animtype = Light
affectteam = B
sparkxy = -10, -32
hitsound = -1
sparkno = -1
guardsound = 6, 0
ground.type = High
ground.hittime = 0
ground.slidetime = 0
ground.velocity = 0
air.velocity = 0
[State 1010, 3]
type = ChangeState
trigger1 = !Time
value = cond((statetype=A),50,0)