I just popped back to the forums to see if a clever fix had appeared for the one time use stuff.
Seems like it's still being dealt with, and it also seems my last post might have been lost in the midst of the Dr. Awkward discussion.
Or more likely, I just explained things badly. I'll try and give a briefer description of what I found, using the time-honored debugging technique of "Stick Print Commands Everywhere".
In the version of WHAM from your last post, on line 431, you check the note field of the advevent under consideration for "once".
Under no circumstances will the "note" field ever contain "once".
For the feed skill, it is empty.
If you look in batbrain, line 225, you find where zarqon fills the note field, when he creates an advevent. He fills it with anything that comes after "!!".
If you take a look in data/batfactors.txt (at least my version) these are plaintext comments like "!! more dmg spading required".
It doesn't look like the "once" modifier is added into advevents at all, it's only present in the "special" field of "combat_recs" objects, which is a comma separated list loaded from batfactors.txt.
Zarqon deals with it in batbrain on line 832 for items and 893 for skills. He does it by checking the combat_recs for every skill, before he makes advevents out of them and sticks them into opts.
My knowledge of both WHAM and batbrain is pretty poor, so I'm not sure how best to solve the problem. Perhaps you can lookup from the advevent you are considering, back into factors, by adding something like this to the switch case on line 448 of WHAM:
Code:
if(contains_text(factors["skill",to_int(a.id)].special,"once") && happened(a.id))
return false;
And similarly for items (and removing the check on line 431). But maybe that's slow? I have no idea, and I can't even test if it works right now.
... and again I've failed to make a concise post. Hopefully it helps anyway.