This is only relevant to people who use the One to Many feature. If you don't, please ignore this post.

Please note that if you use the One to Many configuration, you should NOT be doing Buy one Get one offers on identical items (because the one to many behavior will cause your discount to double). So don't do things like

$this->add_prod_to_prod(17, 17, "%", 50); // Buy one product 17, get another product 17 at half off

if you want to use One to Many; make the discounted item different from the condition item.