The problem with killing a victim if the damage was dealt by a certain weapon is that grenades thrown by the player with the weapon all become instant weapons of mass destruction. I'm pretty sure that the Arrow glitch leaves the victim on 1 health - maybe do this:
function OnPlayerDamage (Victim,Shoooter: byte; Damage: integer): integer;
begin
IF (Damage = 149) AND (GetPlayerStat(Shooter,'Primary') = <WEAPON>) THEN Result:= 150;
end;