We recently ran our first civiEvent with online bookings (and quite complex pricing). I installed civiDiscount and configured two coupon codes for groups who should be free - the event organisers and the National Council of the parent organisation.
I set the discount level to 100%, and while the coupons were registered as having been used, it did not change the price on the registration form at all.
When I set one of the discounts to 99%, it worked as it should.
Fortunately, all our payments were offline, but it meant we couldn't report reliable income figures.
From my reading of the documentation, a 100% discount should be possible, so is this in fact a bug?
Richard - I have used 100% discount w/Civi 4.3 + pricesets. I assume you included all your priceset options in your discount code configuration (you said you had complex pricing) since the 99% worked? CiviEvent code checks that prices do not go below zero but zero should be fine. You mentioned you're using offline registration ("Register Event Participant") which goes through a different codepath in cividiscount than 'online'.
You or one of your team could set up a test participant, use the 100% discount, and afterwards query the MySQL database table cividiscount_track, and see if you don't find a row for that participant (cividiscount_track.entity_id is a FK on cividiscount_track, where entity_id = civicrm_participant id).